0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARP地址解析協(xié)議簡(jiǎn)介和基本原理

jf_uPRfTJDa ? 來源: 移動(dòng)Labs ? 2023-12-18 09:49 ? 次閱讀

導(dǎo)讀

在我們平時(shí)發(fā)現(xiàn)上不了網(wǎng)的時(shí)候,或者剛剛配置好一臺(tái)電腦的時(shí)候,有一個(gè)習(xí)慣就是ping,對(duì)于ping相信讀者都比較熟悉,就是給你要ping的地址發(fā)送ICMP探測(cè)報(bào)文,看看這個(gè)目的地是否可達(dá)。對(duì)于網(wǎng)絡(luò)的分層,讀者應(yīng)該或多或少有所了解,比如數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層,IP數(shù)據(jù)網(wǎng)絡(luò)層,MAC屬于數(shù)據(jù)鏈路層,完整的以太報(bào)文在網(wǎng)絡(luò)中傳輸?shù)臅r(shí)候,是攜帶MAC地址的,當(dāng)你去ping某個(gè)地址的時(shí)候,比如ping 114.114.114.114,你可以知道IP,但你并不知道MAC地址,如何根據(jù)目的IP獲取到MAC地址呢,這時(shí)候ARP就登場(chǎng)了,IP地址通過 ARP,獲得MAC地址,有了MAC地址才能在物理網(wǎng)絡(luò)上傳輸數(shù)據(jù)。

作者:尹彬

單位:中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心

Part 01ARP簡(jiǎn)介

ARP,是地址解析協(xié)議(Address Resolution Protocol)。其基本功能為根據(jù)設(shè)備的IP地址來查詢對(duì)應(yīng)MAC地址的協(xié)議。主機(jī)通過ARP查詢到MAC地址后,將在ARP緩存表中增加映射表項(xiàng),即IP地址和MAC地址的映射表項(xiàng),也就是我們常說的ARP表項(xiàng)。

ARP是一種常見又十分重要的協(xié)議,比如網(wǎng)絡(luò)掃描、內(nèi)網(wǎng)滲透、局域網(wǎng)流控、流量欺騙等都跟ARP脫不了干系。聽上去這么重要的協(xié)議,說簡(jiǎn)單也簡(jiǎn)單,整個(gè)ARP完整交互過程僅需要兩個(gè)報(bào)文搞定,一問一答。但是ARP協(xié)議本身也有令人迷惑的地方,由ARP本身延伸出來很多概念,比如動(dòng)態(tài)ARP、靜態(tài)ARP、免費(fèi)ARP、代理ARP等等。

在深入到技術(shù)原理之前,我們先看下面三句話:

1、知道IP即可

一般情況下,上層應(yīng)用程序更多關(guān)心IP地址而不關(guān)心MAC地址,而且我們平時(shí)接觸更多的也是IP地址,只要知道了IP地址,我們可以通過協(xié)議來獲取通信所需的MAC地址,完成數(shù)據(jù)封裝,這就是ARP協(xié)議的作用。

2、IP--->MAC的映射

ARP(Address Resolution Protocol)即地址解析協(xié)議, 用于實(shí)現(xiàn)從IP地址到MAC地址的映射,即詢問目標(biāo)IP對(duì)應(yīng)的MAC地址。

3、逐層封裝到鏈路層

網(wǎng)絡(luò)通信中,主機(jī)和主機(jī)通信的數(shù)據(jù)包需要依據(jù)OSI模型從上到下進(jìn)行數(shù)據(jù)封裝,當(dāng)數(shù)據(jù)封裝完整后,再向外發(fā)出。所以在局域網(wǎng)的通信中,不僅需要源目IP地址的封裝,也需要源目MAC的封裝。

ae33807a-9bf6-11ee-8b88-92fbcf53809c.png

Part 02ARP基本原理

以我們平時(shí)最簡(jiǎn)單的一個(gè)ping的流程來切入:

主機(jī)A ping主機(jī)B為例,ping過程在網(wǎng)絡(luò)中需要構(gòu)造ICMP報(bào)文,ICMP報(bào)文簡(jiǎn)單來說就是MAC頭+IP頭+ICMP頭,其中,MAC頭中包含源MAC、目的MAC地址信息以及以太網(wǎng)協(xié)議類型(IPv4協(xié)議族的類型值為0x0800)。IP頭中主要包含源IP地址、目的IP地址、協(xié)議類型(這個(gè)協(xié)議類型主要指的傳輸層協(xié)議類型,比如UDP是17,TCP是6,ICMP是1)。ICMP頭中是一些控制面的信息,比如type代表是ARP請(qǐng)求還是ARP應(yīng)答等等。

