TCP 快速重传为什么是三次冗余 ACK 呢?这个三次是怎么定下来的?

TCP快速重传机制通过接收方发送三次重复ACK来指示发送方有数据包丢失。三次ACK旨在区分网络延迟导致的乱序和真正的丢包。如果仅两次ACK可能是乱序,而四次则响应过慢。当收到三个重复ACK时,发送方通常会重传,以优化网络效率。
摘要由CSDN通过智能技术生成

想要了解在这个问题,那么你就要了解:TCP三次握手,四次分手以及ACK的基本原理了

话不多说,我直接上干货!

先了解一下TCP的ACK原理和延迟确认机制

ACK定义

TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表示已经确认接收到ACK确认号前面的所有数据。

ACK字段长度为32位,能表示0~2^32-1之间的值。

ACK作用

发送方在一定时间内没有收到服务端的ACK确认包后,就会重新发送TCP数据包。发送方收到了ACK,表明接收方已经接收到数据,保证了数据的可靠达到。

ed0b339c97e4d2ca3fb3d15489226f17.jpeg

ack的定义就是提醒向自己发送数据包的对端,下次发送给我,应该从ack位置的包进行发送。

假设客户端发送data,包的数量是1-100,那么服务端回送的ack则是从101开始。如果服务端回传的超时(或者有存在丢包情况),客户端就会重新发送这个包

47b8e36f28ebfa4e8f50417decb2ef82.jpeg

ACK机制的工作原理

9f20512017064d3809145647fcbb5af4.jpeg

ACK延迟确认机制


接收方在收到数据后,并不会立即回复ACK,而是延迟一定时间。一般ACK延迟发送的时间为200ms,但这个200ms并非收到数据后需要延迟的时间。系统有一个固定的定时器每隔200ms会来检查是否需要发送ACK包。这样做有两个目的。


1、这样做的目的是ACK是可以合并的,也就是指如果连续收到两个TCP包,并不一定需要ACK两次,只要回复最终的ACK就可以了,可以降低网络流量。
2、如果接收方有数据要发送,那么就会在发送数据的TCP数据包里,带上ACK信息。这样做,可以避免大量的ACK以一个单独的TCP包发送,减少了网络流量。

TCP的三次握手,四次分手

如下图:

e8cad988e743e1dadf398dbe569b5ba1.jpeg

1种状态,在整个TCP建立连接和断开连接的整个过程!

面分开来详细看,首先是三次握手

3126660340abf4c5375115e926788fc2.jpeg

上面这个图就是完整的三次握手过程

  • 首先由 client 发出请求连接,即SYN=1 ACK=0,TCP 规定 SYN&#

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值