" 以太網是一種計算機局域網技術。IEEE組織的IEEE 802.3標準制定了以太網的技術標準,它規定了包括物理層的連線、電子信號和介質訪問層協議的內容。以太網是目前應用最廣泛的局域網技術,取代了其餘局域網技術如令牌環、FDDI和ARCNET。" -- Wiki百科
從 Xerox 公佈的 Ethernet I 發展到如今,有過6種以太幀格式:面試
其中主流應用的是 Ethernet II、802.3/802.2 LLC、802.3/802.2 SNAP 這三種,最經常使用的是 RFC894 定義,也就是 Ethernet II 的幀格式。網絡
將 Ethernet II 幀頭的類型
字段替換爲幀長度
,而且由於新增長了 DASP, SSAP,Control這三個各佔1字節的字段,報文的長度也調整爲:43~1497,它們三個字段做爲 LLC 的頭socket
數據報文變爲:38~1492字節 tcp
Ethernet 幀,從最上層(應用層)發送的數據單元(PDU),每通過一層,都會把上層整個的 PDU 做爲下層 PDU 的 data 域,而後加上
本身的協議頭;接受端,同下而上的層層拆掉每層的頭部。瞭解了這些,咱們嘗試抓包具體分析每一個字段spa
$ tcpdump -i eth1 port 9527 -s 0 -w ./target9527.cap
用 wireshark
打開抓到的二進制報文,如圖所示:code
Frame 1,表示第1幀,源ip和目的ip分別是:172.24.31.67 和 10.96.77.128,都是內網ip。blog
從 Frame 4 至 Frame 7 是創建鏈接後,發送具體請求的數據包。首先,發送了 HTTP 協議的 GET 請求,收到請求後回覆了ACK。具體看下:圖片
PSH
,PSH
是告訴接收端,當即交由應用層處理而沒必要等到Recv socket buffer
寫滿PSH
標記的包,要求當即處理
tcp 鏈接是雙工的,因此任何創建鏈接的雙方均可以發起關閉鏈接的請求。本身以前面試也總喜歡問這些問題,看看候選人到底理解的是否透徹,
但是大多數都不怎麼清楚。言歸正傳,剩下的 Frame 8 至 Frame 11 是回覆詳情的 ACK 和 端開鏈接的 tcp 包。ip
PSH
標誌位的請求和 Frame 7 的 HTTP 請求四次揮手所有結束。有同窗能夠會比較疑惑,不是應該是4次請求嗎,這裏只有三次。解釋下這個問題:由於服務端在響應HTTP請求時,由於知道本身已經發送徹底部數據,因此在響應包里加上了四次揮手中的第一次 FIN=1 的請求。路由