arp(adress resolution protocol—位址解析協議)是在傳輸ip包時,因不知道ip位址對應的mac位址,無法傳送資料引起的,通過arp,建立目的ip跟mac位址的對映關係,從而獲得目的ip的mac位址。
arp頭部的資料結構如下:
typedefstruct arphdr arphdr,*parphdr;
我們封裝arp資料報格式如下:
目的位址,我們現在還不知道,需要向本子網廣播,以獲得目的位址(目的mac),因此這裡全填1,源基地即本地的mac位址,我們從本地網絡卡的mac位址即可取得,型別表示的是上層協議的型別,這裡是arp,用0x0806表示,到這裡就完整的幀封裝。
arp頭部資料填充,硬體型別有很多種,即有各種各樣的硬體型別,比如乙太網卡,令牌環網絡卡等,0x0001表示乙太網卡,協議型別表示的是上層協議的型別,即需要通過arp獲得對方mac位址的協議,而不是arp本身協議,0x0800表示ip協議,硬體位址(mac位址)長度為6,協議位址(ip位址)長度為4,操作型別表示本arp所要操作的動作,1為arp請求,2為arp應答,3為rarp請求,4為rarp應答,源主機mac位址為本地mac,從網絡卡驅動從即可獲得,源主機ip位址為本地ip,這個也是從網絡卡驅動中獲得,當然也是我們人為設定的(或者dhcp),目的主機mac位址就是我們傳送arp需要獲得的資料,此時還不知道,全0待填寫,目的主機ip位址為遠端的ip位址。
由於路由器有攔截廣播的功能,arp廣播只能在本子網中廣播,如果所要獲取的mac位址不是本子網的,則必須經過路由器閘道器獲得。由於路由器的預設閘道器也是本子網的乙個裝置,因此也會收到本子網的arp廣播,經過子網匹配,發現目的ip的子網,跟路由器的另乙個埠的子網一致,於是,把arp請求**給路由器的另乙個埠,此時,路由器的另乙個埠跟目的ip在同乙個子網,因此,又可以進行arp廣播,當目的ip獲得了arp廣播資訊後,會把本機的mac位址填充到arp包的目的位址mac這欄中,同時修改arp的資料報的操作型別為arp應答,接著把資料報發回源ip位址,此時的傳送就不是以廣播的形式傳送了,因為目的位址mac,本地位址mac都知道,是需要單播即可,此時,還需要修改乙太網幀的目的mac,本地mac,從而得以傳送資料報
IP協議 ARP協議 RARP協議
ip資料報 ip是tcp ip協議族中最核心的協議,所有的tcp udp icmp igmp資料都以ip資料報的格式傳輸。ip僅提供盡力而為的傳輸服務,如果發生某種錯誤,ip會丟失該資料,然後傳送icmp訊息給信源端。另外,ip資料報可以不按傳送順序接受。ip資料報的格式如下 前20位元組和緊接其後...
IP協議 ARP協議 RARP協議
主機通過路由器和目的主機連線。主機通過ip資料報連線目的主機時,按照如下步驟搜尋 同一網路中的搜尋要經過arp協議將目的主機的ip位址解析為mac位址 搜尋路由表,優先搜尋匹配主機,如果能找到和ip位址完全一致的目標主機,則將該包發向目標主機 搜尋路由表,如果匹配主機失敗,則匹配同子網的路由器,這需...
網路層arp協議學習
arp協議 點對點鏈路不使用arp協議 arp協議的分組格式理解難點 對於乙個arp請求來說,除了目的端硬體位址外的其他所有欄位都是有填充值的,當系統收到乙份目的端為本機的arp請求報文後,他就把硬體位址填進去 然後用兩個目的端位址分別替換兩個傳送端位址,並把操作字段換成2,最後傳送出去 這裡要注意...