Linux系統IP路由基礎[第1部分]
路由表中的數據一般是以條目形式存在。一個(gè)典型的路由表條目包含以下主要的條目項:
● 目的IP地址:此字段表示目標的IP地址。這個(gè)IP地址可以是某一臺主機的地址,也可以是一個(gè)網(wǎng)絡(luò )地址。如果這個(gè)條目包含的是一個(gè)主機地址,那么它的主機ID標記為非零;如果這個(gè)條目包含的是一個(gè)網(wǎng)絡(luò )地址,那么它的主機ID被標記為零。
● 下一個(gè)路由器的IP地址:為什么我們使用“下一個(gè)”的說(shuō)法,是因為下一個(gè)路由器并不總是最后的目的路由器,但它很可能是一個(gè)中間路由器。條目給出下一個(gè)路由器的地址是用來(lái)轉發(fā)從相應接口收到的IP數據報文。
● 標志:這個(gè)字段提供了另一組重要信息,如目的IP地址(之前提到的)是一個(gè)主機地址還是一個(gè)網(wǎng)絡(luò )地址。此外,從標志中可以得知下一個(gè)路由器(之前提到的)真的是一個(gè)路由器還是一個(gè)直接相連的接口。
● 網(wǎng)絡(luò )接口規范:一些數據報文的網(wǎng)絡(luò )接口規范,這個(gè)規范跟隨報文一起傳播。
基本的路由是如何工作的?
因此,如果我們現在想簡(jiǎn)單而形象地描述路由過(guò)程,我們將會(huì )看到:一旦主機(被配置成具備路由功能)的IP層接收到從網(wǎng)絡(luò )側來(lái)的數據報文,它將核實(shí)數據包中的目的IP地址,如果此IP不是主機的IP地址,那么包將通過(guò)路由表轉發(fā)。
如果任何條目的第一個(gè)字段完全匹配目的IP地址(主機)或部分匹配目的IP地址(網(wǎng)絡(luò )),那么它將指示下一個(gè)路由器的IP地址。這是一個(gè)重要的信息,因為這些信息直接告訴主機(具備路由功能的)數據包應該轉發(fā)到哪一個(gè)“下一個(gè)路由器”去。而條目中所有其它的字段將提供更多輔助的信息來(lái)為路由轉發(fā)做決定。
在上一段中我們對路由轉發(fā)過(guò)程建立了基本的了解,但如果我們試圖深入了解更多的東西,就必須看看以下關(guān)于路由表算法的一些詳細信息。
● 首先,路由表會(huì )去搜索一個(gè)“目的IP地址”字段與數據報文中目的IP地址完全相同的條目。這就意味著(zhù)IP地址的主機ID與網(wǎng)絡(luò )ID完全的匹配。如果找到,則數據包被發(fā)送到相應接口或中間路由器。
● 如果沒(méi)有找到一個(gè)完全的匹配IP,那么就接著(zhù)搜索相匹配的網(wǎng)絡(luò )ID。如果找到,那么該數據報文會(huì )被轉發(fā)到指定的路由器。所以我們看到,這個(gè)網(wǎng)絡(luò )上的所有主機都通過(guò)這個(gè)路由表中的單個(gè)(這個(gè))條目來(lái)管理。
● 如果上述兩個(gè)條件都不匹配,那么該數據報文將轉發(fā)到一個(gè)“默認路由器”。
● 如果上述步驟失敗,即沒(méi)有默認路由器,那么該數據報文最終無(wú)法被轉發(fā)。任何無(wú)法投遞的數據報文都將產(chǎn)生一個(gè)ICMP主機不可達或ICMP網(wǎng)絡(luò )不可達的錯誤,并將此錯誤返回給生成此數據報文的應用程序。
有時(shí)人們會(huì )問(wèn),為什么路由表中會(huì )有兩種類(lèi)型的條目?有了更精確的主機條目為什么還需要網(wǎng)絡(luò )相關(guān)的條目?嗯…在路由表中包含與網(wǎng)絡(luò )相關(guān)的路由條目是一個(gè)很大的優(yōu)點(diǎn)。其優(yōu)點(diǎn)在于,擁有一個(gè)與完整網(wǎng)絡(luò )相關(guān)的條目,能夠避免包含此網(wǎng)絡(luò )中所有單獨的主機條目(這個(gè)數據量非常巨大)。這使得路由表的大小降到一個(gè)可收受的數量級,這樣就非常好。
查看路由表信息的命令
你可以使用netstat命令查看路由表信息,如下所示:
$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0 其輸出提供目的IP地址和網(wǎng)關(guān)相關(guān)的詳細信息。標志“U”表明該路由器可達;“G”表明該路由器與一個(gè)網(wǎng)關(guān)(路由器)相連。如果這個(gè)標志沒(méi)有被設置,那么我們可以認為主機與目標是直接相連的。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論