TCP的狀態 (SYN, FIN, ACK, PSH, RST, URG)
CP的狀態 (SYN, FIN, ACK, PSH, RST, URG)
在TCP層,有個FLAGS欄位,這個欄位有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG.
其中,對於我們日常的分析有用的就是前面的五個欄位。
它們的含義是:
SYN表示建立連線,
FIN表示關閉連線,
ACK表示響應,
PSH表示有 DATA資料傳輸,
RST表示連線重置。
其中,ACK是可能與SYN,FIN等同時使用的,比如SYN和ACK可能同時為1,它表示的就是建立連線之後的響應,
如果只是單個的一個SYN,它表示的只是建立連線。
TCP的幾次握手就是透過這樣的ACK表現出來的。
但SYN與FIN是不會同時為1的,因為前者表示的是建立連線,而後者表示的是斷開連線。
RST一般是在FIN之後才會出現為1的情況,表示的是連線重置。
一般地,當出現FIN包或RST包時,我們便認為客戶端與伺服器端斷開了連線;而當出現SYN和SYN+ACK包時,我們認為客戶端與伺服器建立了一個連線。
PSH為1的情況,一般只出現在 DATA內容不為0的包中,也就是說PSH為1表示的是有真正的TCP資料包內容被傳遞。
TCP的連線建立和連線關閉,都是透過請求-響應的模式完成的。
概念補充-TCP三次握手:
TCP(Transmission Control Protocol)傳輸控制協議
TCP是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立一個連線:
位碼即tcp標誌位,有6種標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)Sequence number(順序號碼) Acknowledge number(確認號碼)
第一次握手:主機A傳送位碼為syn=1,隨機產生seq number=1234567的資料包到伺服器,主機B由SYN=1知道,A要求建立聯機;
第二次握手:主機B收到請求後要確認聯機資訊,向A傳送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq=7654321的包;
第三次握手:主機A收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機A會再傳送ack number=(主機B的seq+1),ack=1,主機B收到後確認seq值與ack=1則連線建立成功。
完成三次握手,主機A與主機B開始傳送資料。
在TCP/IP協議中,TCP協議提供可靠的連線服務,採用三次握手建立一個連線。 第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認; 第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:客戶端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,客戶端和伺服器進入ESTABLISHED狀態,完成三次握手。完成三次握手,客戶端與伺服器開始傳送資料. 摘自中國雲安網() 原文:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21220384/viewspace-2139214/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TCP協議中SYN/ACK/FIN/PSH各有什麼作用TCP協議
- Linux TCP RST情況LinuxTCP
- 在 TIME_WAIT 狀態的 TCP 連線,收到 SYN 後會發生什麼?AITCP
- TCP/IP協議的SYN攻擊TCP協議
- 從TCP協議的原理論rst復位攻擊TCP協議
- TCP為什麼是有狀態的?TCP
- tcp三次握手和SYN攻擊TCP
- 【演算法】狀態之美,TCP/IP狀態轉換探索演算法TCP
- TCP連線狀態異常記錄TCP
- TCP TIME_WAIT狀態最佳化TCPAI
- 統計TCP連線數和狀態TCP
- net.ipv4.tcp_max_syn_backlog & net.core.somaxconnTCP
- 查閱linux tcp核心引數kernel parameter tcp_max_syn_backlog含義之一LinuxTCP
- 淺談TCP(1):狀態機與重傳機制TCP
- TCP連線的TIME_WAIT和CLOSE_WAIT 狀態解說TCPAI
- 為什麼tcp的TIME_WAIT狀態要維持2MSLTCPAI
- FIN2002- Corporate FinanceNaN
- FIN421 Econometrics for FinanceNaN
- FIN2020 Excel and VBAExcel
- 淺談前端的狀態管理,以及anguar的狀態管理庫前端
- Syn Flood攻擊的危害是什麼?Syn Flood攻擊如何應對?
- ⚠️Flutter的 狀態管理⚠️Flutter
- DeFi:Meme的狀態
- React的狀態管理React
- TCP 三次握手和四次揮手圖解(有限狀態機)TCP圖解
- 前端狀態管理與有限狀態機前端
- LINUX下SYN FLOOD攻擊及LINUX下SYN攻防簡述Linux
- mysql 鎖狀態的一些狀態資訊記錄MySql
- 死鎖避免中的安全狀態和不安全狀態
- 雲端計算運維學習---Linux監控tcp連線數及狀態運維LinuxTCP
- React 狀態管理:狀態與生命週期React
- BACKUP PENDING狀態的解除
- 常用的HTTP狀態碼HTTP
- 最全的 http 狀態碼HTTP
- HTTP狀態保持的原理HTTP
- 後端的狀態碼後端
- 常見的狀態碼
- JavaScript 的狀態容器 ReduxJavaScriptRedux
- java Thread的狀態分析Javathread