解析TCP三次握手四次揮手

2021-08-02 19:14:42 字數 1751 閱讀 1026

1.tcp的運輸連線

tcp的運輸連線用於傳送tcp報文,包括三個階段:建立連線、資料傳送、釋放連線;

2.tcp建立連線要解決的問題:

①使雙方要知道對方的存在;

②允許雙方協商一些引數,如最大視窗值

③能對運輸實體資源進行分配,如快取大小;

3.tcp三次握手過程(假設客戶端為a,伺服器端為b)

①a向b傳送建立連線請求(syn設定為有效);

②b收到a的連線請求報文段後,同意建立連線,向a傳送確認(syn+ack設定為有效);

③a收到b的確認後,向b給出確認(ack設定為有效);

此時,三次握手完成,連線建立成功,然後就可以進行資料傳送了。

4.三次握手的原因:

(1)假設建立連線經過二次握手:包括a請求連線,b收到請求後向a傳送確認。

a發出的第乙個連線請求報文段沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到某個時間才到達b。

本來這是乙個早已失效的報文段,但b收到此失效的連線請求報文段後,就向a發出確認報文段,同意建立連線。

只要a發出確認,新的連線就建立了。由於現在a並沒有發出建立連線的請求,因此不會理睬b的確認,也不會向b傳送ack包。

(2)假設建立連線經過四次握手:

①a向b傳送建立連線請求(syn設定為有效);

②b收到a的連線請求報文段後,同意建立連線,向a傳送確認(syn+ack設定為有效);

③a收到b的確認後,向b給出確認(ack設定為有效);

④b收到a的確認後,再次向a傳送確認(ack設定為有效);

但第四次握手是完全沒有必要的,造成了資源浪費

所以,二次握手可能引起網路中延遲分組問題,四次握手造成資源浪費問題,只有三次握手剛好可以建立連線並且不浪費資源。

5.tcp四次揮手過程:(假設客戶端為a,伺服器端為b)

①a向b傳送斷開連線請求,並且停止傳送資料,關閉tcp連線(fin設定為有效);

②b收到斷開連線請求後,向a傳送確認(ack設定為有效),a進入終止等待狀態;

③此時tcp處於半關閉狀態,即b如果向a傳送資料時,a仍然要接收,但b沒有要傳送的資料時,通知tcp斷開連線,向a傳送斷開連線報文(fin+ack設定為有效);

④a收到b的斷開連線報文後,向b傳送確認(ack設定為有效),a進入時間等待狀態,經過時間等待計時器設定的2msl後,進入關閉狀態;

6.四次揮手的原因:

首先,a第一次傳送的請求和最後一次傳送的確認是必不可少的,這和三次握手的原因類似。其次, 由於上面提到過,當b收到a的斷開連線請求時,b必須先向a發出乙個確認收到請求,讓a進入終止等待,但此時tcp處於半關閉狀態,b仍然可以向a傳送資料,a必須要接收,同時b還要重**送確認號,進入最後確認狀態,所以b的兩次確認不能缺少。

7.為什麼請求斷開連線的一方必須在時間等待計時器狀態等待2msl?

①為了保證a傳送的最後乙個確認報文能到達b:

因為這個確認報文可能丟失,b在收不到這個確認報文時,超時重傳fin+ack報文段,a能在2msl時間內收到這個重傳報文,然後再次向b傳送確認,重新啟動時間等待計時器;

②防止出現網路中延遲分組問題;

TCP三次握手 四次揮手

tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...

TCP三次握手 四次揮手

服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。1 客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn 1,ack 0,同時選擇乙個初始序號seq ...

TCP三次握手四次揮手

tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。位碼即tcp標誌位,有6種標誌 urg urgent緊急 ack acknowledgement 確認 psh push傳送 rst...