问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

tcp四种定时器详解

发布网友 发布时间:2024-10-17 17:25

我来回答

1个回答

热心网友 时间:2024-11-01 17:24

大家都知道,定时器在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四种定时器的全部内容,谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
下载了优酷播放器iku免登录版,安装在没联网的电脑上。查看不了本地的... 播放FLV的几个问题在线等 劲舞团真的有那么好玩吗? 为什么别人说劲舞团是世界上最淫荡的游戏.. 劲舞团好玩吗?? 030221 1020 060414 2168 060417 这几组数是什么意思啊!有知道的大哥请... ...分签约短信服务-【广东农信】”是什么意思? 2168是什么意思爱情 事业单位面试成绩79分算好的吗 事业编面试成绩76分算高分吗 尼康目前那款专业照相机比较好的? TCP 拥塞控制 为什么上课听的知识下课就忘? ...带上电影介绍什么的 坚决不要复制 也不要太多 几个就行 要你自己... 空调地线一接上漏电保护就跳 泰迪狗有白毛怎么回事 怎么拥有一口完美的英语口语发音? 华林国际珠宝城在哪里 泰迪狗有白毛怎么办? 茶叶专卖店套路 WOW满级多少啊?好玩吗? 乐视MAX21Spro运动智能穿戴蓝牙手环设置方法 一个成绩好的同学与一个成绩差的同学一起范错,老师就只骂成绩差的同学... 成绩好的人是不会因为在差班成绩会变差的 ?对不对?我被分到一个差班... 广西桂平市、贵港市都有那些好高中呢 桂平高中哪家好 如何回答女生“想结婚吗”? 纽曼T7平板电脑怎么连接家庭宽带 谁能推荐一个战地3的修改器哦 我刚买的纽曼T7平板电脑还有腾达11N的路由器,家里的台式机能上网,平板... 翔安区新店镇后房村会拆迁吗 婚礼两边有路引中间红地毯宽多少最? 为什么led会变暗 我户口是辽宁省鞍山市岫岩县新店镇新房身村的,我在大连保税区十三里 想买一台打印\复印一体机,请问激光还是喷墨的好,还有牌子,是在自己家里... 埋线和切开双眼皮手术的区别 惠普和佳能的打印机哪个好呢? 惠普激光一体机怎么样 割双眼皮和埋线哪个更好 火影忍者,听说宇智波鼬有把一些力量分给鸣人,是真的吗?为什么这么... 宛城区新店乡去哪里开无房证明 速冻饺子你们那里多少钱一袋?你喜欢吃什么馅的。我喜欢吃肉馅的。可是... ...之后半夜里有点胸闷发了点低烧,到现在还是低烧37.4不到 ...不好好吃饭,也没其他症状,呼吸道看嗓子也不红,该怎么办?_百度... 2023年牛几月卖会贵点-2023年养牛前景怎么样 凌晨什么时候锻炼身体最不适合?大神们帮帮忙 数学题(勾股定理---神秘的数组)高手来! office2016没激活过期如何激活? 几何高手帮忙下额唉。搞不懂这道初三几何题 市场上的菠萝架是4.26元一斤让妈妈买了3.6斤菠萝要花多少钱得数保留整数...