摘要:本章主要介紹了路由器的結(jié)構(gòu)、轉(zhuǎn)發(fā)和編制、廣域網(wǎng)中的路由算法以及差錯(cuò)檢驗(yàn)和信息報(bào)告等。介紹的這所有內(nèi)容都是為了實(shí)現(xiàn)一個(gè)功能:正確的轉(zhuǎn)發(fā)一個(gè)分組,這是路由器最基本也是最核心的功能。
關(guān)鍵詞:路由器;分組轉(zhuǎn)發(fā);DHCP;NAT;Dijkstra算法;距離向量算法;
目錄:
??1.路由器體系結(jié)構(gòu)
??2.網(wǎng)絡(luò)層的三個(gè)重要組件:01 IP協(xié)議
????2.1 報(bào)文格式和編址
????2.2 動態(tài)主機(jī)配置協(xié)議(DHCP)
????2.3 網(wǎng)絡(luò)地址轉(zhuǎn)換協(xié)議(NAT)
??3.網(wǎng)絡(luò)層的三個(gè)重要組件:02 路由選擇算法
????3.1 Dijkstra算法和距離向量算法簡介
????3.2 自治系統(tǒng)內(nèi)部的路由選擇
????3.3 自治系統(tǒng)間的路由選擇
??4.網(wǎng)絡(luò)層的三個(gè)重要組件:03 因特網(wǎng)控制報(bào)文協(xié)議(ICMP)
??擴(kuò)展:單播、廣播、多播
1 路由器體系結(jié)構(gòu)
路由器主要由兩個(gè)部分組成:數(shù)據(jù)轉(zhuǎn)發(fā)平面和控制管理平面;其中數(shù)據(jù)轉(zhuǎn)發(fā)平面主要負(fù)責(zé)分組的轉(zhuǎn)發(fā),控制管理平面則負(fù)責(zé)計(jì)算路由表以及其他的路由器管理工作。這兩個(gè)平臺實(shí)現(xiàn)了路由器的兩個(gè)主要功能,其中數(shù)據(jù)轉(zhuǎn)發(fā)平臺由于其要求轉(zhuǎn)發(fā)速度在納秒級別,因此依賴于硬間實(shí)現(xiàn),而控制管理平面的功能對時(shí)間性能沒有那么高,因此由軟件實(shí)現(xiàn)??刂乒芾砥脚_是個(gè)軟件平臺,我們僅需要知道通過它來計(jì)算路由轉(zhuǎn)發(fā)表即可。因此主要介紹數(shù)據(jù)轉(zhuǎn)發(fā)平臺的結(jié)構(gòu),看一下數(shù)據(jù)是怎么通過一臺路由器的。

因此一個(gè)路由器即可能在輸入端外排隊(duì),也可能在輸出端排隊(duì)。你要記住一個(gè)重要的特點(diǎn)是,路由器由好幾個(gè)ip地址。
2.網(wǎng)絡(luò)層的三個(gè)重要組件01:IP協(xié)議
互聯(lián)網(wǎng)是計(jì)算機(jī)與計(jì)算之間進(jìn)行交流的橋梁,有了橋梁比如路由器和物理鏈路,雙方還要約定如何交流,不能一個(gè)將英語一個(gè)將漢語,即使約定一個(gè)第三方語言,如果將英語雙方就都得符合英語的語法規(guī)范,兩邊才能正常的交流或者說通信。協(xié)議就是這個(gè),它就像英語的語法,規(guī)定了英語應(yīng)該怎么講。IP協(xié)議以及其他計(jì)算機(jī)協(xié)議都是如此,它是一個(gè)規(guī)范,規(guī)定了諸如數(shù)據(jù)報(bào)文的格式,它能提供的功能,確定他的運(yùn)行機(jī)制應(yīng)該是怎樣的等方方面面,然后大家共同遵守,達(dá)成一致,相互之間通信的時(shí)候就知道對方說的是什么意思了。
IP協(xié)議本章主要介紹了IPv4和IPv6,并對其報(bào)文格式和編碼方式做了簡要的介紹
2.1 報(bào)文格式和編址方式
2.1.1 報(bào)文格式

