TCP滑动窗口控制流量的原理
TCP提供可靠传输的工作原理和实现过程
TCP提供一种面向连接的、可靠的字节流服务
一、可靠传输的要求
可靠的传输应该满足下面两个要求:
(1)传输的信道不产生差错;
(2)保证传输数据的正确性,无差错、不丢失、不重复、并且按序到达。
这里有两层意思,一是能够正确地传输数据,二是接收方能够及时处理发送方发送的数据。
二、可靠传输的工作原理
TCP为了提供可靠传输:
(1)首先,采用三次握手来建立TCP连接,四次握手来释放TCP连接,从而保证建立的传输信道是可靠的。
(2)其次,TCP采用了超时重传来保证数据传输的正确性,使用滑动窗口协议来保证接方能够及时处理所接收到的数据,进行流量控制。
(3)最后,TCP使用慢开始、拥塞避免、快重传和快恢复来进行拥塞控制,避免网络拥塞。
1、超时重传
发送一个报文段,会立即启动一个重传计时器,等待目的端口确认收到这个数据段。否则将超时重传。
2、确认响应
对于一个收到的请求,将发送一个确认。这个确认通常要延迟几分之一秒。
3、首部校验
TCP数据报文段中有收和数据的校验和。这是一个端到端的校验和。如果出错的话,则接收端不会发送确认,从而触发发送方的确认重传。
4、对收到的数据进行排序。
由于IP数据报文在网络中经历的时间可能不一样,所以数据到达接收端可能会失序。而接收方的传输层会根据报文段中的序号,进行重新排序。
5、重复的而数据直接丢弃。
6、流量控制
TCP可以通过窗口大小来进行流量控制,防止接收慢的主机缓冲区溢出。
滑动窗口机制即是发送方根据接收方返回的ACK:期望下次收到的序列号和WINDOW SIZE:希望接收的数据窗口大小来滑动传输窗口发送数据。
这就是滑动窗口的工作机制,当链路变好了或者变差了这个窗口还会发生变话,并不是第一次协商好了以后就永远不变了。
滑动窗口协议,是TCP使用的一种流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。
只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。
收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。
当发送窗口和接收窗口的大小都等于1时,就是停止等待协议。