在初學TCP/IP協議時,會以爲協議是一種很抽象的東西,經過wireshark抓包分析各類協議,可讓抽象變得具體。數據結構
wireshar抓包的教程不少,這裏就再也不重複。參考下圖:code
咱們知道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。圖片
要分析IP數據報的內容,首先得知道它的數據報的數據結構。ip
而後過濾IP數據報,從下面這個圖能夠看出,IP數據報被封裝到以太網幀裏面,當以太網幀的type值爲0x0800時,那麼以太網幀封裝的就是IP數據報了。路由
所以,設置eth.type == 0x800就能過濾出IP數據報。根據下圖,再對比IPv4報文首部的數據結構,就能夠更加清晰地理解IP數據報了。get
和IP數據報同樣,ARP數據報被封裝到以太網幀裏面,當以太網幀的type值爲0x0806,設置
eth.type == 0x806就能過濾ARP數據報。io
ARP數據報又分爲請求數據報和應答數據報。
首先,查看我本機的MAC地址,在wireshark中過濾ARP請求數據報的MAC地址等於我本機地址的一條log。以下圖,本機請求IP地址爲10.120.1.91的主機的MAC的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地址。
ICMP報頭格式雖然簡單,可是對應類型不少,分析方法也是相似的,選中你想要設置爲過濾條件的參數,而後copy爲filter