linux 数据包重传 和 重组,网络数据包分析从入门到精通_TCP重传技术

本文深入探讨了TCP协议中的重传机制,包括重传计时器和往返时间(RTT)的计算,以及如何确定重传超时(RTO)。通过实例分析,解释了当接收方收到乱序数据包时,如何通过发送重复ACK实现快速重传。此外,还提到了不同操作系统如Windows和Linux在重传次数上的差异。
摘要由CSDN通过智能技术生成

TCP重传的原理

在TCP重传的理论中,重传计时器是用于决定是否有必要进行数据包重传的一个主要机制。重传计时器维护着一个叫做重传超时(Retransmission timeout,RTO)的值。在使用TCP进行数据包的传送时,重传计时器就会被启动。当收到数据包的ACK,也就是确认数据包时,计时器就会停止。从发送数据包到接收到确认数据包的时间,被称作往返时间(Round-trip time,RTT)。我们将若干个往返时间求和并计算平均值,就可以得出最终的RTO值。

我们通过实验文件来学习TCP重传技术:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

重传.jpg (189.16 KB, 下载次数: 12)

2016-8-3 11:45 上传

上面的第一个数据包是一个正常的TCP PSH/ACK数据包,接下来如果正常的话会受到一个用于响应的TCP ACK数据包,但是这里的第二个数据包却是却是一个TCP Retransmission数据包,表明这是一个重传:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

重传1.jpg (195.67 KB, 下载次数: 18)

2016-8-3 11:46 上传

而且接下来的几个数据包都是重传数据包。

TCP的快速重传

如果接收方接收到了乱序的数据包,就发送重复的TCP ACK数据包。TCP在其头部使用序号和确认字段,以确保数据被可靠接收并以发送的顺序进行重组。我们上次课说过,Seq序列号可以帮助数据进行有序的传输。

我们继续通过分析实验文件来学习TCP的快速重传:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

ack.jpg (235.71 KB, 下载次数: 15)

2016-8-3 11:48 上传

观察第一个数据包,这个TCP ACK数据包是从数据的接收方发往数据的发送方,是对前一个数据包的确认。该数据包的ACK值为期望的下一个数据包的seq值。我们来看第二个数据包:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

ack2.jpg (231.16 KB, 下载次数: 8)

2016-8-3 11:49 上传

发现这个数据包的seq的值是10945,并不是期望的1,所以说明数据在传输中可能出现了丢包的情况。当接收方发现这个问题之后,就会向发送方发送一个重复的ACK数据包:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

ack3.jpg (243.19 KB, 下载次数: 6)

2016-8-3 11:59 上传

接下来的数据包依旧不是我们期望的内容,所以接收方发送第二个重复ACK数据包,接下来的还不是期望的数据包,所以接收方发送了第三个重复ACK数据包。

由于发送方收到了三个重复的ACK数据包所以,它会对这个丢失的数据包进行重传:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

ack4.jpg (237.94 KB, 下载次数: 8)

2016-8-3 12:00 上传

这就是快速重传,在数据流中的传递方式。

然后我们观察如下数据包:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

aa.jpg (126.46 KB, 下载次数: 8)

2016-8-3 12:01 上传

该位置内容是接收方告诉发送方5473-12313之间的数据包都已经收到了。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

di1.jpg (22.81 KB, 下载次数: 12)

2016-8-3 12:03 上传

Windows操作系统会重传5次,而Linux则为15次。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

di2.jpg (22.77 KB, 下载次数: 10)

2016-8-3 12:03 上传

通过上面的数据包分析,可知接收方会发送3个重复的ACK数据包。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

d3.jpg (26.73 KB, 下载次数: 11)

2016-8-3 12:04 上传

接收方告诉发送方100-200之间的数据包已经收到。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

di3.jpg (23.28 KB, 下载次数: 10)

2016-8-3 12:05 上传

通过重传的方式,来保证数据包不会缺失。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值