34、TCP时间等待定时器处理机制详解

TCP时间等待定时器处理机制详解

1. 时间等待定时器概述

在网络通信中,TCP连接关闭后会进入TIME_WAIT状态,为了管理处于这个状态的连接,需要使用时间等待定时器。定时器会按照相等的时间间隔处理各个槽位(slot)。如果获得第一个槽位,意味着应将其放置在当前即将最先过期的调度槽位的下一个槽位。

2. 槽位计算与模式切换

首先会计算回收模式(recycle mode)下的槽位。在代码的第529行(cs 10.34)进行回收模式槽位的计算,具体做法是将超时值向上取整为 2 * TCP_TW_RECYCLE_TICK 的倍数,然后将最终值除以 2 * TCP_TW_RECYCLE_TICK 。若计算得到的值超过回收模式的限制,就会切换到非回收模式(non - recycle mode)。

在第531行,会持有全局时间等待锁 tw_death_lock ,因为接下来要操作全局时间等待链。接着会检查时间等待桶(time - wait bucket)是否已经被调度。如果时间等待桶的 pprev_death 字段不为空,说明它已经链接在全局列表中,此时会在第534 - 539行将该桶从列表中移除,并将 tcp_tw_count 减1,因为后续要重新调度它,重新调度会使计数器加1。如果该桶之前未被调度,会对其持有额外的引用,以确保在定时器过期之前不会销毁该时间等待桶。之后会检查基于回收时钟计算的槽位是否超过回收时间等待表持有的最大槽位数 TCP_TW_RECYCLE_SLOTS 。 </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值