tcp四种定时器详解

所属分类: 网络 / 网络其他 阅读数: 458
收藏 0 赞 0 分享

  大家都知道,定时器在TCP可靠传输的过程中起着举足轻重的作用。TCP在建立连接之后可能(保活keep-alive定时器是可选的)会启动四个定时器。

  TCP使用四种定时器(Timer,也称为“计时器”):

  重传计时器:Retransmission Timer

  坚持计时器:Persistent Timer

  保活计时器:Keeplive Timer

  时间等待计时器:Time_Wait Timer。

  (1)重传计时器:Retransmission Timer

  重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:若在计时器超时之前收到对报文段的确认,则撤销计时器;若在收到对特定报文段的确认之前计时器超时,则重传该报文,并把计时器复位;重传时间=2*RTT;

  RTT的值应该动态计算。常用的公式是:RTT=previous RTT*i + (1-i)*current RTT。i的值通常取90%,即新的RTT是以前的RTT值的90%加上当前RTT值的10%.

  Karn算法:对重传报文,在计算新的RTT时,不考虑重传报文的RTT。因为无法推理出:发送端所收到的确认是对上一次报文段的确认还是对重传报文段的确认。干脆不计入。

  (2)坚持计时器:persistent timer

  专门为对付零窗口通知而设立的。

  当发送端收到零窗口的确认时,就启动坚持计时器,当坚持计时器截止期到时,发送端TCP就发送一个特殊的报文段,叫探测报文段,这个报文段只有一个字节的数据。探测报文段有序号,但序号永远不需要确认,甚至在计算对其他部分数据的确认时这个序号也被忽略。探测报文段提醒接收端TCP,确认已丢失,必须重传。

  坚持计时器的截止期设置为重传时间的值,但若没有收到从接收端来的响应,则发送另一个探测报文段,并将坚持计时器的值加倍和并复位,发送端继续发送探测报文段,将坚持计时器的值加倍和复位,知道这个值增大到阈值为止(通常为60秒)。之后,发送端每隔60s就发送一个报文段,直到窗口重新打开为止;补充:

  坚持定时器的原理是简单的,当TCP服务器收到了客户端的0滑动窗口报文的时候,就启动一个定时器来计时,并在定时器溢出的时候向向客户端查询窗口是否已经增大,如果得到非零的窗口就重新开始发送数据,如果得到0窗口就再开一个新的定时器准备下一次查询。通过观察可以得知,TCP的坚持定时器使用1,2,4,8,16……64秒这样的普通指数退避序列来作为每一次的溢出时间。

  糊涂窗口综合症

  TCP的窗口协议,会引起一种通常叫做糊涂窗口综合症的问题,具体表现为,当客户端通告一个小的非零窗口时,服务器立刻发送小数据给客户端并充满其缓冲区,一来二去就会让网络中充满小TCP数据报,从而影响网络利用率。对于发送方和接收端的这种糊涂行为。

  再次补充:

  TCP通过让接收方指明希望从发送方接收的数据字节数(即窗口大小)来进行流量控制。如果窗口大小为 0会发生什么情况呢?这将有效地阻止发送方传送数据,直到窗口变为非0为止。

  TCP不对ACK报文段进行确认, TCP只确认那些包含有数据的ACK报文段。

  如果一个确认丢失了(这个确认是”接收方“向”发送方“发送的ACK,通知”发送方“自己的窗口已经非0了),则双方就有可能因为等待对方而使连接终止:接收方等待接收数据(因为它已经向发送方通告了一个非 0的窗口),而发送方在等待允许它继续发送数据的窗口更新。为防止这种死锁情况的发生,发送方使用一个坚持定时器 (persist timer)来周期性地向接收方查询,以便发现窗口是否已增大。这些从发送方发出的报文段称为窗口探查 (window probe)。

  (3)保活计时器:keeplive timer

  每当服务器收到客户的信息,就将keeplive timer复位,超时通常设置2小时,若服务器超过2小时还没有收到来自客户的信息,就发送探测报文段,若发送了10个探测报文段(没75秒发送一个)还没收到响应,则终止连接。

  补充:

  保活定时器更加的简单,还记得FTP或者Http服务器都有Sesstion Time机制么?因为TCP是面向连接的,所以就会出现只连接不传送数据的“半开放连接”,服务器当然要检测到这种连接并且在某些情况下释放这种连接,这就是保活定时器的作用。其时限根据服务器的实现不同而不通。另外要提到的是,当其中一端如果崩溃并重新启动的情况下,如果收到该端“前生”的保活探察,则要发送一个RST数据报文帮助另一端结束连接。

  (4)时间等待计时器:Time_Wait Timer

  在连接终止期使用,当TCP关闭连接时,并不认为这个连接就真正关闭了,在时间等待期间,连接还处于一种中间过度状态。这样就可以时重复的fin报文段在到达终点后被丢弃,这个计时器的值通常设置为一格报文段寿命期望值的两倍。

  补充:

  2MSL定时器:MSL是报文段做大生存时间(Maximum Segment Lifetime),设置这个定时器有两个目的:

  其一是为了测量连接处于TIME_WAIT状态的时间.这样可以让TCP再次发送最后的ACK以防止这个ACK丢失(如果丢失,另一端会重传FIN)。

  其二,为允许老的重复分节在网络中消逝。具体可以解释为,如果一个TCP连接在断开之前有迷途分节尚未消逝,在断开该TCP连接之后立刻重启一个同样的连接(双方的IP地址和端口port相同),这时之前的迷途的老分节可能对新的新的TCP连接接收,从而造成未定义的错误。为了避免这种情况,TCP规定在TIME_WAIT状态,不能启动一个连接的化身。既然TIME_WAIT状态维持2MSL,这就保证了一个连接上的分组及其应该在 2MSL内都会消失。

  以上就是关于tcp四种定时器的全部内容,谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。

