剛接觸網路程式設計時,感覺網路連線的建立、網路資料的收發、網路連線的斷開這些操作僅僅是呼叫幾個socket aip就可以搞定的事情,跟網路中講述的tcp三次握手等內容完全扯不上關係;近期看的一本名為unix網路程式設計卷一的書籍,看到書中相關的講解和介紹之後才恍然大悟:
listen函式:核心為任何乙個給定的套接字維護兩個佇列 1.未完成連線狀態(客戶端傳送的第乙個syn已經到伺服器,伺服器等待tcp三次握手完成,這些套接字處於syn_rcvd狀態) 2.已完成佇列(伺服器與客戶端已經完成了連線建立,這些套接字處於established狀態)
當客戶端發起乙個連線請求時,伺服器在未完成連線佇列裡面準備乙個套接字,等到tcp三次握手連線建立完成,核心將該套接字移到已完成佇列的末尾,服務端accept呼叫返回該佇列的隊首套接字,如果連線完成隊列為空,則accept函式一直阻塞直到該佇列中出現第乙個連線完成套接字。
tcp三次握手 TCP 三次握手總結
tcp特點概述 tcp segment structure 段結構 step2 server host receives syn,replie with syn ack segment 答覆syn ack報文段 step3 client receives synack,replies with ac...
TCP 三次握手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...
TCP三次握手
1.伺服器準備好接受外來連線。passive open 被動開啟 需呼叫 socket bind listen 函式來完成。2.客戶端通過呼叫 connect 主動開啟 active open 這使得客戶 tcp傳送乙個 syn 表示同步 分節,這個分節告訴伺服器,客戶端將在待建立的連線中傳送的資料...