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

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

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

基于FPGA的以太網(wǎng)ARP通信測試(一)

CHANBAEK ? 來源: FPGA Zone ? 作者: FPGA Zone ? 2023-11-06 18:20 ? 次閱讀

主機(jī)與目的主機(jī)進(jìn)行以太網(wǎng)通信,需要知道目的主機(jī)的MAC地址(物理地址),以太網(wǎng)ARP通信協(xié)議就是用來獲取目的主機(jī)MAC地址的。

ARP協(xié)議

ARP(Address Resolution Protocol),即地址解析協(xié)議,是根據(jù)IP地址(邏輯地址)獲取MAC地址的一種TCP/IP協(xié)議。

MAC地址在網(wǎng)絡(luò)中表示網(wǎng)卡的ID,每個(gè)網(wǎng)卡都需要并有且僅有一個(gè)MAC地址。源主機(jī)知道目的主機(jī)的IP地址,卻不知道目的主機(jī)的MAC地址。而目的主機(jī)的MAC地址直接被網(wǎng)卡接收和解析,當(dāng)解析到目的MAC地址非本地MAC地址時(shí),則直接丟棄該包數(shù)據(jù),因此在通信前需要先獲得目的的MAC地址。

ARP協(xié)議的基本功能就是通過目的設(shè)備的IP地址,查詢目的設(shè)備的MAC地址,以保證通信的順利進(jìn)行。

在獲取到目的MAC地址之后,將目的MAC地址更新至ARP緩存表中,下次通信時(shí),可以直接從ARP緩存表中獲取,而不用重新獲取。但ARP緩存表會有過期時(shí)間,過期后需要重新通過ARP協(xié)議進(jìn)行獲取。

協(xié)議格式

ARP協(xié)議屬于TCP/IP協(xié)議簇的一種,位于以太網(wǎng)MAC幀格式的數(shù)據(jù)段,ARP數(shù)據(jù)包格式如下圖所示。

圖片

硬件類型 (Hardware type):硬件地址的類型,1表示以太網(wǎng);

協(xié)議類型 (Protocol type):要映射的協(xié)議地址類型,ARP協(xié)議的上層協(xié)議為IP協(xié)議,因此該協(xié)議類型為IP協(xié)議,其值為0x0800;

硬件地址長度 (Hardware size):硬件地址(MAC地址)的長度,以字節(jié)為單位。對于以太網(wǎng)上IP地址的ARP請求或者應(yīng)答來說,該值為6;

協(xié)議地址長度 (Protocol size):IP地址的長度,以字節(jié)為單位。對于以太網(wǎng)上IP地址的ARP請求或者應(yīng)答來說,該值為4;

OP (Opcode):操作碼,用于表示該數(shù)據(jù)包為ARP請求或者ARP應(yīng)答。1表示ARP請求,2表示ARP應(yīng)答;

源MAC地址 :發(fā)送端的硬件地址;

源IP地址 :發(fā)送端的協(xié)議(IP)地址;

目的MAC地址 :接收端的硬件地址,在ARP請求時(shí)由于不知道接收端MAC地址,因此該字段為廣播地址,即48’hff_ff_ff_ff_ff_ff;

目的IP地址 :接收端的協(xié)議(IP)地址。

ARP協(xié)議分為ARP請求和ARP應(yīng)答,源主機(jī)發(fā)起查詢目的MAC地址的報(bào)文稱為ARP請求,目的主機(jī)響應(yīng)源主機(jī)并發(fā)送包含本地MAC地址的報(bào)文稱為ARP應(yīng)答。

ARP請求

當(dāng)源主機(jī)A需要獲取目的主機(jī)B物理地址時(shí),可以發(fā)送一個(gè)ARP請求報(bào)文,這個(gè)報(bào)文包含了主機(jī)A的MAC地址和IP地址以及主機(jī)B的IP地址。

