網絡報文解析初探 原

一、概述

一提到網絡報文,大多數人對這個的第一印象是OSI七層網絡模型,如下圖:

本文中我們按照五層協議的體系結構來介紹:

  1. 物理層:傳送數據的單位是比特。物理層的任務就是透明地傳送比特流。
  2. 數據鏈路層(鏈路層):將網絡層交下來的 IP 數據報組裝成幀,在兩個相鄰結點(主機和路由器,或兩個路由器)之間的鏈路上“透明”地傳送幀中的數據。每一幀包括數據和必要的控制信息(如同步信息、地址信息、差錯控制等)。
  3. 網絡層:使用無連接的網際協議 IP 和許多種路由選擇協議。負責爲分組交換網上的不同主機提供通信服務,把運輸層產生的報文段或用戶數據報封裝成分組(也叫IP數據報或數據報)或包進行傳送。網絡層的另一個任務就是選擇合適的路由。
  4. 運輸層:向兩個主機中進程之間的通信提供服務。由於一個主機可同時運行多個進程,因此運輸層有複用和分用的功能。複用就是多個應用層進程可同時使用下面運輸層的服務。分用則是運輸層把收到的信息分別交付給上面應用層中的相應的進程。運輸層主要使用以下兩種協議:1.傳輸控制協議TCP(數據傳輸的單位是報文段)2.用戶數據報協議UDP(數據傳輸的單位是用戶數據報),不保證提供可靠的交付,只能提供“盡最大努力交付”。
  5. 應用層:直接爲用戶的應用進程提供服務,如 HTTP、支持文件傳輸的 FTP 協議等。

二、解析網絡報文

先附上一張Wireshark解析TCP包的圖:

1. Frame Header(24 bytes)報文解析

由於網絡報文是不定長格式的,所以每一段報文有多長就需要在報文頭裏面記錄下來,每一個Frame Header則記錄這些信息,包括這個包的準確時間點,有多長等。最重要的則是記錄了數據傳輸層的類型,上圖中則爲Ethernet類型。

2. 數據鏈路層Ethernet(14 bytes)報文解析

由Frame Header可以得知數據傳輸層使用的是Ethernet類型傳輸,則我們接下來使用Ethernet解析以下報文,繼續上圖:

Ethernet協議很簡單,只保存了源Mac地址發送到目標Mac地址,外加一個網絡層的協議類型。

3. 網絡層IPv4報文解析

通過在數據鏈路層得知下一層是一個IPv4協議,所以使用IPv4協議格式解析報文

在IPv4層中,通過ARP協議獲取對應Mac地址的IP地址,網絡層就可以知道這個包是從源IP發送至目標IP,同時標記傳輸層協議是什麼。

4. 傳輸層TCP報文解析

通過解析網絡層可以知道傳輸層使用的是TCP協議,所以按照TCP報文格式進行解析,上圖則是經典的TCP協議格式解析,其中data纔是應用真正需要用到的數據,內容比較多,就不細講了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章