首頁 > 軟體

TCP/IP的6個標誌位

2020-06-16 17:21:46

最近在優化web伺服器上的iptables時需要用到tcp模組下的--tcp-flags和limit模組,在網上看到一篇對tcp的標誌位總結的很好的文章:

三次握手:傳送端傳送一個SYN=1,ACK=0標誌的封包給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會傳送一個 SYN=1,ACK=1標誌的封包給傳送端,告訴它,可以通訊了,並且讓傳送端傳送一個確認封包,這是第二次握手;最後,傳送端傳送一個 SYN=0,ACK=1的封包給接收端,告訴它連線已被確認,這就是第三次握手。之後,一個TCP連線建立,開始通訊。

*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連線。

*URG:緊急標誌

緊急(The urgent pointer) 標誌有效。緊急標誌置位,

*PSH:推標誌

該標誌置位時,接收端不將該資料進行佇列處理,而是盡可能快將資料轉由應用處理。在處理 telnet 或 rlogin 等互動模式的連線時,該標誌總是置位的。

*FIN:結束標誌

帶有該標誌置位的封包用來結束一個TCP回話,但對應埠仍處於開放狀態,準備接收後續資料。

.TCP 的幾個狀態對於我們分析所起的作用。在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的連線建立和連線關閉,都是通過請求-響應的模式完成的。

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-02/140439.htm


IT145.com E-mail:sddin#qq.com