三次握手《 》四次握手

2022-07-03 07:39:15 字數 1684 閱讀 3453

1、第一次握手:客戶端給伺服器傳送乙個 syn 報文。

2、第二次握手:伺服器收到 syn 報文之後,會應答乙個 syn+ack 報文。

3、第三次握手:客戶端收到 syn+ack 報文之後,會回應乙個 ack 報文。

4、伺服器收到 ack 報文之後,三次握手建立完成

**********==》作用是為了確認雙方的接收與傳送能力是否正常。

第一次握手:客戶端傳送網路包,服務端收到了。這樣服務端就能得出結論:客戶端的傳送能力、服務端的接收能力是正常的。

第二次握手:服務端發包,客戶端收到了。這樣客戶端就能得出結論:服務端的接收、傳送能力,客戶端的接收、傳送能力是正常的。不過此時伺服器並不能確認客戶端的接收能力是否正常。

第三次握手:客戶端發包,服務端收到了。這樣服務端就能得出結論:客戶端的接收、傳送能力正常,伺服器自己的傳送、接收能力也正常。

詳細描述:

剛開始客戶端處於 closed 的狀態,服務端處於 listen 狀態

三次握手的作用

1、確認雙方的接受能力、傳送能力是否正常。

2、指定自己的初始化序列號,為後面的可靠傳送做準備。

3、如果是 https 協議的話,三次握手這個過程,還會進行數字證書的驗證以及加密金鑰的生成到。

剛開始雙方都處於 establised 狀態,假如是客戶端先發起關閉請求,則:

1、第一次揮手:客戶端傳送乙個 fin 報文,報文中會指定乙個序列號。此時客戶端處於closed_wait1狀態。

5、服務端收到 ack 報文之後,就處於關閉連線了,處於 closed 狀態。

注(這裡特別需要主要的就是time_wait這個狀態了,這個是面試的高頻考點,就是要理解,為什麼客戶端傳送 ack 之後不直接關閉,而是要等一陣子才關閉。這其中的原因就是,要確保伺服器是否已經收到了我們的 ack 報文,如果沒有收到的話,伺服器會重新發 fin 報文給客戶端,客戶端再次收到 fin 報文之後,就知道之前的 ack 報文丟失了,然後再次傳送 ack 報文。**********=》time_wait 持續的時間至少是乙個報文的來回時間。一般會設定乙個計時,如果過了這個計時沒有再次收到 fin 報文,則代表對方成功就是 ack 報文,此時處於 closed 狀態)

每個狀態所包含的含義

listen - 偵聽來自遠方tcp埠的連線請求;

syn-sent -在傳送連線請求後等待匹配的連線請求;

syn-received - 在收到和傳送乙個連線請求後等待對連線請求的確認;

established- 代表乙個開啟的連線,資料可以傳送給使用者;

fin-wait-1 - 等待遠端tcp的連線中斷請求,或先前的連線中斷請求的確認;

fin-wait-2 - 從遠端tcp等待連線中斷請求;

close-wait - 等待從本地使用者發來的連線中斷請求;

closing -等待遠端tcp對連線中斷的確認;

last-ack - 等待原來發向遠端tcp的連線中斷請求的確認;

time-wait -等待足夠的時間以確保遠端tcp接收到連線中斷請求的確認;

closed - 沒有任何連線狀態;

TCP 三次握手 四次握手

http常見狀態碼 200 ok 伺服器成功處理了請求 301 302 moved permanently 重定向 response中應該包含乙個location url,說明資源現在所處的位置 304 not modified 未修改 客戶的快取資源是最新的,要客戶端使用快取 404 not fo...

TCP三次握手與四次握手

當我們從瀏覽器輸入乙個url,http的工作流程如下圖所示 dns解析流程請看dns網域名稱解析過程這篇文章 現在來講tcp三次握手 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。1 序號 seq序號,佔32位,用來標識從tcp源端向目的端傳送的位元組流,發起...

tcp三次握手和四次握手

建立tcp需要三次握手才能建立,而斷開連線則需要四次握手。整個過程如下圖所示 先來看看如何建立連線的。首先client端傳送連線請求報文,server段接受連線後回覆ack報文,並為這次連線分配資源。client端接收到ack報文後也向server段發生ack報文,並分配資源,這樣tcp連線就建立了...