路由確定過程
當(dāng)TCP/IP需要向某個IP地址發(fā)起通信時,它會對路由表進行評估,以確定如何發(fā)送數(shù)據(jù)包。評估過程如下:
TCP/IP使用需要通信的目的IP地址和路由表中每一個路由項的網(wǎng)絡(luò)掩碼進行相與計算,如果相與后的結(jié)果匹配對應(yīng)路由項的網(wǎng)絡(luò)地址,則記錄下此路由項;
當(dāng)計算完路由表中所有的路由項后,TCP/IP選擇記錄下的路由項中的最長匹配路由(網(wǎng)絡(luò)掩碼中具有最多“1”位的路由項)來和此目的IP地址進行通信。如果存在多個最長匹配路由,那么選擇具有最低躍點數(shù)的路由項;如果存在多個具有最低躍點數(shù)的最長匹配路由,那么:
如果是發(fā)送響應(yīng)數(shù)據(jù)包,并且數(shù)據(jù)包的源IP地址是某個最長匹配路由的接口的IP地址,那么選擇此最長匹配路由;
其他情況下均根據(jù)最長匹配路由所對應(yīng)的網(wǎng)絡(luò)接口在網(wǎng)絡(luò)連接的高級設(shè)置中的綁定優(yōu)先級來決定,如下圖所示:

