文章目錄
- 1. 網路層概述
- 1.1 路由器作業原理
- 2. IP:網際協議
- 2.1 IPv4資料報格式
- 2.2 IP地址
- 2.2.1 IP地址的分類
- 2.2.2 廣播和多播
- 2.2.3 子網和子網掩碼
- 2.2.4 CIDR與VLSM
- 2.2.5 公有地址和私有地址
- 2.3 路由控制
- 2.4 IP 分片和重組
- 2.4.1 路徑 MTU 發現
- 2.5 IPv6
- 2.5.1 IPv6 特點
- 2.5.2 IPv6 資料報格式
- 2.5.3 IPv6 地址
- 3. 與IP相關的其他協議
- 3.1 DNS
- 3.2 ARP:地址決議協議
- 3.3 RARP:逆地址決議協議
- 3.4 ICMP:因特網控制報文協議
- 3.5 DHCP:動態主機配置協議
- 3.6 NAT:網路地址轉換
- 3.7 IGMP:因特網組管理協議
- 4. 動態路由選擇協議
- 4.1 RIP:選路資訊協議
- 4.2 OSPF:開放最短路徑優先
- 4.3 BGP:邊界網關協議
- 5. Ping 程式
- 6. Traceroute程式
1. 網路層概述
網路層能夠被分解為兩個相互作用的部分,即資料平面 和 控制平面,
資料平面- 即網路層中每臺路由器的功能,該資料平面功能決定到達路由器輸入鏈路之一的資料報,如何轉發到該路由器的輸出鏈路之一,
控制平面- 控制平面的功能是控制資料報沿著從源主機到目的主機的端到端路徑中路由器之間的路由方式,
- 又分為傳統方法和SDN方法,
網路層需要將分組從一臺發送主機移動到一臺接受主機,需要使用兩種重要的網路層功能
轉發:屬于資料平面,- 當一個分組到達路由器的一條輸入鏈路時,路由器必須將該分組移動到適當的輸出鏈路,
- 每臺網路路由器都維護一張轉發表,通過檢查到達分組首部的一些欄位,轉發分組,
路由選擇:屬于控制平面,- 當分組從發送方流向接收方時,網路層必須決定這些分組所采用的路由或路徑,計算這些路徑的演算法被稱為路由選擇演算法( routing algorithm),
網路服務模型 (network service model) 定義了分組在發送與接收端系統之間的端到端運輸特性,
確保交付- 該服務確保分組將最終達到目的地,
具有時延上界的確保交付- 該服務不僅確保分組的交付,而且在特定的主機到主機時延上界內交付,
有序分組交付- 該服務確保分組以它們發送的順序到達目的地,
確保最小帶寬- 只要發送主機以低于特定位元率的速率傳輸位元(作為分組的組成部分) ,則所有分組最侄訓交付到目的主機,
安全性- 網路層能夠在源加密所有資料報并在目的地解密這些分組,從而對所有運輸層報文段提供機密性,
網路層提供了單一的服務,稱為盡力而為服務(best - effort service),使用盡力而為服務,傳送的分組既不能保證已它們的順序被接收,也不能保證它們最終交付;既不能保證端到端實驗,也不能保證有最小帶寬,盡力而為服務看起來是根本無服務的一種委婉說法!
1.1 路由器作業原理

路由器包括4個組件
輸入埠:執行將一條輸入的物理鏈路與路由器相連接的物理層功能,交換結構:交換結構將路由器的輸入埠與輸出埠相連接,輸出埠:輸出埠存盤從交換結構接收的分組,并通過執行必要的鏈路層和物理層功能在輸出鏈路上傳輸這些分組,路由選擇處理器:執行路由選擇協議,維護路由選擇表以及連接的鏈路狀態資訊,并為路由器計算轉發表,
2. IP:網際協議
IP 是 TCP/IP 協議族中最為核心的協議,所有的 TCP、UDP、ICMP 及 IGMP 資料都以 IP 資料報格式傳輸,
2.1 IPv4資料報格式
網路層分組被稱為資料報,

