ARP協議-路由交換原理5-【HCNA筆記】

1、ARP報文格式

    ARP協議工作在數據鏈路層,網絡中傳輸的ARP包示意如下(由於字段較多,這裏對連續字段進行換行處理):

幀頭Data(ARP包)FCS

ARP包:

Hardware TypeProtocol TypeHardware LengthProtocol LengthOperation Code
16位16位8位
8位16位
Source Hardware AddressSource Protocol Address
48位32位
Destination Hardware AddressDestination Protocol Address
48位32位

Hardware Type:硬件類型,指物理網絡的類型,如以太網(值爲1)

Protocol Type:協議類型,指網絡協議類型,如IP協議(值爲0x0806)

Hardware Length:硬件地址長度,指MAC地址長度,通常爲6字節

Protocol Length:協議地址長度,指I票地址長度,通常爲4字節

Operation Code:操作類型,指明ARP操作類型,ARP請求爲1;ARP響應爲2;RARP請求爲3,RARP響應爲4

Source Hardware Address:發送方硬件地址

Source Protocol Address:發送方IP地址

Destination Hardware Address:接收方硬件地址

Destination Protocol Address:接收方IP地址


2、ARP運行過程

    一臺設備通過網絡向另一臺設備發送數據時,進行IP報文和幀封裝時必須要填入目標設備的IP地址和MAC地址,而從上層交付的信息中只告知了目標IP地址,MAC地址則需要設備通過ARP協議自行獲取。

    當源主機需要向目的主機發送數據時,源主機會先查看自己的ARP緩存表中是否有目標IP地址和MAC地址,若有則直接使用,若沒有則通過ARP協議到網絡中詢問。詢問過程是源主機向網絡中廣播一個ARP請求報文(即Operation Code=1),該報文包含了源IP、源MAC和目的IP。所有接受到該廣播的設備均用自己的IP與目的IP進行比對,若不一致則不響應該請求,若一致則向源主機發送一個ARP響應報文(即Operation Code=2),其中就包含了目的主機的MAC地址。這樣源主機和目的主機都知道了對方的IP及對應的MAC地址,並更新其ARP緩存表待以後使用。若ARP緩存表中的條目長時間不使用,主機會將該條目刪除下次需要時再通過ARP詢問,條目的默認緩存時間通常是1200S。需要注意的是ARP請求報文是廣播包,也就是說該報文不能穿越路由器,不能轉發到其他廣播域,只能被主機所在網段內的其他主機收到。


3、ARP代理

    若主機配置了網關(一般是路由器),則發往另一個網段的數據會直接發往網關而不需要通過ARP協議獲取MAC地址。若主機沒有配置網關,則發往另一個網段的數據會被直接丟棄,ARP協議根本不會起作用。只有當源主機認爲目標與自己處於同網段,但實際上目標主機處於另一網段,且他們之間通過一個路由器連接在一起(後面會詳細說明這種情況)。因爲源主機認爲目標與自己處於同網段,所以源主機依舊向網段內廣播ARP請求報文,啓用了ARP代理的路由器也會收到該報文,路由器先查看目標主機的IP是否在自己的路由表中,若不存在則丟棄該報文,若存在則路由器會向源主機返回一個ARP應答報文,應答報文中目標IP對應的MAC地址是路由器自己的MAC地址。源主機記錄該MAC地址後,需要發往目標主機的數據均會發往路由器再由路由器轉發。


4、免費ARP

    免費ARP報文中的目的IP就是源主機本身,該報文依舊通過廣播的形式發到廣播域,其目的在於檢測廣播域內是否有主機與源主機IP衝突,另外還可以更新廣播域內其他主機的ARP緩存表。


【ARP代理奇怪的作用範圍】前面講到ARP代理的產生條件非常有限,首先源主機要認爲自己與目的主機位於同網段,但實際又不在同網段,這是怎麼回事呢。

    實際上是可能的,這是由於掩碼不同導致的問題。前幾章中我們講到過VLSM(可變長子網掩碼)技術,也就是說一個IP可以使用不同的掩碼來劃分網段。那就會產生一種情況,如A:192.168.0.1/255.255.0.0和B:192.168.1.1/255.255.255.0這兩個IP,因爲掩碼的問題導致A認爲B與自己是同一網段,但B卻認爲A與自己不在同一網段,這種情況下的通訊就需要依靠ARP代理了。


【ARP到底工作於那一層】在學習時我們發現OSI模型中將ARP劃分到數據鏈路層,而在TCP/IP模型中又將ARP劃分到了網絡層,那ARP到底是那一層呢。

    首先OSI模型是一個理論模型,而TCP/IP模型是網絡實現後才進行劃分的。OSI分爲7層,最低層包括物理層、數據鏈路層、網絡層等等。TCP/IP分爲4層,包括網絡接入層、網際互連層、傳輸層、應用層。這裏誤會的產生就在TCP/IP模型中將最低層叫做網絡層,實際上它對應的是OSI中的物理層和數據鏈路層,所以把名字改成接入層大家就不爭論了吧。實際上ARP在網絡中傳輸時也並不包含IP頭。


【ARP緩存表】ARP緩存表就是個IP-MAC對照表,設備會定期對其進行更新和清理。


【網關】網關實質上是一個網絡通向其他網絡的IP地址(路由器的IP)。比如有網絡A和網絡B,網絡A的網段爲192.168.1.0/255.255.255.0;網絡B的網段爲192.168.2.0/255.255.255.0。在沒有路由器的情況下,兩個網絡之間是不能進行TCP/IP通信的,即使兩個網絡連接在同一臺交換機上,TCP/IP協議也會根據子網掩碼判定兩個主機處於不同的網絡裏。而要實現這兩個網絡之間的通信則必須通過網關。如果網絡A中的主機發現數據包的目的主機不再本地網絡中,就把數據包轉發給它自己的網關,再由網關轉發給網絡B的網關,網絡B的網關再轉發給網絡B的某個主機。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章