網(wǎng)關(guān)和接口確定過程
在確定使用的路由項后,網(wǎng)關(guān)和接口通過以下方式確定:
如果路由項中的網(wǎng)關(guān)地址為空或者為本地計算機上的某個網(wǎng)絡(luò)接口,那么在發(fā)送數(shù)據(jù)包時:
通過路由項中對應(yīng)的網(wǎng)絡(luò)接口發(fā)送;
源IP地址為此網(wǎng)絡(luò)接口的IP地址;
源MAC地址為此網(wǎng)絡(luò)接口的MAC地址;
目的IP地址為接收此數(shù)據(jù)包的目的主機的IP地址;
目的MAC地址為接收此數(shù)據(jù)包的目的主機的MAC地址;
如果路由項中的網(wǎng)關(guān)地址并不屬于本地計算機上的任何網(wǎng)絡(luò)接口,那么在發(fā)送數(shù)據(jù)包時:
通過路由項中對應(yīng)的網(wǎng)絡(luò)接口發(fā)送;
源IP地址為路由項中對應(yīng)網(wǎng)絡(luò)接口的IP地址;
源MAC地址路由項中對應(yīng)網(wǎng)絡(luò)接口的MAC地址;
目的IP地址為接收此數(shù)據(jù)包的目的主機的IP地址;
目的MAC地址為網(wǎng)關(guān)的MAC地址;
在此我以上面的路由表為基礎(chǔ),舉例進行說明:
和單播IP地址 192.168.1.8 的通信:在進行相與計算時,1、3 項匹配,但是3項為最長匹配路由,因此選擇3項。3項的網(wǎng)關(guān)地址為本地計算機的網(wǎng)絡(luò)接口192.168.1.6,因此發(fā)送數(shù)據(jù)包時,目的IP地址為192.168.1.8、目的MAC地址為192.168.1.8的MAC地址(通過ARP解析獲得)。
和單播IP地址 192.168.1.6 的通信:在進行相與計算時,1、3、6 項匹配,但是6項為最長匹配路由,因此選擇6項。6項的網(wǎng)關(guān)地址為本地環(huán)回地址127.0.0.1,因此直接將數(shù)據(jù)包發(fā)送至本地環(huán)回地址。
和單播IP地址 192.168.1.245 的通信:在進行相與計算時,1、3、4、5 項匹配,但是4、5項均為最長匹配路由,所以此時根據(jù)躍點數(shù)進行選擇,5 項具有更低的躍點數(shù),因此選擇5項;在發(fā)送數(shù)據(jù)包時,目的IP地址為192.168.1.254、目的MAC地址為192.168.1.7的MAC地址(通過ARP解析獲得)。
和單播IP地址 10.1.1.1 的通信:在進行相與計算時,只有 1 項匹配;在發(fā)送數(shù)據(jù)包時,目的IP地址為10.1.1.1、目的MAC地址為192.168.1.1的MAC地址(通過ARP解析獲得)。
和子網(wǎng)廣播地址 192.168.1.255 的通信:在進行相與計算時,1、3、4、5、7 項匹配,但是7項為最長匹配路由,因此選擇7項。7項的網(wǎng)關(guān)地址為本地計算機的網(wǎng)絡(luò)接口,因此在發(fā)送數(shù)據(jù)包時,目的IP地址為192.168.1.255,目的MAC地址為以太網(wǎng)廣播地址FF:FF:FF:FF:FF:FF。
默認路由與默認網(wǎng)關(guān)
由于在路由表中存儲針對每個主機或子網(wǎng)的路由項不可行,因此提出了默認路由的概念,默認路由中的網(wǎng)關(guān)稱為默認網(wǎng)關(guān)。默認路由的網(wǎng)絡(luò)地址為0.0.0.0,網(wǎng)絡(luò)掩碼為0.0.0.0,它匹配任何網(wǎng)絡(luò)通信,因此當(dāng)?shù)竭_特定主機或特定子網(wǎng)的路由并未在路由表中指定時,均可以通過默認路由來進行轉(zhuǎn)發(fā)。如果沒有設(shè)置默認路由,那么無法到達未在路由表中指定路由項的網(wǎng)絡(luò)目的地址。
設(shè)置默認路由后,把數(shù)據(jù)包的路由責(zé)任移交到了路由器,優(yōu)點是簡化了本地計算機上的路由表和配置,缺點則是計算機無法明確目的地址是否可達,從而可能發(fā)送針對不可到達地址的流量。雖然位于路由路徑上的路由器知道目的地址不可達時會使用ICMP目的地址不可達信息來通知原始發(fā)送主機,但是這個過程中,已經(jīng)占用了額外的網(wǎng)絡(luò)流量。
在Windows系統(tǒng)中,創(chuàng)建默認路由可以通過以下兩種方式實現(xiàn):
在網(wǎng)絡(luò)接口的TCP/IP選項中設(shè)置默認網(wǎng)關(guān),從而創(chuàng)建默認路由;
使用 route add 命令添加網(wǎng)絡(luò)地址為0.0.0.0、網(wǎng)絡(luò)掩碼為0.0.0.0的默認路由;
推薦大家總是使用前一種方式。
配置多個默認網(wǎng)關(guān)
你可以在單個網(wǎng)絡(luò)接口、多個網(wǎng)絡(luò)接口上同時配置多個默認網(wǎng)關(guān),但是TCP/IP同時只會使用一個默認網(wǎng)關(guān)(默認路由),這個當(dāng)前使用的默認網(wǎng)關(guān)稱為活動默認網(wǎng)關(guān)(活動默認路由)。當(dāng)不同網(wǎng)絡(luò)接口所連接的網(wǎng)絡(luò)之間沒有連接性時(如一個網(wǎng)絡(luò)接口連接到Internet,而一個網(wǎng)絡(luò)接口連接到內(nèi)部網(wǎng)絡(luò)),在多個網(wǎng)絡(luò)接口上同時配置默認網(wǎng)關(guān)可能會帶來連接性問題(具體的問題我將在后文描述),因此微軟不推薦大家在多個網(wǎng)絡(luò)接口上同時配置默認網(wǎng)關(guān),并且當(dāng)你進行這種配置時會進行警告,不過不會阻止你的操作。
當(dāng)在配置多個默認網(wǎng)關(guān)時,將根據(jù)以下條件來選擇活動默認網(wǎng)關(guān):
當(dāng)路由表中具有多個默認網(wǎng)關(guān)時,TCP/IP根據(jù)躍點數(shù)來進行選擇,躍點數(shù)最低的默認網(wǎng)關(guān)具有最高的優(yōu)先級;
如果路由表中具有多個具有最低躍點數(shù)的默認網(wǎng)關(guān),那么TCP/IP根據(jù)默認網(wǎng)關(guān)對應(yīng)的網(wǎng)絡(luò)接口在網(wǎng)絡(luò)連接的高級設(shè)置中的綁定優(yōu)先級來決定,如下圖所示:
本新聞共
3頁,當(dāng)前在第
2頁
1 2 3