1. 程式人生 > 其它 >TCP標誌位簡析

TCP標誌位簡析

TCP標誌位簡析 TCP標誌位 URG:此標誌表示TCP包的緊急指標域(後面馬上就要說到)有效,用來保證TCP連線不被中斷,並且督促中間層裝置要儘快處理這些資料; ACK:此標誌表示應答域有效,就是說前面所說的TCP應答號將會包含在TCP資料包中;有兩個取值:0和1,為1的時候表示應答域有效,反之為0; PSH:這個標誌位表示Push操作。所謂Push操作就是指在資料包到達接收端以後,立即傳送給應用程式,而不是在緩衝區中排隊; RST:這個標誌表示連線復位請求。用來複位那些產生錯誤的連線,也被用來拒絕錯誤和非法的資料包; SYN:表示同步序號,用來建立連線。SYN標誌位和ACK標誌位搭配使用,當連線請求的時候,SYN=1,ACK=0;連線被相應的時候,SYN=1,ACK=1;這個標誌的資料包經常被用來進行埠掃描。掃描者傳送一個只有SYN的資料包,如果對方主機響應了一個數據包回來 ,就表明這臺主機存在這個埠;但是由於這種掃描方式只是進行TCP三次握手的第一次握手,因此這種掃描的成功表示被掃描的機器不很安全,一臺安全的主機將會強制要求一個連線嚴格的進行TCP的三次握手; FIN:表示傳送端已經達到資料末尾,也就是說雙方的資料傳送完成,沒有資料可以傳送了,傳送FIN標誌位的TCP資料包後,連線將被斷開。這個標誌的資料包也經常被用於進行埠掃描。當一個FIN標誌的TCP資料包傳送到一臺計算機的特定埠,如果這臺計算機響應了這個資料,並且反饋回來一個RST標誌的TCP包,就表明這臺計算機上沒有開啟這個埠,但是這臺計算機是存在的;如果這臺計算機沒有反饋回來任何資料包,這就表明,這臺被掃描的計算機存在這個埠。 需要說明的是,金山網鏢的日誌報告使用的不是這些標誌位的全稱,而是使用的這些標誌位的首字母,比如攔截到一個包含FIN標誌的TCP資料包將會報告x.x.x.x的TCP資料包:F。還有一點,你的日誌可能報告x.x.x.x的TCP資料包:NULL,這是什麼?NULL標明發送給你的資料包不包含任何標誌位,你收到這種資料包,很多情況下意味著你被掃描,掃描者傳送NULL資料包給你,如果你的計算機發送回去了一個FIN標誌的TCP資料包,就表明他探測的埠在你的計算機上不存在,但是你的計算機就已經被確定存在了,這樣他就可以使用其他的掃描方式進行埠探測。有一些特殊的掃描方式可以繞過不嚴謹的防火牆。 瞭解到了TCP標誌位的含義,就可以瞭解TCP的三次握手是怎麼進行的了:傳送端傳送一個SYN=1,ACK=0標誌的資料包給接收端,請求進行連線,這是第一次握手;接收端收到請求並且允許連線的話,就會發送一個SYN=1,ACK=1標誌的資料包給傳送端,告訴它,可以通訊了,並且讓傳送端傳送一個確認資料包,這是第二次握手;最後,傳送端傳送一個SYN=0,ACK=1的資料包給接收端,告訴它連線已被確認,這就是第三次握手。之後,一個TCP連線建立,開始通訊。