當(dāng)路由器收到一個待轉(zhuǎn)發(fā)的數(shù)據(jù)報
發(fā)布時間:2014/9/17 20:55:55 訪問次數(shù):724
當(dāng)路由器收到一個待轉(zhuǎn)發(fā)的數(shù)據(jù)報,在從U147H路由表得出下一跳路由器的IP地址后,不是把這個地址填入IP數(shù)據(jù)報,而是送交數(shù)據(jù)鏈路層的網(wǎng)絡(luò)接口軟件。網(wǎng)絡(luò)接口軟件負責(zé)把下一跳路由器的IP地址轉(zhuǎn)換成硬件地址(使用ARP),并將此硬件地址放在鏈路層的MAC幀的首部,然后根據(jù)這個硬件地址找到下一跳路由器。由此可見,當(dāng)發(fā)送一連串的數(shù)據(jù)報時,上述的這種查找路由表、計算硬件地址、寫入MAC幀的首部等過程,將不斷地重復(fù)進行,造成了一定的開銷。
那么,能不能在路由表中不使用IP地址而直接使用硬件地址呢?不行。我們一定要弄清楚,使用抽象的IP地址,本來就是為了隱蔽各種底層網(wǎng)絡(luò)的復(fù)雜性而便于分析和研究問題,這樣就不可避免地要付出些代價,例如在選擇路由時多了一些開銷。但反過來,如果在路由表中直接使用硬件地址,那就會帶來更多的麻煩。
根據(jù)以上所述,可歸納出分組轉(zhuǎn)發(fā)算法如下:
(1)從數(shù)據(jù)報的首部提取目的主機的IP地址D,得出目的網(wǎng)絡(luò)地址為Ⅳ。
(2)若Ⅳ就是與此路由器直接相連的某個網(wǎng)絡(luò)地址,則進行直接交付,不需要再經(jīng)過其他的路由器,直接把數(shù)據(jù)報交付目的主機(這里包括把目的主機地址D轉(zhuǎn)換為具體的硬件她址,把數(shù)據(jù)報封裝為MAC幀,再發(fā)送此幀);否則就是間接交付,執(zhí)行(3)。
(3)若路由表中有目的地址為D的特定主機路由,則把數(shù)據(jù)報傳送給路由表中所指明的
下一跳路由器;否則,執(zhí)行(4)。
(4)若路由表中有到達網(wǎng)絡(luò)Ⅳ的路由,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行(5)。
(5)若路由表中有一個默認(rèn)路由,則把數(shù)據(jù)報傳送給路由表中所指明的默認(rèn)路由器;否則,執(zhí)行(6)。
(6)報告轉(zhuǎn)發(fā)分組出錯。
上面所討論的是IP層怎樣根據(jù)路由表的內(nèi)容進行分組轉(zhuǎn)發(fā),而沒有涉及到路由表一開始是如何建立的以及路由表中的內(nèi)容應(yīng)如何進行更新。但是在進一步討論路由選擇之前,我們還要先介紹劃分子網(wǎng)和構(gòu)造超網(wǎng)這兩個非常重要的概念。
當(dāng)路由器收到一個待轉(zhuǎn)發(fā)的數(shù)據(jù)報,在從U147H路由表得出下一跳路由器的IP地址后,不是把這個地址填入IP數(shù)據(jù)報,而是送交數(shù)據(jù)鏈路層的網(wǎng)絡(luò)接口軟件。網(wǎng)絡(luò)接口軟件負責(zé)把下一跳路由器的IP地址轉(zhuǎn)換成硬件地址(使用ARP),并將此硬件地址放在鏈路層的MAC幀的首部,然后根據(jù)這個硬件地址找到下一跳路由器。由此可見,當(dāng)發(fā)送一連串的數(shù)據(jù)報時,上述的這種查找路由表、計算硬件地址、寫入MAC幀的首部等過程,將不斷地重復(fù)進行,造成了一定的開銷。
那么,能不能在路由表中不使用IP地址而直接使用硬件地址呢?不行。我們一定要弄清楚,使用抽象的IP地址,本來就是為了隱蔽各種底層網(wǎng)絡(luò)的復(fù)雜性而便于分析和研究問題,這樣就不可避免地要付出些代價,例如在選擇路由時多了一些開銷。但反過來,如果在路由表中直接使用硬件地址,那就會帶來更多的麻煩。
根據(jù)以上所述,可歸納出分組轉(zhuǎn)發(fā)算法如下:
(1)從數(shù)據(jù)報的首部提取目的主機的IP地址D,得出目的網(wǎng)絡(luò)地址為Ⅳ。
(2)若Ⅳ就是與此路由器直接相連的某個網(wǎng)絡(luò)地址,則進行直接交付,不需要再經(jīng)過其他的路由器,直接把數(shù)據(jù)報交付目的主機(這里包括把目的主機地址D轉(zhuǎn)換為具體的硬件她址,把數(shù)據(jù)報封裝為MAC幀,再發(fā)送此幀);否則就是間接交付,執(zhí)行(3)。
(3)若路由表中有目的地址為D的特定主機路由,則把數(shù)據(jù)報傳送給路由表中所指明的
下一跳路由器;否則,執(zhí)行(4)。
(4)若路由表中有到達網(wǎng)絡(luò)Ⅳ的路由,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行(5)。
(5)若路由表中有一個默認(rèn)路由,則把數(shù)據(jù)報傳送給路由表中所指明的默認(rèn)路由器;否則,執(zhí)行(6)。
(6)報告轉(zhuǎn)發(fā)分組出錯。
上面所討論的是IP層怎樣根據(jù)路由表的內(nèi)容進行分組轉(zhuǎn)發(fā),而沒有涉及到路由表一開始是如何建立的以及路由表中的內(nèi)容應(yīng)如何進行更新。但是在進一步討論路由選擇之前,我們還要先介紹劃分子網(wǎng)和構(gòu)造超網(wǎng)這兩個非常重要的概念。