快速重传 协议

重复确认是快速重传算法的一个实现步骤。
tcp协议规定,当接收方收到的数据包是乱序的时候,接收方会重复发送最后一个完全确认的片段。因为tcp 规定使用累积确认。


例如 :发送方向接收方发送 6个数据包
1 sequence number =6
2 sequence number =12
3 sequence number =50
4 sequence number = 70
5 sequence number = 98

1 被接收方正确接收了,接收方发送 ack = 6 的确认给发送方。
2丢了。
3正确到达接收方,但是这时候接收方不能发送 3的ack,因为2还没收到,不能进行累计确认。
此时 接收方仍然发送 数据包1 的确认(ack = 6 ),发送给发送方。
4也正确到达了接收方,但是接收方仍然只能发 数据包1 的确认(ack = 6)给发送方。
当发送方连续三次收到同一个数据包的确认,发送方就会认为已经发生了丢包,即使这时 2的计时器还没有超时,发送方也会启动重传,这就是快速重传,具体重传哪些包需要tcp 中的别的机制来决定。


快速重传就建立在 重复确认的基础上,tcp 协议规定发送方连续三次 (tcp 规定的次数,教科书上说,有点随意的规定 :) )收到同一个段的重复确认,就直接进行重传。


在网上看到一篇不错的 讲 tcp 重复确认机制的,详情戳 此处

关于 选择重传 和 回退N协议 的Java动画,戳此处

选择重传协议中是不存在累计确认的,回退N协议中存在累积确认。

一篇非常好的讲wireshark tcp流图形-时间序列(tcptrace)的文章

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值