三次握手three-wayhandshake
乙個虛擬連線的建立是通過三次握手來實現的
1. (client) –> [syn] –> (server)
假如client和server通訊. 當client要和server通訊時,client首先向server發乙個syn(synchronize) 標記的包,告訴server請求建立連線.
注意: 乙個 syn包就是僅syn標記設為1的tcp包. 認識到這點很重要,只有當server收到client發來的syn包,才可建立連線,除此之外別無他法。因此,如果你的防火牆丟棄所有的發往外網介面的syn包,那麼你將不 能讓外部任何主機主動建立連線。
如下圖紅框,三次握手的首次syn,source為我的教學平台所在的ip:192.168.102.64 destination為平台的ip:192.168.102.241
2. (client)
接著,server收到來自client發來的syn包後,會發乙個對syn包的確認包(syn/ack)給client,表示對第乙個syn包的確認,並繼續握手操作.
注意: syn/ack包是僅syn 和 ack 標記為1的包.
如下圖紅框,三次握手的服務端給客戶端的響應syn,ack,source為平台的ip:192.168.102.241,destination為我的教學平台所在的ip:192.168.102.64
3. (client) –> [ack] –> (server)
client收到來自server的syn/ack 包,client會再向server發乙個確認包(ack),通知server連線已建立。至此,三次握手完成,乙個tcp連線完成。
note: ack包就是僅ack 標記設為1的tcp包. 需要注意的是當三此握手完成、連線建立以後,tcp連線的每個包都會設定ack位。
如下圖紅框,三次握手的最後確認ack,source為我的教學平台所在的ip:192.168.102.64 destination為平台的ip:192.168.102.241
到此為止,客戶端完成了與服務端進行資料傳輸的準備工作,類似人們見面後先進行握手後,接下來就進行正題交流了。
四次握手four-way handshake
四次握手用來關閉已建立的tcp連線,當客戶端和服務端完成了資料報的傳輸後,又客戶端或者服務端主動發起握手。來進行連線的斷開。
1. (client) –> ack/fin –>(server)
2. (client)
3. (client)
4. (client) –> ack –>(server)
如下圖藍框為四次握手,首先的發起放時為平台,ip:192.168.102.241,destination為我的教學平台所在的ip:192.168.102.64。接下來客戶端進行了ack響應 ,緊接著自己也發了乙個結束包。服務端對結束包進行響應。
注意: 由於tcp連線是雙向連線, 因此關閉連線需要在兩個方向上做。ack/fin 包(ack 和fin 標記設為1)通常被認為是fin(終結)包.然而, 由於連線還沒有關閉, fin包總是打上ack標記. 沒有ack標記而僅有fin標記的包不是合法的包,並且通常被認為是惡意的。
連線復位resetting a connection
四次握手不是關閉tcp連線的唯一方法. 有時,如果主機需要盡快關閉連線(或連線超時,埠或主機不可達),rst (reset)包將被傳送. 注意在,由於rst包不是tcp連線中的必須部分, 可以只傳送rst包(即不帶ack標記). 但在正常的tcp連線中rst包可以帶ack確認標記
到目前為止,你已經看到了 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包。當你發現這些不正常的包時,肯定有人對你的網路不懷好意。
抓報分析問題例項:
問題:夢幻西遊在網維大師無盤上容易掉線的問題
當時捕捉到夢幻西遊掉線時的資料報是這樣的。注意下圖中的紅色資料,123.58.184.241是夢幻西遊的伺服器,而192.168.1.41是玩夢幻西遊的客戶機,在掉線時,發現是先有夢幻西遊的伺服器向客戶機傳送乙個[fin,ack]資料報,根據上面的解釋,fin標記的資料報是代表要斷開連線的意思,而接著客戶機又回給伺服器乙個確認斷開鏈結包。當看到這個抓包資料時,就意識到,大家說的在網維大師系統虛擬盤上夢幻愛掉線的問題,並非普通的網路問題,因為通過資料報的資訊來看,是夢幻伺服器主動要求斷開鏈結,產生這個情況無非是以下幾個原因:
1、伺服器發現客戶端非法,比如有外掛程式什麼的,踢掉了客戶機;
2、伺服器壓力大,踢掉了客戶機;
3、總之不是客戶端問題導致的掉線;
那麼既然結論是如此,為什麼會有在網維大師系統虛擬盤上容易出現夢幻掉線問題呢?原因是由於網維大師系統虛擬盤是模擬真實硬碟方式來實現的,而在模擬過程中,將硬碟的序列號設定為固定過的osdiy888了,而夢幻西遊剛好後識別客戶機硬碟資訊,發現大量客戶端的硬碟序列號都是一樣的,就認為是作-bi或者使用掛機外-掛了,結果就導致隨機被伺服器踢下線的情況發生,後來我們將硬碟序列號設定為空,則沒再出現該問題。這個問題在未來的新版本中會解決掉。
tcp三次握手 TCP 三次握手總結
tcp特點概述 tcp segment structure 段結構 step2 server host receives syn,replie with syn ack segment 答覆syn ack報文段 step3 client receives synack,replies with ac...
三次握手《 》四次握手
1 第一次握手 客戶端給伺服器傳送乙個 syn 報文。2 第二次握手 伺服器收到 syn 報文之後,會應答乙個 syn ack 報文。3 第三次握手 客戶端收到 syn ack 報文之後,會回應乙個 ack 報文。4 伺服器收到 ack 報文之後,三次握手建立完成 作用是為了確認雙方的接收與傳送能力...
TCP 三次握手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...