注:此文章为学习B站姜晔老师的《网络数据分析从入门到精通》课程笔记。
1、TCP数据包重传的基本原理
(1)TCP重传机制的必要性
当基于TCP的网络传输出现错误时,最基本的错误恢复方式就是重传数据包。这种机制专门被设计用来应对数据包丢失的情况(比如:路由器流量负载过重、应用程序出现故障或者临时性的网络中断导致数据包丢失)。数据包层次上的移动速度非常快,数据包的丢失通常也只是暂时性的,因此TCP能否检测到数据包的丢失,并从中进行恢复就显得极其重要。
(2)重传计时器
TCP重传理论中,重传计时器是用于决定是否有必要重传的重要机制,重传计时器维护着重传超时(RTO—Retransmission Time Out)。在使用TCP开始传输数据包时,重传计时器会被启动,当收到ACK数据包时,重传计时器就会停止。从发送数据包到接收到确认数据包的时间称为RTT,将若干个RTT时间求和并计算平均值就是RTO值,但在确认RTO值之前,数据的传输操作使用默认RTT值,该设置用于主机之间的初始通信,并基于接收到的数据包的RRT进行调整,最终形成RTO值。一旦RTO值确定,重传计时器就被用于每个传输的数据包,从而确定数据包是否丢失。
(3)TCP重传的流程
当发送方发送了数据包,但没有收到接收方的ACK,发送方会假设自己发送的数据包没到接收方,数据包已经丢失。因此发送方会进行重传,如果到达了等待ACK的极限值还未收到ACK数据包,发送方就会以翻倍的RTO值再次发起重传……一般而言,windows操作系统会重传5次,linux操作系统重传15次(该值可修改)(实际上,RTO值的计算有专门的公式,这里的2倍关系只是便于阐述)。
(4)wireshark分析TCP的重传机制
发送方一直未收到接收方的ACK数据包,便会主动发起重传
第10课 TCP重传技术的研究
于 2022-03-27 17:31:09 首次发布