Linux之ARP協議__Linux

來源:互聯網
上載者:User

在網路通訊時,源主機的應用程式知道目的主機的IP地址和連接埠號碼,卻不知道目的主機的硬 件地址,而資料包首先是被網卡接收到再去處理上層協議的,如果接收到的資料包的硬體地址與本機不符,則直接丟棄。因此在通訊前必須獲得目的主機的硬體地址。ARP協議就起到這 個作用。
源主機發出ARP請求,詢問“IP地址是192.168.0.1的主機的硬體地址是多少”,並將這個請求 廣播到本地網段(乙太網路幀首部的硬體地址填FF:FF:FF:FF:FF:FF表示廣播),目的主機接收到 廣播的ARP請求,發現其中的IP地址與本機相符,則發送一個ARP應答資料包給源主機,將自己的硬體地址填寫在應答包中。

每台主機都維護一個ARP緩衝表,可以用arp -a命令查看。緩衝表中的表項有到期時間(一 般為20分鐘),如果20分鐘內沒有再次使用某個表項,則該表項失效,下次還要發ARP請求來獲得目的主機的硬體地址。

ARP資料報的格式如下所示:

源MAC地址、目的MAC地址在乙太網路首部和ARP請求中各出現一次,對於鏈路層 為乙太網路 的情況是多餘的,但如果鏈路層是其它類型的網路則有可能是必要的。

硬體類型指鏈路層網路類型,1為乙太網路,協議類型指要轉換的地址類型,0x0800為IP地址,後面兩個地址長度對於乙太網路地址和IP地址分別為6和4(位元組),op欄位為1表示ARP請求,op欄位為2表⽰示ARP應答。

對乙太網路首部來說:如果是請求ARP報文的話,

乙太網路目的地址: 是(全1)的,是廣播報,目的是讓同一個區域網路上所有主機都收到ARP請求包 乙太網路源地址: 就是發送端地址。

框架類型:如果是ARP報文,值為0x0806 硬體類型: 表明ARP協議實現在那種類型的網路上,它的值為1,即表示乙太網路地址

協議類型:表示解析協議(上層協議),這裡一般是0800,即IP 硬體地址長度:也就是MAC地址長度,即6個位元組

協議地址長度:也就是IP地址長度,即4個位元組

操作類型:表示ARP協議資料報類型。1ARP表示請求包,2ARP表示應答包,3表示RARP請求包,4表示RARP應答包

發送端乙太網路地址:也就是源MAC地址 發送端IP地址:也就是源IP地址 目的端乙太網路地址:目標端MAC地址(如果是請求報文,是全0)

目地端IP地址:也就是目地端的IP地址

編寫arp指令碼抓取對應主機mac地址:
arp.sh

#!/bin/bashi=1count=0while [ $i -le 254 ]do    if [ $count -gt 20 ];then         count=0        sleep 3    fi    ping -c1 "192.168.0.$i" &    let i++    let count++done

運行結果:

可以看出,已經有兩個電腦連上了該網路。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.