12.29 ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

01 計算機網絡體系結構中的ping

ping是Windows、Unix、Linux等操作系統提供的一個常用的網絡管理命令,用於檢查網絡的連通性,幫助分析和判定網絡故障。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

一個ping的請求和響應,串聯起多個網絡協議,可能途經了多個主機和路由器

ping在計算機網絡體系結構中歸屬應用層,越過運輸層直接使用IP層的ICMP協議,發送“回送請求”報文給目標主機,接收目標主機返回的“回送回答”報文並顯示在源主機上。

ping是把網絡協議應用到日常網絡管理的典型實例。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

計算機網絡的體系結構

02 ping的執行流程

ping命令的執行流程見下圖。

正常執行流程可以簡要描述為:ping命令接收一個IP地址或一個網絡域名,如果是域名會將域名轉換為IP地址。

判斷被ping的目標主機和源主機是否在一個網絡上,如果不在一個網絡上,則查找路由表,找到通往目標網絡的路由器IP地址或默認網關IP地址。

查找本地主機ARP表中是否有該IP對應的MAC地址;如果沒有,則通過廣播詢問該IP的MAC地址;本網絡中的主機、路由器都會接收到該詢問報文。

擁有該IP地址的本地設備回覆應答報文,將該IP對應的MAC地址發給源主機。

為了減少本地廣播,本地主機、三層路由器或路由器會適時更新自己的本地ARP表,保存本地IP地址和MAC地址的對應關係。

知道了下一步報文要發往的MAC地址,ping命令使用ICMP協議封裝含有對端MAC地址的IP數據報交給交換機,交換機查找自己的MAC與port端口對應表,將數據包傳給對應端口的主機。

下面的流程只畫了本機流程,交換機和路由器的流程沒有畫出,源主機信息發送到交換機之後,交換機和路由器根據IP數據報相關信息再一步一步的向前查找目標主機,源主機只需要等待回送回答報文。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

ping命令的執行流程圖

03 ping命令涉及的網絡協議

ping是ICMP網際控制報文協議的一個重要應用,因此ping涉及的最重要的一個協議是ICMP。

在ping執行過程中會觸發一系列動作,會附帶調用其他一些協議功能,完成源主機和目標主機的請求和應答。

DNS:域名系統(Domain Name System),TCP/IP協議中應用層協議,用於解析域名和IP地址。

ICMP:網際控制報文協議(Internet Control Message Protocol)。用於在IP主機、路由器之間傳遞控制信息。

例如檢測網絡連通性、主機的可達性。不傳輸用戶數據,只傳輸控制信息。ICMP的數據要封裝在IP數據報中進行傳輸。

IGMP:網際組管理協議(Internet Group Management Protocol),該協議運行在主機和組播路由器之間。

組播和廣播的區別很簡單,組播是通知部分人知道的傳播形式,而廣播是通知到所有人。

IP :網際協議或互聯網協議(Internet Protocol)。IP協議位於TCP/IP協議的網絡層,ICMP、IGMP及以上層級的報文都要經過IP協議轉換封包成IP數據包向下傳送。

