由硬件交換的幀需要使用正確的硬件地址定位到正確的接口;否則,無法傳輸數(shù)據(jù)晚吞。
一個傳統(tǒng)IPv4網(wǎng)絡(luò)需要使用自已的地址: 32位的IPv4地址器腋。一臺主機要將一個幀發(fā)送到另一臺主機艘刚,還需要要發(fā)往主機的物理地址
(這里的物理地址是數(shù)據(jù)幀即將要發(fā)往的主機,而不是數(shù)據(jù)幀最終要發(fā)往的主機)
地址解析協(xié)議
提供了IPv4地址和物理地址間的動態(tài)映射(自動執(zhí)行隨時間變化懊悯,不需要管理員重新配置)窗悯。就是能夠通過ip地址獲得物理地址区匣。用的方法就是喊一聲!
ARP僅用于IPv4, IPv6使用鄰居發(fā)現(xiàn)協(xié)議,它被合并人ICMPv6
網(wǎng)絡(luò)層地址為IP地址,由網(wǎng)絡(luò)管理員蟀瞧,或者用戶指定分配沉颂,可隨時更改。
而數(shù)據(jù)鏈路層地址為物理地址悦污,是在網(wǎng)卡出場的時候?qū)懭刖W(wǎng)卡中铸屉,不能更改。
地址解析就是建立這兩個地址之間的映射關(guān)系切端。
兩個局域網(wǎng)的主機之間傳輸?shù)囊蕴W(wǎng)幀包含IP數(shù)據(jù)報時,由48位以太網(wǎng)地址確定該幀的目的接口彻坛。只有數(shù)據(jù)幀達位于同一IP子網(wǎng)的系統(tǒng)時, ARP才能工作。(數(shù)據(jù)幀貌似一直都只在不同的子網(wǎng)中傳播的吧踏枣。)
例如:
同一子網(wǎng)中的兩臺計算機要進行通信:
- 使用子網(wǎng)掩碼判斷目標主機與源主機位于同一子網(wǎng)中昌屉。(假設(shè)沒有arp緩存)
在這一步的時候已經(jīng)到了鏈路層 - 在一個共享的鏈路層網(wǎng)段上, 源主機ARP向所有主機發(fā)送一個稱為ARP請求的以太網(wǎng)幀。這被稱為鏈路層廣播茵瀑。
who has ..... - 某個主機使用請求中指出的IPv4地址,它需要響應(yīng)一個ARP應(yīng)答间驮。
不同虛擬局域網(wǎng)中的主機不會收到 - 收ARP請求的源主機學(xué)習(xí)(也就是記錄)IPv4到MAC地址的映射,并記錄在內(nèi)存中供以后使用。
- 源主機可將數(shù)據(jù)報封裝在以太網(wǎng)幀中直接發(fā)送到目的主機马昨。
由于這個以太網(wǎng)地址僅指向正確的目的主機,其他主機或路由器接收到這個數(shù)據(jù)包以檢測物理地址與自己的不匹配竞帽,然后扔掉了。 - 同一子網(wǎng)中的路由器通信不需要經(jīng)過路由器
他經(jīng)過交換機:枧酢R俾ā!
同一網(wǎng)段內(nèi)的兩臺主機通信是否需要路由器
ARP緩存
IPv4地址映射到硬件地址后匙奴,將這個這一個映射關(guān)系(也就是這個鍵值對)存起來堆巧,對應(yīng)于高速緩存中的一個條目,其正常到期時間是條目創(chuàng)建開始后的20分鐘。
使用arp -a
查看
動態(tài)是指主動學(xué)習(xí)(通過arp獲得的)泼菌,而靜態(tài)就是手動輸入谍肤。
linux下是一欄flag
,對應(yīng)window的類型哗伯。
可能為C谣沸、M、P笋颤。
C類條目由ARP協(xié)議動態(tài)學(xué)習(xí)也就是接收到數(shù)據(jù)報就記錄了, M類條目通過手工輸人,而P類條目的含義是“發(fā)布”,也就是主動獲取的。
幀格式
注意這個圖伴澄,這是完整的以太網(wǎng)幀赋除,黑色是有效荷載部分,所以他是鏈路層的非凌,不是ip層的举农。
- DST:目的地址 6B
也就是接受這個數(shù)據(jù)幀的下一臺主機的物理地址。
在arp中通常不知道采取詢問敞嗡,所以物理地址為全f
對于ARP請求,目的以太網(wǎng)地址ff:ff:ff:ff:ff:ff(全部為1)是廣播地址,在同一廣播域中的所有以太網(wǎng)接日可接收這些幀颁糟。 - SRC:源地址 6B
發(fā)送該數(shù)據(jù)幀主機的物理地址。 - 長度或類型 2B
arp中必須為0x0806喉悴。 - 接下來的 8B
長度/類型字段之后的前4個宇段指定了隨后4個字段的類型和大小棱貌。
硬件類型字段指出硬件地址類型,對于以太網(wǎng)該值為1箕肃。
協(xié)議類型字段指出映射的協(xié)議地址類型婚脱。對于IPv4地址,該值為0x0800
硬件大小和協(xié)議大小分別指出硬件地址和協(xié)議地址的字節(jié)數(shù)勺像,以太網(wǎng)中使用IPv4地址的ARP請求或應(yīng)答.它們的值分別為6和4障贸。物理地址長度6,ip地址長度4 - Op 2B
op字段指出該操作是ARP請求(1)吟宦、 ARP應(yīng)答(2)篮洁、 RARP請求(3)或RARP應(yīng)答(4)。
由于ARP請求和ARP應(yīng)答的長度/類型字段相同.因此這個字段是必需的殃姓。 - 發(fā)送方物理地址袁波,發(fā)送方協(xié)議地址 10B
- 接收方物理地址,發(fā)送方協(xié)議地址 10B
對于各arp請求辰狡,其目的硬件地址為全0
當一個系統(tǒng)接收到一個ARP請求.它填充自己的硬件地址.將兩個發(fā)送方地址和接收方地址互換.將Op
字段設(shè)為2.然后發(fā)送生成的應(yīng)答锋叨。
arp請求
嗯就這些。
arp應(yīng)答
其目的主機物理地址應(yīng)該被填充的宛篇。
目的主機發(fā)送ARP應(yīng)答外,它還會在ARP緩存中保存請求者的硬件地址和IP地
arp緩存
一般有效期為20分鐘娃磺,不完整的arp為3分鐘(只發(fā)送了請求,但是沒有收到回應(yīng))
軟狀態(tài)?超時前沒有被更新而丟棄的信息叫倍。
ARP代理
有那么一臺無聊的主機偷卧,準們回答arp請求的。
這個作用沒搞懂吆倦,用于隱藏目的主機听诸。
比如,訪問谷歌蚕泽。但是晌梨,卻被代理arp返回了錯誤的物理地址桥嗤。我們和谷歌永別了。
主機不存在
如果嘗試訪問一個不存在的主機仔蝌,會首先卡死在arp上泛领,因為主機不存在,根本沒有人會回應(yīng)這條請求敛惊。
免費arp
與普通的arp請求一樣渊鞋,不期望收到回復(fù),如果收到就是有沖突了
- 允許一臺主機確定另一臺主機是否配置相同的IPv4地址瞧挤。
如果ip沖突,什么都不顯示锡宋,就是不讓你上網(wǎng)。 - 更改主機的物理地址(換硬件之類的)
ARP探測分組和通告分組
探測用于檢測是否有使用這個ip的特恬,通告用于高速別的主機执俩,我已經(jīng)使用了這個ip
通告之前需要先探測
ipv4地址沖突檢測 ACD,使用arp分組鸵鸥,將發(fā)送方協(xié)議地址設(shè)置為9奠滑,避免污染已經(jīng)緩存的arp緩存(如果ip地址被使用,那么可能已經(jīng)緩存arp妒穴,所以要避免這種情況)宋税,這是與免費arp的主要區(qū)別。
如果收到arp回復(fù)讼油,那么表明候選的ip(請求使用ip主機選擇的ip地址)已經(jīng)被使用杰赛。
如果沒有收到請求,就會想廣播域中發(fā)送2個arp通告矮台,表明它已經(jīng)在使用這個ip地址了乏屯。
arp通告將發(fā)送方協(xié)議地址和目的協(xié)議地址填充為候選的ipv4地址。
arp分配ip地址
使用主機配置嵌入式設(shè)備的ip
不常用瘦赫,一般都是DHCP分配
但是有一些嵌入式設(shè)備不能手動獲取的時候辰晕。
一個主機先生成一個ip-mac映射,其中mac為嵌入設(shè)備的物理地址确虱,ip為任選一個不沖突的含友。
然后向嵌入設(shè)備發(fā)送一個數(shù)據(jù)包,此時設(shè)備接收到一個以自己物理地址為目標地址的數(shù)據(jù)幀時校辩,這個設(shè)備可以用數(shù)據(jù)幀中的ip完成配置窘问。
這需要嵌入設(shè)備的配合和主機的配合。