IPv4和IPv6最明顯的區(qū)別就是其ip地址的位數(shù)不一樣,ipv4是32位,ipv6是128位,主要不是64位,因此形象的說就是地球上的每個(gè)沙礫都可以用ipv6來尋址。當(dāng)然ipv4和ipv6的區(qū)別遠(yuǎn)不止于此,你更應(yīng)該感興趣的是,一個(gè)用于ipv4的路由器能用于ipv6嗎?為什么能或?yàn)槭裁床荒埽磕壳笆侨绾问褂胕pv6的?在一個(gè)既有ipv4又有ipv6的網(wǎng)絡(luò)中,如何使一個(gè)數(shù)據(jù)包經(jīng)歷不同版本的ip協(xié)議到達(dá)目的地?這些都能在課本中找到答案。
2.1.2 編址方式
由于目前ipv6應(yīng)用還不算廣泛,接觸更多的還是ipv4。因此我們主要介紹ipv4的編碼方式。ipv4的32位地址,每8位一段,用點(diǎn)分10進(jìn)制表示,以便于我們使用,畢竟你配置的時(shí)候輸32位01和輸4個(gè)10進(jìn)制的數(shù),誰更復(fù)雜誰更容易出錯(cuò),不用說也知道。這只是說ip地址的形式上是這樣,具體的,你的機(jī)器分配到一個(gè)什么樣的ip地址,由你所在的子網(wǎng)所決定。
以前編址的時(shí)候,把IP地址分成好幾類,每一類都有就是一個(gè)大的子網(wǎng),現(xiàn)在好像是采用無類別的編址方式,具體是不是我還不太確定。
下面我們看看你的ip地址如何確定的。
2.2 動態(tài)主機(jī)配置協(xié)議:DHCP
當(dāng)你的一臺新主機(jī)第一次接入網(wǎng)絡(luò)的時(shí)候,你的主機(jī)什么都不知道,為了能和因特網(wǎng)連接,他需要獲得ip地址,子網(wǎng)掩碼,DNS等數(shù)據(jù)來初始化他的網(wǎng)絡(luò)配置。這些數(shù)據(jù)他找誰要呢?就是找一個(gè)專門用來做這個(gè)事情的服務(wù)器要,該服務(wù)器叫DHCP服務(wù)器。那么他怎么找他要呢?他根本都不知道DHCP服務(wù)器的ip地址也不知道自己的ip地址,他會通過廣播的方式,使用目的ip地址255.255.255.255,使用該目的ip地址時(shí),鏈路層會對該數(shù)據(jù)進(jìn)行廣播。在廣播的數(shù)據(jù)中,按照DHCP協(xié)議規(guī)定的報(bào)文格式,實(shí)現(xiàn)與DHCP服務(wù)器通信,DHCP收到廣播后又會把配置信息通過廣播送回去,因?yàn)槟壳澳阒鳈C(jī)還沒有ip地址,只能廣播過來。當(dāng)然具體過程可能稍微更復(fù)雜一點(diǎn),但這種簡單的描述有助于你理解主機(jī)請求網(wǎng)絡(luò)配置的基本的過程。
2.3 網(wǎng)絡(luò)地址轉(zhuǎn)換協(xié)議:NAT
由于目前接入互聯(lián)網(wǎng)的設(shè)備越來越多,為每個(gè)設(shè)備分配一個(gè)ip地址顯然會使得ip地址不夠用,于是就用局域網(wǎng)的概念來解決這個(gè)問題,局域網(wǎng)是子網(wǎng)的一個(gè)子集,在局域網(wǎng)中,局域網(wǎng)藏在一個(gè)路由器背后,關(guān)鍵在于不同的局域網(wǎng)絡(luò)中的設(shè)備的ip地址可以是一樣的,你家庭有個(gè)設(shè)備的地址是192.16.8.1.2,隔壁家可能有個(gè)設(shè)備和你家的這個(gè)設(shè)備的ip地址是一樣的。局域網(wǎng)的ip地址只在局域網(wǎng)內(nèi)有效,也就是局域網(wǎng)尋址用局域網(wǎng)的ip地址,廣域網(wǎng)的尋址采用廣域網(wǎng)的ip地址,你的設(shè)備往往分不到廣域網(wǎng)的ip地址,尤其你處于一個(gè)機(jī)構(gòu)或者家庭網(wǎng)絡(luò)中,這種情況你設(shè)備的地址通常都是局域網(wǎng)地址。廣域網(wǎng)通過路由選擇算法來尋址,而局域網(wǎng)通過鏈路層MAC地址尋址。局域網(wǎng)內(nèi)部的機(jī)器的通信在第五章鏈路層介紹。
局域網(wǎng)的設(shè)備要與外界通信就必須要經(jīng)歷廣域網(wǎng),而廣域網(wǎng)尋址就必須要有個(gè)廣域網(wǎng)的ip地址,可是你的設(shè)備并沒有,尤其是兩個(gè)局域網(wǎng)內(nèi)的設(shè)備通信的是,他們都不具有廣域網(wǎng)地址,那么怎么實(shí)現(xiàn)彼此時(shí)間的通信呢?
就是使用NAT協(xié)議,你的局域網(wǎng)的路由器是有對外接口的,也就是路由器是擁有一個(gè)廣域網(wǎng)ip地址的。因此局域網(wǎng)對外網(wǎng)的所有請求都會被路由器根據(jù)NAT表修改ip頭部信息。
你和別的主機(jī)通信時(shí),會使用一個(gè)端口號,分組發(fā)到路由器時(shí),會把該端口號映射到路由器上的一個(gè)端口號,然后用路由器上映射后的端口號和路由器的ip地址作為源ip地址將分組發(fā)送出去,目的主機(jī)發(fā)送響應(yīng)時(shí),以路由器的ip地址和端口號作為目的地址和端口號,當(dāng)路由器收到該響應(yīng)時(shí),根據(jù)NAT表又把他映射回局域網(wǎng)ip和端口號,把分組發(fā)回局域網(wǎng)后就由鏈路層根據(jù)局域網(wǎng)ip尋址了。
實(shí)際上你可以看到,除非局域網(wǎng)的主機(jī)主動的向外界請求,路由器才會給你的這次請求動態(tài)的配置一個(gè)端口號并將映射關(guān)系添加到NAT表。然后得以與外界通信,如果外界要主動和你的應(yīng)用程序通信呢?就是你作為服務(wù)器,別人要主動找你,就沒法做。因?yàn)閯e人不知道該發(fā)給該路由器的哪個(gè)端口。因此為了別人能主動找你,你需要固定一個(gè)不變的長期在NAT表中的映射關(guān)系,也就是端口映射,或者叫NAT穿越。該功能有一個(gè)學(xué)名叫做UPnP,即通用即插即用。
這樣如果你的設(shè)備和鄰居家的設(shè)備的某個(gè)應(yīng)用程序,都做了端口映射他們之間就可以通信了。實(shí)際上用UPnP實(shí)現(xiàn)NAT穿越來保證局域網(wǎng)之間的應(yīng)用直接通信還是不方便的,更常用的做法是,使用代理。兩個(gè)局域網(wǎng)的設(shè)備都先跟廣域網(wǎng)中的代理建立連接,然后代理把這兩個(gè)局域網(wǎng)中的設(shè)備分配到的動態(tài)端口號轉(zhuǎn)告給雙方,有了端口號和路由器ip地址,這兩個(gè)設(shè)備就可以直接通信了。不知道微信視頻聊天是不是這個(gè)機(jī)制。
3 網(wǎng)絡(luò)層的三個(gè)重要組件02:路由選擇算法
路由器最主要的高能就是轉(zhuǎn)發(fā)分組,那么轉(zhuǎn)發(fā)分組的時(shí)候在輸入端需要一個(gè)張路由選擇表,該表描述了每個(gè)子網(wǎng)對應(yīng)的輸出端口是多少,當(dāng)一個(gè)分組過來,取出其目的ip地址然后根據(jù)最長匹配規(guī)則,匹配到對應(yīng)的子網(wǎng),然后給該分組分配輸出端口。路由選擇算法就是生成這張表的重要方法。
3.1 Dijkstra算法和距離向量算法簡介
在學(xué)習(xí)路由選擇算法之前,先要明白Dijkstra算法和距離向量算法,然后再理解這兩種算法是怎么應(yīng)用到路由選擇中的。
對于一個(gè)圖結(jié)構(gòu),他有節(jié)點(diǎn)和邊,每個(gè)邊都有距離,這兩個(gè)算法做的事情,就是對于任何一個(gè)節(jié)點(diǎn)都能知道到其他任意一個(gè)目的節(jié)點(diǎn)的最短路徑。這是數(shù)據(jù)結(jié)構(gòu)圖這部分都會接觸到的基本算法。
Dijkstra:是一種全局的最短路徑算法。該算法需要每個(gè)節(jié)點(diǎn)知道所有邊的長度,還要知道節(jié)點(diǎn)之間的相連關(guān)系。也就是相當(dāng)于要求每個(gè)節(jié)點(diǎn)上都有存儲著一張圖。
距離向量算法:是一種分布式的最短路徑算法。他不要求每個(gè)節(jié)點(diǎn)對整個(gè)圖有了解,他只需要和鄰居節(jié)點(diǎn)通信就可以了。也就是每個(gè)節(jié)點(diǎn)都有一張初始路由表,然后,這張表開始和鄰居交換,通過頻繁的交換節(jié)點(diǎn)之間不停的修改這張表,使得最后收斂。
需要注意的是,在這兩個(gè)圖算法中,我們的目的地是節(jié)點(diǎn),也就是每個(gè)節(jié)點(diǎn)得到一張表,第一列是其他所有的節(jié)點(diǎn)編號,第二列是從自己出發(fā)到該節(jié)點(diǎn)應(yīng)該要經(jīng)過一個(gè)鄰居節(jié)點(diǎn)編號。而路由表有點(diǎn)兒細(xì)微的差別,我們的目的地這一列不是要去某臺路由器,而是要去某個(gè)子網(wǎng)也就是某一條邊。但不管目的地是節(jié)點(diǎn)還是邊,這兩種算法都可以計(jì)算出正確的結(jié)果,得到想要的轉(zhuǎn)發(fā)表
3.2 自治系統(tǒng)內(nèi)部的路由選擇
不管是前述的路由選擇算法的哪一種,直接應(yīng)用到當(dāng)前的計(jì)算機(jī)網(wǎng)絡(luò)中,都是不現(xiàn)實(shí)的。世界上這么多臺路由器,每新增一臺路由器就得告訴全世界,這聽起來很瘋狂。隨著規(guī)模的增大,還帶來很多包括算法收斂,管理等問題。因此目前將路由器放進(jìn)一個(gè)個(gè)的自治系統(tǒng)中。一個(gè)自治系統(tǒng)就好比一個(gè)國家,每個(gè)國家自己運(yùn)行自己的路由選擇算法,當(dāng)你想從武漢去鹿特丹的時(shí)候,首先我要確定我經(jīng)歷的國家必須盡可能少,所以先確定途徑哪個(gè)國家(自治系統(tǒng)間路由選擇),然后在每個(gè)國家內(nèi)部我應(yīng)走什么樣的路線來穿越這個(gè)國家(自治系統(tǒng)內(nèi)部路由選擇)。
自治系統(tǒng)內(nèi)部路由選擇協(xié)議有兩種:路由選擇信息協(xié)議RIP(對應(yīng)距離向量算法)、開放最短路徑優(yōu)先OSPF(對應(yīng)Dijkstra算法)。
我們不深入研究這個(gè)兩個(gè)路由選擇協(xié)議,我們需要知道一件事,這個(gè)兩個(gè)協(xié)議能為自治系統(tǒng)內(nèi)部的路由器生成內(nèi)部路徑的路由表。
3.3 自治系統(tǒng)間的路由選擇
自治系統(tǒng)間的路由則告訴我們,到達(dá)某個(gè)AS,應(yīng)該途徑哪些AS,該協(xié)議是BGP協(xié)議,這個(gè)協(xié)議不是基于圖算法,而是基于策略。在自治系統(tǒng)間選擇一個(gè)好路由通常由經(jīng)濟(jì)問題決定而不是技術(shù)問題。就好比你從武漢去泥泊爾,你也想翻越喜馬拉雅山過去,這是最近的,可是這是不經(jīng)濟(jì)的。鐵路部門得把自瑪拉雅山打穿,然后去到泥泊爾,還是繞著走比較好,畢竟去泥泊爾的不多,為了這點(diǎn)旅客,鐵路部門會虧損嚴(yán)重。所以自治系統(tǒng)之間的路由不是說誰近用誰的,可能最近的路徑上某個(gè)AS不讓你過,移動的用戶估計(jì)不會讓電信用戶通過。
書中說BGP協(xié)議是相當(dāng)之復(fù)雜的一個(gè)協(xié)議,說實(shí)在話,不管是自治系統(tǒng)間的路由選擇還是自治系統(tǒng)內(nèi)部的路由選擇。我們都不做深入研究,畢竟我不做網(wǎng)絡(luò)工程師。我只需要知道基本原理,不做過多研究,研究你該研究的,了解你該了解的,不做無意義的研究,了解反正也用不了多久,如果以后要用,知道有這么一回事,再深入研究就可以了,什么事情都是相通的,只要你把你該研究的研究透著了,以后進(jìn)入新的領(lǐng)域,自然有也會有能力研究新的領(lǐng)域。
4 網(wǎng)絡(luò)層的三個(gè)重要組件03:因特網(wǎng)控制報(bào)文協(xié)議(ICMP)
ICMP報(bào)文被用于主機(jī)和路由器之間溝通網(wǎng)絡(luò)信息。他位移網(wǎng)絡(luò)層之上,但是他不是傳輸層閱也不是應(yīng)用層。ICMP報(bào)文作為有效荷載裝入IP報(bào)文中,到達(dá)主機(jī)后主機(jī)根據(jù)其ip層的指示說上層協(xié)議是ICMP,就不會把該報(bào)文推給傳輸層處理了,而由專門處理ICMP報(bào)文的程序處理,所以ICMP沒有端口號,也無需端口號。
ping程序就是通過發(fā)送ICMP報(bào)文請求目的主機(jī)回顯回答,如果你發(fā)現(xiàn)ping一個(gè)主機(jī)ping不通,可能是對方的防火墻阻止了ICMP回顯請求分組。
traceroute也是利用ICMP報(bào)文來測算路由情況,他連續(xù)的發(fā)送TTL遞增的目的端口不可達(dá)的UDP報(bào)文,然后接收來自路由器的ICMP報(bào)文以估算各個(gè)路由器之間的RTT。這樣的話,除非防火墻阻擋了UDP報(bào)文。這是linux系統(tǒng)做法,windows系統(tǒng)的tracert不同,他不是發(fā)送的目的端口不可達(dá)的UDP報(bào)文,而是連續(xù)發(fā)送ping報(bào)文,也就是ICMP回顯請求報(bào)文。如果中間有路由器不接受這個(gè)你就無法知道該跳路由器了。所以如果你的結(jié)果列表里面有部分的行是*號,不要奇怪,可能是那幾個(gè)路由器不接收你的ping報(bào)文。
擴(kuò)展:單播、廣播、多播
單播:目的地址只有一個(gè)
廣播:網(wǎng)絡(luò)中所有的主機(jī)
多播:網(wǎng)絡(luò)中的一組主機(jī)
你應(yīng)當(dāng)感興趣的是網(wǎng)絡(luò)層的單播、廣播、多播是如何實(shí)現(xiàn)的?目前我不感興趣。如果你深入了解了,記得要用通俗易懂的方式,由淺入深的為我們講解單播、多博、和廣播。其實(shí)網(wǎng)絡(luò)上關(guān)于這個(gè)討論應(yīng)該已經(jīng)非常多了。
Q&A
- 路由選擇算法需要知道鄰居的ip地址嗎?
- 網(wǎng)絡(luò)變差的時(shí)候,重啟路由器有用嗎?
- 多人實(shí)時(shí)互動游戲使用了網(wǎng)絡(luò)層多播還是應(yīng)用層多播如P2P?還是使用了其他技術(shù)。
- 每個(gè)路由器中的路由表行數(shù)都一樣多,都包含了整個(gè)因特網(wǎng)的所有子網(wǎng)嗎?
- 路由器轉(zhuǎn)發(fā)表是如何屏蔽掉NAT協(xié)議下的子網(wǎng)的?
很簡單,轉(zhuǎn)發(fā)表中本身就不包含該子網(wǎng),路由器可以選擇他的路由轉(zhuǎn)發(fā)表中包含哪些子網(wǎng),不包含哪些子網(wǎng),不包含該子網(wǎng),不代表不向該子網(wǎng)轉(zhuǎn)發(fā)路由表。由于不包含局域網(wǎng),因此你通常無法只通過ip地址從一個(gè)局域網(wǎng)訪問另一局域網(wǎng)。比如你想登陸隔壁家局域網(wǎng)內(nèi)的設(shè)備。你應(yīng)當(dāng)明白,當(dāng)你從局域網(wǎng)訪問一個(gè)目的主機(jī)時(shí)的基本過程,首先用你的子網(wǎng)掩碼判斷目的ip地址是子網(wǎng)的,還是外網(wǎng)的,如果是子網(wǎng)的,那么查詢ARP表獲得該ip地址對應(yīng)的主機(jī)MAC地址,然后交換機(jī)會將其轉(zhuǎn)發(fā)到對應(yīng)的主機(jī)上,每路由器什么事。如果計(jì)算發(fā)現(xiàn)目的ip是外網(wǎng)的,那么也直接用路由器的MAC地址,交換機(jī)會把其轉(zhuǎn)發(fā)到路由器,路由器拿到該報(bào)文,然后去掉鏈路層幀的頭部信息,得到目的ip地址,首先路由器還充當(dāng)了網(wǎng)關(guān)的作用,如果該ip經(jīng)過網(wǎng)關(guān)計(jì)算它確實(shí)是外網(wǎng)的(你會好奇,為什么客戶端那邊已經(jīng)算過一次了,你還要算一遍,萬一客戶端子網(wǎng)掩碼是瞎填的怎么辦?),他會與路由轉(zhuǎn)發(fā)表對照,由于該轉(zhuǎn)發(fā)表不會包含局域網(wǎng)的轉(zhuǎn)發(fā)信息,因此會將該報(bào)文推到與廣域網(wǎng)對應(yīng)的端口,該報(bào)文就這樣被送出去了,而不會到你隔壁,如果計(jì)算發(fā)現(xiàn)是內(nèi)網(wǎng),它會幫你根據(jù)以太網(wǎng)協(xié)議,查ARP表添加MAC地址,又發(fā)回給交換機(jī),這就起到了網(wǎng)關(guān)的作用,這表明不管用戶還是路由器,子網(wǎng)掩碼都不能隨意設(shè)置,否則會導(dǎo)致無法正常通信。但有種情況可以讓局域網(wǎng)訪問局域網(wǎng),當(dāng)你的報(bào)文從路由器輸入端通過路由轉(zhuǎn)發(fā)協(xié)議到了響應(yīng)的輸出端口,如果輸出端外面連接的又是一個(gè)局域網(wǎng),那么路由器輸出報(bào)文到適配器之后,由于是局域網(wǎng),會執(zhí)行以太網(wǎng)協(xié)議,所以又開始通過網(wǎng)關(guān)來檢查ip地址的是內(nèi)網(wǎng)還是外網(wǎng)。如果是外網(wǎng),送到更高的路由器,如果是內(nèi)網(wǎng),找對應(yīng)的MAC地址,這也可以看到,目的ip一直不變,但目的MAC地址,可以一直發(fā)生變化,由每一個(gè)發(fā)送端重新確定。如果該局域網(wǎng)由這個(gè)ip,就可以成功訪問了。
可以看到網(wǎng)關(guān)就是不同子網(wǎng)之間聯(lián)絡(luò)的關(guān)卡,報(bào)文想逃出一個(gè)子網(wǎng),先要過網(wǎng)關(guān),過了網(wǎng)關(guān)后還有廣域網(wǎng)的路由轉(zhuǎn)發(fā)和目的局域網(wǎng)的交換機(jī)轉(zhuǎn)發(fā)等著你。假如ip地址不再用子網(wǎng)掩碼來驗(yàn)證,理論上他也能到達(dá)目的地,設(shè)置個(gè)網(wǎng)關(guān)有什么用呢?除了再主機(jī)發(fā)送之前可以通過子網(wǎng)驗(yàn)證一下是內(nèi)網(wǎng)還是外網(wǎng),而不用以開始就去查ARP表來判斷是內(nèi)網(wǎng)還是外網(wǎng)之外,好像是沒什么用。
由于路由轉(zhuǎn)發(fā)表中不含有局域網(wǎng)的路由信息,因此你要從局域網(wǎng)外訪問局域網(wǎng),只能通過NAT穿透即UPnP(說白了就是在路由器設(shè)置端口映射)。因此一個(gè)報(bào)文從源到目的,最多也是最通常的情況需要經(jīng)歷四類表格:ARP表→MAC轉(zhuǎn)發(fā)表→路由轉(zhuǎn)發(fā)表→NAT轉(zhuǎn)發(fā)表
總結(jié)來將,你的最后的報(bào)文會發(fā)到什么地方,第一步,要判斷內(nèi)網(wǎng)還是外網(wǎng),然后經(jīng)歷交換機(jī)利用MAC轉(zhuǎn)發(fā)分組,第二步,通過路由器時(shí),在入口端時(shí)候要經(jīng)歷路由轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā),到出口端時(shí)如果外面是廣域網(wǎng)直接推出去,如果是局域網(wǎng)又要從第一步開始。所以給你一個(gè)目的ip你都應(yīng)該能判斷它會經(jīng)歷什么樣的路徑。
- 當(dāng)一個(gè)路由器接入網(wǎng)絡(luò)之后,他是如何生成路由轉(zhuǎn)發(fā)表的?
路由表真正的表示是:子網(wǎng)+路由器端口號+跳數(shù),每個(gè)路由器的每個(gè)端口都收到一個(gè)從別的路由發(fā)過來的路由轉(zhuǎn)發(fā)表,但是沒有端口號了。只有子網(wǎng)和跳數(shù)