【計算機網絡】詳解網絡層(二)ARP和RARP
ARP
ARP(Address Resolution Protocol,地址解析協議)是將IP地址解析為以太網MAC地址(物理地址)的協議。在局域網中,當主機或其他網絡設備有數據要發送給另一個主機或設備時,它必須知道對方的網絡層地址(即IP地址)。但是僅僅有IP地址是不夠的,因為IP數據報文必須封裝成幀才能通過物理網絡發送。因此發送方還需要有接收方的物理地址,也就需要一個從IP地址到物理地址的映射,ARP就是事先這麽功能的協議。
1、ARP報文格式
ARP是一個獨立的三層協議,所以ARP報文在此數據鏈路層傳輸時不需要經過IP協議的封裝,而是直接生成自己的報文,其中包括ARP報頭,到數據鏈路層後再由對應的數據鏈路層協議進行封裝。ARP報文分為ARP請求和ARP應答報文兩種,二者格式可以統一用下圖表示:
硬件類型,表示ARP報文可以在哪種類型的網絡上傳輸
上層協議類型,表示硬件地址要映射的協議地址類型
操作類型,指定本次ARP報文類型(請求/應答)
ARP報文並不是直接在網絡層上發送的,它還是需要向下傳輸到數據鏈路層,所有當ARP報文傳輸到數據鏈路層後,需要再次進行封裝。在以太網中,ARP傳輸到數據鏈路層後會封裝成ARP幀。其格式如下圖所示
可以看出,其幀封裝都是一樣的,網絡層的直接作為數據鏈路層幀的數據部分。
目的MAC地址,如果是ARP請求幀,因為它是一個廣播幀(後面會介紹),所以要填上廣播MAC地址——FF-FF-FF-FF,其目標為網絡上的所有主機
源MAC地址,發送ARP幀的節點MAC地址
幀類型,標識幀封裝的上層協議
2、ARP映射表
無論是主機,還是交換機都會有一個用來緩存同一網段設備IP地址和MAC地址的ARP映射表,用於數據幀的轉發。設備通過ARP解析到目的MAC地址後,將會在自己的ARP映射表中增加IP地址到MAC地址的映射表項,以用於後續到同一目的地數據幀的轉發。
ARP表項分為動態ARP表項和靜態ARP表型。
3*、ARP地址解析原理
- 主機A首先查看自己的ARP表(一個IP地址與MAC地址的映射表),確定其中是否包含有主機B的IP地址和對應的MAC地址。如果找到了對應的MAC地址,則主機A直接利用ARP表中的MAC地址對IP數據報進行幀封裝,並將數據報發送給主機B。類似於計算機組成中高速緩存的命中。
- 如果主機A在ARP表中找不到對應的MAC地址,則先緩存該數據報文,然後以廣播方式(參見數據鏈路層物理地址尋址部分,目的MAC地址為廣播MAC地址——FFFFFF,任一同網段的節點均可收到,該網絡上的所有主機)發送一個ARP請求報文,ARP請求報文中的發送端(源)IP地址和發送端MAC地址分別為主機A的IP地址和MAC地址,目的IP地址和目的MAC地址為主機B的IP地址和全0的MAC地址。ARP請求報文是以廣播的形式發送,所以該網段上的所有主機都會接收到這個請求包,但只有其IP地址與目的IP地址一致的主機B會對該請求進行處理。
- 主機B將ARP請求報文中的發送端(主機A)的IP地址和MAC地址存入自己的ARP表中,然後以單播方式(一對一,點對點形式)向主機A發送一個ARP響應報文,應答報文中就包含了自己的MAC地址,即原來請求報文中要請求的MAC地址。
- 主機A在收到來自主機B的ARP響應報文後,將主機B的MAC地址加入到自己的ARP表中以用於後續報文的轉發,同時將原來緩存的IP數據報再次修改(在目的MAC地址子彈填上已獲得的主機B的的MAC地址)後發送出去。
- 如果主機A不知道網關(一個網絡連接另一個網絡的關口)的MAC地址(即主機A的ARP表沒有命中),則主機A現在本網段中發出一個ARP請求廣播報文,ARP請求報文中的目的IP地址為網關IP地址,代表其目的就是想獲得網關的MAC地址。如果主機A已知網關MAC地址,則略過此步。
- 如果網關的ARP表(網關也有ARP映射表項)中已有主機B對應的MAC地址,則網關直接將在來自主機A的報文中的目的MAC地址字段填上主機B的MAC地址後轉發給主機B。
- 如果網關ARP中沒有,那麽網關會再次向主機B所在網段發送ARP廣播請求報文,此時目的IP地址為主機B的IP地址,其後續處理同前。
這裏說一下網關,網關實質上是一個網絡通向其他網絡的IP地址,是一個邏輯概念,定義網絡的邊界。路由器是物理設備,除具備網關功能外,還具備路由功能(以後再說)。
比如說只有兩個網絡,網絡A(192.168.1.1~192.168.1.254)和網絡B(192.168.2.1`192.168.2.254),子網掩碼為255.255.255.0。可以看出這兩個網絡屬於不同的兩個網絡,不能直接進行通信。即使連接在同一臺交換機上,TCP/IP協議也會根據子網掩碼判定兩個網絡中的主機處於不同網絡裏,不能進行網絡間通信。(交換機是在物理層上工作,按MAC地址訪問,所以也稱二層交換機,兩個子網間不能互訪,除非是具備路由功能和VLAN功能的三層交換機)。這種情況下則需要通過網關進行通信。因為只有兩個網絡,也就一條連接路徑,所以只需要網關就可以。
但如果是多個網絡結構,形成一個網狀,即兩個網絡之間可以有多條訪問路徑,這樣則需要網關和路由器兩種設備,不過現在路由器已經繼承了網關的功能,所以只需要一個路由器即可,利用路由器的路由功能選擇最佳路徑進行通信。
RARP
RARP分組的格式與ARP分組基本一致。RARP為逆地址解析協議,作用與ARP相反,用於將MAC地址轉換為IP地址。
具有本地磁盤的系統引導時,一般是從磁盤上的配置文件中讀取IP地址,但是無盤機,如X中斷或無盤工作站,則需要采用其他方法來獲得IP地址。
總得說來就是,網絡上的每個系統都具有唯一的硬件地址,它是由網絡接口生產廠家配置的。無盤系統的RARP實現過程是從接口卡上讀取唯一的硬件地址,然後發送一份RARP請求,請求某個主機響應該無盤系統的IP地址。
RARP的工作過程如下:
- 網絡上每臺設備都會有一個獨一無二的硬件地址,一般是由設備廠商分配的MAC地址。發送主機從網卡上讀取MAC地址,然後在網絡上發送一個RARP請求的廣播數據包,請求任何收到此請求的RARP服務器分配一個IP地址;
- RARP服務器收到此請求後,檢查其RARP表項,查找該MAC地址對應的IP地址;
- 如果存在,RARP服務器就給發送主機回復一個響應數據包,並將此IP地址提供給對方主機使用;
- 如果不存在,RARP服務器對此不做任何的響應;
- 發送主機收到從RARP服務器的響應信息,就利用得到的IP地址進行通訊,如果一直沒有收到RARP服務器的響應消息,表示初始化失敗。
【計算機網絡】詳解網絡層(二)ARP和RARP