tcp协议的主要功能是保证数据的可靠传输。
传输控制协议tcp协议利用重传技术和拥塞控制机制为应用提供可靠的通信连接,使其能够自动适应互联网上的各种变化。
传输控制协议(tcp)是面向连接的、可靠的、基于字节流的传输层通信协议,由ietf的rfc793定义。
udp是面向包的,tcp是面向字节流的。
udp是面向消息的。发件人sudp并不把应用层递过来的消息合并或者拆分,只是给它加一个头,然后给更低的网络层。也就是说,无论应用层给udp多长时间,都是全部发送,一次一个。对于接收方来说,接收后直接去掉头,交给上层应用层完成任务。因此,它需要应用层来控制消息的大小。
tcp是面向字节流的。它把上面应用层交来的数据当作非结构化的字节流,可以想象成流水线形式。发送方tcp会将数据放入"水库和水库(缓冲区)并在可以发送时发送,如果可以则等待t.tcp会根据当前的网络拥塞状态确定每个报文段的大小。
udp消息的报头只有8个字节,而tcp的报头有20个字节。报头长度字段:4位。是一个32位的数字,包括选项。普通ip数据报(无任何选项),该字段的值为5,即160位20字节。该字段的最大值为60字节。tcp报头必须大于等于20字节,最大60字节,这意味着选项部分的取值范围是0-40位。消息是网络传输的单位,在传输过程中会封装成包、包、帧进行传输。封装的方法是添加一些信息段,那些就是消息头。
一个ip包的最大长度是64k字节(65535),因为包的长度在ip头中是用两个字节来描述的,两个字节所能表达的最大数是65535。
由于ip协议为上层协议提供了报文分割和重组的功能,所以传输层协议的报文长度原则上没有限制。其实是有一些限制的,因为一个ip包的标识字段毕竟不能是无限的。按照ipv4,上限好像应该是4g(64k*64k)。依靠这种机制,没有"数据包长度和长度字段,它完全依赖于ip层来处理成帧。这就是为什么tcp经常被称为a"流媒体协议与应用。当使用tcp服务时,开发者不要不用关心数据包的大小,就说把socket当做一个数据流的入口,放进去。只是数据,tcp协议本身会进行拥塞/流量控制。