1. 程式人生 > >看完後,搞懂ARP的工作原理,其實並不難(好文)

看完後,搞懂ARP的工作原理,其實並不難(好文)

原址

本期,我就來解答一下關於ARP的工作原理吧! 

思路

1、思考ARP到底是幹嘛的? 為什麼要有它?why?  

2、掌握ARP的工作原理。

技術人,要掌握一種技術,絕對離不開以上兩點基本思路,帶著這兩個思路去學習新技術,你絕對是不可能學不會的。再笨,你也會學得很深刻的。甚至,你還可以有更多的思路,比如,可不可以沒有它? 有它?跟沒有它的情況又是什麼樣的?等等。

1、ARP到底是幹嘛的?

我們都知道局域網裡面通訊,都是靠MAC地址來通訊的。ARP簡單說,就是用來把IP地址轉換成MAC地址,就是某個去往目的IP地址翻譯成MAC地址。

交換機的工作原理就是基於源MAC地址學習,基於目的MAC地址轉發的。大家都知道網路的參考模型,我們在電腦上要傳送訊息時,電腦內部的處理機制是先從上層開始一層一層往下封裝的。如圖:


現在,有了這張圖,就更容易理解ARP的作用了。

電腦從上層往下封裝,到了二層,要封裝幀頭部時,就需要把目的mac地址封裝上,形成完整的二層頭部後,就可以傳送出去了。

現在的問題就是,電腦如何知道對方的MAC地址?

看完後,搞懂ARP的工作原理,其實並不難!


計算機A要傳送訊息,給計算機E。他們是第一次通訊。

當用戶計算機A在上使用QQ聊天工具,輸入:你好,約嗎?

回車,計算機A就先從上層往下封裝頭部。如IP頭部就將

目的IP:1.1.1.2   , 源IP就是:1.1.1.1 等資訊進行封裝,到了二層,就需要將目的MAC地址,源MAC地址進行封裝。計算機A肯定知道自己網絡卡的mac地址,為1111.1111.1111.1111。但是目的mac地址(計算機E的mac地址)就不知道了,因為他們是第一次通訊,哪裡知道啊~  要是知道,就上天了!

於是,這時候,計算機A就執行ARP程式,傳送一個ARP請求報文的廣播包:

該資料包的關鍵欄位如下:

二層:

目的MAC地址:ffff.ffff.ffff.ffff

源mac地址:1111.1111.1111.1111

型別:0x0806

arp的關鍵內容如下:

source mac:1111.1111.1111.1111.1111

source IP: 1.1.1.1

target mac:ffff.ffff.ffff.ffff (因為第一次通訊,不知道對方的mac地址)

target IP:1.1.1.2

這樣,交換機收到這個報文,看到目的mac地址是全F就進廣播!

阿龍這裡要提醒初學者的是,因為交換機是二層裝置,只會拆包、解析到二層資訊而已,不會進行更深入的解析,如網路層資訊。換句話說,就是交換機根本不知道里面是什麼資料,只知道這個資料包的源、目mac地址而已。

這樣,所有的計算機收到這個廣播包,會進行更深入的解析,看到裡面的target IP 是1.1.1.2,  與自己的IP地址進行對比,發現不一樣,就丟棄。發現一樣,就回應ARP報文。單播迴應喔!

ARP的響應報文裡的關鍵欄位如下,

二層:

目的MAC地址:1111.1111.1111.1111

源mac地址:2222.2222.2222.2222

型別:0x0806

arp的關鍵內容如下:

source mac:2222.2222.2222.2222

source IP: 1.1.1.1

target mac:1111.1111.1111.1111 (從請求包裡得知A的mac地址,於是單播)

target IP:1.1.1.1

這樣,計算機A收到這個報文後,就將計算機E的mac地址記錄下來,存在計算機A的一個數據庫,叫做ARP快取表。下次通訊時,如果快取未超時,就可以直接使用了。如果超時了,就再次進行arp請求廣播了。

如果你還不信的話,那龍哥就親自動手做實驗吧!  

計算機A的資訊:

計算機E的資訊:

用計算機A ping 計算機E來模擬A傳送訊息給計算機E,並且抓包:

抓包就會發現抓到了2個ARP的報文:


分別如下:

1、

2、

這時,你就可以在計算機A看到arp快取表了:

不知道,那位同學明白了沒? 如以上有講錯地方,歡迎大家在下方評論地方指出! 如您還有其他見解,也歡迎您在下方評論的地方進行參與。

感覺您的閱讀! 祝您學習愉快!