天天看點

路由表,MAC表,ARP表詳解

一:MAC位址表詳解

說到MAC位址表,就不得不說一下交換機的工作原理了,因為交換機是根據MAC位址表轉發資料幀的。在交換機中有一張記錄着區域網路主機MAC位址與交換機接口的對應關系的表,交換機就是根據這張表負責将資料幀傳輸到指定的主機上的。

交換機的工作原理

交換機在接收到資料幀以後,首先、會記錄資料幀中的源MAC位址和對應的接口到MAC表中,接着、會檢查自己的MAC表中是否有資料幀中目标MAC位址的資訊,如果有則會根據MAC表中記錄的對應接口将資料幀發送出去(也就是單點傳播),如果沒有,則會将該資料幀從非接受接口發送出去(也就是廣播)。

如下圖:詳細講解交換機傳輸資料幀的過程

1)主機A會将一個源MAC位址為自己,目标MAC位址為主機B的資料幀發送給交換機。

2)交換機收到此資料幀後,首先将資料幀中的源MAC位址和對應的接口(接口為f 0/1) 記錄到MAC位址表中。

3)然後交換機會檢查自己的MAC位址表中是否有資料幀中的目标MAC位址的資訊,如果有,則從MAC位址表中記錄的接口發送出去,如果沒有,則會将此資料幀從非接收接口的所有接口發送出去(也就是除了f 0/1接口)。

4)這時,區域網路的所有主機都會收到此資料幀,但是隻有主機B收到此資料幀時會響應這個廣播,并回應一個資料幀,此資料幀中包括主機B的MAC位址。

5)當交換機收到主機B回應的資料幀後,也會記錄資料幀中的源MAC位址(也就是主機B的MAC位址),這時,再當主機A和主機B通信時,交換機根據MAC位址表中的記錄,實作單點傳播了。

如下圖:當區域網路存在多個交換機互聯的時候,交換機的MAC位址表是怎麼記錄的呢?

1)主機A将一個源MAC位址為自己,目标MAC位址主機C的資料幀發送給交換機

2)交換機1收到此資料幀後,會學習源MAC位址,并檢查MAC位址表,發現沒有目标MAC位址的記錄,則會将資料幀廣播出去,主機B和交換機2都會收到此資料幀。

3)交換機2收到此資料幀後也會将資料幀中的源MAC位址和對應的接口記錄到MAC位址表中,并檢查自己的MAC位址表,發現沒有目标MAC位址的記錄,則會廣播此資料幀。

4)主機C收到資料幀後,會響應這個資料幀,并回複一個源MAC位址為自己的資料幀,這時交換機1和交換機1都會将主機C的MAC位址記錄到自己的MAC位址表中,并且以單點傳播的形式将此資料幀發送給主機A。

5)這時,主機A和主機C通信就是一單點傳播的形式傳輸資料幀了,主機B和主機C通信如上述過程一樣,是以交換機2的MAC位址表中記錄着主機A和主機B的MAC位址都對應接口f 0/1。

總結:從上面的兩幅圖可以看出,交換機具有動态學習源MAC位址的功能,并且交換機的一個接口可以對應多個MAC位址,但是一個MAC位址隻能對應一個接口。

注意:交換機動态學習的MAC位址預設隻有300S的有效期,如果300S内記錄的MAC位址沒有通信,則會删除此記錄。

二、ARP快取記錄詳解

上面我們講解了交換機的工作原理,知道交換機是通過MAC位址通信的,但是我們是如何獲得目标主機的MAC位址呢?這時我們就需要使用ARP協定了,在每台主機中都有一張ARP表,它記錄着主機的IP位址和MAC位址的對應關系。

ARP協定:ARP協定是工作在網絡層的協定,它負責将IP位址解析為MAC位址。

如下圖:詳細講解ARP的工作原理。