ARP請(qǐng)求和應(yīng)答的過程如下圖所示:

ae4457ba-9bf6-11ee-8b88-92fbcf53809c.png

我們分幾個(gè)步驟來簡(jiǎn)單的描述上圖中所示的ARP報(bào)文協(xié)議流程:

為何要發(fā)送ARP

當(dāng)在主機(jī)A命令行中敲入ping x.x.x.x(x.x.x.x為主機(jī)B的地址)的時(shí)候,系統(tǒng)會(huì)獲取到目的IP(x.x.x.x),源IP(主機(jī)A的IP),ping字段代表要發(fā)送ICMP報(bào)文,要送入ICMP協(xié)議棧,所以以太網(wǎng)協(xié)議類型0x8000(代表IPv4)和IP頭中的協(xié)議類型1(代表ICMP)也確定了,所以IP頭的信息完整可以構(gòu)造了,但是沒有MAC頭信息,所以在協(xié)議棧中封裝完IP頭后,封裝MAC頭前,主機(jī)A根據(jù)主機(jī)B的IP地址IP2去自己的ARP表中查詢主機(jī)B的MAC,發(fā)現(xiàn)沒有,說明要么沒有發(fā)生過交互(如果發(fā)生過一次完整的ARP交互,會(huì)記錄映射信息),要么就是發(fā)生過但是已經(jīng)老化了(ARP表項(xiàng)每隔一段時(shí)間會(huì)老化),所以需要發(fā)送ARP請(qǐng)求給主機(jī)B。

發(fā)送的ARP報(bào)文是什么樣子

ARP請(qǐng)求報(bào)文簡(jiǎn)單來說就是在網(wǎng)絡(luò)中發(fā)送一幀廣播報(bào)文,目的MAC為全F,內(nèi)層封裝中有自身的IP、MAC信息,以及請(qǐng)求目標(biāo)的IP地址,同一廣播域中的交換機(jī)收到全F的廣播報(bào)文后,會(huì)在該廣播域內(nèi)廣播。ARP報(bào)文格式如圖所示:

ae51e6c8-9bf6-11ee-8b88-92fbcf53809c.png

接收者收到之后會(huì)怎樣

其他主機(jī)也會(huì)收到該廣播報(bào)文,但是發(fā)現(xiàn)請(qǐng)求的不是自己的地址則不會(huì)做出回應(yīng),主機(jī)B收到之后,發(fā)現(xiàn)是請(qǐng)求自己的MAC地址,首先會(huì)將發(fā)起方(主機(jī)A)的IP和MAC的映射關(guān)系存入自身的ARP表項(xiàng)(簡(jiǎn)單來說,ARP請(qǐng)求首先要有自我介紹,然后才是詢問),同時(shí)構(gòu)造ARP應(yīng)答報(bào)文發(fā)送到網(wǎng)絡(luò)中。

接收者發(fā)送的是什么報(bào)文

因?yàn)橹鳈C(jī)A在發(fā)送ARP請(qǐng)求的時(shí)候,走的是二層轉(zhuǎn)發(fā),二層轉(zhuǎn)發(fā)需要MAC地址轉(zhuǎn)發(fā),所以交換機(jī)并不知道目的MAC地址該往哪里去,只能在發(fā)送端(主機(jī)A)發(fā)送廣播報(bào)文,但是當(dāng)主機(jī)B回復(fù)ARP應(yīng)答的時(shí)候,已經(jīng)知道了主機(jī)A的MAC地址,所以只需要發(fā)送單播報(bào)文就可以了,這就是為什么ARP請(qǐng)求是廣播報(bào)文,ARP應(yīng)答是單播報(bào)文。ARP應(yīng)答報(bào)文如圖所示:

ae55be24-9bf6-11ee-8b88-92fbcf53809c.png