- 版本號:四位元規定了資料報的IP協議版本,目前是4,稱為IPv4,
- 首部長度:因為包含一些可變數量的選項,所以需要長度來標識,
- 服務型別:服務型別(TOS)用來區分不同型別的IP資料報,其中4 bit的TOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用,4 bit中只能置其中1 bit,用來提供特定等級的服務,
- 總長度:總長度欄位是指整個 I P資料報的長度,以位元組為單位,
- 標識、標志,片偏移:和IP分片有關,
- 生存時間:(Time To Live,TTL)生存時間欄位設定了資料報可以經過的最多路由器數,每經過一個處理它的路由器,它的值就會減1,值為0時則丟棄資料報,確保資料報不會永遠在網路中回圈,
- 協議:該欄位通常僅當一個IP資料報達到其最終目的地才被用于將資料報分用給不同的傳輸層協議,
- 首部校驗和:用于幫助路由器檢測收到IP資料報中的位元錯誤,
- 源 IP 地址和目的 IP 地址:標識從哪里來要去哪里,
- 選項:選項欄位允許IP首部被擴展,些選項很少被使用,并非所有的主機和路由器都支持這些選項,
- 資料:資料報傳送的主要資料,
2.2 IP地址
在用TCP/IP通信時,用IP地址識別主機和路由器,為了保證正常通信,有必要為每個設備配置正確的IP地址,
IP地址(IPv4地址)由32位正整數來表示,IP地址在計算機內部以二進制方式被處理,然而,由于人類社會并不習慣于采用二進制方式,需要采用一種特殊的標記方式,那就是將32位的IP地址以每8位為一組,分成4組,每組以“.”隔開,再將每組數轉換為十進制數(這種方法也叫做“十進制點符號”(Dotdecimal notation),)
例如

