對於TCP連線三次握手和四次揮手的理解

2021-10-06 22:40:10 字數 863 閱讀 4996

為了理解tcp的三次握手和四次揮手需要了解tcp協議

tcp協議的頭如下:

源埠和目的埠各佔16位也就是兩個位元組,這也就說明了為什麼埠號在程式中是unsigned short型別的值。標誌位flags有六個:urg:緊急指標(urgent pointer)有效。ack:確認序號有效。psh:接收方應該盡快將這個報文交給應用層。rst:重置連線。syn:發起乙個新連線。fin:釋放乙個連線。按位設定每乙個標誌位代表乙個狀態,比如發起新的連線時syn位

置1。三次握手:

accept不參與三次握手,只是從監聽套接字對應的已完成連線佇列中取出乙個連線。通過這個連線,accept返回的套接字可以與對端進行通訊,因為這個連線中有源ip位址、目的ip位址、協議號、源埠、目的埠五個元素,也包含接收和傳送緩衝區。send函式就是將資料拷貝到傳送緩衝區,recv就是講接收緩衝區資料拷貝出來。

四次揮手:

由於tcp連線時全雙工連線,每一端必須單獨進行關閉。網路是不可靠的,可能會存在最後傳送的ack報文丟失,主動關閉的一端會等待2msl的時間,如果報文丟失進行重傳。來確保對端從last-ack狀態到closed狀態。對於高併發的伺服器程式過多的time-wait會占用大量資源,對於linux系統可以通過命令cat /proc/net/sockstat檢視出去time-wait狀態的連線。

TCP三次握手和四次揮

一 tcp報文格式 在了解三次握手和四次揮手之前,首先要知道tcp報文內部包含了哪些東西。報文主要段的含義 序號 seq 用來標記資料段的順序,確保tcp傳輸有序。ack 確認 確認序號標誌,ack 1表示確認號字段有效,ack 0表示確認序號無效。syn 同步 連線請求序號標誌,用於建立連線。sy...

三次握手和四次揮手 TCP三次握手和四次揮手的理解

相比較於udp傳輸協議,tcp傳輸協議被認為是安全可靠的,這是由於tcp協議的三次握手和四次揮手保證了資料傳輸的安全性。tcp報文格式簡介 要了解tcp協議的三次握手和四次揮手,需要先了解在tcp協議中請求和響應的資料報報文格式。在報文中有幾個值得注意的字段 1 序號 seq序號,佔32位,用來標識...

TCP建立連線和釋放連線(三次握手和四次揮手)

tcp協議三次握手和四次揮手 tcp協議是面向連線的,所謂面向連線,就是當計算機雙方通訊時必須經過先建立連線,然後傳送資料,最後拆除連線的三個過程。三次握手 為什麼是三次握手?不是兩次 四次?四次揮手 為什麼客戶端在time wait階段要等2msl?為了確認伺服器端是否收到客戶端發出的ack確認報...