當(dāng)然,如果在第一步,主機(jī)A查詢自身ARP表項(xiàng)發(fā)現(xiàn)能夠查到主機(jī)B的IP對(duì)應(yīng)的MAC地址時(shí),就不需要再發(fā)送ARP請(qǐng)求了,因?yàn)橐呀?jīng)知道了MAC地址,直接封裝二層頭,然后發(fā)送完整的ICMP報(bào)文出去就可以了。

Part 03ARP表項(xiàng)

前面提到過,主機(jī)中會(huì)存一個(gè)IP地址和MAC地址的映射關(guān)系表,這就是ARP表項(xiàng),因?yàn)槿绻看沃鳈C(jī)A和主機(jī)B通信前都要發(fā)送一個(gè)廣播的ARP請(qǐng)求報(bào)文,會(huì)極大的增加網(wǎng)絡(luò)負(fù)擔(dān)。而且同廣播域的所有設(shè)備都需要接收和處理這個(gè)廣播的ARP請(qǐng)求報(bào)文,也極大的影響了網(wǎng)絡(luò)中設(shè)備的運(yùn)行效率。

為了解決以上問題,每臺(tái)主機(jī)或設(shè)備上都維護(hù)著一個(gè)高速緩存,這是ARP高效運(yùn)行的一個(gè)關(guān)鍵。在這個(gè)高速緩存中,存放主機(jī)或設(shè)備最近學(xué)習(xí)到的IP地址到MAC地址的映射關(guān)系,即動(dòng)態(tài)ARP表項(xiàng)。主機(jī)或設(shè)備每次發(fā)送報(bào)文時(shí),會(huì)先在本地高速緩存中查找目的IP地址所對(duì)應(yīng)的MAC地址。如果高速緩存中有對(duì)應(yīng)的MAC地址,主機(jī)或設(shè)備不會(huì)再發(fā)送ARP請(qǐng)求報(bào)文,而是直接將報(bào)文發(fā)至這個(gè)MAC地址;如果高速緩存中沒有對(duì)應(yīng)的MAC地址,主機(jī)或設(shè)備才會(huì)廣播發(fā)送ARP請(qǐng)求報(bào)文,進(jìn)行ARP地址解析。

前面在ARP基本原理中反復(fù)提到過ARP表項(xiàng),那么前面所說由ARP報(bào)文交互流程而學(xué)習(xí)到的ARP表項(xiàng)稱之為動(dòng)態(tài)ARP表項(xiàng),通過靜態(tài)配置生成的ARP表項(xiàng)稱之為靜態(tài)ARP表項(xiàng)。靜態(tài)ARP表項(xiàng)的優(yōu)點(diǎn)是配置上之后,不需要再發(fā)送ARP報(bào)文了,可以節(jié)省網(wǎng)絡(luò)開銷,缺點(diǎn)是如果對(duì)端的信息發(fā)生變化,這條表項(xiàng)就失去意義了。

一方面由于高速緩存的容量限制,另一方面為了保證高速緩存中ARP表項(xiàng)的準(zhǔn)確性,設(shè)備會(huì)對(duì)動(dòng)態(tài)ARP表項(xiàng)進(jìn)行老化和更新。

動(dòng)態(tài)ARP表項(xiàng)的老化參數(shù)有:老化超時(shí)時(shí)間、老化探測(cè)次數(shù)和老化探測(cè)模式。設(shè)備上動(dòng)態(tài)ARP表項(xiàng)到達(dá)老化超時(shí)時(shí)間后,設(shè)備會(huì)發(fā)送老化探測(cè)報(bào)文(即ARP請(qǐng)求報(bào)文),如果能收到ARP應(yīng)答報(bào)文,則更新該動(dòng)態(tài)ARP表項(xiàng),本次老化探測(cè)結(jié)束;如果超過設(shè)置的老化探測(cè)次數(shù)后仍沒有收到ARP應(yīng)答報(bào)文,則刪除該動(dòng)態(tài)ARP表項(xiàng),本次老化探測(cè)結(jié)束。

Part 04靜態(tài)ARP

