TCP三次握手和四次握手

2022-08-05 03:54:12 字數 2382 閱讀 5366

ip:網路層 不穩定性。硬體聯絡緊密

傳輸層: 1. 完全不彌補--udp--無連線不可靠報文傳輸

2. 完全彌補--tcp--面向連線的可靠資料報傳遞

tcp傳送資料就包含了tcp三次握手建立連線和關閉連線的四次握手

(建立連線用syn傳送,用ack應答)

所謂三次握手就是客戶端與伺服器之間的三次應答。伺服器是一直在監聽等待,只有客戶端主動找伺服器的時候伺服器才會回應這個客戶端,而不是伺服器去找客戶端,所以第一次握手就是客戶端給伺服器傳送資料(syn)。伺服器接到資料後,會給客戶端回兩種資料(syn+ack),這是第二次握手,其中ack資料會比客戶端發給伺服器的資料多1,表示讓客戶端知道伺服器接到了自己的資料,然後傳送代表自己的syn資料。最後第三次握手,就是客戶端給伺服器回ack資料,同樣多1,表示客戶端收到了伺服器的資料。

通俗來講:一天張三給李四打**,**接通後張三說:「李四,能聽見我說話嗎?」(這就是客戶端給伺服器傳送資料)。李四:「張三,我能聽到你說話,你能聽到我說話嗎?」(這是伺服器給客戶端回資料,伺服器必須先應答客戶端的資料後才能傳送自己的資料,表示能收到客戶端的資料,同時也要確認客戶端能收到自己的資料)張三:「可以聽到,李四。」(客戶端給伺服器回資料,表示自己能收到伺服器的資料,這樣連線就建立起來了)

三次握手是建立連線的最優方案,兩次會有不確定性,四次又會浪費資源。

這是官方解釋:

至此完成三次握手。

tcp中客戶端和伺服器斷開連線時得要進行四次握手來斷開連線,由於tcp連線是全雙工的,因此每個方向都必須單獨進行關閉。這原則是當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向的連線。收到乙個 fin只意味著這一方向上沒有資料流動,乙個tcp連線在收到乙個fin後仍能傳送資料。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。斷開流程如下圖所示:

上圖中間的四個箭頭即為四次揮手。

官方說明

張三給李四打**。確認打通後,張三巴拉巴拉說了一大堆,然後張三說「我的事說完了,你還有什麼要說的沒?」,這就相當於客戶端主動和伺服器斷開連線,這就是第一次握手。李四:「你的事說完了?好吧。」這是伺服器對客戶端斷開連線的請求的回應,這時客戶端就單方面的斷開了,現在就處於半關閉狀態,理論上客戶端現在只能接受資料,不能傳送資料,就像張三現在就只能聽李四說他的事,不能再說自己的事了。好,現在伺服器可以給客戶端傳送資料或者選擇斷開連線,李四:「我也沒啥事了,拜拜。」 第三次握手,伺服器請求斷開連線。張三:「好,拜拜。」第四次握手,客戶端回應伺服器斷開連線的請求,到這裡才算真正斷開了連線。

listen:表示服務端的處於連線監聽狀態,可以接受來自客戶端的連線。

syn_sent:這個狀態與syn_rcvd相對應,當客戶端socket執行connect連線時,它首先傳送syn報文,因此也隨即它會進入到了syn_sent狀態,並等待服務端的傳送三次握手中的第2個報文。syn_sent狀態表示客戶端已傳送syn報文。

syn_rcvd:這個狀態表示接受到了syn報文,在正常情況下,這個狀態是伺服器端的socket在建立tcp連線時的三次握手會話過程中的乙個中間狀態,很短暫。

established:客戶端/服務端連線建立。

fin_wait_1:該狀態是當客戶端socket在established狀態時,它想主動關閉連線,向服務端傳送了fin報文,此時該客戶端socket即進入到fin_wait_1狀態。

close_wait:該狀態的含義是表示服務端在等待關閉連線。當客戶端關閉socket後傳送fin報文給服務端,服務端毫無疑問地會回應乙個ack報文給客戶端,此時服務端則進入到close_wait狀態。

fin_wait_2:當客戶端處於fin_wait_1狀態時,當收到服務端回應ack報文後,則客戶端會立即進入到fin_wait_2狀態。

last_ack:該狀態是服務端在傳送fin報文後,最後等待客戶端的ack報文。當收到客戶端的ack報文後,也即可以進入到closed可用狀態了。

time_wait:該狀態表示客戶端收到了服務端的fin報文,並傳送出了ack報文,就等2msl後即可回到closed可用狀態了。

closed:這個狀態沒什麼好說的了,表示連線關閉後回到初始狀態。

tcp三次握手和四次握手

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

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源端向目的端傳送的位元組流,發起...