TCP FIN_WAIT_2探究(1)

TCP FIN_WAIT_2探究(1)

tcp close简单来说只是四次挥手,但在四次挥手过程中,如果其中一端断电、系统崩溃,可能会引发另一端端口长时间释放不了而占用系统资源,下面我会针对tcp FIN_WAIT_2做一些说明:

与fin_wait_2超时时间相关的参数有struct tcp_sock的linger2变量和sysctl_tcp_fin_timeout变量,linger2变量声明如下所示:

struct tcp_sock {
int linger2;
};

linger2通过setsockopt的SOL_TCP,TCP_LINGER2设置,单位是jiffies;setsockopt设置TCP_LINGER2传入的val参数单位是秒,通过HZ x val转换成jiffies赋值给linger2;在设置linger2时,如果传入的val小于0,则置linger2为-1;如果传入的val值比tcp_fin_timeout大,则置linger2为0;如果上述两点都不满足,则置linger2为val x HZ;

sysctl_tcp_fin_timeout在/proc/sys/net/ipv4下有对应的可修改项:tcp_fin_timeout,tcp_fin_timeout通过proc接口读的是以秒为单位,在内核对应的sysctl_tcp_fin_timeout变量以jiffies为单位,在net/ipv4/sysctl_net_ipv4.c文件中可见sysctl_tcp_fin_timeout的proc_handler是proc_dointvec_jiffies,所以proc接口会对其有个转换;

tcp在fin_wait_2状态超过linger2对应的时间并且tcp是SOCK_DEAD状态,会给对端发送reset并且释放当前端口&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值