因?yàn)橹鳈C(jī)A不知道主機(jī)B的物理地址,所以這個(gè)查詢分組會在網(wǎng)絡(luò)層中進(jìn)行廣播,即ARP請求時(shí)發(fā)送的接收方物理地址為廣播地址,用48hff_ff_ff_ff_ff_ff表示。

主機(jī)A發(fā)起ARP請求,由于發(fā)送的目的MAC地址為廣播地址,所以此時(shí)局域網(wǎng)中的所有主機(jī)都會進(jìn)行接收并處理這個(gè)ARP請求報(bào)文,然后進(jìn)行驗(yàn)證,查看接收方的IP地址是不是自己的地址。是則返回ARP應(yīng)答報(bào)文,不是則不響應(yīng)。

只有驗(yàn)證成功的主機(jī)B才會返回一個(gè)ARP應(yīng)答報(bào)文,這個(gè)應(yīng)答報(bào)文包含主機(jī)B的IP地址和物理地址。

ARP應(yīng)答

主機(jī)B利用收到的ARP請求報(bào)文中的請求方物理地址,以單播的方式直接發(fā)送給主機(jī)A,主機(jī)A將收到的ARP應(yīng)答報(bào)文中的目的MAC地址解析出來,將目的MAC地址和目的IP地址更新至ARP緩存表中。

當(dāng)再次和主機(jī)A通信時(shí),可以直接從ARP緩存表中獲取,而不用重新發(fā)起ARP請求報(bào)文。

但是ARP緩存表中的表項(xiàng)有過期時(shí)間(一般為20分鐘),過期之后,需要重新發(fā)起ARP請求以獲取目的MAC地址。

以太網(wǎng)協(xié)議

ARP協(xié)議通過以太網(wǎng)進(jìn)行傳輸,因此需要滿足以太網(wǎng)通信協(xié)議所規(guī)定的格式。如下圖所示,以太網(wǎng)的數(shù)據(jù)包就是通過對協(xié)議的封裝來實(shí)現(xiàn)數(shù)據(jù)的傳輸,即ARP數(shù)據(jù)位于以太網(wǎng)幀格式的數(shù)據(jù)段。

圖片

28字節(jié)的ARP數(shù)據(jù)位于以太網(wǎng)幀格式的數(shù)據(jù)段。由于以太網(wǎng)數(shù)據(jù)段最少為46個(gè)字節(jié),而ARP數(shù)據(jù)包總長度為28個(gè)字節(jié),因此在ARP數(shù)據(jù)段后面需要填充18個(gè)字節(jié)的數(shù)據(jù),以滿足以太網(wǎng)傳輸格式的要求。這個(gè)填充的過程稱為Padding,填充的數(shù)據(jù)可以為任意值,但一般為0。

圖片

以太網(wǎng)協(xié)議具體內(nèi)容如上圖所示,其中:

前導(dǎo)碼 (Preamble):為了實(shí)現(xiàn)底層數(shù)據(jù)的正確闡述,物理層使用7個(gè)字節(jié)同步碼(0和1交替(55-55-55-55-55-55-55))實(shí)現(xiàn)數(shù)據(jù)的同步;

幀起始界定符 (SFD,Start Frame Delimiter):使用1個(gè)字節(jié)的SFD(固定值為0xd5)來表示一幀的開始,即后面緊跟著傳輸?shù)木褪且蕴W(wǎng)的幀頭;

目的MAC地址 :即接收端物理MAC地址,占用6個(gè)字節(jié);

源MAC地址 :即發(fā)送端物理MAC地址,占用6個(gè)字節(jié);

長度/類型 :上圖中的長度/類型具有兩個(gè)意義,當(dāng)這兩個(gè)字節(jié)的值小于1536(十六進(jìn)制為 0x0600)時(shí),代表該以太網(wǎng)中數(shù)據(jù)段的長度;如果這兩個(gè)字節(jié)的值大于1536,則表示該以太網(wǎng)中的數(shù)據(jù)屬于哪個(gè)上層協(xié)議;

