TCP IP三次揮手 YES

2022-10-09 01:21:11 字數 1481 閱讀 6828

正常情況下的四次揮手:

圖1:正常情況下wireshark抓包的四次揮手

圖2:正常情況下四次揮手分析流程圖

一、客戶端:伺服器在嘛?我想要斷開連線?

client將fin置為1,序號seq=u,傳送給server,進入fin_wait_1狀態;

二、伺服器:在的,但是我這邊還有資料沒傳送完,你等我下;

server收到後,將ack置為1,ack=u+1,響應給client,進入close_wait狀態;client收到響應後,進入fin_wait_2狀態;

三、伺服器:客戶端好了,我資料傳輸完成了,你可以徹底關閉連線離開我了;

server在結束所有資料傳輸後,將fin置為1,seq=w,傳送給client,進入last_ack狀態;

四、客戶端:好的伺服器,我走啦

client收到後,將ack置為1,ack=w+1,響應給server,進入time_wait狀態,等待2msl後,進入closed狀態 server收到後,進入closed狀態

特殊情況下的三次揮手:圖3:特殊情況下wireshark抓包的三次揮手

分析:這邊相比較於上面的四次揮手,這邊少了一次ack;將第二次和第三次進行合併;過程如下:

一、客戶端:伺服器在嘛?我想要斷開連線?

二、伺服器:在的,我這邊也沒有資料要傳了,你可以直接關閉了

三、客戶端:好的伺服器,我走啦

原因:

三次揮手:當一方關閉連線,另外一方沒有資料傳送時,馬上關閉連線,也就將第二步的ack與第三步的fin合併為一步了,這個優化在rfc793 3.5節有講,從理論上也確實是這樣,之所以有四次揮手,是因為第二次和第三次中間服務端還需要繼續傳送資料,如果沒有資料需要傳送,就可以將這兩次進行合併。

話外:time_wait是主動發起斷開連線的一方的狀態,2msl等待時間,存在的原因:

1、為了可以處理延遲達到的請求。

2、防止傳送ack丟失,可以保證ack的重新傳送。

end:少年的志向,不應該是房子,他們應該伏案疾書,或為心中的夢想而揮灑汗水,暢想著自己未來光明的人生,少年的夢想,也不應該是生活,他們應該想要集齊七顆龍珠,或者幻想著擁有一顆皮卡丘。

TCP IP三次握手 四次揮手

一 tcp ip三次握手原理 建立連線協議 三次握手 1 客戶端向伺服器端傳送連線請求包syn syn j 等待伺服器回應 2 伺服器端收到客戶端連線請求包syn syn j 後,將客戶端的請求包syn syn j 放入到自己的未連線佇列,此時伺服器需要傳送兩個包給客戶端 1.向客戶端傳送確認自己收...

TCP IP三次握手 四次揮手

我們在使用網際網路和別的 進行通訊的時候,都要依賴tcp ip協議。甚至有時候網不太好,瀏覽器會顯示當前狀態 正在與某某 握手.當網路狀態很好的時候,就會一閃而過。本文將詳細總結筆者在學習三次握手四次揮手時的各個狀態以及過程。首先,狀態圖如下。初始時,客戶端和服務端都是closed狀態。這時,客戶端...

TCP IP三次握手四次揮手

tcp三次握手 所謂握手,也就是建立連線,三次過程。三次握手旨在連線到服務端的指定埠,進行通訊。建立乙個tcp連線,需要向客戶端和服務端傳送三個包。其中包含同步序列號和確認號以及tcp視窗大小的資訊交換。一般觸發握手在socket中都是connect 函式觸發的 第一次握手 客戶端傳送tcp請求,s...