更多精彩内容其他人还在看

局域网限速管理软件之路由器分配网速分配软件、路由器网速限制软件怎么选择

这篇文章主要介绍了局域网限速管理软件之路由器分配网速分配软件、路由器网速限制软件怎么选择,需要的朋友可以参考下
收藏 0 赞 0 分享

局域网流量监控软件之如何突破ARP防火墙限速、绕过ARP防火墙限制网速

局域网网速常常不够快,一旦被局域网某些员工用P2P下载、看在线视频、玩大型网络游戏所占用的话,会导致局域网网速更慢,严重影响局域网正常的工作。为此,企业局域网必须有效控制电脑网速、限制局域网网速
收藏 0 赞 0 分享

局域网共享文件管理之如何设置共享文件的不同访问权限、保护共享文件安全

这篇文章主要介绍了局域网共享文件管理之如何设置共享文件的不同访问权限、保护共享文件安全,需要的朋友可以参考下
收藏 0 赞 0 分享

网管员如何禁止电脑上网,怎么禁止电脑上网,禁止电脑访问互联网

在企业局域网网络管理中,为了防止员工上班时间上网冲浪、看视频、玩网络游戏、网购等,我们需要禁止电脑访问外网,那么如何实现呢,需要的朋友可以参考下
收藏 0 赞 0 分享

公司局域网如何控制共享文件访问、设置共享文件访问权限,保护共享文件安全

这篇文章主要介绍了公司局域网如何控制共享文件访问、设置共享文件访问权限,保护共享文件安全,需要的朋友可以参考下
收藏 0 赞 0 分享

胖AP与瘦AP区别分析

将多个AP部署在会议室中,使用同一个SSID,瘦AP的组网方案比较适合,胖AP和瘦AP组网方案存在如下区别
收藏 0 赞 0 分享

宽带如何免费提速(电信、联通) 宽带免费提速技巧

对于光纤宽度用户来说,提速很容易的,不过如何免费为自己的电信宽带账户提速呢?下面小编就来进一步介绍一下宽带如何免费提速(电信、联通),为个人总结后的经验,仅供参考
收藏 0 赞 0 分享

WPA/WPA2无线网络密码破解图文教程

先跟大家说明一下基础知识:首先要明白一种数学运算,它叫做哈希算法(hash),这是一种不可逆运算,你不能通过运算结果来求解出原来的未知数是多少,有时我们还需要不同的未知数通过该算法计算后得到的结果不能相同
收藏 0 赞 0 分享

局域网暴风影音限制上传速度、暴风影音限制网速的方法

这篇文章主要介绍了局域网暴风影音限制上传速度、暴风影音限制网速的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

完爆Wi-Fi的Li-Fi是什么?与Wi-Fi有哪些不同?

如今,一个新的技术正在向Wi-Fi发起革命性的的冲击,它就是Li-Fi(可见光无限通信技术),该技术由德国物理学家Herald Haas和他的爱丁堡大学科研团队发明,那么完爆Wi-Fi的Li-Fi是什么?与Wi-Fi有哪些不同?下面我们来看看吧
收藏 0 赞 0 分享
查看更多