IP地址由“網路標識(網路地址)”和“主機標識(主機地址)”兩部分組成(192.168.128.10/24中的“/24”表示從第1位開始到多少位屬于網路標識,在這個例子中,192.168.128之前的都是該IP的網路地址,
網路標識在資料鏈路的每個段配置不同的值,網路標識必須保證相互連接的每個段的地址不相重復,而相同段內相連的主機必須有相同的網路地址,IP地址的“主機標識”則不允許在同一個網段內重復出現,確保在相互連接的整個網路中每臺主機的IP地址都不會相互重疊,即IP地址具有了唯一性,
2.2.1 IP地址的分類
IP地址分為四個級別,分別為A類、B類、C類、D類(還有一個一直未使用的E類,) ,它根據IP地址中從第1位到第4位的位元列對其網路標識和主機標識進行區分,
A類地址- A類IP地址是首位以“0”開頭的地址,從第1位到第8位(去掉分類位剩下7位,) 是它的網路標識,A類地址的后24位相當于主機標識,
- 一個網段內可容納的主機地址上限為16,777,214個,
B類地址- B類IP地址是前兩位為“10”的地址,從第1位到第16位(去掉分類位剩下14位,) 是它的網路標識,B類地址的后16位相當于主機標識,
- 一個網段內 可容納的主機地址上限為65,534個,
C類地址- C類IP地址是前三位為“110”的地址,從第1位到第24位(去掉分類位剩下21位,) 是它的網路標識,C類地址的后8位相當于主機標識,
- 一個網段內可容納的主機地址上限為254個,
D類地址- D類IP地址是前四位為“1110”的地址,從第1位到第32位(去掉分類位剩下28位,) 是它的網路標識,D類地址沒有主機標識,常被用于多播,

- 注意用位元位表示主機地址時,不可以全部為0或全部為1,因為全部為只有0在表示對應的網路地址或IP地址不可獲知的情況下才使用,而全部為1的主機地址通常作為廣播地址,因此,在分配程序中,應該去掉這兩種情況,所以最大可容納的主機會減去2,
2.2.2 廣播和多播
廣播
- 廣播地址用于在同一個鏈路中相互連接的主機之間發送資料包,將IP地址中的主機地址部分全部設定為1,就成為了廣播地址,廣播分為本地廣播和直接廣播兩種,
- 在本網路內的廣播叫做本地廣播,例如網路地址為192.168.0.0/24的情況下,廣播地址是192.168.0.255,因為這個廣播地址的IP包會被路由器屏蔽,所以不會到達192.168.0.0/24以外的其他鏈路上,
- 在不同網路之間的廣播叫做直接廣播,例如網路地址為192.168.0.0/24的主機向192.168.1.255/24的目標地址發送IP包,收到這個包的路由器,將資料轉發給192.168.1.0/24,從而使得所有192.168.1.1~192.168.1.254的主機都能收到這個包(由于直接廣播有一定的安全問題,多數情況下會在路由器上設定為不轉發,) ,
多播
- 多播用于將包發送給特定組內的所有主機,
- 由于?播?法穿透路由,若想給其他?段發送同樣的包,就可以使?可以穿透路由的多播,
- 多播使用D類地址,因此,如果從首位開始到第4位是“1110”,就可以認為是多播地址,而剩下的28位可以成為多播的組編號,
- 從224.0.0.0到239.255.255.255都是多播地址的可用范圍,其中從224.0.0.0到224.0.0.255的范圍不需要路由控制,在同一個鏈路內也能實作多播,
2.2.3 子網和子網掩碼
IP分類的好處與壞處:
- 好處:
- 結構簡單明了,基于網路地址的選路簡單,
- 壞處:
- 網路標識相同的計算機必須同屬于同一個鏈路, A類和B類地址為主機號分配了太多的空間,在實際網路架構當中,一般不會有在同一個鏈路上連接6萬5千多臺計算機的情況,造成資源的浪費,
因為IP分類的壞處,導致的資源浪費,現在所有的主機都要求支持子網編址( RFC 950 [Mogul and Postel 1985]),不是把 IP 地址看成由單純的一個網路號和一個主機號組成,而是把主機號再分成一個子網號和一個主機號,
除了 IP 地址以外,主機還需要知道有多少位元用于子網號及多少位元用于主機號,這是在引導程序中通過子網掩碼來確定的,這個掩碼是一個 32 bit的值,其中值為 1的位元留給網路號和子網號,為0的位元留給主機號,
將子網掩碼和 IP 地址進行與運算,就可以得到網路號,
劃分網路號和主機號的目的是在路由尋址作業中先找到對方所在的網路,再找到所在的主機進行通信,
2.2.4 CIDR與VLSM
- 人們放棄IP地址的分類,采用任意長度分割IP地址的網路標識和主機標識,這種方式叫做CIDR,表示形式 a.b.c.d/x ,其中 /x 表示前 x 位屬于?絡號,
- 在CIDR被應用到互聯網的初期,網路內部采用固定長度的子網掩碼機制,也就是說,當子網掩碼的長度被設定為/25以后,域內所有的子網掩碼都得使用同樣的長度,
- 由于需要更定制化的IP地址分配方式,于是產生了一種可以隨機修改組織內各個子網掩碼長度的機制——VLSM(可變長子網掩碼)(Variable Length Subnet Mask)
2.2.5 公有地址和私有地址
- 隨著互聯網的迅速普及,IP地址不足的問題日趨顯著,
- 對于那些沒有連接互聯網的獨立網路中的主機,只要保證在這個網路內地址唯一,可以不用考慮互聯網即可配置相應的IP地址,
- 所以就出現了私有IP地址,這些地址允許組織內部的 IT ?員??管理、??分配,?且可以重復,私有IP地址范圍如下:

- 而公有IP是相應組織發布管理的,
2.3 路由控制
IP地址的網路地址部分用于進行路由控制,
IP 層在記憶體中有一個路由表,當收到一份資料報并進行發送時,它都要對該表搜索一次,
路由控制表中記錄著網路地址 與 下一步應該發送至路由器的地址,
在發送IP包時,首先要確定IP包首部中的目標地址,再從路由控制表中找到與該地址具有相同網路地址的記錄,根據該記錄將IP包轉發給相應的下一個路由器,如果路由控制表中存在多條相同網路地址的記錄,就選擇一個相同位數最多的網路地址,(最長匹配,) ,

- 默認路由:默認路由是指路由表中任何一個地址都能與之匹配的記錄,默認路由一般標記為0.0.0.0/0或default,
- 主機路由:“IP地址/32”也被稱為主機路由,進行主機路由,意味著要基于主機上網卡上配置的IP地址本身,而不是基于該地址的網路地址部分進行路由,
- 環回地址:環回地址是在同一臺計算機上的程式之間進行網路通信時所使用的一個默認地址,就是127…0.0.1 或者 localhost,使用這個IP或主機名時,資料包不會流向網路,
2.4 IP 分片和重組
每種資料鏈路的最大傳輸單元(MTU)都不相同,每種資料鏈路的 MTU之所以不同,是因為每個不同型別的資料鏈路的使用目的不同,使用目的不同,可承載的MTU也就不同,鑒于IP屬于資料鏈路上一層,它必須不受限于不同資料鏈路的MTU大小,
當 IP 資料包大于?于 MTU 時, IP 資料包就會被分片,經過分片之后的 IP 資料報在被重組的時候,只能由目標主機進行,路由器是不會進?重組的,
在分片處理中,一旦某個分片丟失,則會造成整個IP資料報作廢,
IP 分片的具體程序如下:
- 當生成一個資料報時,設定源和目的IP地址的同時,設定標識號(通常每個標識號是前一個+1),
- 到達目的地之后,能通過標識號確定哪些分片是一個較大的資料報,從而重組,
- 為了確定最后一個分片的到達,最后一個片的標志位元被置為0,其他片為1,
- 為了能按順序組裝分片,使用片偏移來標識位置,
2.4.1 路徑 MTU 發現
所謂路徑MTU(Path MTU)是指從發送端主機到接收端主機之間不需要分片時最大MTU的大小,而路徑MTU發現從發送主機按照路徑MTU的大小將資料報分片后進行發送,進行路徑MTU發現,就可以避免在中途的路由器上進行分片處理,也可以在TCP中發送更大的包,
作業流程如下:
- ?先在發送端主機發送 IP 資料報時,將 IP 包?部的分片禁止標志位設定為 1,根據這個標志位,途中的路由器不會對大資料包進行分片,而是將包丟棄,
- 隨后,通過?個 ICMP 的不可達訊息將資料鏈路上 MTU 的值?起給發送主機,不可達訊息的型別為「需要進行分片但設定了不分片位」,
- 發送主機端每次收到 ICMP 差錯報?時就減少包的大小,以此來定位?個合適的 MTU 值,以便能到達目標主機,
2.5 IPv6
IPv6(IP version 6)是為了根本解決IPv4地址耗盡的問題而被標準化的網際協議,IPv4的地址長度為4個8位位元組,即32位元,而IPv6的地址長度則是原來的4倍,即128位元,
2.5.1 IPv6 特點
- IP地址的擴大與路由控制表的聚合:IP地址依然適應互聯網分層構造,分配與其地址結構相適應的IP地址,盡可能避免路由表膨大,
- 性能提升:包首部長度采用固定的值(40位元組),不再采用首部檢驗碼,簡化首部結構,減輕路由器負荷,路由器不再做分片處理(通過路徑MTU發現只由發送端主機進行分片處理),
- 支持即插即用功能:即使沒有DHCP服務器也可以實作自動分配IP地址,
- 采用認證與加密功能:應對偽造IP地址的網路安全功能以及防止線路竊聽的功能(IPsec),
- 多播、Mobile IP成為擴展功能:多播和Mobile IP被定義為IPv6的擴展功能,
2.5.2 IPv6 資料報格式
IPv6引入的主要變化:
- 擴大的地址容量:IPv6 地址長度從 32 位元增加到 128 位元 這就確保全世界將不會用盡地址,另外,IPv6 還引人了一種稱為任播地址 (anycast address) 的新型地址,這種地址可以使資料報交付給一組主機中的任意一個,
- 簡化高效的 40 位元組首部:許多IPv4 欄位已被舍棄或作為選項,因而所形成的 40 位元組定長首部允許更快地處理 IP 資料報,
- 流標簽:給屬于特殊流的分組加上標簽,這些特殊流是發送方要求進行特殊處理的流,

IPv6 定義的各個欄位:
- 版本:標識IP版本號,
- 流量型別:與IPv4服務型別含義相似,用于提供不同型別的資料報,
- 流標簽:用于標識一條資料報的流,給定優先權或者一些特殊處理,
- 有效載荷長度:16 位元值作為一個元符號整數,給出了 IPv6 資料報中跟在定長的40位元組資料報首部后面的位元組數量,
- 下一個首部:對應IPv4協議欄位,
- 跳限制:就是TTL時間,
- 源地址和目的地址
- 資料
首部和 IPv4 的主要區別
- 取消了分片/重新組裝相關欄位:IPv6不允許在中間路由器上進行分片與重新組裝,這種操作只能在源與目的地上執行,從而大大加快了網路中IP轉發速度,
- 取消了首部校驗和欄位: 因為在資料鏈路層和傳輸層都會校驗,因此 IPv6 直接取消了 IP 的校驗,
- 取消選項欄位:選項欄位不再是標準 IP ?部的?部分了,但它并沒有消失,?是可能出現在 IPv6 首部中的下?個?部指出的位置上,洗掉該選項欄位使的 IPv6 的?部成為固定?度的 40 位元組,
2.5.3 IPv6 地址
IPv6地址長度是128位元,以每16位元為一組(可以用16進制表示),每組用冒號(“:”)隔開進行標記,而且如果出現連續的0時還可以將這些0省略,并用兩個冒號(“::”)隔開,
IPv6 類似 IPv4,也是通過 IP 地址的前幾位標識 IP 地址的種類,主要分為以下幾種:
- 單播地址:用于?對?的通信
- 全域單播地址:是指世界上唯一的一個地址,
- 鏈路本地單播地址:是指在同一個資料鏈路內唯一的地址,它用于不經過路由器,在同一個鏈路中的通信,
- 唯一本地地址:是不進行互聯網通信時所使用的地址,相當于私有IP,
- 多播地址:用于?對多的通信
- 任播地址,用于通信最近的節點,最近的節點是由路由協議決定
3. 與IP相關的其他協議
3.1 DNS
DNS可以將網站的那串字串自動轉換為具體的IP地址,
應用層中對DNS進行了詳細介紹,這里就不多贅述,
DNS相關內容
3.2 ARP:地址決議協議
ARP(Address Resolution Protocol) 是一種解決地址問題的協議,以目標IP地址為線索,用來定位下一個應該接收資料分包的網路設備對應的MAC地址,
ARP是借助ARP請求與ARP回應兩種型別的包確定MAC地址的,
- 主機A為了獲得主機B的MAC地址,起初要通過廣播發送一個ARP請求包,這個包中包含了想要了解其MAC地址的主機IP地址,
- 廣播的包可以被同一個鏈路上所有的主機或路由器接收,因此ARP的請求包也就會被這同一個鏈路上所有的主機和路由器進行決議,
- 如果ARP請求包中的目標IP地址與自己的IP地址一致,那么這個節點就將自己的MAC地址塞入ARP回應包回傳給主機A,
- 為了避免每次都需要進行一次決議,所以通常會把獲取到的MAC地址寫入高速快取,
3.3 RARP:逆地址決議協議
RARP(Reverse Address Resolution Protocol)是將ARP反過來,從MAC地址定位IP地址的一種協議,
例如將列印機服務器等小型嵌入式設備接入到網路時就經常會用得到,
需要架設一臺RARP服務器,從而在這個服務器上注冊設備的MAC地址及其IP地址,然后再將這個設備
接入到網路,

3.4 ICMP:因特網控制報文協議
ICMP的主要功能包括,確認IP包是否成功送達目標地址,通知在發送程序當中IP包被廢棄的具體原因,改善網路設定等,
例如,在IP通信中如果某個IP包因為某種原因未能達到目標地址,那么這個具體的原因將由ICMP負責通知,
ICMP的訊息大致可以分為兩類:一類是通知出錯原因的錯誤訊息,另一類是用于診斷的查詢訊息,

主要的ICMP訊息:
ICMP目標不可達訊息(型別3):IP路由器無法將IP資料包發送給目標地址時,會給發送端主機回傳一個目標不可達(Destination Unreachable Message)的ICMP訊息,并在這個訊息中顯示不可達的具體原因,ICMP重定向訊息(型別5):如果路由器發現發送端主機使用了次優的路徑發送資料,那么它會回傳一個ICMP重定向(ICMP Redirect Message)的訊息給這個主機,在這個訊息中包含了最合適的路由資訊和源資料,ICMP超時訊息(型別11):如果IP資料報的TTL被減至0,則IP路由器將會發送一個ICMP超時的訊息給發送端主機,并通知該包已被丟棄,ICMP回送訊息(型別0、8):用于進行通信的主機或路由器之間,判斷所發送的資料包是否已經成功到達對端的一種訊息,(例如ping)
3.5 DHCP:動態主機配置協議
逐一為每一臺主機設定IP地址會非常繁瑣的事情,特別是在移動使用筆記本電腦、智能終端以及平板電腦等設備時,每移動到一個新的地方,都要重新設定IP地址,
為了實作自動設定IP地址、統一管理IP地址分配,就產生了DHCP(Dynamic Host Configuration Protocol)協議,通過DHCP計算機只要連接到網路,就可以進行TCP/IP通信,
DHCP 作業流程:

- 客戶端首先發起 DHCP 發現包(DHCP DISCOVER) 的 IP 資料報,由于客戶端沒有 IP 地址,也不知道 DHCP 服務器的地址,所以使用的是 UDP 廣播通信,其使用的廣播目的地址是255.255.255.255(埠 67)并且使用 0.0.0.0(埠 68) 作為源 IP 地址,DHCP 客戶端將該 IP 資料報傳遞給鏈路層,鏈路層然后將幀廣播到所有的網路中設備,
- DHCP 服務器收到 DHCP 發現包時,用 DHCP 提供包(DHCP OFFER) 向客戶端做出回應,該包仍然使用 IP 廣播地址 255.255.255.255,該提供包攜帶服務器提供可使用的 IP 地址、子網掩碼、默認網關、DNS 服務器以及 IP 地址有效期,
- 客戶端收到?個或多個服務器的 DHCP 提供包后,從中選擇?個服務器,并向選中的服務器發送 DHCP 請求包(DHCP REQUEST)進行回應,通知想要使用的設定引數,
- 最后,服務器端發送DHCP提供包(DHCP ACK)對DHCP請求包回應應答,允許選擇的引數設定,
DHCP中繼代理
因為該服務用的都是廣播,那如果是大的學校或者企業,會有多個以太網網段,不在一條鏈路無法進行廣播,所以就出現了DHCP中繼代理,通過中繼代理,DHCP服務器即使不在同一個鏈路上也可以實作統一分配和管理IP地址,
作業流程如下:

- DHCP的請求包會廣播給中繼代理服務器,中繼代理接收到該請求包之后,通過單播的形式發送給DHCP服務器,
- 服務器收到請求包之后將應答包單播給中繼代理,中繼代理再廣播給客戶端,
3.6 NAT:網路地址轉換
NAT(Network Address Translator)是用于在本地網路中使用私有地址,在連接互聯網時轉而使用全域IP地址的技術,
除轉換IP地址外,還出現了可以轉換TCP、UDP埠號的NAPT(Network Address Ports Translator)技術,由此可以實作用一個全域IP地址與多個主機的通信,利用不同的埠作為區分,
在NAT(NAPT)路由器的內部,有一張自動生成的用來轉換地址的表,按照表中的映射關系對IP轉換進行處理,

NAT的潛在問題
- 無法從NAT的外部向內部服務器建立連接,
- 轉換表的生成與轉換操作都會產生一定的開銷,
- 通信程序中一旦NAT遇到例外需重新啟動時,所有的TCP連接都將被重置,
- 即使備置兩臺NAT做容災備份,TCP連接還是會被斷開,
解決方法:
- 使用IPv6:如果IP地址完全足夠,就不需要使用NAT,
- 使用NAT穿越:用戶可以完全忽略NAT的存在而進行通信,客戶端主動從 NAT 設備獲取公有 IP 地址,然后自己建立埠映射,然后通過這個埠映射和外界通信,好像不需要NAT設備來進行轉換,
3.7 IGMP:因特網組管理協議
IGMP:因特網組管理協議是用于支持主機和路由器進行多播的協議,它讓一個物理網路上的所有系統知道主機當前所在的多播組,多播路由器需要這些資訊以便知道多播資料報應該向哪些介面轉發,
- IGMP作業在主機和最后?跳路由之間,
- IGMP 報文向路由器申請加入和退出多播組,默認情況下路由器是不會轉發多播包到連接中的主機,除非主機通過 IGMP報文 加入到多播組,主機申請加?到多播組時,路由器就會記錄 IGMP 路由器表,路由器后續就會轉發多播包到對應的主機了,
- IGMP 報文采用 IP 封裝,IP 頭部的協議號為 2,?且 TTL 欄位值通常為 1,因為 IGMP 是作業在主機與連接的路由器之間,
4. 動態路由選擇協議
4.1 RIP:選路資訊協議
RIP是一種分布式的基于距離向量演算法的路由選擇協議,是因特網的協議標準,最大優點是簡單,
- 距離向量的意思是,路由器每30秒會向相鄰路由器發送RIP 報文,RIP 報文包含一個距離向量(跳數),每個路由器都根據它所接收到鄰站的這些距離向量來更新自己的路由表,
- 路由表主要包括三個欄位:目的網路、距離(跳數)和下一條路由器,
- 例如下圖,R2路由器向X路由器發送一條到達Net3網路的跳數,如果X路由器中沒有到達Net3網路的路徑,則會將跳數+1并加入這條記錄;如果有,則比較跳數大小,保留更小的那條路徑,以此類推,X路由器繼續向R1傳遞,
- 根據距離向量生成距離向量表,再抽出較小的路由生成最終的路由控制表,


RIP協議要求網路中每一個路由器都維護從它自己到其他每一個目的網路的唯一最佳距離記錄(即一組距離),
RIP允許一條路由最多只能包含15個路由器,因此距離為16表示網路不可達,所以適合小規模的網路,
缺陷:
- RIP 沒有子網地址的概念,
- 在路由器或鏈路發生故障后,需要很長的一段時間才能穩定下來,
- 采用跳數作為路由度量忽略了其他一些應該考慮的因素,同時,度量最大值為 1 5,則限制了可以使用RIP的網路的大小,
4.2 OSPF:開放最短路徑優先
因為隨著路由器規模越來越大,并且因特網是ISP的網路,每個ISP都有自己的路由器網路,希望按自己的意愿運行路由器,,所以通過將路由器組織進自治系統(Autonomous System,AS)來解決,
OSPF是一個鏈路狀態協議,在一個鏈路狀態協議中,路由器并不與其鄰站交換距離資訊,它采用的是每個路由器主動地測驗與其鄰站相連鏈路的狀態,將這些資訊(資訊包括費用、距離、時延、帶寬等,并不僅僅是跳數)發送給它的其他鄰站,而鄰站將這些資訊在自治系統中傳播出去(洪泛),每個路由器接收這些鏈路狀態資訊,并建立起完整的路由表,
之后只有當鏈路狀態發生變化時,路由器才向所有路由器洪泛發送此資訊,
OSPF的優點:
安全:能夠鑒別OSPF路由器之間的交換,多條相同開銷的路徑:當到達某目的地的多條路徑具有相同的開銷時,OSPF允許使用多條路徑,不需要選擇單一的路徑承載所有流量,對單薄與多播路由選擇的綜合支持:MOSPF(多播OSPF)提供對OSPF的簡單擴展,以便提供多播路由選擇,支持在單個AS中的層次結構:一個OSPF自治系統能夠層次化地配置多個區域,
4.3 BGP:邊界網關協議
BGP 是一種不同自治系統的路由器之間進行通信的外部網關協議,
在BGP中,分組并不是路由到一個特定的目的地址,相反是路由到CIDR化的前綴,每個前綴表示一個子網或子網的集合,
作為一種AS間的路由選擇協議,BGP為每臺路由器提供了一種 完成以下任務的手段:
從鄰居AS獲取前綴的可達性訊息- BGP允許每個子網向因特網的其余部分通告它的存在,
- 兩個運行 BGP 的系統之間建立一條埠179的半永久 TCP 連接,然后交換整個 BGP 路由表,從這個時候開始,在路由表發生變化時,再發送更新信號,
確定到該前綴的最好路由- 通告匹配前綴,如果有多條相同的路由,則依據以下規則依次篩選:
- 路由指派一個本地偏好值作為屬性,具有最高本地偏好值的路由將被選擇,
- 從剩余中選擇擁有最短AS-PATH (包含已經通過的AS串列)的路由,
- 還有剩余的多個路由的情況下,選擇具有最靠近NEXT-HOP路由器(AS-PATH起始路由器介面的IP地址)的路由,
- 如果仍留下多條路由,則使用BGP識別符號選擇,
5. Ping 程式
Ping 程式是為了測驗另一臺主機是否可達,該程式發送一份 ICMP 回顯請求報文給主機,并等待回傳ICMP 回顯應答,利用了ICMP查詢報文型別,
ICMP 回顯請求和回顯應答報文如圖

主要欄位:
型別:判斷ICMP訊息型別,對于PING來說,回送請求是 8,回送應答是 0,- ping 程式使用了 ICMP 里面的 ECHO REQUEST(型別為 8 ) 和 ECHO REPLY(型別為 0),
序號:用于區分連續 ping 的時候發出的多個資料包,每發出?個請求資料包,序號會自動加 1,資料:為了能夠計算往返時間 RTT ,它會在報文的資料部分插?發送時間,
ping 程式作業流程:
- ping 命令執行的時候,源主機首先會構建?個 ICMP 回送請求訊息資料包(型別為8),
- 由ICMP協議將這個資料包和目標IP地址一起傳送給IP層,
- IP層將目標地址設定為目的地址,本機地址設定為源地址,協議欄位設定為1,表示ICMP協議,再設定其他的一些控制資訊,構建一個網路層資料報,
- 下一步,需要加上MAC頭,如果在ARP高速快取中能取到目標地址的MAC地址,則直接獲取,如果不能,通過廣播發送一個ARP請求包,包含想要知道MAC地址的主機IP,獲取ARP回應之后,獲得 MAC 地址,由資料鏈路層構建?個資料幀,目的地址是 IP 層傳過來的 MAC 地址,源地址則是本機的 MAC 地址;還要附加上?些控制資訊,依據以太網的介質訪問規則,將它們傳送出去,
- 目的主機接收到該資料幀之后,經過鏈路層網路層的檢查,交給ICMP協議,目的主機會構建?個 ICMP 回送回應訊息資料包,回送回應資料包的型別欄位為 0 ,序號為接收到的請求資料包中的序號,然后再發送出去給源主機,
- 在規定的時候間內,源主機如果沒有接到 ICMP 的應答包,則說明目標主機不可達;如果接收到了 ICMP 回送回應訊息,則說明目標主機可達,并且用當前時刻減去該資料包最初從源主機上發出的時刻,就是 ICMP 資料包的時間延遲,
6. Traceroute程式
Traceroute程式可以讓我們看到 IP 資料報從一臺主機傳到另一臺主機所經過的路由,Traceroute程式還可以讓我們使用 IP 源路由選項,Traceroute程式利用 ICMP 差錯報文型別,Windows中對等的命令叫做 tracert ,
- traceroute 的第?個作用:故意設定特殊的 TTL,來追蹤去往?的地時沿途經過的路由器,
它的原理就是利用 IP 包的?存期限 從 1 開始按照順序遞增的同時發送 UDP 包,強制接收 ICMP 超時訊息來獲取路由器地址,
它發送一份 TTL 欄位為1 的 IP 資料報給目的主機,處理這份資料報的第一個路由器將 TTL 值減1,丟棄該資料報,并發回一份超時 ICMP 報文,這樣就得到了該路徑中的第一個路由器的地址,然后Traceroute 程式發送一份 TTL 值為2的資料報,這樣我們就可以得到第二個路由器的地址,繼續這個程序直至該資料報到達目的主機,
另外,traceroute 在發送 UDP 包時,會填??個不可能的埠號值作為 UDP 目標埠號(?于 30000 ),當目的主機,收到 UDP 包后,會回傳 ICMP 差錯報文訊息,但這個差錯報文訊息的型別是「埠不可達」,所以,當差錯報文型別是埠不可達時,說明發送方發出的 UDP 包到達了目的主機,
- 另一個作用是:是故意設定不分片,從而確定路徑的 MTU,做路徑MTU發現,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291864.html
標籤:其他
