三次握手
第一次握手: 客戶端向服務端發送連接請求報文段,該報文段中包含自身的資料通訊初始序號,請求發送后,客戶端便進入 SYN-SENT 狀態,
第二次握手: 服務端收到連接請求報文段后,如果同意連接,則會發送一個應答,該應答中也會包含自身的資料通訊初始序號,發送完成后便進入 SYN-RECEIVED 狀態,
第三次握手: 當客戶端收到連接同意的應答后,還要向服務端發送一個確認報文,客戶端發完這個報文段后便進入 ESTABLISHED 狀態,服務端收到這個應答后也進入 ESTABLISHED 狀態,此時連接建立成功,

TCP 三次握手的建立連接的程序就是相互確認初始序號的程序,告訴對方,什么樣序號的報文段能夠被正確接收, 第三次握手的作用是客戶端對服務器端的初始序號的確認,如果只使用兩次握手,那么服務器就沒有辦法知道自己的序號是否 已被確認,同時這樣也是為了防止失效的請求報文段被服務器接收,而出現錯誤的情況,
四次揮手
第一次揮手: 若客戶端認為資料發送完成,則它需要向服務端發送連接釋放請求,
第二次揮手:服務端收到連接釋放請求后,會告訴應用層要釋放 TCP 鏈接,然后會發送 ACK 包,并進入 CLOSE_WAIT 狀態,此時表明客戶端到服務端的連接已經釋放,不再接收客戶端發的資料了,但是因為 TCP 連接是雙向的,所以服務端仍舊可以發送資料給客戶端,
第三次揮手:服務端如果此時還有沒發完的資料會繼續發送,完畢后會向客戶端發送連接釋放請求,然后服務端便進入 LAST-ACK 狀態,
第四次揮手: 客戶端收到釋放請求后,向服務端發送確認應答,此時客戶端進入 TIME-WAIT 狀態,該狀態會持續 2MSL(最大段生存期,指報文段在網路中生存的時間,超時會被拋棄) 時間,若該時間段內沒有服務端的重發請求的話,就進入 CLOSED 狀態,當服務端收到確認應答后,也便進入 CLOSED 狀態,
TCP 使用四次揮手的原因是因為 TCP 的連接是全雙工的,所以需要雙方分別釋放到對方的連接,單獨一方的連接釋放,只代 表不能再向對方發送資料,連接處于的是半釋放的狀態,
最后一次揮手中,客戶端會等待一段時間再關閉的原因,是為了防止發送給服務器的確認報文段丟失或者出錯,從而導致服務器 端不能正常關閉,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/339111.html
標籤:其他
上一篇:計算機網路學習01
下一篇:微信小程式開發———音樂播放器
