某臺(tái)主機(jī)發(fā)送IP數(shù)據(jù)包給予其處于同一本地IP子網(wǎng)的另一臺(tái)主機(jī)時(shí),它只要直接把IP數(shù)據(jù)包發(fā)到本地網(wǎng)絡(luò)上,然后對(duì)方能收到。
當(dāng)處于不同IP子網(wǎng)間的主機(jī)需要通信時(shí),主機(jī)會(huì)把IP數(shù)據(jù)包發(fā)送給一個(gè)稱(chēng)為“缺省網(wǎng)關(guān)(Default Gateway)”的路由器上,然后由
這臺(tái)路由器把IP數(shù)據(jù)包送到目的地。“缺省網(wǎng)關(guān)”是TCP/IP的一個(gè)配置參數(shù),它是處于本地網(wǎng)絡(luò)上的某個(gè)路由器接口的IP地址
或某臺(tái)計(jì)算機(jī)中的某一塊網(wǎng)卡的IP地址。
對(duì)于缺省網(wǎng)關(guān),在實(shí)際應(yīng)用中多使用兩種解決方案:一種是通過(guò) 路由器,直接與某一網(wǎng)絡(luò)(或網(wǎng)段)相連的路由器端口IP地址便
是該網(wǎng)絡(luò)(或網(wǎng)段)的缺省網(wǎng)關(guān);另一種是通過(guò)一些代理服務(wù)器軟件,如CCProxy、WinRoute、WinGate、Windows 2000/XP/2003的
ICS(Internet連接共享)等,一般需要在安裝代理服務(wù)器軟件的計(jì)算機(jī)上同時(shí)安裝工兩塊網(wǎng)卡,其中一塊網(wǎng)卡與外網(wǎng)(如Internet)相
連,另一塊網(wǎng)卡與局域網(wǎng)相連,則與局域網(wǎng)相連的這塊網(wǎng)卡的IP便是該局域網(wǎng)計(jì)算機(jī)的缺省網(wǎng)關(guān)。
路由器轉(zhuǎn)發(fā)IP數(shù)據(jù)包時(shí),它只是根據(jù)IP數(shù)據(jù)包目標(biāo)IP地址的網(wǎng)絡(luò)部分選擇合適的接口發(fā)送出數(shù)據(jù)包,路由器還要判斷接口所連
接的是否是目標(biāo)子網(wǎng),如果是,路由器就直接把數(shù)據(jù)通過(guò)接口發(fā)送到網(wǎng)絡(luò)上,譬如主機(jī)A發(fā)送主機(jī)B的數(shù)據(jù)包到達(dá)路由器時(shí),路
由器發(fā)現(xiàn)它的E1接口直接連接著目標(biāo)網(wǎng)路,于是它將數(shù)據(jù)通過(guò)E1端口直接轉(zhuǎn)發(fā)給主機(jī)B);否則,路由器會(huì)選擇下一跳路由器來(lái)
傳輸數(shù)據(jù),這樣一跳一跳地傳輸,IP數(shù)據(jù)包最終將被送到目的主機(jī)。
路由器給人的感覺(jué)是一種復(fù)雜的網(wǎng)絡(luò)設(shè)備,實(shí)際上從宏觀的角度來(lái)看,路由器主要實(shí)現(xiàn)兩種基本功能:
交換和轉(zhuǎn)發(fā)功能:將數(shù)據(jù)從路由器的進(jìn)入接口穿過(guò)路由器在送到外出接口。
路由功能:即尋址功能,學(xué)習(xí)和維護(hù)路由選擇表,決定正確的轉(zhuǎn)發(fā)路徑。
尋址由路由路由選擇算法來(lái)實(shí)現(xiàn),為了判定最佳路徑,路由選擇算法維護(hù)著一個(gè)包含路由信息的路由選擇表,路由選擇表可以
將目標(biāo)網(wǎng)路和下一跳(Next Hop)的關(guān)系告訴路由器。當(dāng)路由器向目的地轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí),它就是通過(guò)這張路由選擇表來(lái)確定所要使
用的輸出接口,為了能夠路由數(shù)據(jù)包,路由器需要知道以下信息:目標(biāo)地址和下一跳地址。
在上圖中,假設(shè)主機(jī)A需要和主機(jī)B通信,具體傳輸?shù)倪^(guò)程如下。
1)主機(jī)A先將數(shù)據(jù)發(fā)送給它的默認(rèn)網(wǎng)關(guān)(路由器A,RtA)。
主機(jī)A發(fā)送的數(shù)據(jù)幀的格式:
目標(biāo)MAC地址
源MAC地址
目標(biāo)IP地址
源IP地址
數(shù)據(jù)段
RtA的E0的MAC地址
主機(jī)A的MAC地址
192.168.3.1
192.168.2.1
數(shù)據(jù)
在主機(jī)A發(fā)送的數(shù)據(jù)幀中,以路由器A的E1端口的MAC地址為目標(biāo)MAC地址,而且目標(biāo)IP地址依然為主機(jī)B的IP地址。
2)路由器收到的主機(jī)A的數(shù)據(jù)后,查詢(xún)自己的路由表,它發(fā)現(xiàn)E0端口可以到達(dá)主機(jī)B所在的網(wǎng)絡(luò)(192.168.3.1)。
路由器A的路由信息表:
網(wǎng)絡(luò)號(hào) 出口
192.168.1.0 E1
192.168.2.0 E0
192.168.3.0 E1
192.168.4.0 E1
192.168.5.0 E1
3)路由器A重寫(xiě)數(shù)據(jù)包的幀頭信息,將目標(biāo)MAC地址改為路由器B(RtB)的E1的端口的MAC地址,同時(shí)修改源MAC地址,然后將
數(shù)據(jù)包從自己的E1口發(fā)送出去。
路由器A發(fā)送的數(shù)據(jù)幀的格式:
目標(biāo)MAC地址
源MAC地址
目標(biāo)IP地址
源IP地址
數(shù)據(jù)段
RtB的E1口的MAC地址
RtA的E1口的MAC地址
192.168.3.1
192.168.2.1
數(shù)據(jù)
4)數(shù)據(jù)被送到路由器B后,路由器B按照相同的方法把它送給路由器C。
路由器B的路由信息表:
網(wǎng)絡(luò)號(hào)
出口
192.168.1.0
E0
192.168.2.0
E1
192.168.3.0
E2
192.168.4.0
E1
192.168.5.0
E2
5)路由器C發(fā)現(xiàn)192.168.3.0網(wǎng)絡(luò)直接連接在它的E0口上,于是它將數(shù)據(jù)包發(fā)往E0,在E0上采用ARP來(lái)查詢(xún)192.168.3.1的MAC地址,
最后將數(shù)據(jù)包發(fā)往目的主機(jī)。
代理ARP
如果網(wǎng)絡(luò)上所有的系統(tǒng)都配置成目的地址均在本地網(wǎng)段,那么路由器將扮演遠(yuǎn)程代理的角色。
1)主機(jī)A(IP地址為192.16.1.2/24)試圖與主機(jī)B(IP地址為192.168.2.2/24)進(jìn)行通信,但是它不知道主機(jī)B的MAC地址,由于主機(jī)A
(IP為192.16.1.2/24)被配置為目的地址在本地網(wǎng)段,所以主機(jī)A直接發(fā)出ARP請(qǐng)求(實(shí)際上運(yùn)行代理ARP的路由器就充當(dāng)默認(rèn)網(wǎng)
關(guān)的角色)。
2)路由器回答來(lái)自主機(jī)A的ARP請(qǐng)求,它使用自己的MAC地址回答主機(jī)A。于是主機(jī)A將數(shù)據(jù)包發(fā)送給路由器,路由器再將數(shù)據(jù)
包發(fā)送給路由器,路由器再將數(shù)據(jù)包轉(zhuǎn)發(fā)到正確的目的主機(jī)B。
代理ARP可以簡(jiǎn)化主機(jī)的管理,不過(guò)卻增加了網(wǎng)絡(luò)的通信量,并且在路由器上需要較大的ARP緩存,因?yàn)樵诿總€(gè)不在本網(wǎng)的IP
地址的IP被創(chuàng)建一個(gè)映射表項(xiàng)。在使用代理ARP的主機(jī)看來(lái),世界就像一個(gè)沒(méi)有路由器的大型物理網(wǎng)絡(luò)。