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回話,但對應埠仍處於開放狀態,準備接收後續資料
三次握手three-way handshake
乙個虛擬連線的建立是通過三次握手來實現的
1. (b) --> [syn] --> (a)
假如伺服器a和客戶機b通訊. 當a要和b通訊時,b首先向a發乙個syn (synchronize) 標記的包,告訴a請求建立連線.
注意: 乙個 syn包就是僅syn標記設為1的tcp包(參見tcp包頭resources). 認識到這點很重要,只有當a受到b發來的syn包,才可建立連線,除此之外別無他法。因此,如果你的防火牆丟棄所有的發往外網介面的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連線完成
note: ack包就是僅ack 標記設為1的tcp包. 需要注意的是當三此握手完成、連線建立以後,tcp連線的每個包都會設定ack位
這就是為何連線跟蹤很重要的原因了. 沒有連線跟蹤,防火牆將無法判斷收到的ack包是否屬於乙個已經建立的連線.一般的包過濾(ipchains)收到ack包時,會讓它通過(這絕對不是個好主意). 而當狀態型防火牆收到此種包時,它會先在連線表中查詢是否屬於哪個已建連線,否則丟棄該包
四次握手four-way handshake
四次握手用來關閉已建立的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 IP協議 TCP協議
今天算是對了tcp協議有個膚淺的理解了 儘管tcp和udp都是一樣的網路層ip,但是tcp卻和udp實現著不一樣的服務,tcp是乙個面向連線的,可靠地位元組流服務!面向連線是指 兩個使用tcp的程式要建立乙個tcp連線才能交換資料。tcp以以下方式提供可靠性 1 應用程式被分為tcp認為合適傳送的資...
TCP協議 UDP協議
tcp是面向連線的傳輸層的協議,它在程序互動時,會建立乙個鏈結,然後在傳輸資料之後會取消連線,tcp的鏈結是虛連線。每一條tcp連線只能有兩個端點,只能是點對點的資料鏈結,不能進行廣播。tcp提供可靠的按時交付的 無差錯的 不重複的 按序到達的服務 可靠有序 不丟不重 tcp提供全雙工通訊 傳送快取...
TCP協議中FLAG的含義
tcp flag 標記 基於標記的tcp包匹配經常被用於過濾試圖開啟新連線的tcp資料報。示例 乙個虛擬連線的建立是通過三次握手來實現的 1.b syn a 假如有伺服器a 客戶機b.當b要和a通訊時,b首先向a發乙個syn synchronize 標記的包,告訴a請求建立連線.注意 乙個 syn包...