赞
踩
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。
OSI七层模型:
在OSI七层模型中,每一层的作用和对应的协议如下:
下图是TCP报文数据格式。TCP首部如果不计选项和填充字段,它通常是20个字节。
源端口和目的端口:
各占2个字节,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。有时一个IP地址和一个端口号也称为socket(插口)。
序号(seq):
占4个字节,是本报文段所发送的数据项目组第一个字节的序号。
确认序号(ack):
占4字节,是期望收到对方下次发送的数据的第一个字节的序号,也就是期望收到的下一个报文段的首部中的序号;
数据偏移:
占4比特,表示数据开始的地方离TCP段的起始处有多远。实际上就是TCP段首部的长度。
6个标志位比特
① URG:当URG=1时,注解此报文应尽快传送,而不要按本来的列队次序来传送。
② ACK:只有当ACK=1时,确认序号字段才有效;
③ PSH:当PSH=1时,接收方应该尽快将本报文段立即传送给其应用层。
④ RST:当RST=1时,表示出现连接错误,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接;
⑤ SYN:SYN=1,ACK=0时表示请求建立一个连接,携带SYN标志的TCP报文段为同步报文段;
⑥ FIN:发端完成发送任务。
窗口:
TCP通过滑动窗口的概念来进行流量控制。所谓滑动窗口,可以理解成接收端所能提供的缓冲区大小。TCP利用一个滑动的窗口来告诉发送端对它所发送的数据能提供多大的缓 冲区。
检验和:
检验和覆盖了整个TCP报文段:TCP首部和数据。这是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。
紧急指针
只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
TCP流量控制主要是针对接收端的处理速度不如发送端发送速度快的问题,消除发送方使接收方缓存溢出的可能性。
TCP流量控制主要使用滑动窗口协议,滑动窗口是接受数据端使用的窗口大小,用来告诉发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量
流量控制是通过接收方来控制流量的一种方式;而拥塞控制则是通过发送方来控制流量的一种方式。
TCP拥塞控制的几种方法:慢启动,拥塞避免,快重传和快恢复。
1、慢启动
TCP在连接过程的三次握手完成后,开始传数据,并不是一开始向网络通道中发送大量的数据包。因为假如网络出现问题,很多这样的大包会积攒在路由器上,很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此现在的TCP协议规定了,新建立的连接不能够一开始就发送大尺寸的数据包,而只能从一个小尺寸的包开始发送,在发送和数据被
对方确认的过程中去计算对方的接收速度,来逐步增加每次发送的数据量(最后到达一个稳定的值,进入高速传输阶段。相应的,慢启动过程中,TCP通道处在低速传输阶段),以避免上述现象的发生。这个策略就是慢启动。
2、拥塞避免
cwnd的值不再指数级往上升,开始加法增加。此时当窗口中所有的报文段都被确认时,cwnd的大小加1,cwnd的值就随着RTT开始线性增加,这样就可以避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。
3、快速重传
TCP要保证所有的数据包都可以到达,所以,必需要有重传机制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。