tcp的連線建立是乙個三次握手過程,目的是為了通訊雙方確認開始序號,以便後續通訊的有序進行。主要步驟如下:
連線開始時,連線建立方(client)傳送syn包,幷包含了自己的初始序號a;
連線接受方(server)收到syn包以後會回覆乙個syn+ack包,其中包含了對上乙個a包的回應資訊ack,回應的序號為下乙個希望收到包的序號,即a+1,然後還包含了自己的初始序號b;
連線建立方(client)收到回應的syn包以後,回覆乙個ack包做響應,其中包含了下乙個希望收到包的序號即b+1。
tcp終止連線的四次揮手過程如下:
客戶端程序發出連線釋放報文,並且停止傳送資料。釋放資料報文首部,fin=1,其序列號為seq=a(等於前面已經傳送過來的資料的最後乙個位元組的序號加1),此時,客戶端進入fin-wait-1(終止等待1)狀態;
伺服器收到連線釋放報文,發出確認報文,ack=1,ack=a+1,並且帶上自己的序列號seq=b,此時,服務端就進入了close-wait(關閉等待)狀態;
客戶端收到伺服器的確認請求後,此時,客戶端就進入fin-wait-2(終止等待2)狀態,等待伺服器傳送連線釋放報文;
伺服器將最後的資料傳送完畢後,就向客戶端傳送連線釋放報文,fin=1,ack=a+1,由於在半關閉狀態,伺服器很可能又傳送了一些資料,假定此時的序列號為seq=c,此時,伺服器就進入了last-ack(最後確認)狀態,等待客戶端的確認;
客戶端收到伺服器的連線釋放報文後,必須發出確認,ack=1,ack=c+1,而自己的序列號是seq=a+1,此時,客戶端就進入了time-wait(時間等待)狀態;
伺服器只要收到了客戶端發出的確認,立即進入closed狀態,就結束了這次的tcp連線。
tcp的4次揮手 三次握手
1.tcp短連線 模擬一種tcp短連線的情況 1.client 向 server 發起連線請求 2.server 接到請求,雙 建 連線 3.client 向 server 傳送訊息 4.server 回應 client 5.一次讀寫完成,此時雙方任何乙個都可以發起 close 操作 在步驟5中,一...
tcp的三次握手和4次揮手
第一次握手 host1傳送乙個tcp標誌位syn 1 ack 0的資料報給host2,並隨機會產生乙個sequence number 3233.當host2接收到這個資料後,host2由syn 1可知客戶端是想要建立連線 第二次握手 host2要對客戶端的聯機請求進行確認,向host1傳送應答號ac...
TCP協議 TCP三次握手四次揮手
tcp連線管理機制 在正常情況下,tcp要經過三次握手建立連線,四次揮手斷開連線 完整過程 三次握手建立連線 服務端狀態變化 客戶端狀態轉化 為什麼是三次握手,兩次為什麼不可以 如果只有兩次握手,那麼可能會導致客戶端傳送給服務端的失效請求被服務端接收,從而導致錯誤。失效的請求 客戶端向服務端傳送連線...