arp是分布式數據庫存儲嗎?
ARP是分布式數據庫儲存,發送包實現通訊,實際是MAC地址,可以將網絡層解析為數據連接層。ARP的工作機制:
那么ARP又是如何知道MAC地址的呢?簡單地說,ARP是借助ARP請求與 ARP響應兩種類型的包確定MAC地址的。
假定主機A向同一鏈路上的主機B發送IP包,主機A的IP 地址為172. 20. 1. 1, 主機B的IP地址為172. 20.1. 2, 它們互不知道對方的MAC 地址。
主機A為了獲得主機B的MAC地址,起初要通過廣播發送一個ARP請求包。
這個包中包含了想要了解其MAC地址的主機IP地址。也就是說,ARP請求包中 已經包含了主機B的IP地址172. 20. 1. 2。由于廣播的包可以被同一個鏈路上所有 的主機或路由器接收,因此ARP的請求包也就會被這同一個鏈路上所有的主機和 路由器進行解析。如果ARP請求包中的目標IP地址與自己的IP地址一致,那么 這個節點就將自己的MAC地址塞人ARP響應包返回給主機A。
總之,從一個IP地址發送ARP請求包以了解其MAC地址,目標地址將自 己的MAC地址填人其中的ARP響應包返回到IP地址。由此,可以通過ARP從 IP地址獲得MAC地址,實現鏈路內的IP通信。
根據ARP可以動態地進行地址解析,因此,在TCP/IP的網絡構造和網絡通 信中無需事先知道MAC地址究竟是什么,只要有IP地址即可。
如果每發送一個IP數據報都要進行一次ARP請求以此確定MAC地址,那將會造成不必要的網絡流量,因此,通常的做法是把獲取到的MAC地址緩存一段 時間。即把第一次通過ARP獲取到的MAC地址作為IP對MAC的映射關系記憶 到一個ARP緩存表中,下一次再向這個IP地址發送數據報時不需再重新發送 ARP請求,而是直接使用這個緩存表當中的MAC地址進行數據報的發送。每執 行一次ARP, 其對應的緩存內容都會被清除。不過在清除之前都可以不需要執行 ARP就可以獲取想要的MAC地址。這樣,在一定程度上也防止了ARP包在網絡 上被大量廣播的可能性。
一般來說,發送過一次IP數據報的主機,繼續發送多次IP數據報的可能性 會比較高。因此,這種緩存能夠有效地減少ARP包的發送。反之,接收ARP請 求的那個主機又可以從這個ARP請求包獲取發送端主機的IP地址及其MAC地 址。這時它也可以將這些MAC地址的信息緩存起來,從而根據MAC地址發送 ARP響應包給發送端主機。類似地,接收到IP數據報的主機又往往會繼續返回 IP數據報給發送端主機,以作為響應。因此,在接收主機端緩存MAC地址也是 一種提高效率的方法。
不過,MAC地址的緩存是有一定期限的。超過這個期限,緩存的內容將被清 除。這使得MAC地址與IP地址對應關系即使發生了變化,也依然能夠將數據包 正確地發送給目標地址。
IP地址和MAC地址為什么缺一不可
可能會提出這樣的疑問:“數據鏈路上只要知道接收端的MAC地址 不就知道數據是準備發送給主機B的嗎,那還需要知道它的IP地址嗎?”
乍聽起來確實讓人覺得好像是在做多余的事。此外,可能會質疑: “只要知道了IP地址,即使不做ARP, 只要在數據鏈路上做一個廣播不就能發給 主機B了嗎?“那么,為什么既需要IP地址又需要MAC地址呢?
如果考慮一下發送給其他數據鏈路中某一個主機時的情況,這件事就不 難理解了。主機A想要發送IP數據報給主機B時必須得經過路由 器C。即使知道了主機B的MAC地址,由于路由器C會隔斷兩個網絡,還是無法 實現直接從主機A發送數據報給主機B。此時,主機A必須得先將數據報發送給 路由器C的MAC地址Cl。
此外,假定MAC地址就用廣播地址,那么路由器D也將會收到該廣播消息。
于是路由器D又將該消息轉發給路由器C, 導致數據包被重復發送兩次。
在以太網上發送IP包時,“下次要經由哪個路由器發送數據報”這一信息非 常重要。而這里的“下一個路由器”就是相應的MAC地址。
如此看來,IP地址和MAC地址兩者缺一不可。于是就有將這兩個地址相關 聯的ARP協議。
最后,我們再試想一下,不使用IP地址,而是通過MAC地址連接世界上所 有網絡中所有的主機和節點的情況。僅僅憑一個MAC地址,人們是無法知道這臺 機器所處的位置的。而且如果全世界的設備都使用MAC地址相連,那么網橋在 習得之前就得向全世界發送包。可想而知那將會造成多大的網絡流量。而且由于 沒有任何集約機制,網橋就不得不維護一張巨大的表格來維護所學到的所有MAC 地址。一旦這些信息超過網橋所能承受的極限,那將會導致網橋無法正常工作, 也就無法實現通信了。
RARP
RARP (Reverse Address Resolution Protocol)是將ARP反過來,從MAC地址 定位IP地址的一種協議。例如將打印機服務器等小型嵌入式設備接人到網絡時就 經常會用得到。
平常我們可以通過個人電腦設置IP地址,也可以通過DHCP自動分配獲取 IP地址。然而,對于使用嵌入式設備時,會遇到沒有任何輸入接口或無法通過 DHCP動態獲取IP地址的情況。
在類似情況下,就可以使用RARP。為此,需要架設一臺RARP服務器,從 而在這個服務器上注冊設備的MAC地址及其IP地址。然后再將這個設備接人到 網絡,插電啟動設備時,該設備會發送一條“我的MAC地址是***,請告訴我, 我的IP地址應該是什么"的請求信息。RARP服務器接到這個消息后返回類似于"MAC地址為***的設備,IP地址為***"的信息給這個設備。而設備就根據從 RARP服務器所收到的應答信息設置自己的IP地址。
代理ARP
通常ARP包會被路由器隔離,但是采用代理ARP (Proxy ARP)的路由器可 以將ARP請求轉發給鄰近的網段。由此,兩個以上網段的節點之間可以像在同一 個網段中一樣進行通信。
在目前的TCP/IP網絡當中,一般情況下都是這樣。