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遺憾

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

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

TAG: ping主機ARPMACIP