快速重传相关问题

1. 何时会触发快速重传

一般而言,收到3个DACK后就会触发快速重传。当然这个3是经验值,具体可以查看RFC。通过sysctl查看和修改该值。下面是一个简单的实验,为了触发快速重传,实验中使用tc命令设置丢包率为1%。

[root@bogon tmp]# sysctl -a | grep reorder        
net.ipv4.tcp_reordering = 3

[root@bogon tmp]# sysctl net.ipv4.tcp_reordering=6
net.ipv4.tcp_reordering = 6

[root@bogon tmp]# sysctl -a | grep reorder        
net.ipv4.tcp_reordering = 6

在这里插入图片描述

2. 快速重传会重传多少个报文

目前,tcp已经支持SACK option了,发送端可以知道接收端究竟没收到了什么包,哪些包已经收到了。对于那些已经收到的包就不需要重传了。如果缺失多个包,发送端可以直接发送多个丢失的包。
在这里插入图片描述

如果不支持SACK呢,那么已经收到的包,就不会告诉发送端那些包已经收到了,那么发送端是不是就会把后面已经被接受的包也再重传一次呢?不是的。
发送端先发送一个需要的包,等着。接收端会把乱序的包放到一个乱序队列,当收到丢失的包后,把后面收到的包从乱序队列取出来拼接在一起,就直接传后面的吧。

在这里插入图片描述
没有sack也没关系,接收端会处理好的。
在这里插入图片描述

3. SACK对快速重传的影响

我认为,有了sack之后,可以提高重传的效率,毕竟很快知道哪些丢失了,直接把丢失的包重传。而没有sack的话,就需要一个一个确认后再传,慢一些。

有了sack之后,可以提高重传的效率,毕竟很快知道哪些丢失了,直接把丢失的包重传。而没有sack的话,就需要一个一个确认后再传,慢一些。
如下,存在sack的情况,快速重传那个丢失的包,不需要等待确认,直接发送后续的包:
在这里插入图片描述

如果不支持sack,那么需要等待确认后,再传后续的包。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值