實例,通過http文件下載來分析tcp/ip三次握手的機制
在百度裡面搜索QQ,進行下載,然後對數據包流程進行分析
抓包數據如下,
三次握手過程分析
(此處為描述方便,將A=192.168.0.152,B=61.158.251.62)
三次握手流程原理
- 1. (A) –> [SYN] –> (B)
- 客戶機A和服務器B通訊. 當A要和B通信時,A首先向B發一個SYN (Synchronize) 標記的包,告訴B請求建立連接.
- 注意: 一個 SYN包就是僅SYN標記設為1的TCP包(參見TCP包頭Resources). 認識到這點很重要,只有當B受到A發來的SYN包,才可建立連接,除此之外別無他法。因此,如果你的防火牆丟棄所有的發往外網接口的SYN包,那麼你將不能讓外部任何主機主動建立連接。
-
- 2. (B) <– [SYN/ACK] <–(A)
- 接著,B收到後會發一個對SYN包的確認包(SYN/ACK)回去,表示對第一個SYN包的確認,並繼續握手操作.
- 注意: SYN/ACK包是僅SYN 和 ACK 標記為1的包.
-
- 3. (A) –> [ACK] –> (B)
- A收到SYN/ACK 包,A發一個確認包(ACK),通知B連接已建立。至此,三次握手完成,一個TCP連接完成
- Note: ACK包就是僅ACK 標記設為1的TCP包. 需要注意的是當三此握手完成、連接建立以後,TCP連接的每個包都會設置ACK位