ARP 協(xié)議

前言

網(wǎng)絡(luò)設(shè)備有數(shù)據(jù)要發(fā)送給另一臺網(wǎng)絡(luò)設(shè)備時(shí),必須要知道對方的網(wǎng)絡(luò)層地址(即IP地址)拜秧。IP地址由網(wǎng)絡(luò)層來提供差凹,但是僅有IP地址是不夠的尸疆,IP數(shù)據(jù)報(bào)文必須封裝成幀才能通過數(shù)據(jù)鏈路進(jìn)行發(fā)送。數(shù)據(jù)幀必須要包含目的MAC地址硼被,因此發(fā)送端還必須獲取到目的MAC地址示损。通過目的IP地址二獲取的MAC地址的過程是由ARP(Address Resolution Protocol)協(xié)議來實(shí)現(xiàn)的。

圖片.png

數(shù)據(jù)鏈路層在進(jìn)行數(shù)據(jù)封裝的時(shí)候嚷硫,需要目的MAC地址检访。

一臺網(wǎng)絡(luò)設(shè)備要發(fā)送數(shù)據(jù)給另外一臺網(wǎng)絡(luò)設(shè)時(shí)始鱼,必須要知道對方的IP地址。但是脆贵,僅有IP地址是不夠的医清,因?yàn)镮P數(shù)據(jù)報(bào)文必須封裝成幀才能通過數(shù)據(jù)鏈路層進(jìn)行發(fā)送,而數(shù)據(jù)幀必須要包含目的MAC地址卖氨,因此發(fā)送端還必須獲取到目的MAC地址会烙。每一個(gè)網(wǎng)絡(luò)設(shè)備在數(shù)據(jù)封裝前都需要獲取下一跳的MAC地址。IP地址由網(wǎng)絡(luò)層來提供筒捺,MAC地址通過ARP協(xié)議來獲取柏腻。ARP協(xié)議是TCP/IP協(xié)議簇中的重要組成部分,ARP能夠通過目的IP地址發(fā)現(xiàn)目標(biāo)設(shè)備的MAC地址系吭,從而實(shí)現(xiàn)數(shù)據(jù)鏈路層的可達(dá)性五嫂。

ARP數(shù)據(jù)包格式:


圖片.png

關(guān)于ARP協(xié)議屬于2層還是3層的討論:
https://networkengineering.stackexchange.com/questions/5064/on-which-layer-of-the-osi-model-does-the-arp-protocol-belong
這里有句話很好:OSI只是一個(gè)模型,沒有任何一個(gè)協(xié)議是完全屬于哪一層的肯尺。
我們看幀結(jié)構(gòu)贫导,ARP數(shù)據(jù)直接包含在Ethernet_II中,我個(gè)人認(rèn)為它可以歸納于二層蟆盹。

網(wǎng)絡(luò)設(shè)備通過ARP報(bào)文來發(fā)現(xiàn)目的MAC地址孩灯。ARP報(bào)文中包含以下字段:
1)Hardware Type:硬件地址類型,一般為以太網(wǎng)逾滥;
2)Protocol Type:表示三層協(xié)議地址類型峰档,一般為IP;
3)Hardware Length和Protocol Length為MAC地址和IP地址的長度寨昙,單位是字節(jié)讥巡; (這個(gè)理論上可以不要,因?yàn)榍懊嬉呀?jīng)確定了硬件類型和協(xié)議類型)
4)Operation Code指定了ARP報(bào)文的類型舔哪,包括ARP request和ARP reply欢顷;
5)Source Hardware Address 指的是發(fā)送ARP報(bào)文的設(shè)備MAC地址;
6)Source Protocol Address指的是發(fā)送ARP報(bào)文的設(shè)備IP地址捉蚤;
7)Destination Hardware Address指的是接收者M(jìn)AC地址抬驴,在ARP request報(bào)文中,該字段值為0缆巧;
8)Destination Protocol Address指的是接受者的IP地址布持。

ARP工作過程

圖片.png

通過ARP協(xié)議,網(wǎng)絡(luò)設(shè)備可以建立目標(biāo)IP地址和MAC地址之間的映射陕悬。網(wǎng)絡(luò)設(shè)備通過網(wǎng)絡(luò)層獲取到目的IP地址之后题暖,還要判斷目的MAC地址是否已知。

ARP緩存

圖片.png
aircrafts-MacBook-Pro:~ ldl$ arp -a
? (10.10.10.1) at bc:67:1c:40:3:f6 on en0 ifscope [ethernet]
? (224.0.0.251) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (224.0.0.252) at 1:0:5e:0:0:fc on en0 ifscope permanent [ethernet]
? (239.255.255.250) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]
圖片.png