前文也提到過靜態(tài)ARP,這里詳細(xì)介紹一下靜態(tài)ARP。靜態(tài)ARP表項(xiàng)在網(wǎng)絡(luò)中也有著重要作用,比如某些流程中,不想通過觸發(fā)ARP報(bào)文或者不允許觸發(fā)ARP報(bào)文來學(xué)習(xí)鏈路層地址,則可以通過配置靜態(tài)ARP表項(xiàng)來實(shí)現(xiàn),配置完靜態(tài)ARP表項(xiàng)之后,當(dāng)協(xié)議棧在需要封裝鏈路層信息的時(shí)候,不會(huì)發(fā)起ARP請(qǐng)求流程,而是直接從ARP表項(xiàng)中拿到對(duì)應(yīng)的MAC地址,封裝完成直接發(fā)出去。另外靜態(tài)ARP表項(xiàng)在應(yīng)對(duì)ARP攻擊的時(shí)候也有重要作用。

靜態(tài)ARP表項(xiàng)分為長(zhǎng)靜態(tài)ARP表項(xiàng)和短靜態(tài)ARP表項(xiàng)。

? 長(zhǎng)靜態(tài)ARP表項(xiàng):手動(dòng)建立IP和MAC間的映射關(guān)系,并同時(shí)指定該ARP表項(xiàng)所在出接口。長(zhǎng)靜態(tài)ARP表項(xiàng)可以直接用于報(bào)文轉(zhuǎn)發(fā)。

? 短靜態(tài)ARP表項(xiàng):手動(dòng)建立IP和MAC間的映射關(guān)系,未同時(shí)指定出接口。如果出接口是處于二層模式的以太網(wǎng)接口,短靜態(tài)ARP表項(xiàng)不能直接用于報(bào)文轉(zhuǎn)發(fā)。當(dāng)需要發(fā)送報(bào)文時(shí),設(shè)備會(huì)先發(fā)送ARP請(qǐng)求報(bào)文,如果收到的ARP應(yīng)答報(bào)文中的源IP和源MAC與所配置的IP和MAC相同,則將收到ARP應(yīng)答報(bào)文的接口加入該靜態(tài)ARP表中,后續(xù)設(shè)備可直接用該靜態(tài)ARP表項(xiàng)轉(zhuǎn)發(fā)報(bào)文。

Part 05結(jié)語(yǔ)

ARP協(xié)議非常重要并且常用,是數(shù)據(jù)通信的入門協(xié)議,在網(wǎng)絡(luò)中扮演著十分重要的角色,但就是這么一個(gè)關(guān)鍵角色,卻十分不安全,因?yàn)锳RP協(xié)議是建立在網(wǎng)絡(luò)中各個(gè)主機(jī)相互信任的基礎(chǔ)上的,一旦有人利用這份信任,向某一主機(jī)發(fā)送偽ARP應(yīng)答數(shù)據(jù)包,使該主機(jī)發(fā)送的信息無法到達(dá)預(yù)期的目的地或者走向錯(cuò)誤的目的地,就是所謂的ARP欺騙或者ARP攻擊。

ARP欺騙或者攻擊可以導(dǎo)致目標(biāo)主機(jī)與網(wǎng)關(guān)通信失敗,也會(huì)讓報(bào)文更改方向,所有的數(shù)據(jù)都會(huì)流入攻擊者的主機(jī)中,造成數(shù)據(jù)外泄,影響安全。

當(dāng)然,使用一些防范ARP攻擊的殺毒軟件可以提高一定的安全性,或者可以通過減少過期時(shí)間、建立靜態(tài)ARP表項(xiàng)等手段去提高網(wǎng)絡(luò)安全性。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)絡(luò)協(xié)議

    關(guān)注

    3

    文章

    263

    瀏覽量

    21493
  • Mac
    Mac
    +關(guān)注

    關(guān)注

    0

    文章

    1095

    瀏覽量

    51339
  • ARP
    ARP
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    14726
  • 物理網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    6458

原文標(biāo)題:技術(shù) | 淺析常用網(wǎng)絡(luò)協(xié)議之ARP

