相連路由器埠IP地址為什麼必須在同一個網段?????
圖1.1 靜態路由協議實驗網路拓撲圖
我們在兩個網段(192.168.1.0/24和192.168.2.0/24)中分別有3個路由器,Router0,Router1和Router2,我們的目標是Router0的資料包能順利到達Router2,因為這是一個小型的具有簡單拓撲結構的網路,因此我們決定採用靜態路由協議達到這樣的目標。
首先,我們必須給每個路由器的介面分配一個合法的IP地址,這是最為關鍵的一步,很多同學在給介面分配IP地址的時候會將同一條交叉電纜的兩埠分配兩個不在同一網段的地址,這樣的結果是即使是直連的兩端也無法通訊。你可能會認為你另有辦法;對於直連網路來說,只要配置好埠的IP地址,當然這裡說的正確的配置好,不用靜態路由,也可以互相通訊。只有當不在同一個網段的路由器之間需要通訊的時候,才需要設定靜態路由,因此你有理由認為,我只需在Router1上畫蛇添足的寫上一條到Router0的靜態路由就可以了。實際上我正是按照這樣的想法做的。可結果卻讓我大吃一驚:
圖1.2 錯誤配置下靜態路由協議路由表
從上圖中我們看到了Router1路由表中有兩條Type為C和一條Type為S的路由條目,C是表示直連網路的意思,而S則表示是靜態路由條目,我們在3臺路由器的路由表中都發現了靜態路由條目,從路由條目可以看出路由絕對沒有問題,可為什麼其他兩臺路由器任然無法和Router0通訊呢?因此我們決定向下一層——資料鏈路層,查看個究竟。
現在,我們不妨看看3個路由器的ARP地址表:
圖1.3 錯誤配置下ARP地址表條目
然後我們再來看看正確的埠IP地址情況下,ARP地址表的情況是怎麼樣的;
圖1.4 正確配置下的ARP地址表
現在我們來比較一下,兩張ARP地址表的內容,可以很快的看出,錯誤配置下ARP地址表的條目很少,而正確的配置情況下ARP地址表條目很完整,看來我們找到問題的所在了;ARP在解析IP地址的時候出現了問題,無法找到IP地址為192.168.3.1的介面的MAC地址。在這裡我們必須清楚的知道,當資料報要跨路由器通過的時候,它真正需要知道的是下一條路由器介面的MAC地址。這個時候,我們可能會想知道ARP的工作機制,它是如何將IP地址解析為MAC地址的?當然對這個問題我不想多說,因為老師上課的時候講的實在是很詳細了,我想知道的是ARP的廣播域有多大?Router1的ARP廣播能不能到達Router0,這跟路由器隔離廣播有沒有關係?這是問題的關鍵所在。
翻閱了《CCNA學習指南》和《TCP/IP協議詳解(卷一)》將近半個小時,問題終於解決了。路由器隔離廣播域確實沒錯,但端到端的ARP廣播是不經過路由器的,所以不存在這個問題。後來看到ARP的廣播地址段是子網的廣播才恍然大悟,192.168.1.0的ARP廣播地址是192.168.1.255,這個廣播根本到不了網段192.168.3.0/24,所以沒辦法得到介面IP地址為192.168.3.1的MAC地址。為了驗證這個觀點的正確,我決定將Router1上Fa0/0的IP地址掩碼改為255.255.0.0,可發現沒辦法將一個C類IP地址的掩碼改為255.255.0.0。只好作罷!