網(wǎng)絡(luò)設(shè)備一般都有一個(gè)ARP緩存(ARP Cache),ARP緩存用來存放IP地址和MAC地址的關(guān)聯(lián)信息胧卤。在發(fā)送數(shù)據(jù)前唯绍,設(shè)備會先查找ARP緩存表。如果緩存表中存在對方設(shè)備的MAC地址枝誊,則直接采用該MAC地址來封裝幀推捐,然后將幀發(fā)送出去。如果緩存表中不存在相應(yīng)的信息侧啼,則通過發(fā)送ARP request報(bào)文來獲得它牛柒。學(xué)習(xí)到的IP地址和MAC地址的映射關(guān)系會被放入ARP緩存表中存放一段時(shí)間。在有效期內(nèi)痊乾,設(shè)備可以直接從這個(gè)表中查找目的MAC地址來進(jìn)行數(shù)據(jù)封裝皮壁,而無需進(jìn)行ARP查詢。過了這段有效期哪审,ARP表現(xiàn)會被自動刪除蛾魄。
如果目標(biāo)設(shè)備位于其他網(wǎng)絡(luò)則源設(shè)備會在ARP緩存表中查找網(wǎng)關(guān)的MAC地址,然后將數(shù)據(jù)發(fā)送給網(wǎng)關(guān)湿滓,網(wǎng)關(guān)再把數(shù)據(jù)轉(zhuǎn)發(fā)給目的設(shè)備滴须。

ARP 請求

圖片.png

在本例中,主機(jī)A的ARP緩存表中不存在主機(jī)C的MAC地址叽奥,所以主機(jī)A會發(fā)送ARP Request來獲取目的MAC扔水。ARP request報(bào)文封裝在以太幀中。幀頭中的源MAC地址為發(fā)送端主機(jī)A的MAC地址朝氓。此時(shí)魔市,由于主機(jī)A不知道主機(jī)C的MAC地址,所以目的MAC地址為廣播地址FF-FF-FF-FF-FF-FF赵哲。ARP request 報(bào)文中包含源IP地址待德,目的IP地址,源MAC地址枫夺,目的MAC地址将宪,其中目的MAC地址的值為0。ARP request報(bào)文會在整個(gè)網(wǎng)絡(luò)上傳播橡庞,該網(wǎng)絡(luò)中所有主機(jī)包括網(wǎng)關(guān)都會接受到此ARP request 報(bào)文较坛。網(wǎng)關(guān)會阻止該報(bào)文發(fā)送到其他網(wǎng)絡(luò)上。

FF-FF-FF-FF-FF-FF:MAC廣播地址毙死,不是燒錄在MAC設(shè)備中燎潮,而是一個(gè)約定好的地址,在發(fā)送的時(shí)候扼倘,目的地址寫它,就是MAC廣播消息。

ARP響應(yīng)

記錄 IP和MAC地址到ARP緩存表.png

所有主機(jī)接收到該ARP request報(bào)文后再菊,會檢查它的目的協(xié)議地址(一般是00-00-00-00-00-00-00與所有的匹配)字段與自身的IP地址是否匹配爪喘。如果不匹配,則該主機(jī)將不會響應(yīng)該ARP request報(bào)文纠拔。如果匹配秉剑,則該主機(jī)會將ARP報(bào)文中的源MAC地址和源IP地址信息記錄到自己的ARP緩存表中,然后通過ARP Reply報(bào)文進(jìn)行響應(yīng)稠诲。

ARP Reply報(bào)文返回.png

主機(jī)C會向主機(jī)A回應(yīng)ARP Reply報(bào)文侦鹏。ARP Reply報(bào)文中的源協(xié)議地址是主機(jī)C自己的IP地址,目標(biāo)協(xié)議地址是主機(jī)A的IP地址臀叙,同事Operation Code被設(shè)置為reply略水。ARP Reply報(bào)文通過單播傳送。

ARP緩存

圖片.png

主機(jī)A收到ARP Reply以后劝萤,會檢查ARP報(bào)文中目的MAC地址是否與自己的MAC匹配渊涝。如果匹配,ARP報(bào)文中的源MAC地址和源IP地址會被記錄到主機(jī)A的ARP緩存表中床嫌。ARP表項(xiàng)的老化超時(shí)時(shí)間缺省為1200秒(20min)跨释。

ARP代理

圖片.png

位于不同網(wǎng)絡(luò)的網(wǎng)絡(luò)設(shè)備在不配置網(wǎng)關(guān)的情況下,能夠通過ARP代理實(shí)現(xiàn)相互通信厌处。