文章出處:【微信號(hào):5G通信,微信公眾號(hào):5G通信】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARP地址解析協(xié)議簡(jiǎn)介

    英文原義:Address Resolution Protocol 中文釋義:(RFC-826)地址解析協(xié)議 地址解析
    發(fā)表于 02-24 08:27

    第23章???? RL-TCPnet之地址解析協(xié)議ARP

    本帖最后由 lee_st 于 2017-11-16 16:49 編輯 轉(zhuǎn)最新網(wǎng)絡(luò)教程 本章節(jié)為大家講解ARP(Address Resolution Protocol,地址解析協(xié)議
    發(fā)表于 11-15 17:37

    ARP協(xié)議攻擊及其解決方案

    由于ARP協(xié)議的設(shè)計(jì)缺陷,使得ARP協(xié)議在使用的過程中存在著盜用IP地址ARP欺騙等嚴(yán)重的安全
    發(fā)表于 06-11 10:17 ?16次下載

    地址解析協(xié)議ARP

    地址解析協(xié)議ARP 地址解析協(xié)議
    發(fā)表于 06-09 21:53 ?1113次閱讀
    <b class='flag-5'>地址</b><b class='flag-5'>解析</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>ARP</b>

    地址解析協(xié)議(ARP),地址解析協(xié)議(ARP)是什么意思

    地址解析協(xié)議(ARP),地址解析協(xié)議(
    發(fā)表于 04-06 09:07 ?2089次閱讀

    TCP-IP詳解卷2_ARP地址解析協(xié)議

    TCP-IP詳解卷2 ARP地址解析協(xié)議,學(xué)習(xí)TCP很好的資料。歡迎下載。
    發(fā)表于 05-09 14:13 ?0次下載

    arp協(xié)議的作用是什么?arp協(xié)議的工作原理介紹

    地址解析協(xié)議,即ARP(Address Resolution Protocol),是根據(jù)IP地址獲取物理
    發(fā)表于 11-02 16:14 ?6.3w次閱讀
    <b class='flag-5'>arp</b><b class='flag-5'>協(xié)議</b>的作用是什么?<b class='flag-5'>arp</b><b class='flag-5'>協(xié)議</b>的工作原理介紹

    arp協(xié)議的缺點(diǎn)介紹及防范

     地址解析協(xié)議,即ARP(Address Resolution Protocol),是根據(jù)IP地址獲取物理
    發(fā)表于 11-02 16:28 ?6697次閱讀

    TCP IP協(xié)議地址解析協(xié)議ARP

    TCP IP協(xié)議進(jìn)級(jí)講座:2,地址解析協(xié)議
    的頭像 發(fā)表于 07-03 06:05 ?3757次閱讀

    ARP是什么意思?ARP是什么協(xié)議?ARP協(xié)議用于什么地方

    ARP是什么意思?ARP是什么協(xié)議?ARP協(xié)議用于什么地方 ARP是什么意思?
    發(fā)表于 11-10 18:00 ?1.9w次閱讀

    arp協(xié)議屬于哪一層_arp協(xié)議的主要功能

    arp協(xié)議在TCP/IP模型中屬于IP層(網(wǎng)絡(luò)層),在OSI模型中屬于鏈路層。arp協(xié)議地址解析
    發(fā)表于 01-11 15:51 ?4.1w次閱讀

    ARP協(xié)議原理是什么

    ARP協(xié)議地址解析協(xié)議(`Address Resolution Protocol`)是通過解析
    的頭像 發(fā)表于 02-14 10:10 ?2200次閱讀
    <b class='flag-5'>ARP</b><b class='flag-5'>協(xié)議</b>原理是什么

    FPGA以太網(wǎng)-ARP協(xié)議介紹

    ARP協(xié)議地址解析協(xié)議,在網(wǎng)絡(luò)中有MAC地址和IP地址
    發(fā)表于 07-06 09:23 ?1035次閱讀
    FPGA以太網(wǎng)-<b class='flag-5'>ARP</b><b class='flag-5'>協(xié)議</b>介紹

    進(jìn)階課程-地址解析協(xié)議(ARP)

    電子發(fā)燒友網(wǎng)站提供《進(jìn)階課程-地址解析協(xié)議(ARP).pdf》資料免費(fèi)下載
    發(fā)表于 07-31 11:41 ?0次下載
    進(jìn)階課程-<b class='flag-5'>地址</b><b class='flag-5'>解析</b><b class='flag-5'>協(xié)議</b>(<b class='flag-5'>ARP</b>)

    一文解析Linux中ARP學(xué)習(xí)和老化機(jī)制

    ARP學(xué)習(xí)和老化機(jī)制在Linux網(wǎng)絡(luò)通信中起著至關(guān)重要的作用。ARP(Address Resolution Protocol)地址解析協(xié)議
    發(fā)表于 08-04 16:55 ?1384次閱讀