1. 程式人生 > 其它 >TCP四次揮手的過程,為什麼不是三次

TCP四次揮手的過程,為什麼不是三次

TCP四次揮手的過程:

 

 

 

理解:

TCP是雙向通訊協議,客戶端傳送FIN到服務端,告訴服務端,客戶端不會再發送資料了,但是服務端還有訊息未傳送完畢,為防止客戶端訊息等待,服務端會首先發送ACK確認字元到客戶端,並關閉訊息接收服務。但是服務端會將剩餘訊息傳送完畢,然後傳送FIN到客戶端,告訴客戶端不會再發送訊息,然後客戶端會回覆ACK表示收到,並關閉服務,當服務端收到ACK後,驗證正常則會關閉所有的服務,TCP連線中斷完畢。

為什麼建立連線是三次握手,而關閉連線卻是四次揮手呢?

這是因為服務端在LISTEN狀態下,收到客戶端傳送的斷開連線的FIN報文後,可能會有資料未傳送完成,需要繼續傳送,因此不能將確認訊息和請求關閉訊息同時傳送,而是會先關閉接收服務回覆確認訊息,然後繼續傳送未完訊息到客戶端,直到傳送結束,再發送請求關閉訊息.



作者:呂豔凱
連結:https://www.jianshu.com/p/e2fa390ac0c0
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。