三次握手與四次揮手分別對應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.定義 三次握手 three times handshake three way handshake 所謂的 三次握手 即對每次傳送的資料量是怎樣跟蹤進行協商使資料段的傳送和接收同步,根據所接收到的資料量而確定的資料確認數及資料傳送 接收完畢後何時撤消聯絡,並建立虛連線。2.為什麼要三次...
三次握手與四次揮手
syn 建立連線 synchronous ack確認 acknowledgement psh傳送 push fin結束 finish rst重置 reset urg緊急 urgent 我連你,你同意,我再連你 為什麼要建立三次握手?注 在建立連線中,任意一端掉線,tcp都會重發syn資料報,一般會重...