歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> TCP/IP的6個標志位

TCP/IP的6個標志位

日期:2017/2/28 13:43:33   编辑:Linux教程

最近在優化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的連接建立和連接關閉,都是通過請求-響應的模式完成的。

Copyright © Linux教程網 All Rights Reserved