tcp
建立過程
(三握手):
1.syn: a--->b
2.syn ack: b-->a
3.ack: a--->b
傳送端傳送乙個
syn=1
,ack=0
標誌的資料報給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會傳送乙個
syn=1
,ack=1
標誌的資料報給傳送端,告訴它,可以通訊了,並且讓傳送端傳送乙個確認資料報,這是第二次握手;最後,傳送端傳送乙個
syn=0
,ack=1
的資料報給接收端,告訴它連線已被確認,這就是第三次握手。之後,乙個
tcp連線建立,開始通訊。
tcp拆除過程(四握手): 1.
fin ack: a--->b
2.ack: b-->a
3.fin ack: b-->a
4.ack: a--->b
syn:同步標誌
同步序列編號
(synchronize sequence numbers)
欄有效。該標誌僅在三次握手建立
tcp連線時有效。它提示
tcp連線的服務端檢查序列編號,該序列編號為
tcp連線初始端
(一般是客戶端
)的初始序列編號。在這裡,可以把
tcp序列編號看作是乙個範圍從0到
4,294,
967,
295的
32位計數器。通過
tcp連線交換的資料中每乙個位元組都經過序列編號。在
tcp報頭中的序列編號欄包括了
tcp分段中第乙個位元組的序列編號。
ack:確認標誌
確認編號
(acknowledgement number)
欄有效。大多數情況下該標誌位是置位的。
tcp報頭內的確認編號欄內包含的確認編號
(w+1
,figure-1)
為下乙個預期的序列編號,同時提示遠端系統已經成功接收所有資料。
rst:復位標誌
復位標誌有效。用於復位相應的
tcp連線。
有些時候用於緊急拆除
tcp連線。
urg:緊急標誌
緊急(the urgent pointer)
標誌有效。緊急標誌置位,
psh:推標誌
該標誌置位時,接收端不將該資料進行佇列處理,而是盡可能快將資料轉由應用處理。在處理
telnet
或rlogin
等互動模式的連線時,該標誌總是置位的。
有人提到:psh
和psh ack
有什麼區別?無ack
的psh
的tcp
資料報,要求接收端盡可能快的上傳到應用層處理。估計telnet
使用的就是這種模式啦(沒有嘗試過).
fin:結束標誌
帶有該標誌置位的資料報用來結束乙個
tcp回話,但對應埠仍處於開放狀態,準備接收後續資料。
TCP建立連線和拆除連線的過程
2 tcp連線建立時三次握手的過程 圖示 文字說明 第一次握手 建立連線時,客戶端傳送syn包 seq x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack j 1 同時自己也傳送乙個syn包 seq y 即syn ack包,此時伺服...
TCP的建立和終止
先看看tcp的狀態變遷圖 tcp ip詳解上面的原圖,來自google 下面就圖中涉及到的問題做一些說明。下面是tcp連線建立與終止的時候的時序圖 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線 1 第一次握手 建立連線時,客戶端a傳送syn包 syn j 到伺服器b,...
TCP建立和終止
本文參考了 unix網路程式設計 主要內容分為以下兩部分 1 tcp客戶端和伺服器一些典型事件概述 2 tcp連線的建立和終止 1 1.1 tcp客戶端和伺服器一些典型事件時間表如下 connect函式出錯時主要有以下幾種情況 1 tcp客戶未收到syn分節的響應,返回etimedout 2 對客戶...