TCP四次揮手

2021-12-30 03:46:42 字數 1938 閱讀 2427

tcp包頭

1、urg :表示本報文段中傳送的資料是否包含緊急資料。後面的緊急指標字段(

urgent pointer )只有當urg=1 時才有效

2、ack :表示是否前面的確認號字段是否有效。ack=1 ,表示有效。只有當ack=1時 時

,前面的確認號字段才有效。tcp 規定,連線建立後,ack 必須為1, 帶ack 標誌的

tcp 報文段稱為確認報文段

3、psh :提示接收端應用程式應該立即從tcp 接收緩衝區中讀走資料,為接收後續數

據騰出空間。如果為1 ,則表示對方應當立即把資料提交給上層應用,而不是快取

起來,如果應用程式不將接收到的資料讀走,就會一直停留在tcp 接收緩衝區中

4、rst :如果收到乙個rst=1 的報文,說明與主機的連線出現了嚴重錯誤(如主機崩

潰),必須釋放連線,然後再重新建立連線。或者說明上次傳送給主機的資料有問

題,主機拒絕響應,帶rst 標誌的tcp 報文段稱為復位報文段

5、syn :在建立連線時使用,用來同步序號。當syn=1 ,ack=0 時,表示這是乙個

請求建立連線的報文段;當syn=1 ,ack=1 時,表示對方同意建立連線。syn=1

,說明這是乙個請求建立連線或同意建立連線的報文。只有在前兩次握手中syn才 才

置為1 ,帶syn 標誌的tcp 報文段稱為同步報文段

6、fin :表示通知對方本端要關閉連線了,標記資料是否傳送完畢。如果fin=1 ,即

告訴對方:「我的資料已經傳送完畢,你可以釋放連線了」,帶fin 標誌的tcp報 報

文段稱為結束報文段

tcp四次揮手

三次握手之後,進行資料交換傳輸等等操作,資料交換傳輸操作結束之後,要斷開客戶端與伺服器之間的連線,來停止連線的可以是客戶端也可以是伺服器。在斷開連線之前要有四次揮手來結束斷開連線。

客戶端發起斷開請求

fin=1,seq =u 客戶端發出fin=1標記位結束請求,發出包序列號seq=u

ack=1,seq=v,ack=u+1 伺服器發出ack=1標記位確認結束請求收到,包序列號seq=v,返回包序列號ack=u+1

資料傳輸完之後

fin=1,ack=1,seq=w,ack=u+1 伺服器發出fin=1標記位結束請求,ack=1確認之前的結束請求收到,包序列號seq=w,返回包序列號ack=u+1

ack=1,seq=u+1,ack=w+1 ack=1確認之前的結束請求收到,包序列號seq=u+1,返回包序列號ack=w+1

有限狀態機fsm:finite state machine

1、closed 沒有任何連線狀態

2、listen 偵聽狀態,等待來自遠方tcp 埠的連線請求

3、syn-sent 在傳送連線請求後,等待對方確認

4、syn-received 在收到和傳送乙個連線請求後,等待對方確認

5、established 代表傳輸連線建立,雙方進入資料傳送狀態

6、fin-wait-1 主動關閉, 主機已傳送關閉連線請求,等待對方確認

7、fin-wait-2 主動關閉, 主機已收到對方關閉傳輸連線確認,等待

對方傳送關閉傳輸連線請求

8、 time-wait 完成雙向傳輸連線關閉,等待所有分組消失

9、close-wait 被動關閉, 收到對方發來的關閉連線請求,並已確認

10、last-ack 被動關閉, 等待最後乙個關閉傳輸連線確認,並等待所

有分組消失

11、closing 雙方同時嘗試關閉傳輸連線,等待對方確認

tcp 四次揮手 TCP四次揮手

tcp斷開連線的過程 客戶端傳送fin報文,表明客戶端將不在傳送資料。具體過程 把fin標誌位改為1,序號seq u,之前傳送的資料加1,這裡規定即使不攜帶資料序號也要 1。該過程中客戶端通過close系統呼叫從established狀態進入fin wait 1狀態。第二次揮手 服務端收到客戶端發來...

TCP四次揮手

純給自己看的 發起關閉的一方是客戶端,被動關閉的一方是伺服器。1 客戶端a傳送乙個fin 1,用來關閉客戶a到伺服器b的資料傳送。圖上畫的對,還有乙個seq n 2 伺服器b收到這個fin,它發回乙個ack 1,確認序號ack為收到的序號加1。3 伺服器b關閉與客戶端a的連線,傳送乙個fin 1給客...

TCP四次揮手

四次揮手 1.客戶端程序發出連線釋放報文,並且停止傳送資料。釋放資料報文首部,fin 1,其序列號為seq u 等於前面已經傳送過來的資料的最後乙個位元組的序號加1 此時,客戶端進入fin wait 1 終止等待1 狀態。tcp規定,fin報文段即使不攜帶資料,也要消耗乙個序號。2.伺服器收到連線釋...