TCP三次握手
TCP的鏈接創建是一個三次握手過程,目的是爲了通訊雙方確認開始序號,以便後續通訊的有序進行。主要步驟以下:
服務器
- 鏈接開始時,鏈接創建方(Client)發送SYN包,幷包含了本身的初始序號a;
- 鏈接接受方(Server)收到SYN包之後會回覆一個SYN包,其中包含了對上一個a包的迴應信息ACK,迴應的序號爲下一個但願收到包的序號,即a+1,而後還包含了本身的初始序號b;
- 鏈接創建方(Client)收到迴應的SYN包之後,回覆一個ACK包作響應,其中包含了下一個但願收到包的序號即b+1。
TCP四次揮手
而TCP終止鏈接是一個四次握手的過程,具體的步驟以下:
3d
- 首先進行關閉的一方(即發送第一個FIN)將執行主動關閉,而另外一方(收到這個FIN)執行被動關閉。
- 當服務器收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。和SYN同樣,一個FIN將佔用一個序號。
- 同時TCP服務器還向應用程序(即丟棄服務器)傳送一個文件結束符。接着這個服務器程序就關閉它的鏈接,致使它的TCP端發送一個FIN。
- 客戶必須發回一個確認,並將確認序號設置爲收到序號加1。