1)如果主機A想發送資料給主機B,主機A首先會檢查自己的ARP快取記錄,檢視是否有主機B的IP位址和MAC位址的對應關系,如果有,則會将主機B的MAC位址作為源MAC位址封裝到資料幀中。如果沒有,主機A則會發送一個ARP請求資訊,請求的目标IP位址是主機B的IP位址,目标MAC位址是MAC位址的廣播幀(即FF-FF-FF-FF-FF-FF),源IP位址和MAC位址是主機A的IP位址和MAC位址。

2)當交換機接受到此資料幀之後,發現此資料幀是廣播幀,是以,會将此資料幀從非接收的所有接口發送出去。

3)當主機B接受到此資料幀後,會校對IP位址是否是自己的,并将主機A的IP位址和MAC位址的對應關系記錄到自己的ARP快取記錄中,同時會發送一個ARP應答,其中包括自己的MAC位址。

4)主機A在收到這個回應的資料幀之後,在自己的ARP快取記錄中記錄主機B的IP位址和MAC位址的對應關系。而此時交換機已經學習到了主機A和主機B的MAC位址了。

路由表詳解

路由器負責不同網絡之間的通信,它是當今網絡中的重要裝置,可以說沒有路由器就沒有當今的網際網路。在路由器中也有一張表,這張表叫路由表,記錄着到不同網段的資訊。路由表中的資訊分為直連路由和非直連路由。

直連路由:是直接連接配接在路由器接口的網段,由路由器自動生成。

非直連路由:就是不是直接連接配接在路由器接口上的網段,此記錄需要手動添加或者是使用動态路由。

路由表中記錄的條目有的需要手動添加(稱為靜态路由),有的測試動态擷取的(稱為動态路由)。直連路由屬于靜态路由。

路由器是工作在網絡層的,在網絡層可以識别邏輯位址。當路由器的某個接口收到一個包時,路由器會讀取包中相應的目标的邏輯位址的網絡部分,然後在路由表中進行查找。如果在路由表中找到目标位址的路由條目,則把包轉發到路由器的相應接口,如果在路由表中沒有找到目标位址的路由條目,那麼,如果路由配置預設路由,就科舉預設路由的配置轉發到路由器的相應接口;如果沒有配置預設路由,則将該包丢棄,并傳回不可到達的資訊。這就是資料路由的過程。

如下圖:詳細介紹路由器的工作原理

1)HostA在網絡層将來自上層的封包封裝成IP資料包,其中源IP位址為自己,目标IP位址是HostB,HostA會用本機配置的24位子網路遮罩與目标位址進行“與”運算,得出目标位址與本機不是同一網段,是以發送HostB的資料包需要經過網關路由A的轉發。

2)HostA通過ARP請求擷取網關路由A的E0口的MAC位址,并在鍊路層将路由器E0接口的MAC位址封裝成目标MAC位址,源MAC位址是自己。

3)路由器A從E0可接收到資料幀,把資料鍊路層的封裝去掉,并檢查路由表中是否有目标IP位址網段(即192.168.2.2的網段)相比對的的項,根據路由表中記錄到192.168.2.0網段的資料請發送給下一跳位址10.1.1.2,是以資料在路由器A的E1口重新封裝,此時,源MAC位址是路由器A的E1接口的MAC位址,封裝的目标MAC位址則是路由器2的E1接口的MAC位址。

4)路由B從E1口接收到資料幀,同樣會把資料鍊路層的封裝去掉,對目标IP位址進行檢測,并與路由表進行比對,此時發現目标位址的網段正好是自己E0口的直連網段,路由器B通過ARP廣播,獲知HostB的MAC位址,此時資料包在路由器B的E0接口再次封裝,源MAC位址是路由器B的E0接口的MAC位址,目标MAC位址是HostB的MAC位址。封裝完成後直接從路由器的E0接口發送給HostB。

5)此時HostB才會收到來自HostA發送的資料。

總結:路由表負責記錄一個網絡到另一個網絡的路徑,是以路由器是根據路由表工作的。

看完上面的文章是不是感覺原來資料在網絡中傳輸是這麼的複雜啊!呵呵…其實這些過程都是計算機自己完成的,我們需要做的很少。

轉:http://dengqi.blog.51cto.com/5685776/1223132

繼續閱讀