數(shù)據(jù) :以太網(wǎng)中的數(shù)據(jù)段長度最小46個(gè)字節(jié),最大1500個(gè)字節(jié);

幀檢驗(yàn)序列 (FCS,F(xiàn)rame Check Sequence):為了確保數(shù)據(jù)的正確傳輸,在數(shù)據(jù)的尾部加入了4個(gè)字節(jié)的循環(huán)冗余校驗(yàn)碼(CRC校驗(yàn))來檢測數(shù)據(jù)是否傳輸錯(cuò)誤。

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

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600450
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5317

    瀏覽量

    170461
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    823

    瀏覽量

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

    關(guān)注

    0

    文章

    1085

    瀏覽量

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

    關(guān)注

    0

    文章

    50

    瀏覽量

    14722
收藏 人收藏

    評論

    相關(guān)推薦

    基于FPGA以太網(wǎng)ARP通信測試(二)

    本文繼續(xù)簡單介紹下基于FPGA以太網(wǎng)ARP通信,該項(xiàng)目主要用于實(shí)現(xiàn)FPGA
    的頭像 發(fā)表于 11-06 18:26 ?1122次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>以太網(wǎng)</b><b class='flag-5'>ARP</b><b class='flag-5'>通信</b><b class='flag-5'>測試</b>(二)

    【小梅哥2017力作】詳細(xì)的FPGA以太網(wǎng)設(shè)計(jì)教程,76頁精華PDF

    ... 3第1章 基于RTL8201的以太網(wǎng)UDP通信測試... 4第2章 以太網(wǎng)MAC層基本原理... 12MII 接口介紹:... 12以太網(wǎng)
    發(fā)表于 07-29 23:20

    【AC620 FPGA試用體驗(yàn)】以太網(wǎng)ARP幀發(fā)包實(shí)例(手動(dòng)CRC)

    基于AC620開發(fā)板上的以太網(wǎng)接口,設(shè)計(jì)個(gè)能夠發(fā)送ARP幀的FPGA系統(tǒng)。其中以太網(wǎng)包和ARP
    發(fā)表于 08-26 12:56

    【正點(diǎn)原子FPGA連載】第二十五章以太網(wǎng)ARP測試實(shí)驗(yàn)-領(lǐng)航者ZYNQ之FPGA開發(fā)指南

    原子公眾號,獲取最新資料第二十五章以太網(wǎng)ARP測試實(shí)驗(yàn)在以太網(wǎng)中,個(gè)主機(jī)和另個(gè)主機(jī)進(jìn)行
    發(fā)表于 09-29 18:15

    基于BL706 emac實(shí)現(xiàn)通過以太網(wǎng)發(fā)送個(gè)ARP裸數(shù)據(jù)包的例程

    本 demo 基于 BL706 emac 實(shí)現(xiàn)通過以太網(wǎng)發(fā)送個(gè) ARP 裸數(shù)據(jù)包的例程,通過本例程可以確認(rèn) emac 以及 PHY 芯片的配置是否正確。以太網(wǎng) PHY 芯片這里
    發(fā)表于 06-17 17:40

    種基于FPGA以太網(wǎng)高速傳輸平臺

    種基于FPGA以太網(wǎng)高速傳輸平臺,采用DM9000和FPGA芯片,實(shí)現(xiàn)100M以太網(wǎng)數(shù)據(jù)傳輸
    發(fā)表于 02-25 14:45 ?17次下載

    基于FPGA的萬兆以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn)

    基于FPGA的萬兆以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn)。
    發(fā)表于 05-11 09:46 ?39次下載

    以太網(wǎng)測試專題

    以太網(wǎng)測試專題
    發(fā)表于 01-21 12:07 ?14次下載

    基于FPGA的實(shí)時(shí)以太網(wǎng)(PowerLink)星載通信技術(shù)

    在衛(wèi)星中使用以太網(wǎng)的目的是為了在獲得靈活的通信接入的同時(shí)得到高速的通信速率,并且能滿足安全關(guān)鍵場合通信對實(shí)時(shí)性和確定性的要求.、針對國內(nèi)在空間應(yīng)用上還未大規(guī)模使用
    發(fā)表于 01-09 14:20 ?6次下載
    基于<b class='flag-5'>FPGA</b>的實(shí)時(shí)<b class='flag-5'>以太網(wǎng)</b>(PowerLink)星載<b class='flag-5'>通信</b>技術(shù)

    在工業(yè)以太網(wǎng)領(lǐng)域采用FPGA的好處

    您的工廠或者工藝自動(dòng)化系統(tǒng)需要采用多種工業(yè)以太網(wǎng)協(xié)議嗎?請觀看這10分鐘的視頻,了解怎樣采用FPGA來輕松開發(fā)工業(yè)以太網(wǎng)設(shè)計(jì)。您將能夠:   觀看在單片
    的頭像 發(fā)表于 06-20 14:00 ?4414次閱讀

    以太網(wǎng) Ping的方式對 MAX10 FPGA 開發(fā)套件進(jìn)行測試

    對MAX10 FPGA 開發(fā)套件進(jìn)行以太網(wǎng) Ping 測試
    的頭像 發(fā)表于 06-20 01:00 ?4806次閱讀
    用<b class='flag-5'>以太網(wǎng)</b> Ping的方式對  MAX10 <b class='flag-5'>FPGA</b> 開發(fā)套件進(jìn)行<b class='flag-5'>測試</b>

    FPGA如何為以太網(wǎng)和千兆以太網(wǎng)解決低功耗問題

    探索新的中檔 FPGA 如何為以太網(wǎng)和千兆以太網(wǎng) (GbE) 鏈路執(zhí)行橋接功能,同時(shí)解決低功耗問題。
    的頭像 發(fā)表于 05-07 16:54 ?3914次閱讀
    <b class='flag-5'>FPGA</b>如何為<b class='flag-5'>以太網(wǎng)</b>和千兆<b class='flag-5'>以太網(wǎng)</b>解決低功耗問題

    基于FPGA的千兆以太網(wǎng)ARP和UDP的實(shí)現(xiàn)

    其他協(xié)議報(bào)頭的數(shù)據(jù)包(例如IP協(xié)議、ARP協(xié)議)。以太幀由個(gè)32位冗余校驗(yàn)碼結(jié)尾。它用于檢驗(yàn)數(shù)據(jù)傳輸是否出現(xiàn)損壞。以太網(wǎng)幀格式如下圖所示。 1.前導(dǎo)碼和幀開始符是固定的,為7個(gè)0x5
    的頭像 發(fā)表于 02-16 16:35 ?2334次閱讀

    基于FPGA的UDP千兆以太網(wǎng)通信

    本文介紹個(gè)FPGA開源項(xiàng)目:UDP千兆以太網(wǎng)通信。利用SFP接口,可以通過使用SFP轉(zhuǎn)RJ45模塊或者直接使用光纖進(jìn)行以太網(wǎng)通信
    的頭像 發(fā)表于 08-31 11:26 ?4159次閱讀
    基于<b class='flag-5'>FPGA</b>的UDP千兆<b class='flag-5'>以太網(wǎng)</b>光<b class='flag-5'>通信</b>

    基于FPGA的UDP RGMII千兆以太網(wǎng)通信方案

    本文介紹個(gè)FPGA開源項(xiàng)目:UDP RGMII千兆以太網(wǎng)通信。該項(xiàng)目在我之前的工作中主要是用于FPGA和電腦端之間進(jìn)行圖像數(shù)據(jù)傳輸。本文簡要介紹
    的頭像 發(fā)表于 09-04 16:49 ?1420次閱讀
    基于<b class='flag-5'>FPGA</b>的UDP RGMII千兆<b class='flag-5'>以太網(wǎng)通信</b>方案