TCP/IP詳解卷1 - wireshark抓包分析

在初學TCP/IP協議時,會以爲協議是一種很抽象的東西,經過wireshark抓包分析各類協議,可讓抽象變得具體。數據結構

  • wireshark抓包

    wireshar抓包的教程不少,這裏就再也不重複。參考下圖:code

 
wireshark抓包
  • wireshark快速get對應filter

咱們知道wireshark抓到的內容不少,要過濾咱們須要的信息就須要設置對應的filter,例如:想要過濾ICMP協議相關的log,直接在Filter裏面輸入協議名稱"icmp",就能過濾出ICMP的log。orm

這是一種最簡單的過濾條件了。實際上設置filter的語句有不少,若是想要過濾ICMP中type爲3(目的地不可到達)的數據報,但又不知道filter應該怎麼寫,那應該怎麼辦呢?blog

這個時候,咱們就能夠直接利用wireshark提供的As Filter功能,快速get到想要設置的filter。教程

以下圖所示,要過濾ARP數據報中的ARP請求數據報,直接選中Opcode: request(1),右鍵 ->Copy->As Filter,就能獲得對應filter。圖片

 
wireshark快速get對應filter
  • IP數據報

  • IPv4報文首部

要分析IP數據報的內容,首先得知道它的數據報的數據結構。ip

 
IPv4報文首部 - 圖片來自維基百科
  • wireshark過濾IP數據報

而後過濾IP數據報,從下面這個圖能夠看出,IP數據報被封裝到以太網幀裏面,當以太網幀的type值爲0x0800時,那麼以太網幀封裝的就是IP數據報了。路由

 
IP數據報被封裝到以太網幀裏面

所以,設置eth.type == 0x800就能過濾出IP數據報。根據下圖,再對比IPv4報文首部的數據結構,就能夠更加清晰地理解IP數據報了。get

 
IP數據報
  • ARP

  • ARP報文格式

 
ARP報文格式 - 圖片來自維基百科
  • wireshark過濾ARP數據報

和IP數據報同樣,ARP數據報被封裝到以太網幀裏面,當以太網幀的type值爲0x0806,設置
eth.type == 0x806就能過濾ARP數據報。io

ARP數據報又分爲請求數據報和應答數據報。
首先,查看我本機的MAC地址,在wireshark中過濾ARP請求數據報的MAC地址等於我本機地址的一條log。以下圖,本機請求IP地址爲10.120.1.91的主機的MAC的ARP請求。

 
ARP請求

經過上面的ARP數據報,我又能夠獲得ARP請求中Sender IP address的Filter格式,我只須要過濾
Sender IP address爲10.120.1.91,最後過濾出來的結果就只有2條。

查看其中Target MAC address爲我本機MAC地址,而且Opcode爲2,便是10.120.1.91返回的APR應答,其中Sender MAC address,就是ARP請求獲得的MAC地址。

 
ARP應答
  • ICMP

  • ICMP數據報格式

 
ICMP報頭 - 圖片來自維基百科
  • wireshark過濾ICMP數據報

ICMP報頭格式雖然簡單,可是對應類型不少,分析方法也是相似的,選中你想要設置爲過濾條件的參數,而後copy爲filter

 
ping request
 
ping reply
 
沒有到達目的地的路由
 
ICMP重定向
  • 參考

  • [TCPIP] TCP/IP Illustrated, Volume 1: The Protocols. W. Richard Stevens.

  • IPv4

  • ARP

  • ICMP

相關文章
相關標籤/搜索