TCP的3次握手,4次揮手
TCP(Transmission Control Protocol,傳輸控制協議)是面向連接的協議,也可是說是對“傳輸、發送、通信”進行“控制”的協議。
TCP作為一種面向有連接的協議,只有在確認通信對端存在時才會發送數據,從而可以控制通信流量的浪費。且TCP實現了數據傳輸時各種控制功能,可以進行丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。TCP通過檢驗和、序列號、確認應答、重發控制、連接管理以及窗口控制等機制實現可靠性傳輸。
1、TCP建立連接的3次握手過程
- 主機A通過向主機B發送一個含有同步序列號的標志位的數據段給主機B,向主機B請求建立連接,通過這個數據段,主機A告訴主機B兩件事:我想要和你通信;你可以用哪個序列號作為起始數據段來回應我;
- 主機B收到主機A的請求后,用一個帶有確認應答(ACK)和同步序列號(SYN)標志位的數據段響應主機A,也告訴主機A兩件事:我已經收到你的請求了,你可以傳輸數據了;你要用哪個序列號作為起始數據段來回應我;
- 主機A收到這個數據段后,再發送一個確認應答,確認已收到主機B的數據段:“我已收到回復,我現在要開始傳輸實際數據了”。
這樣3次握手就完成了,主機A和主機B就可以傳輸數據了。

2、TCP斷開連接的4次確認
- 當主機A完成數據傳輸后,將控制位FIN置1,提出停止TCP連接的請求;
- 主機B收到FIN后對其作出響應,確認這一方向上的TCP連接將關閉,將ACK置1;
- 由B端再提出反方向的關閉請求,將FIN置1;
主機A對主機B的請求進行確認,將ACK置1,雙方向的關閉結束。

由TCP的3次握手和4次斷開確認可以看出,TCP使用面向連接的通信方式,大大提高了數據通信的可靠性,使發送數據端和接收端在數據正式傳輸前就有了交互,為數據正式傳輸打下了可靠的基礎。