TCP三次握手(待細研究)

2022-06-16 22:57:14 字數 1540 閱讀 5150

xu言:

看到一張不錯清晰的tcp三次握手圖,收藏

initiator  發起人

receiver  接收者

listening 狀態

xx服務啟動後首先處於偵聽(listening)狀態。

established 狀態

established的意思是建立連線。表示兩台機器正在通訊。

close_wait 狀態

對方主動關閉連線或者網路異常導致連線中斷,這時我方的狀態會變成close_wait 此時我方要呼叫close()來使得連線正確關閉

time_wait 狀態

我方主動呼叫close()斷開連線,收到對方確認後狀態變為time_wait。tcp協議規定time_wait狀態會一直持續2msl(即兩倍的分 段最大生存期),以此來確保舊的連線狀態不會對新連線產生影響。處於time_wait狀態的連線占用的資源不會被核心釋放,所以作為伺服器,在可能的情 況下,盡量不要主動斷開連線,以減少time_wait狀態造成的資源浪費。

syn_sent 狀態

syn_sent狀態表示請求連線,當你要訪問其它的計算機的服務時首先要發個同步訊號給該埠,此時狀態為syn_sent,如果連線成功了就變為 established,此時syn_sent狀態非常短暫。但如果發現syn_sent非常多且在向不同的機器發出,那你的機器可能中了衝擊波或**波 之類的病毒了。這類病毒為了感染別的計算機,它就要掃瞄別的計算機,在掃瞄的過程中對每個要掃瞄的計算機都要發出了同步請求,這也是出現許多 syn_sent的原因。

根據tcp協議定義的3次握手斷開連線規定,發起socket主動關閉的一方 socket將進入time_wait狀態,time_wait狀態將持續2個msl(max segment lifetime),在windows下預設為4分鐘,即240秒,time_wait狀態下的socket不能被**使用. 具體現象是對於乙個處理大量短連線的伺服器,如果是由伺服器主動關閉客戶端的連線,將導致伺服器端存在大量的處於time_wait狀態的socket, 甚至比處於established狀態下的socket多的多,嚴重影響伺服器的處理能力,甚至耗盡可用的socket,停止服務. time_wait是tcp協議用以保證被重新分配的socket不會受到之前殘留的延遲重發報文影響的機制,是必要的邏輯保證.

位碼即tcp標誌位,有6種標示:

syn(synchronous建立聯機)

ack(acknowledgement 確認)

psh(push傳送)

fin(finish結束)

rst(reset重置)

urg(urgent緊急)

sequence number(順序號碼)

acknowledge number(確認號碼)

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 表示同步 分節,這個分節告訴伺服器,客戶端將在待建立的連線中傳送的資料...