TCP-IP摘记(TCP协议的一些算法)

前言:

     之前在写消息系统的时候,借鉴了一些TCP在流量控制的经验,发现还挺有用的。所以这张总结一点关于TCP在容灾、控制上的算法。主要包括超时重传,动态窗口,顺序保障。

 

================流量窗口=========================


TCP-IP摘记(TCP协议的一些算法)_第1张图片
 

可以从图中看到,在8,14的两个ack win=0 这个时候sun就会等待。当窗口够大时,服务端就会发送9这个ack告知客户端继续发送数据。可见同一个SYN的ACK可以发多次。

 

滑动窗口:

 


TCP-IP摘记(TCP协议的一些算法)_第2张图片
 

滑动窗口特点 写道
1) 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。
2) 当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了T C P的接收缓存时。
3) 当右边沿向左移动时,我们称之为窗口收缩。Host Requirements RFC强烈建议不要使用这种方式。但T C P必须能够在某一端产生这种情况时进行处理。第2 2 . 3节给出了这样的一个例子,一端希望向左移动右边沿来收缩窗口,但没能够这样做。

 如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据。

 

 

在通告窗口和发送数据窗口之间的空闲为可用窗口。

 

========================超时重传=============================


即当TCP发送一个包,但是得不到ACK时,就会进行超时重传。直到最后不成功发送一个R重置信号。

第一个重传到最后一个R的间隔时间一般为2分钟。

连续重传之间不同的时间差,它们取整后分别为1、3、6、1 2、2 4、4 8和多个6 4秒,这个倍乘关系被称为“指数退避(exponential backoff )”。

 

 

 

==============================拥塞避免======================================

 


(1)慢启动。

    

TCPIP协议 写道
    现在,T C P需要支持一种被称为“慢启动(slow start)”的算法。该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。
    慢启动为发送方的T C P增加了另一个窗口: 拥塞窗口(congestion window),记为c w n d。当与另一个网络的主机建立T C P连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。
每收到一个A C K,拥塞窗口就增加一个报文段( c w n d以字节为单位,但是慢启动以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。
    发送方开始时发送一个报文段,然后等待A C K。当收到该A C K时,拥塞窗口从1增加为2,即可以发送两个报文段。当收到这两个报文段的A C K时,拥塞窗口就增加为4。 这是一种指数增加的关系
在某些点上可能达到了互联网的容量,于是中间路由器开始丢弃分组。这就通知发送方它的拥塞窗口开得过大。当我们在下一章讨论T C P的超时和重传机制时,将会看到它们是怎样对拥塞窗口起作用的。现在,我们来观察一个实际中的慢启动。

 

(2)拥塞避免算法

         
TCP-IP摘记(TCP协议的一些算法)_第3张图片
 

 

 

 

你可能感兴趣的:(tcp)