回覆列表
  • 1 # 我可能是隻鹹魚

    ARP協議介紹

    ARP是Address Resolution Protocol(地址解析協議)的縮寫,執行在OSI七層模型中的二三層之間(個人理解是2.5層協議),作用是根據主機訪問的IP地址來請求其對應的MAC地址,以達到最終在主機上建立IP地址和MAC地址的對映關係——ARP表。

    2.5層也就是在網路層和資料鏈路層之間。

    我們根據資料的封裝來看看ARP協議。

    上圖是簡化的標準資料封裝過程,下面我們看看ARP資料包的結構。

    我們能看到,ARP協議資料封裝在802.1Q後面,整個資料幀包含乙太網頭部的源MAC地址和目的MAC地址,ARP資料及載荷被二層封裝,裡面並不涉及IP選址和路由選擇,沒有IP報文頭部,所以我應該算是2.5層協議,注意ARP協議在點到點網路中不需要,我們這裡只討論廣播型別網路。

    如圖有過程如下:

    1.使用PC2訪問相同網段主機PC3,首先PC2查詢路由表,會得到<1.1.1.0 255.255.255.0 在鏈路上 >表明是直連的,相同網段,於是直接傳送ARP request包請求目的IP為1.1.1.3的PC3的MAC地址,目的地址是廣播地址<FFFF.FFFF.FFFF>,ARP資料包還同時攜帶了PC2的MAC地址和IP地址。

    2.ARP資料到S1交換機,交換機記錄下MAC地址表 <0000.0000.0002 Gi0/2介面> ,由於ARP包的目的地址是廣播地址<FFFF.FFFF.FFFF>,所以交換機洪泛(每個介面都轉發)該報文。

    3.PC3就收到該報文,發現是請求的是自己的MAC地址,就記錄下ARP資訊<1.1.1.2 0000.0000.0002>,併發送ARP響應給PC2,目的MAC地址為<0000.0000.0002>,S1交換機收到該響應,記錄下對應MAC地址表<0000.0000.0003 Gi0/3介面>,PC2收到後將<1.1.1.3 0000.0000.0003>加入到自己的ARP表中,到這裡PC2和PC3就完成了ARP的學習,ARP的作用就是這樣。後面他們傳送資料就知道對方的MAC地址,可以進行前面的資料封裝了(你想如果不知道對方MAC地址是不是到了資料鏈路層的時候就不知道該加上什麼目的MAC了?)。

    當訪問不同網段的情況下(樓主的問題):

    1.使用PC2訪問不同網段主機PC1<2.2.2.2>,首先PC2查詢路由表,發現不是直連,只能透過預設路由<0.0.0.0 0.0.0.0 1.1.1.1>進行轉發,預設路由下一跳是閘道器地址<1.1.1.1>,閘道器地址肯定是相同網段的吧,重複進行上面的ARP過程,這裡就不贅述。

    2.得到了1.1.1.1的MAC地址,然後跟據路由把資料發給R1,R1查詢路由表,去往2.2.2.2的下一跳是3.3.3.2,於是再進行上述ARP過程獲得3.3.3.2的MAC地址,然後封裝資料,將資料幀源MAC改為3.3.3.1的MAC地址,目的地址改為3.3.3.2的MAC地址,其他內容不變。

    3.資料包轉發到3.3.3.2也就是到R2了,R2查詢路由表,發現是直連的網段,且目的地址是2.2.2.2,於是向2.2.2.2傳送ARP請求,還是上面的過程,並將資料幀的源MAC改為2.2.2.1的MAC地址<0000.0000.0021>目的地址改為2.2.2.2的MAC地址<0000.0000.0022>,PC1收到資料包是發給自己的於是拆開資料包,發現目的IP也是自己,就這樣PC1收到了來自PC2的資料包。

    4.同理PC1迴應PC2的過程也是一樣。

    結論

    根據上面的內容我們可以得出,二層到三層的轉發完全依賴ARP協議,ARP協議是二層MAC地址和三層IP地址互通的橋樑,需要我們好好理解。而且ARP協議僅僅只能執行在一個廣播域內,也就是相同網段,當訪問的目的主機不在同一個網段,我們的資料是直接送給閘道器的,並不需要知道目的主機的MAC地址,是由資料傳遞的過程中的路由器完成ARP解析和資料包的轉發,故本地主機的ARP表中也就不能看到。

  • 2 # AL1010101

    不同網段之間有路由器或者三層交換機。相當於中間人,兩個ip都是和中間人進行通訊。ip1 arp 請求,路由器 收到後arp reply,reply的內容是路由器的mac地址。然後路由器再向另一個網段的ip 發出arp request,另一個ip收到後再arp reply。這樣就ping通了,但是兩個ip arp過程看到的都是中間人路由器,而不是ip自己的mac地址

  • 3 # 阿萊克西斯85243273

    我日……看樓上幾位回答的 真囉嗦, 都過路由器了。 要是還能看到MAC 或者源ARP資訊 那真有鬼了, 你就直接告訴他 穿過三層路由的傳輸 就看不到 二層ARP資訊不就行了嗎? 說一堆囉嗦

  • 4 # 網路工程師成長日記

    只有在區域網中通訊才會傳送arp

    你所說的相同網段,實際上就是指同一個區域網,所以在同一個區域網內通訊,會有arp會得到對方的麥克地址

    舉例說明,比如當你要和老王通訊,你發現你和老王是在一個公司的,就相當於在同一個網段,這個時候你並不知道老王在哪個工位上坐著,你就會發一個arp請求,聲這個過程就好像你在大喊道: 老王,你在哪裡?而老王聽到之後就會給你個回覆,說im here

    如果是跨網段通訊,那麼靠的是路由這個功能

    你所說的不同網段就是指通過了路由器。這個時候你是透過閘道器,也就是路由器代理和對方通訊的,所以你只有閘道器的mac地址。

    舉例說明,比如當你要和老劉同學,你發現老劉和你不是同一個公司的,就相當於跨網段,這個時候你要透過路由器,也就是說你要透過公司的外聯給你捎個話給別人。這個時候你只會大聲喊道,閘道器路由器,你在哪裡?幫我把這個話帶給老劉

    也就是說,你並不知道老劉在他所在的公司的具體哪個座位上坐著,這個過程是由你的閘道器幫你完成的,所以你沒有老劉的物理地址。

  • 中秋節和大豐收的關聯?
  • 負債的年輕人,你們還好嗎?