TCP握手 揮手的過程分析

2021-07-15 23:00:37 字數 1403 閱讀 3876

tcp連線建立

在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。

伺服器必須準備好接受外來的連線。這通過呼叫socket、 bind和listen函式來完成,稱為被動開啟(passive open)。

第一次握手:客戶通過呼叫connect進行主動開啟(active open)。這引起客戶tcp傳送乙個syn(表示同步)分節(syn=j),它告訴伺服器客戶將在連線中傳送到資料的初始序列號。並進入syn_send狀態,等待伺服器的確認。

第二次握手:伺服器必須確認客戶的syn,同時自己也得傳送乙個syn分節,它含有伺服器將在同一連線中傳送的資料的初始序列號。伺服器以單個位元組向客戶傳送syn和對客戶syn的ack(表示確認),此時伺服器進入syn_recv狀態。

第三次握手:客戶收到伺服器的syn+ack。向伺服器傳送確認分節,此分節傳送完畢,客戶伺服器進入established狀態,完成三次握手。

客戶端的初始序列號為j,而伺服器的初始序列號為k。在ack裡的確認號為傳送這個ack的一端所期待的下乙個序列號。因為syn只佔乙個位元組的序列號空間,所以每乙個syn的ack中的確認號都是相應的初始序列號加1,類似地,每乙個fin(表示結束)的ack中的確認號為fin的序列號加1。

完成三次握手,客戶端與伺服器開始傳送資料,在上述過程中還有一些重要概念。

未連線佇列:在三次握手協議中,伺服器維護乙個未連線佇列,該隊列為每個客戶端的syn包(syn=j)開設乙個條目,該條目表明伺服器已收到syn包,並向客戶發出確認,正在等待客戶端確認包。這些條目所標識的連線在伺服器處於syn_recv狀態,當伺服器收到客戶端確認包時,刪除該條目,伺服器進入established狀態。

tcp連線終止

tcp連線終止需四個分節。

第一次握手:某個應用程序首先呼叫close,我們稱這一端執行主動關閉。這一端的tcp於是傳送乙個fin分節,表示資料傳送完畢。

第二次握手:接收到fin的另一端執行被動關閉(passive close)。這個fin由tcp確認。它的接收也作為檔案結束符傳遞給接收端應用程序(放在已排隊等候應用程序接收到任何其他資料之後)。

第三次握手:一段時間後,接收到檔案結束符的應用程序將呼叫close關閉它的套介面。這導致它的tcp也傳送乙個fin。

第四次握手:接收到這個fin的原傳送端tcp對它進行確認。

面向位元組的資料傳送流(如tcp位元組流、unix管道等)也使用eof表示在某個方向上不再有資料待傳送。在tcp位元組流中,eof的讀或寫通過收發乙個特殊的fin分節來實現。

TCP握手 揮手的過程分析

華清遠見嵌入式學院 講師。tcp連線建立 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。伺服器必須準備好接受外來的連線。這通過呼叫socket bind和listen函式來完成,稱為被動開啟 passive open 第一次握手 客戶通過呼叫connect進行主動開啟...

TCP握手與揮手

1.什麼是三次握手?在進行tcp資料傳輸時要確保資料傳送的穩定性,三次握手就是對資料與資料段進行協商跟蹤是資料的傳送與接收同步,根據所接收到的資料量而確定的資料確認數及資料傳送 接收完畢後何時撤消聯絡,並建立虛連線。2.三次握手過程 第一次握手 b的tcp服務區程序先建立傳輸控塊tcb,準備接受使用...

tcp握手與揮手

1.為什麼要三次握手 先簡單介紹一下三次握手的過程 1 客戶端向伺服器端傳送乙個syn置位的報文,並進入syn send狀態,等待伺服器確認 2 伺服器發出段2,也帶有syn位,同時ack置位表示確認,此時伺服器進入syn recv狀態 3 客戶端收到伺服器端的syn ack包,向伺服器傳送確認包a...