ARP地址解析協議
第一篇中講到局域網內主機及網關相互通信需要ip地址、mac地址兩個核心元素,ip地址在通信前就可以得知(DNS解析),而mac地址如何得到呢,這時就需要ARP協議支持了,ARP全稱為:Address Resolution Protocol即地址解析協議,假設主機A需要訪問局域網主機B,主機A通過地址解析協議向局域網內部發群體廣播,詢問主機B的地址信息,被命中主機B確認目標主機IP為自身時會將廣播報文中主機A地址信息存入ARP緩存表中(緩存減小訪問次數),并向主機A返回自己的mac地址,主機A將主機B返回的地址信息緩存在ARP緩存表中,至此主機A已知主機B的MAC,就可以愉快的開始通信了。發起方需要查詢目標MAC地址時都會先去ARP緩存表中查詢,未查詢到才會發起廣播流程,示例如下:
熟悉地址解析歇息工作流程之后,看一下協議報文,報文結構示例圖如下:
根據上述報文結構,通過抓包分解圖如下所示:
請看下方紅框中16進制顯示的報文,首先看第1到16字節,前六個字節(ff:ff:ff:ff:ff:ff)表示數據包發送的目標地址為廣播地址,局域網內所有主機均需收到,第七到第十二字節(00:2a:6a:f4:7c:41)表示本機mac地址,第十三到二十分別代表幀類型、硬件類型、協議類型、硬件長度、協議長度,第二十一到第二十二字節表示訪問類型(指明當前包是請求包還是應答包,對應的值分別是0x0001和0x0002),第二十三到第二十八字節表示發送端地址(00:2a:6a:f4:7c:41),第二十九到第三十二表示發送端IP(10.13.95.253),第三十三到第三十八表示目標地址(ff:ff:ff:ff:ff:ff),第三十九到第四十二為目標IP(10.13.91.166),到這里ARP協議的報文結構就全部分析完成,可知道ARP的執行原理了。
ICMP控制報文協議
ICMP協議屬于一種控制報文協議,此類信息的顯著特征是不會帶有用戶數據,主要用于在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息。通俗一點理解控制報文協議就是錯誤發現及錯誤報告回傳機制,因為只有發送端拿到發送過程中的失敗原因消息才能針對性的做出處理方案,ICMP的報文結構如下所示:
ICMP協議通過IP協議發送,ICMP協議相當于定義一套返回碼枚舉,不同類型的返回碼所帶有的返回信息也不相同。根據上述報文結構,通過抓包分解圖如下所示:
請看下方紅框十六進制顯示報文內容,前三十四字節表示以太網頭部和IP頭部此處不做詳細解析,從第三十五字節開始屬于ICMP的報文體部分,首先第三十五字節表示類型,第三十六字節表示編碼,以ping(ping命令就是以ICMP協議實現的)為例,它的類型代碼請求報文為8,編碼為0(其它類型和編碼可以網上搜索參考“類型編碼表”,此處不做碼表顯示),第三十七到第三十八字節表示唯一校驗和,第三十九字節到第四十二字節屬于不同類型內容不同的擴展報文,抓包中表示ping的唯一標識碼和自增序列以保證目標返回值是對應請求報文的,第四十三字節到七十四字節表示ping附帶的報文內容,可以通過改變配置報文大小來控制傳輸數據大小,如圖所示實際發送報文即為英文小寫字母,這是ICMP的執行原理。
1、Ping
ping命令是以ICMP協議實現的網絡工具,主要的作用是檢查主機連通性、統計連通時間,若出現超時不能連通:一種可能為目標IP不存在,第二種可能是對方主機屏蔽了ping命令執行,示例截圖如圖所示:
如圖所示,展示返回報文的關鍵字段:
- 字節=32:即ICMP抓包中的32字節英文小寫字母,表示發送報文大小
- 時間=6毫秒:即目標主機響應時間
- TTL=51:即發送者設置的數據包在網絡中可以存活的跳數
2、Tracert
tracert命令是以ICMP協議實現的網絡工具,主要解決網絡連通性問題,統計響應耗時時間,路徑明細等信息,示例截圖如圖所示:
如圖所示,返回報文主要字段:
- 第一列:表示經歷的網絡節點,逐一遞增
- 第二列到第四列,三次響應的平均時間
- 經歷的ip信息
-
IP
+關注
關注
5文章
1701瀏覽量
149504 -
路由器
+關注
關注
22文章
3728瀏覽量
113701 -
ICMP
+關注
關注
0文章
52瀏覽量
14923 -
ARP
+關注
關注
0文章
50瀏覽量
14740
發布評論請先 登錄
相關推薦
評論