計算機網路 5 網路層 ARP

2022-08-22 16:39:11 字數 3201 閱讀 7110

arp

當網路裝置有資料要傳送給另一台網路裝置時,必須要知道對方的網路層位址(即ip位址)。ip位址由網路層來提供,但是僅有ip位址是不夠的,ip資料報文必須封裝成幀才能通過資料鏈路進行傳送。資料幀必須要包含目的mac位址,因此傳送端還必須獲取到目的mac位址。通過目的ip位址來獲取目的mac位址的過程是由arp(address resolution protocol)協議來實現的。

arp的資料報格式

hardware type表示硬體位址型別,一般為乙太網;

protocol type表示三層協議位址型別,一般為ip;

hardware length和protocol length為mac位址和ip位址的長度,單位是位元組;

operation code指定了arp報文的型別,包括arp request和arp reply;

source hardware address指的是傳送arp報文的裝置mac位址;

source protocol address指的是傳送arp報文的裝置ip位址;

destination hardware address指的是接收者mac位址,在arp request報文中,該字段值為0;

destination protocol address指的是接收者的ip位址。

arp報文不能穿越路由器,不能被**到其他廣播域。

arp快取

網路裝置一般都有乙個arp快取(arp cache),arp快取用來存放ip位址和mac位址的關聯資訊。在傳送資料前,裝置會先查詢arp快取表。如果快取表中存在對方裝置的mac位址,則直接採用該mac位址來封裝幀,然後將幀傳送出去。如果快取表中不存在相應資訊,則通過傳送arp request報文來獲得它。學習到的ip位址和mac位址的對映關係會被放入arp快取表中存放一段時間。在有效期內,裝置可以直接從這個表中查詢目的mac位址來進行資料封裝,而無需進行arp查詢。過了這段有效期,arp表項會被自動刪除。

如果目標裝置位於其他網路,則源裝置會在arp快取表中查詢閘道器的mac位址,然後將資料傳送給閘道器,閘道器再把資料**給目的裝置。

arp請求

本例中,主機a的arp快取表中不存在主機c的mac位址,所以主機a會傳送arp request來獲取目的mac位址。arp request報文封裝在以太幀裡。幀頭中的源mac位址為傳送端主機a的mac位址。此時,由於主機a不知道主機c的mac位址,所以目的mac位址為廣播位址ff-ff-ff-ff-ff-ff。arp request報文中包含源ip位址、目的ip位址、源mac位址、目的mac位址,其中目的mac位址的值為0。arp request報文會在整個網路上傳播,該網路中所有主機包括閘道器都會接收到此arp request報文。閘道器將會阻止該報文傳送到其他網路上。

arp響應

所有的主機接收到該arp request報文後,都會檢查它的目的協議位址欄位與自身的ip位址是否匹配。如果不匹配,則該主機將不會響應該arp request報文。如果匹配,則該主機會將arp報文中的源mac位址和源ip位址資訊記錄到自己的arp快取表中,然後通過arp reply報文進行響應。

主機c會向主機a回應arp reply報文。arp reply報文中的源協議位址是主機c自己的ip位址,目標協議位址是主機a的ip位址,目的mac位址是主機a的mac位址,源mac位址是自己的mac位址,同時operation code被設定為reply。arp reply報文通過單播發送。

主機a收到arp reply以後,會檢查arp報文中目的mac位址是否與自己的mac匹配。如果匹配,arp報文中的源mac位址和源ip位址會被記錄到主機a的arp快取表中。

在上述例子的組網中,主機a需要與主機b通訊時,目的ip位址與本機的ip位址在同乙個網段,所以a將會以廣播形式傳送arp request報文,請求主機b的mac位址。但是,廣播報文無法被路由器**,所以主機b無法收到主機a的arp請求報文,當然也就無法應答。

在路由器上啟用**arp功能,就可以解決這個問題。啟用**arp後,路由器收到這樣的請求,會查詢路由表,如果存在主機b的路由表項,路由器將會使用自己的g0/0/0介面的mac位址來回應該arp request。主機a收到arp reply後,將以路由器的g0/0/0介面mac位址作為目的mac位址進行資料**。

免費arp

主機被分配了ip位址或者ip位址發生變更後,必須立刻檢測其所分配的ip位址在網路上是否是唯一的,以避免位址衝突。主機通過傳送arp request報文來進行位址衝突檢測。

主機a將arp request廣播報文中的目的ip位址字段設定為自己的ip位址,且該網路中所有主機包括閘道器都會接收到此報文。當目的ip位址已經被某乙個主機或閘道器使用時,該主機或閘道器就會回應arp reply報文。通過這種方式,主機a就能探測到ip位址衝突了。

免費arp可以用來探測ip位址是否衝突。

計算機網路(10)網路層

ip多播 ip多播就是一對多的通訊,網際網路範圍內的多播要靠路由器來實現,能夠執行多播協議的路由器稱為多播路由器。多播資料報的目的位址一定不能寫主機位址,因為多播組中可能有成千上萬個主機位址,所以自資料報的目的位址中寫入多播組的標示符,設法讓加入這個多播組的主機位址與標示符關聯起來。多播組的標示符就...

計算機網路04 網路層

路由器中的子網掩碼目的是告訴使用者網路是哪一部分。比如網路是10.0.0.0,其中子網掩碼是255.0.0.0,則子網掩碼中的255表示網路是10部分,同樣子網掩碼格式的網段必須相同。在客戶端和伺服器之間傳輸資料的模型 其中mac位址是決定方式 使用自己的子網掩碼,判斷自己在哪個網段,判斷目標位址在...

計算機網路(四)網路層

3 劃分子網和構造超網 4 網際控制報文協議icmp 5 ipv6 2.1 虛擬互連網路 互連起來的各種物理網路的異構性是客觀存在的,但是利用ip協議就可以使得這些效能互異的網路在網路層上看起來是乙個統一的網路。將網路互連起來需要一些中間裝置 2.2 分類的ip位址 ip位址就是給網際網路上的每一台...