美文网首页
搞定time_wait,就靠它了

搞定time_wait,就靠它了

作者: CPP后台服务器开发 | 来源:发表于2018-11-12 20:59 被阅读7次

1.time_wait状态是什么
简单来说:time_wait状态是四次挥手中server向client发送FIN终止连接后进入的状态
我们经常说的三个状态:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。


2.TIME_WAIT是怎样产生的?
因为TCP连接是双向的,所以在关闭连接的时候,两个方向各自都需要关闭。先发FIN包的一方执行的是主动关闭;
后发FIN包的一方执行的是被动关闭。主动关闭的一方会进入TIME_WAIT状态,并且在此状态停留两倍的MSL时长。


3.什么是MSL?
MSL指的是报文段的最大生存时间,如果报文段在网络活动了MSL时间,还没有被接收,那么会被丢弃。 关于MSL的大小,RFC
793协议中给出的建议是两分钟,不过实际上不同的操作系统可能有不同的设置,
以Linux为例,通常是半分钟,两倍的MSL就是一分钟,也就是60秒,并且这个数值是硬编码在内核中的, 也就是说除非你重新编译内核,否则没法修改它:


4.为什么会有time_wait状态
time_wait存在的原因有两点
1.可靠的终止TCP连接。
2.保证让迟来的TCP报文段有足够的时间被识别并丢弃。
1.可靠的终止TCP连接,若处于time_wait的client发送给server确认报文段丢失的话,server将在此又一次发送FIN报文段,那么client必须处于一个可接收的状态就是time_wait而不是close状态。
2.保证迟来的TCP报文段有足够的时间被识别并丢弃,linux 中一个TCPport不能打开两次或两次以上。当client处于time_wait状态时我们将无法使用此port建立新连接,假设不存在time_wait状态,新连接可能会收到旧连接的数据。


5.哪一方会有time_wait状态
time_wait状态是一般是client的状态。
并且会占用port
有时产生在server端,由于server主动断开连接或者发生异常


6.怎样避免time_wait状态占用资源
假设是client,我们一般不用操心,由于client一般选用暂时port。再次创建连接会新分配一个port。
除非指定client使用某port,只是一般不须要这么做。
假设是server主动关闭连接后异常终止。则由于它总是使用用一个知名serverport号,所以连接的time_wait状态将导致它不能重新启动。只是我们能够通过socket的选项SO_REUSEADDR来强制进程马上使用处于time_wait状态的连接占用的port。
通过socksetopt设置后,即使sock处于time_wait状态,与之绑定的socket地址也能够马上被重用。
此外也能够通过改动内核參数/proc/sys/net/ipv4/tcp_tw/recycle来高速回收被关闭的socket,从而是tcp连接根本不进入time_wait状态,进而同意应用程序马上重用本地的socket地址。


7.如果没有time_wait会怎么样?
我们举一个比较简单的例子:假设服务端发送了断开请求的包,(假设没有TIME_WAIT),客户端收到后立马就回复了确认包,连接就关闭了,但是服务器这边其实还有一个数据在路上,到了之后会发现客户端已经关闭了,一脸懵逼的收到了一个RST包,然后也关闭了连接,这样就导致了数据包的丢失。

相关文章

  • 搞定time_wait,就靠它了

    1.time_wait状态是什么简单来说:time_wait状态是四次挥手中server向client发送FIN终...

  • 搞定文案就靠它————《文案创作完全手册》

    标题是一个神奇的东西,今天我就来说说这标题。 这几天新闻、公众号都有关于三种颜色的文章,我找了几个关于这个内容的文...

  • 以后解决午餐就靠它了,靠谱

    A:嘿,走,吃饭去。 B:好,走! B:吃什么? A:吃饭! B:去哪儿吃? A:饭店! 作为大都市的上班族,这个...

  • 保持年轻?秘诀就靠它了!

    隔壁有对夫妻,八十多岁,每天雷打不动,早上起来,搬两条小板凳,坐在路边看人来人往,一直到晚上。看行人,成了他们每日...

  • 年后刮油,就靠它了——苦苣

    春节在家,你吃了什么好吃的了?(委婉地提问,这个春节你胖了几斤) 是时候来点青菜了吧,清热败火,刮油去腻,就是它了...

  • pdfkit | 生成PDF就靠它了

    在用jupyter notebook写代码文档的时候,有时需要导出pdf版本,但jupyter会报错。我在想,除了...

  • 成交就靠它

    昨天我一位逗逼代理给我说:跟客户沟通聊天的时候,不知道是什么鬼,就是成交不了,一到这个点,我心里就紧张的不要不要的...

  • 赚钱就靠它!

    很多朋友学习销售文案,学了很多,想了很多,但是做的却很少,真正用文案挣钱的就更少了. . . . . 一方面是因为...

  • 还本归真

    如今已经不是那个靠使劲忽悠就可以搞定客户的时代了; 也不是那个靠大胆承诺就可以搞定姑娘的时代了; ...

  • 晨读感悟  调节生活,就靠它了!

    各位好,欢迎点开我的晨读感悟。 每天写作一千字,坚持带来大改变。 今天的内容参考了书目:《每天懂一点色彩心理学·实...

网友评论

      本文标题:搞定time_wait,就靠它了

      本文链接:https://www.haomeiwen.com/subject/omchfqtx.html