TCP基础知识:(一)TCP拥塞控制

来源:互联网 发布:软件发展战略 编辑:程序博客网 时间:2024/03/29 13:20

(一)拥塞的代价

1、当分组接近链路容量时,分组要经历巨大的排队时延。

2、发送方必须执行重传以补偿因为缓存溢出而丢失的分组

3、遇到大的时延时所进行的不必要的重传会引起路由器利用其链路带宽来转发不必要的分组副本

4、当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组使用的传输容量最终被浪费掉了。

(二)端到端的拥塞控制

TCP使用端到端的拥塞控制而不是使用网络辅助的拥塞控制,因为IP层不向端系统提供显示的网络拥塞反馈。

(三)TCP发送方如何限制它向其连接发送流量的速率?

     运行在发送方的拥塞控制机制跟踪拥塞窗口(cwnd),对一个TCP发送方能够向网络中发送的流量速率进行限制。未确认的数据量不大于min {cwnd,rwnd}。

    TCP使用确认来触发增大它的拥塞窗口长度。因此可以说是自计时的。

(四)TCP发送方如何感知在它和目的地之间的路径上出现了拥塞?

   TCP发送方的“丢包事件”:要么出现超时,要么收到来自接收方的4个ACK,(一个初始ACK,3个冗余ACK.)

(五)TCP发送方怎么控制其发送速率?

1、慢启动

(1)慢启动算法是一个在连接上发起数据流的方法。

(2)慢启动过程:

     初始时将拥塞窗口的初始为一个MSS,每次收到一个报文段的确认时发送方将拥塞窗口增大一个MSS,并发送两个最大长度的报文段。两个报文段被确认后,则发送方复每个报文段的确认增加一个MSS,使得拥塞窗口变为4个MSS,这样每过一个RTT,发送速率就翻番。因此,在慢启动阶段以指数增长。

(3)慢启动的结束:

     当出现一个由超时指示的丢包事件,TCP发送方将cwnd设置为1,并重新开始慢启动。

2、拥塞避免

(1)拥塞避免算法是一种处理丢失分组的方法。(当到达中间路由器的极限时,分组将被丢弃。)

(2)拥塞避免过程:

     进入拥塞避免时,拥塞窗口的值大约是上次遇到拥塞时值的一半,每个RTT只将拥塞窗口的值增加1个MSS.

(3)结束条件:超时或丢包。

3、快速重传与快速恢复

(1)执行条件及过程

     当收到3个或3个以上的重复ACK时,就非常有可能是一个报文段丢失了。于是我们就重传丢失的数据报文段,而不等待超时定时器溢出。这就是快速重传。接下来执行的不是慢启动,而是拥塞避免,这就是快速恢复。

(2)原因:

    没有执行慢启动的原因是由于收到的重复的ACK不仅仅告诉我们一个分组丢失了。由于接收方只有在收到另一个报文段时才会产生重复的ACK,而该报文段已经离开网络并进入了接收方的缓存。也就是说在收发两端之间仍然有流动的数据,而我们不想执行慢启动来突然减少数据流。

(六)TCP拥塞避免算法总结:

1、当出现超时时,TCP将拥塞窗口(cwnd)设置为一个报文段,将拥塞门限(ssthresh)设置为拥塞时拥塞窗口的一半和接收方通告窗口的最小值(最少为2个报文段)。拥塞窗口小于等于拥塞门限之前执行慢启动,指数增长拥塞窗口。拥塞窗口大于拥塞门限时执行拥塞避免,线性增长拥塞窗口。

2、当出现丢包时,将拥塞门限设置为当前拥塞窗口的一半,重传丢失的报文段。设置拥塞窗口为拥塞门限加上三倍的报文段大小。每次收到另一个重复的ACK时,拥塞窗口增加一个报文段大小并发送一个分组。当下一个确认新数据的ACK到达时(这个ACK应该是对丢失的分组和收到的第一个重复的ACK之间的所有中间报文段的确认),设置拥塞窗口为拥塞门限。 

0 0
原创粉丝点击