TIME_WAIT狀態的意義


客戶端與服務器端建立TCP/IP連接后關閉SOCKET后,服務器端連接的端口
狀態為TIME_WAIT
 
是不是所有執行主動關閉的socket都會進入TIME_WAIT狀態呢?
有沒有什么情況使主動關閉的socket直接進入CLOSED狀態呢?
 
主動關閉的一方在發送最后一個ack 后
就會進入TIME_WAIT 狀態 停留2MSL(max segment lifetime)時間
這個是TCP/IP必不可少的,也就是“解決”不了的。
也就是TCP/IP設計者本來是這么設計的
主要有兩個原因
1。防止上一次連接中的包,迷路后重新出現,影響新連接
  (經過2MSL,上一次連接中所有的重復包都會消失)
2。可靠的關閉TCP連接
  在主動關閉方發送的最后一個ack(fin) ,有可能丟失,這時被動方會重新發
  fin, 如果這時主動方處於CLOSED 狀態 ,就會響應rst 而不是ack。所以
  主動方要處於TIME_WAIT 狀態,而不能是CLOSED 。
TIME_WAIT 並不會占用很大資源的,除非受到攻擊。
還有,如果一方send 或recv 超時,就會直接進入CLOSED 狀態

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com