ARP :地址解析協議(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。

04 ping 抓包準備

家用無線路由器兩臺,R1和R2。用於組建簡單的網絡供測試使用。

電腦主機兩臺A和B,通過抓取主機網絡接口卡上進進出出的數據,瞭解網絡協議和網絡行為。

下載網絡抓包軟件,安裝在兩臺電腦主機上。例如Wireshark,是一個免費的開源工具,本次測試使用該工具。

05 局域網ping主機時抓包及分析

將無線路由器降級為交換機使用,通過無線路由器的LAN接口連接兩臺電腦主機,系統連接和IP設置如下圖所示。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

簡單的局域網環境

主機A和主機B正常開啟,允許ICMP協議分組通過。B ping A 的截圖如下。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

ping目標主機時抓取的網絡數據包

分析上圖的執行時序發現,ping動作完成之後,兩臺主機又互相確認了一下各自的IP地址和MAC地址,再次確認各自ARP表中數據的正確性。

這種詢問和廣播的頻率需要確定一個合適的值,確保數據不過時又不會特別頻繁。

刪掉主機B的ARP緩存數據,再進行正常的ping操作。從下圖執行時序可以看出,主機B的ARP緩存中沒有主機A的IP地址對應的MAC地址記錄,主機B需要先ARP廣播,查詢到主機A的MAC地址。

得到主機A的MAC地址後,B主機再發ICMP報文給A主機並等待回覆報文。

C>arp –d 該命令用於刪除ARP緩存數據

C>ping 192.168.1.122

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

刪除ARP緩存數據後,再抓包,出現了ARP協議,廣播查詢MAC地址

執行過一次後ARP表建立起來了,再ping時直接就ICMP了。最後互相再確認一下彼此的地址,保證自己的ARP表正確。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

ARP緩存數據建立後,再抓包發現不需要首先請求MAC地址了

主機A和主機B正常開啟,允許ICMP協議包。A ping B 的截圖如下。可見,正常ping通後,A和B又互相確認了一下對方的MAC地址。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

為了保證本地ARP緩存準確,ARP還是經常要詢問和應答IP和MAC的對應關係的啊

主機A開啟,主機B關閉。A ping B:即192.168.1.120 ping 192.168.1.122

此時必然ping不通,返回請求超時,無法訪問目標主機的錯誤報文。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

ping已經關閉的本地主機,當然ping不通,請求超時

ping的同時,在主機A的網絡接口處開始抓包,由於網絡數據太多,下圖篩選出ARP和ICMP協議,對照查看時可以通過Time字段或No字段的值確定網絡數包出現先後順序。

可猜測:主機A直接給B發ICMP數據包,沒有收到回覆信息;之後A給B發ARP地址解析請求,詢問B的MAC地址;多次詢問沒有返回應答報文後,B發廣播信息查詢對應MAC地址。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

給對應主機發ARP地址解析請求,一直得不到響應,改為廣播發送信息

主機A和主機B正常開啟,A通過防火牆設置禁止ICMP分組通過。B ping A 的截圖如下。請求超時,ping不通。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

設置ICMP過濾後,ping對應的主機,返回請求超時的錯誤

ping的同時,抓包主機B的網卡數據,發現:ping不通之後詢問A的MAC地址,A能回答自己的MAC地址,回答後繼續ping,因為A過濾了ICMP分組,還是PING不通。

猜測,主機B禁止ICMP分組通過,但可能ARP協議還是可以執行的。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

設置了ICMP過濾的主機,好像還能響應ARP請求

06 跨網段抓包及分析

兩臺無線路由器及電腦的連接、IP設置如下圖。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

搭建跨網段的環境

跨網段ping目標主機。主機A 192.168.2.100 ping 主機B 192.168.1.110, 兩臺主機正常開機,允許ICMP分組通過。

通過查看,可以瞭解ping的過程中執行了哪些網絡協議。可以對應去學習和了解這些協議的原理和用法。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

跨網段ping目標主機時,抓取的網絡數據包

07 ping公網域名,抓包網絡數據

主機A 192.168.2.100 ping 新浪主頁sina.com.cn ,見下圖。首先DNS進行域名解析,得到其IP地址,再選擇合適的路由或者網關將ping的數據包發出去。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

ping公網域名時,報文中出現了域名解析DNS的請求報文

08幾個重要概念

主機中的ARP表

緩存IP地址和MAC地址的對應關係。通過網絡協議自動維護。

也可以使用arp命令顯示ARP表的內容,可以刪除ARP的表項,可以增加對應關係到表中。arp –help可以查看arp命令的詳細用法。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

arp命令的幫助信息

主機中的路由表

路由表在系統運行中由網絡選擇協議自動維護,也可以通過route命令查看、添加、修改、刪除路由信息。

路由分靜態路由和動態路由兩種。路由表項由6個字段組成。

destination:目的地址,用來標識IP包的目的地址或者目的網絡。

mask:子網掩碼,與目的地址一起標識目的主機或者路由器所在的網段的地址。

pre:優先級。到達一個目的地可能有多條路徑,優先使用優先級高的路徑。

cost:路由開銷,有多個路徑可以到達目的地,標識每條路徑的開銷,開銷最小的是最優路徑。

interface:輸出接口,說明IP包走該該路徑時,從該路由器這個網絡接口轉發。

nexthop:下一跳的IP地址,說明IP包所經過的下一個路由器。

route –help 可以查看route命令的詳細用法。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

route命令的幫助信息

交換機中的ARP表

二層交換機中只有MAC-PORT對應關係表;三層交換機具有路由功能,使用ARP表記錄IP、MAC和port的對應關係。網絡協議可以自動維護該對應關係表。

交換機中的 MAC表

二層交換機使用MAC-PORT對應關係表,記錄MAC地址、端口號、VLAN 號。網絡協議可以自動維護該對應表。

路由器中的路由表

每個路由器中都有一個路由表和FIB(Forward Information Base)表,路由表用來決策路由,FIB用來轉發分組。

路由器中的路由表和主機中的路由表相似。

FIB表指定分組到哪個路由器的哪個物理接口發送;或者不再經過其他路由器,直接傳送到直接相連的網絡中的目的主機。

09抓包軟件的簡單介紹

Wireshark是一個免費的網絡封包分析軟件。計算機網絡協議學習起來很抽象,看不見摸不著。

Wireshark可以抓包網絡數據,按照時間順序直觀、具體的呈現出網絡行為,對於學習計算機網絡和網絡協議很有幫助。

抓包可以看到一系列的網絡協議,直觀感受網絡協議的存在,可以根據網絡協議的出現頻率,有選擇性的優先理解和學習相關協議。

wireshark功能很豐富,可以選擇捕獲接口,可以使用捕獲過濾器,可以使用顯示過濾器。具體內容可以查閱相關文檔。

下圖是wireshark開始界面,主要用來選擇捕獲哪個接口的網絡數據。一臺計算機可能有有線網卡、無線網卡;實體網卡、虛擬網卡等等。

在此處指定網絡接口,wireshark將得到該網絡接口卡的所有進進出出的數據。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

wireshark的主界面,選擇要抓包哪個網絡接口的進進出出的數據

下圖中有開始按鈕、停止按鈕。通過網絡接口卡的數據很多,在該界面中最重要的是要使用“應用顯示過濾器”,選擇自己感興趣的內容。

ping,觸發一連串動作,抓包數據,直觀瞭解網絡協議和流程

執行抓包的界面,可以啟動、停止抓包;可以使用抓包過濾器和顯示過濾器

10遺憾

主要關注了流程,數據包裡面具體信息沒有展開描述,具體數據包中的各種標誌位、控制信息、數據信息等等才能完整準備的描述對應協議。

沒有條件抓取交換機和路由器上的數據包,條件具備後再做完整的測試進行補充。


分享到:


相關文章: