三次握手四次揮手

2021-09-25 14:56:16 字數 1259 閱讀 6892

三次握手與四次揮手分別對應tcp連線建立過程與斷開過程,先上tcp報文格式:

三次握手過程:

問題1: 為什麼要三次握手?

答:三次握手的目的是建立可靠的通訊通道,說到通訊,簡單來說就是資料的傳送與接收,而三次握手最主要的目的就是雙方確認自己與對方的傳送與接收機能正常。

第一次握手:client什麼都不能確認;server確認了對方傳送正常

第二次握手:client確認了:自己傳送、接收正常,對方傳送、接收正常;server確認了:自己接收正常,對方傳送正常

第三次握手:client確認了:自己傳送、接收正常,對方傳送、接收正常;server確認了:自己傳送、接收正常,對方傳送接收正常

所以三次握手就能確認雙發收發功能都正常,缺一不可。

問題2:為什麼要傳送特定的資料報,隨便發不行嗎?

答:三次握手的另外乙個目的就是確認雙方都支援tcp,告知對方用tcp傳輸。

第一次握手:server 猜測client可能要建立tcp請求,但不確定,因為也可能是client亂髮了乙個資料報給自己

第二次握手:通過ack=j+1,client知道server是支援tcp的,且理解了自己要建立tcp連線的意圖

第三次握手:通過ack=k+1,server知道client是支援tcp的,且確實是要建立tcp連線

問題3:上圖中的syn和ack是什麼?

答:syn是標誌位,syn=1表示請求連線;

ack其實就是ack後面加上的那個數,真正傳送的時候不單獨發ack,只發ack,下面四次揮手的圖同理

四次揮手:

問題1: 為什麼要四次揮手?

答:根本原因是,一方傳送fin只表示自己發完了所有要發的資料,但還允許對方繼續把沒發完的資料發過來。

舉個例子:a和b打**,通話即將結束後,a說「我沒啥要說的了」,b回答「我知道了」,但是b可能還會有要說的話,a不能要求b跟著自己的節奏結束通話,於是b可能又巴拉巴拉說了一通,最後b說「我說完了」,a回答「知道了」,這樣通話才算結束。

問題2:為什麼雙方要傳送這樣的資料報?

答:和握手的情況類似,只是為了讓對方知曉自己理解了對方的意圖。

三次握手 四次揮手

1.tcp連線的建立 1 首先是伺服器初始化的過程,從 closed 關閉 狀態開始通過順序呼叫 socket bind listen 和accept 原語建立 socket 套接字,進入 listen 監聽 狀態,等待客戶端的 tcp傳輸連線請求。2 客戶端最開始也是從 closed 狀態開始呼叫...

三次握手,四次揮手

三次握手 three times handshake three way handshake 所謂的 三次握手 即對每次傳送的 資料量是怎樣跟蹤進行協商使 資料段的傳送和接收同步,根據所接收到的資料量而確定的資料確認數及資料傳送 接收完畢後何時撤消聯絡,並建立虛連線。為了提供可靠的傳送,tcp在傳送...

三次握手 四次揮手

在tcp ip 協議中,tcp 協議提供可靠的連線服務,採用三次握手建立乙個連線,如圖1所示。1 第一次握手 建立連線時,客戶端a 傳送syn 包 syn j 到伺服器b 並進入syn send 狀態,等待伺服器b 確認。2 第二次握手 伺服器b 收到syn 包,必須確認客戶a 的syn ack j...