您现在的位置是:首页 > 技术文章网站首页技术文章

TCP重传,滑动窗口,流量控制,拥塞控制

  • WangYe
  • 2020-08-02 00:17:16
  • 449 次阅读
了解 TCP重传、滑动窗口、流量控制、拥塞控制

TCP机制

重传机制

1. 超时重传:在数据包丢失或确认应答丢失情况下触发;

2. 快速重传:发送端收到三个ACK = 2的确认,知道了Seq2还没收到,就会在定时器过期前重传丢失的Seq2;

3. SACK:在TCP头部字段加一个SACK的东西,可以将缓存的地图发送给发送方,那些数据没收到就只重传丢失的数据;

4. D-SACK

    4.1 可以让「发送方」知道,是发出去的包丢了,还是接收方回应的 ACK 包丢了;可以知道是不是「发送方」的数据包被网络延迟了;

    4.2 可以知道网络中是不是把「发送方」的数据包给复制了;

    4.3 在 Linux 下可以通过 net.ipv4.tcp_dsack 参数开启/关闭这个功能(Linux 2.4 后默认打开)。


滑动窗口

1. 允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发送每确认,因此该协议可以加速数据的传输。

2. 在接收窗口向前滑动时(与此同时也发送了确认),发送窗口也会同步向前滑动,收发两端的窗口按照以上规律不断地向前滑动 ,可以动态调整窗口大


流量控制

含义:TCP提供一种机制可以让【发送方】根据【接收方】的实际接收能力控制发送的数据量;



拥塞控制

含义:当网络发送拥塞时,TCP会自我牺牲,降低发送的数据量。避免【发送方】的数据填满整个网络;

拥塞控制主要四种算法:

1. 慢启动:当发送方没收到一个ACK,拥塞窗口cwnd大小就加1;

2. 拥塞避免:每当收到一个ACK时,cwnd增加1/cwnd;

3. 拥塞发生:会产生重传机制,主要俩种如下:

    3.1 超时重传:全部回到0,重新开始传输;

    3.2 快速重传:当接收方发现丢失了一个中间包,发送三次前一个包的ACK,发送端就会快速重传;

4. 快速恢复:再断点处重新续传数据

上一篇:Socket多线程

下一篇:[STL]认识vector

文章评论 (0)



Top