TCP協議中FLAG的含義

2021-07-25 23:44:17 字數 1741 閱讀 1570

tcp flag 標記

基於標記的tcp包匹配經常被用於過濾試圖開啟新連線的tcp資料報。

示例:

乙個虛擬連線的建立是通過三次握手來實現的

1. (b) --> [syn] --> (a)

假如有伺服器a、客戶機b. 當b要和a通訊時,b首先向a發乙個syn (synchronize) 標記的包,告訴a請求建立連線.

注意: 乙個 syn包就是僅syn標記設為1的tcp包(參見tcp包頭resources). 只有當a收到b發來的syn包,才可建立連線,除此之外別無他法。

2. (b) <-- [syn/ack] <--(a)

接著,a收到後會發乙個對syn包的確認包(syn/ack)回去,表示對第乙個syn包的確認,並繼續握手操作.

注意: syn/ack包是僅syn 和 ack 標記為1的包.

3. (b) --> [ack] --> (a)

b收到syn/ack 包,b發乙個確認包(ack),通知a連線已建立。至此,三次握手完成,乙個tcp連線完成。

注意: ack包就是僅ack 標記設為1的tcp包.

特別注意:需要注意的是當三此握手完成、連線建立以後,tcp連線的每個包都會設定ack位

ps:這就是為何連線跟蹤很重要的原因了. 沒有連線跟蹤,防火牆將無法判斷收到的ack包是否屬於乙個已經建立的連線.一般的包過濾(ipchains)收到ack包時,會讓它通過(這絕對不是個好主意). 而當狀態型防火牆收到此種包時,它會先在連線表中查詢是否屬於哪個已建連線,否則丟棄該包

四次握手用來關閉已建立的tcp連線

1. (b) --> ack/fin --> (a)

2. (b) <-- ack <-- (a)

3. (b) <-- ack/fin <-- (a)

4. (b) --> ack --> (a)

注意: 由於tcp連線是雙向連線, 因此關閉連線需要在兩個方向上做。ack/fin 包(ack 和fin 標記設為1)通常被認為是fin(終結)包.然而, 由於連線還沒有關閉, fin包總是打上ack標記. 沒有ack標記而僅有fin標記的包不是合法的包,並且通常被認為是惡意的

四次握手不是關閉tcp連線的唯一方法. 有時,如果主機需要盡快關閉連線(或連線超時,埠或主機不可達),rst (reset)包將被傳送. 注意在,由於rst包不是tcp連線中的必須部分, 可以只傳送rst包(即不帶ack標記). 但在正常的tcp連線中rst包可以帶ack確認標記。

注意:rst包是可以不要收到方確認的

到目前為止,你已經看到了 syn, ack, fin, 和rst 標記. 另外,還有psh (push) 和urg (urgent)標記.

最常見的非法組合是syn/fin 包. 注意:由於 syn包是用來初始化連線的, 它不可能和 fin和rst標記一起出現. 這也是乙個惡意攻擊.

由於現在大多數防火牆已知 syn/fin 包, 別的一些組合,例如syn/fin/psh, syn/fin/rst, syn/fin/rst/psh。很明顯,當網路中出現這種包時,很你的網路肯定受到攻擊了。

別的已知的非法包有fin (無ack標記)和"null"包。如同早先討論的,由於ack/fin包的出現是為了關閉乙個tcp連線,那麼正常的fin包總是帶有 ack 標記。"null"包就是沒有任何tcp標記的包(urg,ack,psh,rst,syn,fin都為0)。

到目前為止,正常的網路活動下,tcp協議棧不可能產生帶有上面提到的任何一種標記組合的tcp包。當你發現這些不正常的包時,肯定有人對你的網路不懷好意。

USB協議中的返回包含義

三種返回確認資訊 ack nak stall ack 包 ack 確認 表示 主機和裝置已經收到資料,沒有出現錯誤。裝置必須在setup 事務的交換包中返回ack,裝置也必須在out事務的交換中返回ack。主機在in事務的交換包中返回ack。nak 包 nak包只能從裝置發向主機 nak 未確認 表...

TCP協議中的SO LINGER選項

so linger選項用來設定延遲關閉的時間,等待套接字傳送緩衝區中的資料傳送完成。沒有設定該選項時,在呼叫close 後,在傳送完fin後會立即進行一些清理工作並返回。如果設定了so linger選項,並且等待時間為正值,則在清理之前會等待一段時間。以呼叫close 主動關閉為例,在傳送完fin包...

TCP協議中的擁塞控制

tcp擁塞控制作用就是提高網路利用率 降低丟包率 並保證網路資源對每條資料流的公平性。擁塞控制有四部分組成,慢啟動 擁塞避免 快速重傳 快速恢復。擁塞控制的最終受控變數是傳送端向網路一次連續寫入 收到第乙個資料的確認之前 的資料量 我們稱之為 swnd 傳送視窗 傳送端最終以tcp報文段來傳送資料,...