基礎知識4 TCP狀態

2021-10-08 20:27:22 字數 1182 閱讀 3966

listening:偵聽來自遠方的tcp埠的連線請求;首先服務端需要開啟乙個socket進行監聽,狀態為listen

syn-sent:客戶端syn_sent狀態,當請求連線時客戶端首先要傳送同步訊號給要訪問的機器,此時狀態為syn_sent,如果連線成功了就變為established

如果發現有很多syn_sent出現,那一般有這麼幾種情況,一是你要訪問的**不存在或線路不好,二是用掃瞄軟體掃瞄乙個網段的機器,也會出出現很多syn_sent,另外就是可能中了病毒了

syn-received:伺服器端狀態syn_rcvd;當伺服器收到客戶端傳送的同步訊號時,將標誌位ack和syn置1傳送給客戶端,此時伺服器端處於syn_rcvd狀態,如果連線成功了就變為established,正常情況下syn_rcvd狀態非常短暫

established:代表乙個開啟的連線:

伺服器出現很多established狀態

1)、若客戶端斷開的時候傳送了fin包,則服務端將會處於close_wait狀態

2)、若客戶端斷開的時候未傳送fin包,則服務端處還是顯示established狀態;客戶端再重新連線重新建立新得established

fin-wait-1:主動關閉端應用程式呼叫close,於是其tcp發出fin請求主動關閉連線,之後進入fin_wait1狀態,等待遠端tcp的連線中斷請求,或先前的連線中斷請求的確認 */

如果伺服器出現shutdown再重啟,使用netstat -nat檢視,就會看到很多fin-wait-1的狀態。就是因為伺服器當前有很多客戶端連線,直接關閉伺服器後,無法接收到客戶端的ack

fin-wait-2:從遠端tcp等待連線中斷請求;此狀態下應用程式還有接受資料的能力,但是已經無法傳送資料

close-wait:等待從本地使用者發來的連線中斷請求;被動關閉端tcp接到fin後,就發出ack以回應fin請求,並進入close_wait,等待從本地使用者發來的連線中斷請求

time-wait:等待足夠的時間以確保遠端tcp接收到連線中斷請求的確認;在主動關閉端接收到fin後,tcp就傳送ack包,並進入time-wait狀態

closing:等待遠端tcp對連線中斷的確認

closed:沒有任何連線狀態;被動關閉端在接受到ack包後,就進入了closed的狀態。連線結束

網編 4 TCP原理

tcp套接字的資料收發無邊界。伺服器端即使呼叫1次write函式傳輸40位元組的資料,客戶端也有可能通過4次read函式呼叫每次讀取10位元組。但此處也有一些疑問,伺服器端一次性傳輸了40位元組,而客戶端居然可以緩慢地分批接收。客戶端接收10位元組後,剩下的30位元組在 何處等候呢?是不是像飛機為等...

js基礎知識4

1.自執行函式 閉包 解決全域性汙染的問題 function 2.client 螢幕可視區域 view code 3.offset view code 4.scroll 青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青青 青青青青青青青青青青青青青青青青青青青青青青青青...

報文分析4 TCP協議的頭結構

tcp協議的頭結構 埠 2位元組 目的埠 2位元組 序號 4位元組 確認序號 4位元組 頭長度 4位 保留 6位 urgack pshrst synpin 視窗大小 2位元組 校驗和 16位 緊急指標 16位 選項 可選 資料 1 tcp源埠 source port 16位的源埠包含初始化通訊的埠號...