在上述例子的組網(wǎng)中鳖谈,主機(jī)A需要與主機(jī)B通信時(shí),目的IP地址與本機(jī)的IP地址位于不同網(wǎng)絡(luò)阔涉,但是由于主機(jī)A未配置網(wǎng)關(guān)蚯姆,所以它會將以廣播形式發(fā)送ARP request報(bào)文,請求主機(jī)B的MAC地址洒敏。但是龄恋,廣播報(bào)文無法被路由器轉(zhuǎn)發(fā),所以主機(jī)B無法收到主機(jī)A的ARP請求報(bào)文凶伙,當(dāng)然也就無法應(yīng)答郭毕。

在路由器上啟用代理ARP功能,就可以解決這個(gè)問題函荣。啟用代理ARP后显押,路由器收到這樣的請求,會查找路由表傻挂,如果存在主機(jī)B的路由表項(xiàng)乘碑,路由器將會使用自己的G0/0/0接口的MAC地址來回應(yīng)該ARP request。主機(jī)A收到ARP reply后金拒,將以路由器的G0/0/0接口MAC地址作為目的MAC地址進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)兽肤。

免費(fèi)ARP

圖片.png

免費(fèi)ARP可以用來探測IP地址是否沖突套腹。

主機(jī)被分配了IP地址或者IP地址發(fā)生變化后,必須立刻檢測其所分配的IP地址在網(wǎng)絡(luò)上是否是唯一的资铡,以避免地址沖突电禀。主機(jī)通過發(fā)送ARP request報(bào)文來進(jìn)行地址沖突檢測。

主機(jī)A將ARP request廣播報(bào)文中的目的IP地址字段設(shè)置為自己的IP地址笤休,該網(wǎng)絡(luò)中所有主機(jī)包括網(wǎng)關(guān)都會接收到此報(bào)文尖飞。當(dāng)目的IP地址已經(jīng)被某一個(gè)主機(jī)或網(wǎng)關(guān)使用時(shí),該主機(jī)或網(wǎng)關(guān)就會回應(yīng)ARP reply報(bào)文店雅。通過這種方式政基,主機(jī)A就能探測到IP地址沖突了。

總結(jié):
1.網(wǎng)絡(luò)設(shè)備在什么情況下回發(fā)送ARP request?
源設(shè)備在發(fā)送數(shù)據(jù)給目的設(shè)備前闹啦,會首先查看自身的ARP緩存沮明,查找ARP緩存是否在目的設(shè)備的IP地址和MAC地址的映射。如果存在則直接使用亥揖,如果不存在則會發(fā)送ARP request珊擂。

2.網(wǎng)絡(luò)設(shè)備什么時(shí)候會產(chǎn)生免費(fèi)ARP?
當(dāng)網(wǎng)絡(luò)上的一個(gè)設(shè)備被分配了IP地址或者IP地址發(fā)生變化后费变,可以通過免費(fèi)ARP來檢查IP地址是否沖突摧扇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市挚歧,隨后出現(xiàn)的幾起案子扛稽,更是在濱河造成了極大的恐慌,老刑警劉巖滑负,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件在张,死亡現(xiàn)場離奇詭異,居然都是意外死亡矮慕,警方通過查閱死者的電腦和手機(jī)帮匾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痴鳄,“玉大人瘟斜,你說我怎么就攤上這事』狙埃” “怎么了螺句?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長橡类。 經(jīng)常有香客問我蛇尚,道長,這世上最難降的妖魔是什么顾画? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任取劫,我火速辦了婚禮匆笤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勇凭。我一直安慰自己疚膊,他們只是感情好义辕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布虾标。 她就那樣靜靜地躺著,像睡著了一般灌砖。 火紅的嫁衣襯著肌膚如雪璧函。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天基显,我揣著相機(jī)與錄音蘸吓,去河邊找鬼。 笑死撩幽,一個(gè)胖子當(dāng)著我的面吹牛库继,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窜醉,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼宪萄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了榨惰?” 一聲冷哼從身側(cè)響起拜英,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎琅催,沒想到半個(gè)月后居凶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藤抡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年侠碧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谐腰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艳悔。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雅倒,靈堂內(nèi)的尸體忽然破棺而出嫁佳,到底是詐尸還是另有隱情挨队,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布蒿往,位于F島的核電站盛垦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瓤漏。R本人自食惡果不足惜腾夯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一颊埃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝶俱,春花似錦班利、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至积蜻,卻和暖如春闯割,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背竿拆。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工宙拉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丙笋。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓谢澈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親御板。 傳聞我的和親對象是個(gè)殘疾皇子锥忿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容