TCP/IP基础02:TCP超时与重传

TCP/IP基础02:TCP超时与重传

1 TCP超时

TCP的重传分为超时重传和快速重传。超时重传中主要的参数RTO(ReTransmissionOvertime)。RTO使用RTT作为参数来进行估计(没有别的输入参数),而要知道RTT的下一时刻的值,所以我们需要对RTT进行估计。

1.1 RTT估计

参考文献:
1 https://blog.csdn.net/wdscq1234/article/details/52505191
2 https://blog.csdn.net/yusiguyuan/article/details/39997575
3 移动指数加权平均
平均:总和/总数。
加权平均:给每一项都给予一个权值。然后平均。
移动加权平均:选择最近的几个值来做加权平均。
移动指数加权平均:上一次的估计值与测量值进行移动加权平均,如下公式所示。
[公式]

2 TCP超时重传

在规定的RTO内没有收到被即时报文段的ACK,将会触发超时重传。当这种情况发送时,它通过降低当前数据发送率来对此进行快速响应。主要有两种方法,
1 基于拥塞控制机制减小发送窗口大小。
2 增大RTO的退避因子。
TSER值,只有在发送窗口前移之后才会被采用
Q:超时重传在wireshark中如何查看?
analyze->expert info composit

3 TCP快速重传

快速重传机制基于接受端的反馈信息来引发重传。

3.1 快速重传的目的

如果全部指望超时重传来去解决重传问题,那么效率会大打折扣。所以引入快速重传。

如果在超时重传定时器溢出之前,接收到连续的三个重复冗余ACK(其实是收到4个同样的ACK,第一个是正常的,后三个才是冗余的),发送端便知晓哪个报文段在传输过程中丢失了,于是重发该报文段,不需要等待超时重传定时器溢出,大大提高了效率。这便是快速重传机制。

以下BLOG讲的是SACK的快速重传,
1 https://blog.csdn.net/whgtheone/article/details/80983882
其中每次client发送包的时候,server才会回ack,快速重传中,server回复的是server接收窗口中丢失的ack seqence。

一般在client和 server建立 连接发送SYN的时候, 会相互协商双方是否SACK , 在重发第二个包之前,client 已经把3,5,6,7,8都发送给server端了,如果不支持 SACK机制, client就会重复发送2.3.5.6.7.8,所以,这种选择性的发送丢失的数据包是比较高效的,这种在ip层分段的时候,由于网络/路由的原因,导致server端收到的包是乱序的。如果再穿插丢失几个包,SACK效率会比较高效。

3.2 SACK(选择确认)

1 https://blog.csdn.net/wdscq1234/article/details/52503315
2 SACK实现
3 D-SACK

D-SACK还是带了诸多的好处,能否让发送方了解是ACK丢了还是发送的数据包丢了,重复发送就说明是ACK丢了

Q:怎么判断TCP Option的大小?

TCP头中有一个TCP头长度的字段。范围为20-60Byte。
在这里插入图片描述

Q:为什么快速重传是三次ACK?

1 https://www.zhihu.com/question/21789252
2 https://blog.csdn.net/whgtheone/article/details/80983882
3 总结:因为网络包有时候会乱序,乱序的包一样会出发重复的ACK,但是为了乱序而重传没有必要。从概率上来说,一般乱序的距离相差并不会太大。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值