网络:为什么会出现大量的time_wait状态
TIME_WAIT狀態(tài)是什么?
TIME_WAIT狀態(tài)是主動(dòng)關(guān)閉TCP連接的一方(即先發(fā)起FIN包的一方),在發(fā)送完最后一個(gè)ACK包后進(jìn)入的狀態(tài)。系統(tǒng)需要在TIME_WAIT狀態(tài)下等待2MSL(maximum segment lifetime )后才能釋放連接(端口)。根據(jù)RFC 793 MSL是2分鐘,一般的TCP實(shí)現(xiàn)有30秒、1分鐘和2分鐘不等。
進(jìn)入TIME_WAIT狀態(tài)等待2MSL主要有兩個(gè)目的:
一方面是主動(dòng)關(guān)閉連接的一方在對(duì)方?jīng)]有收到最后一個(gè)ACK包時(shí)(這時(shí)對(duì)方還會(huì)重發(fā)FIN,收到兩個(gè)FIN的時(shí)間間隔一定小于2MSL)有時(shí)間可以重發(fā)ACK包;
另一方面處于TIME_WAIT的連接(IP和端口組合)不能重用,這樣可以保證被重新分配的socket不會(huì)受到之前殘留的延遲重發(fā)報(bào)文影響。
?
分析
?????? ?由于主動(dòng)關(guān)閉TCP連接的一方才會(huì)進(jìn)入TIME_WAIT狀態(tài),一般情況服務(wù)器端不會(huì)出現(xiàn)TIME_WAIT狀態(tài),因?yàn)榇蠖鄶?shù)情況都是客戶(hù)端主動(dòng)發(fā)起連接并主動(dòng)關(guān)閉連接。但是某些服務(wù)如pop/smtp、ftp卻是服務(wù)端收到客戶(hù)端的QUIT命令后主動(dòng)關(guān)閉連接,這就造成這類(lèi)服務(wù)器上容易出現(xiàn)大量的TIME_WAIT狀態(tài)的連接,而且并發(fā)量越大處于此種狀態(tài)的連接越多。另外,對(duì)于被動(dòng)關(guān)閉連接的服務(wù)在主動(dòng)關(guān)閉客戶(hù)端非法請(qǐng)求或清理長(zhǎng)時(shí)間不活動(dòng)的連接時(shí)(這種情況很可能是客戶(hù)端程序忘記關(guān)閉連接)也會(huì)出現(xiàn)TIME_WAIT的狀態(tài)。
什么情況下服務(wù)器會(huì)進(jìn)行主動(dòng)關(guān)閉的情況?
1)短連接的方式。如http服務(wù)器。
2)已經(jīng)進(jìn)入了瓶頸。即連接數(shù)已經(jīng)達(dá)到了極限值。
?
更多詳細(xì)參見(jiàn):https://blog.csdn.net/u013616945/article/details/77510925
總結(jié)
以上是生活随笔為你收集整理的网络:为什么会出现大量的time_wait状态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 赶尽杀绝TCP
- 下一篇: 后台开发技术--接入层设计