
一 網絡層提供的兩種服務
在計算機網絡領域,網絡層應該向運輸層提供怎樣的服務(「面向鏈接」仍是「無鏈接」)曾引發了長期的爭論。
爭論焦點的實質就是:在計算機通訊中,可靠交付應當由誰來負責?是網絡仍是端系統?算法
(一) 觀點一:讓網絡負責可靠交付
這種觀點認爲,應藉助於電信網的成功經驗,讓網絡負責可靠交付,計算機網絡應模仿電信網絡,使用面向鏈接的通訊方式數據庫
- 通訊以前先創建虛電路 (Virtual Circuit),以保證雙方通訊所需的一切網絡資源
- 若是再使用可靠傳輸的網絡協議,就可以使所發送的分組無差錯按序到達終點,不丟失、不重複

補充:緩存
- 虛電路表示這只是一條邏輯上的鏈接,分組都沿着這條邏輯鏈接按照存儲轉發方式傳送,而並非真正創建了一條物理鏈接
- 請注意,電路交換的電話通訊是先創建了一條真正的鏈接
- 所以分組交換的虛鏈接和電路交換的鏈接只是相似,但並不徹底同樣
(二) 觀點二:網絡提供數據報服務
互聯網的先驅者提出了一種嶄新的網絡設計思路安全
- 網絡層向上只提供簡單靈活的、無鏈接的、盡最大努力交付的數據報服務
- 網絡在發送分組時不須要先創建鏈接
- 每個分組(即 IP 數據報)獨立發送,與其先後的分組無關(不進行編號)
- 網絡層不提供服務質量的承諾
- 即所傳送的分組可能出錯、丟失、重複和失序(不按序到達終點),固然也不保證分組傳送的時限
補充:網絡
採用這種設計思路的好處是:網絡的造價大大下降,運行方式靈活,可以適應多種應用分佈式

二 網際協議 IP
(一) 幾大協議
網際協議 IP 是 TCP/IP 體系中兩個最主要的協議之一性能
與 IP 協議配套使用的還有三個協議:測試
- 地址解析協議 ARP (Address Resolution Protocol)
- 網際控制報文協議 ICMP (Internet Control Message Protocol)
- 網際組管理協議 IGMP (Internet Group Management Protocol)

(二) 各層鏈接須要的中轉設備
- 物理層中繼系統:轉發器 (repeater)
- 數據鏈路層中繼系統:網橋 或 橋接器 (bridge)
- 網絡層中繼系統:路由器 (router)
- 網橋和路由器的混合物:橋路器 (brouter)
- 網絡層以上的中繼系統:網關 (gateway)
(三) 分類的 IP 地址
在這一部分,IP 這個概念是十分重要的,下面咱們重點來說一下其定義和類型
(1) 定義和分類
定義:IP 地址就是給每一個鏈接在互聯網上的主機(或路由器)分配一個在全世界範圍是惟一的 32 位的標識符
分類:
-
將IP地址劃分爲若干個固定類
-
每一類地址都由兩個固定長度的字段組成,其中一個字段是網絡號 net-id,它標誌主機(或路由器)所鏈接到的網絡,而另外一個字段則是主機號 host-id,它標誌該主機(或路由器)
-
主機號在它前面的網絡號所指明的網絡範圍內必須是惟一的
-
因而可知,一個 IP 地址在整個互聯網範圍內是惟一的

(2) 各種 IP 地址的網絡號字段和主機號字段

(3) 點分十進制記法

(4) IP 地址的指派範圍

(5) IP 地址的一些重要特色
(1) IP 地址是一種分等級的地址結構。分兩個等級的好處是:
- 第一,IP 地址管理機構在分配 IP 地址時只分配網絡號,而剩下的主機號則由獲得該網絡號的單位自行分配。這樣就方便了 IP 地址的管理
- 第二,路由器僅根據目的主機所鏈接的網絡號來轉發分組(而不考慮目的主機號),這樣就可使路由表中的項目數大幅度減小,從而減少了路由表所佔的存儲空間
(2) 實際上 IP 地址是標誌一個主機(或路由器)和一條鏈路的接口
- 當一個主機同時鏈接到兩個網絡上時,該主機就必須同時具備兩個相應的 IP 地址,其網絡號 net-id 必須是不一樣的。這種主機稱爲多歸屬主機 (multihomed host)
- 因爲一個路由器至少應當鏈接到兩個網絡(這樣它才能將 IP 數據報從一個網絡轉發到另外一個網絡),所以一個路由器至少應當有兩個不一樣的 IP 地址。
(3) 用轉發器或網橋鏈接起來的若干個局域網仍爲一個網絡,所以這些局域網都具備一樣的網絡號 net-id
(4) 全部分配到網絡號 net-id 的網絡,不管是範圍很小的局域網,仍是可能覆蓋很大地理範圍的廣域網,都是平等的
(四) IP 地址與硬件地址

(五) 地址解析協議 ARP
(1) 什麼是 ARP
通訊時使用了兩個地址:
- IP 地址(網絡層地址)
- MAC 地址(數據鏈路層地址)
已經知道了一個機器(主機或路由器)的IP地址,如何找出其相應的硬件地址?
地址解析協議 ARP 就是用來解決這樣的問題的:從網絡層使用的IP地址,解析出在數據鏈路層使用的硬件地址
(2) 解析的過程
無論網絡層使用的是什麼協議,在實際網絡的鏈路上傳送數據幀時,最終仍是必須使用硬件地址
每個主機都設有一個 ARP 高速緩存 (ARP cache),裏面有所在的局域網上的各主機和路由器的 IP 地址到硬件地址的映射表
解析的過程:
補充:
- ARP請求分組:包含發送方硬件地址 / 發送方 IP 地址 / 目標方硬件地址(未知時填 0) / 目標方 IP 地址
- 本地廣播 ARP 請求(路由器不轉發ARP請求)
- ARP 響應分組:包含發送方硬件地址 / 發送方 IP地址 / 目標方硬件地址 / 目標方 IP 地址
- ARP 分組封裝在物理網絡的幀中傳輸
(3) ARP 高速緩存的做用
存放最近得到的 IP 地址到 MAC 地址的綁定,以減小 ARP 廣播的數量
- 爲了減小網絡上的通訊量,主機 A 在發送其 ARP 請求分組時,就將本身的 IP 地址到硬件地址的映射寫入 ARP 請求分組
- 當主機 B 收到 A 的 ARP 請求分組時,就將主機 A 的這一地址映射寫入主機 B 本身的 ARP 高速緩存中。這對主機 B 之後向 A 發送數據報時就更方便了
(4) 應該注意的問題
-
ARP 用於解決同一個局域網上的主機或路由器的 IP 地址和硬件地址的映射問題
-
若是所要找的主機和源主機不在同一個局域網上,那麼就要經過 ARP 找到一個位於本局域網上的某個路由器的硬件地址,而後把分組發送給這個路由器,讓這個路由器把分組轉發給下一個網絡。剩下的工做就由下一個網絡來作
-
從 IP 地址到硬件地址的解析是自動進行的,主機的用戶對這種地址解析過程是不知道的
-
只要主機或路由器要和本網絡上的另外一個已知 IP 地址的主機或路由器進行通訊,ARP 協議就會自動地將該 IP 地址解析爲鏈路層所須要的硬件地址
(5) 使用 ARP 的四種典型狀況
- 發送方是主機,要把 IP 數據報發送到本網絡上的另外一個主機。這時用 ARP 找到目的主機的硬件地址
- 發送方是主機,要把 IP 數據報發送到另外一個網絡上的一個主機。這時用 ARP 找到本網絡上的一個路由器的硬件地址。剩下的工做由這個路由器來完成
- 發送方是路由器,要把 IP 數據報轉發到本網絡上的一個主機。這時用 ARP 找到目的主機的硬件地址
- 發送方是路由器,要把 IP 數據報轉發到另外一個網絡上的一個主機。這時用 ARP 找到本網絡上另外一個路由器的硬件地址。剩下的工做由這個路由器來完成
(6) 不直接使用硬件地址進行通訊
-
因爲全世界存在着各式各樣的網絡,它們使用不一樣的硬件地址。要使這些異構網絡可以互相通訊就必須進行很是複雜的硬件地址轉換工做,所以幾乎是不可能的事
-
IP 編址把這個複雜問題解決了。鏈接到互聯網的主機只需各自擁有一個惟一的 IP 地址,它們之間的通訊就像鏈接在同一個網絡上那樣簡單方便,由於上述的調用 ARP 的複雜過程都是由計算機軟件自動進行的,對用戶來講是看不見這種調用過程的
-
所以,在虛擬的 IP 網絡上用 IP 地址進行通訊給廣大的計算機用戶帶來了很大的方便
(六) IP 數據報的格式
一個 IP 數據報由首部和數據兩部分組成
首部的前一部分是固定長度,共 20 字節,是全部 IP 數據報必須具備的
在首部的固定部分的後面是一些可選字段,其長度是可變的

下面解釋一下這張圖
(1) 固定部分
- 首部的前一部分是固定長度,共 20 字節,是全部 IP 數據報必須具備的
- 版本——佔 4 位,指 IP 協議的版本。目前的 IP 協議版本號爲 4 (即 IPv4)
- 首部長度——佔 4 位,可表示的最大數值是 15 個單位(一個單位爲 4 字節),所以 IP 的首部長度的最大值是 60 字節
- 總長度——佔 16 位,指首部和數據之和的長度,單位爲字節,所以數據報的最大長度爲 65535 字節。總長度必須不超過最大傳送單元 MTU。
- 標誌(flag) ——佔 3 位,目前只有前兩位有意義。標誌字段的最低位是 MF (More Fragment)。MF = 1 表示後面「還有分片」。MF = 0 表示最後一個分片。標誌字段中間的一位是 DF (Don't Fragment) 。只有當 DF = 0 時才容許分片。
- 片偏移—— 佔13 位,指出:較長的分組在分片後某片在原分組中的相對位置。片偏移以 8 個字節爲偏移單位。
- 生存時間——佔8 位,記爲 TTL (Time To Live),指示數據報在網絡中可經過的路由器數的最大值。
- 協議——佔8 位,指出此數據報攜帶的數據使用何種協議,以便目的主機的 IP 層將數據部分上交給那個處理過程
- 首部檢驗和——佔16 位,只檢驗數據報的首部,不檢驗數據部分。這裏不採用 CRC 檢驗碼而採用簡單的計算方法。
- 源地址和目的地址都各佔 4 字節
(2) 可變部分
IP 首部的可變部分就是一個選項字段,用來支持排錯、測量以及安全等措施,內容很豐富
選項字段的長度可變,從 1 個字節到 40 個字節不等,取決於所選擇的項目增長首部的可變部分是爲了增長
IP 數據報的功能,但這同時也使得 IP 數據報的首部長度成爲可變的。這就增長了每個路由器處理數據報的開銷
實際上這些選項不多被使用
(七) IP 層轉發分組的流程
(1) 基本
- IP 數據報的首部中沒有地方能夠用來指明「下一跳路由器的 IP 地址
- 當路由器收到待轉發的數據報,不是將下一跳路由器的 IP 地址填入 IP 數據報,而是送交下層的網絡接口軟件
- 網絡接口軟件使用 ARP 負責將下一跳路由器的 IP 地址轉換成硬件地址,並將此硬件地址放在鏈路層的 MAC 幀的首部,而後根據這個硬件地址找到下一跳路由器
在路由表中,對每一條路由,最主要的是(目的網絡地址,下一跳地址)
- IP 數據報最終必定能夠找到目的主機所在目的網絡上的路由器(可能要經過屢次的間接交付)
- 只有到達最後一個路由器時,才試圖向目的主機進行直接交付
雖然互聯網全部的分組轉發都是基於目的主機所在的網絡,但在大多數狀況下都容許有這樣的特例,即爲特定的目的主機指明一個路由
採用特定主機路由可以使網絡管理人員能更方便地控制網絡和測試網絡,同時也可在須要考慮某種安全問題時採用這種特定主機路由
(2) 默認路由
-
路由器還可採用默認路由以減小路由表所佔用的空間和搜索路由表所用的時間
-
這種轉發方式在一個網絡只有不多的對外鏈接時是頗有用的
-
默認路由在主機發送 IP 數據報時每每更能顯示出它的好處
-
若是一個主機鏈接在一個小網絡上,而這個網絡只用一個路由器和互聯網鏈接,那麼在這種狀況下使用默認路由是很是合適的

說明:只要目的網絡不是 N1 和 N2,就一概選擇默認路由,把數據報先間接交付路由器 R1,讓 R1 再轉發給下一個路由器
(3) 路由器分組轉發算法
(1) 從數據報的首部提取目的主機的 IP 地址 D, 得出目的網絡地址爲 N
(2) 若網絡 N 與此路由器直接相連,則把數據報直接交付目的主機 D;不然是間接交付,執行(3)
(3) 若路由表中有目的地址爲 D 的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器;不然,執行(4)
(4) 若路由表中有到達網絡 N 的路由,則把數據報傳送給路由表指明的下一跳路由器;不然,執行(5)
(5) 若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;不然,執行(6)
(6) 報告轉發分組出錯
三 劃分子網和構造網
(一) 劃分子網
在 IP 地址中又增長了一個「子網號字段」,使兩級的 IP 地址變成爲三級的 IP 地址
劃分子網純屬一個單位內部的事情。單位對外仍然表現爲沒有劃分子網的網絡(是對內的,外界並不知道)
從主機號借用若干個位做爲子網號 subnet-id,而主機號 host-id 也就相應減小了若干個位
- 當沒有劃分子網時,IP 地址是兩級結構
- 劃分子網後 IP 地址就變成了三級結構
- 劃分子網只是把 IP 地址的主機號 host-id 這部分進行再劃分,而不改變 IP 地址原來的網絡號 net-id

IP地址 ::= {<網絡號>, <子網號>, <主機號>}
- 凡是從其餘網絡發送給本單位某個主機的 IP 數據報,仍然是根據 IP 數據報的目的網絡號 net-id,先找到鏈接在本單位網絡上的路由器
- 而後此路由器在收到 IP 數據報後,再按目的網絡號 net-id 和子網號 subnet-id 找到目的子網
- 最後就將 IP 數據報直接交付目的主機。
一個未劃分子網的 B 類網絡145.13.0.0

劃分爲三個子網後對外還是一個網絡

優勢
- 減小了 IP 地址的浪費
- 使網絡的組織更加靈活
- 更便於維護和管理
缺點
(二) 子網掩碼
從一個 IP 數據報的首部並沒有法判斷源主機或目的主機所鏈接的網絡是否進行了子網劃分,使用子網掩碼 (subnet mask) 能夠找出 IP 地址中的子網部分
- 因此要分辨該IP是否進行了子網劃分,就能夠經過子網掩碼來進行分辨
規則:
- 子網掩碼長度 = 32 位
- 子網掩碼左邊部分的一連串 1,對應於網絡號和子網號
- 子網掩碼右邊部分的一連串 0,對應於主機號
(IP 地址) AND (子網掩碼) =網絡地址

默認子網掩碼

(三) 使用子網時分組的轉發
在不劃分子網的兩級 IP 地址下,從 IP 地址得出網絡地址是個很簡單的事
但在劃分子網的狀況下,從 IP 地址卻不能惟一地得出網絡地址來,這是由於網絡地址取決於那個網絡所採用的子網掩碼,但數據報的首部並無提供子網掩碼的信息
所以分組轉發的算法也必須作相應的改動
(1) 從收到的分組的首部提取目的 IP 地址 D
(2) 先用各網絡的子網掩碼和 D 逐位相「與」,看是否和相應的網絡地址匹配。若匹配,則將分組直接交付。不然就是間接交付,執行 (3)
(3) 若路由表中有目的地址爲 D 的特定主機路由,則將分組傳送給指明的下一跳路由器;不然,執行
(4) 對路由表中的每一行,將子網掩碼和 D 逐位相「與」。若結果與該行的目的網絡地址匹配,則將分組傳送給該行指明的下一跳路由器;不然,執行 (5)
(5) 若路由表中有一個默認路由,則將分組傳送給路由表中所指明的默認路由器;不然,執行 (6)
(6) 報告轉發分組出錯
(四) 無分類編址 CIDR
(1) 基本
劃分子網在必定程度上緩解了互聯網在發展中遇到的困難。然而在 1992 年互聯網仍然面臨三個必須儘早解決的問題:
- B 類地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月所有分配完畢
- 互聯網主幹網上的路由表中的項目數急劇增加(從幾千個增加到幾萬個)
- 整個 IPv4 的地址空間最終將所有耗盡
CIDR幹了什麼:
- CIDR消除了傳統的 A 類、B 類和 C 類地址以及劃分子網的概念,於是能夠更加有效地分配 IPv4 的地址空間。
- CIDR使用各類長度的「網絡前綴」(network-prefix)來代替分類地址中的網絡號和子網號。
- IP 地址從三級編址(使用子網掩碼)又回到了兩級編址。

IP地址 ::= {<網絡前綴>, <主機號>}
CIDR 使用「斜線記法」(slash notation),它又稱爲 CIDR 記法,即在 IP 地址面加上一個斜線「/」,而後寫上網絡前綴所佔的位數(這個數值對應於三級編址中子網掩碼中 1 的個數)。例如: 220.78.168.0/24
CIDR 把網絡前綴都相同的連續的 IP 地址組成「CIDR 地址塊」。
128.14.32.0/20 表示的地址塊共有 212 個地址(由於斜線後面的 20 是網絡前綴的位數,因此這個地址的主機號是 12 位)
- 這個地址塊的起始地址是 128.14.32.0
- 在不須要指出地址塊的起始地址時,也可將這樣的地址塊簡稱爲「/20 地址塊」
- 128.14.32.0/20 地址塊的最小地址:128.14.32.0
- 128.14.32.0/20 地址塊的最大地址:128.14.47.255
- 全 0 和全 1 的主機號地址通常不使用
(2) 路由聚合
- 一個 CIDR 地址塊能夠表示不少地址,這種地址的聚合常稱爲路由聚合,它使得路由表中的一個項目能夠表示不少個(例如上千個)原來傳統分類地址的路由
- 路由聚合有利於減小路由器之間的路由選擇信息的交換,從而提升了整個互聯網的性能
- 路由聚合也稱爲構成超網 (supernetting)
- CIDR 雖然不使用子網了,但仍然使用「掩碼」這一名詞(但不叫子網掩碼)
- 對於 /20 地址塊,它的掩碼是 20 個連續的 1。 斜線記法中的數字就是掩碼中1的個數。
(3) CIDR 記法的其餘形式
10.0.0.0/10 可簡寫爲 10/10,也就是把點分十進制中低位連續的 0 省略。
10.0.0.0/10 隱含地指出 IP 地址 10.0.0.0 的掩碼是 255.192.0.0。此掩碼可表示爲:

網絡前綴的後面加一個星號 * 的表示方法,如 00001010 00*,在星號 * 以前是網絡前綴,而星號 * 表示 IP 地址中的主機號,能夠是任意值。

(4) 最長前綴匹配
- 使用 CIDR 時,路由表中的每一個項目由「網絡前綴」和「下一跳地址」組成。在查找路由表時可能會獲得不止一個匹配結果
- 應當從匹配結果中選擇具備最長網絡前綴的路由:最長前綴匹配 (longest-prefix matching)
- 網絡前綴越長,其地址塊就越小,於是路由就越具體 (more specific)
- 最長前綴匹配又稱爲最長匹配或最佳匹配



(4) 使用二叉線索查找路由表
- 當路由表的項目數很大時,怎樣設法減少路由表的查找時間就成爲一個很是重要的問題
- 爲了進行更加有效的查找,一般是將無分類編址的路由表存放在一種層次的數據結構中,而後自上而下地按層次進行查找。這裏最經常使用的就是二叉線索 (binary trie)
- IP 地址中從左到右的比特值決定了從根結點逐層向下層延伸的路徑,而二叉線索中的各個路徑就表明路由表中存放的各個地址
- 爲了提升二叉線索的查找速度,普遍使用了各類壓縮技術

四 網際控制報文協議 ICMP
(一) ICMP 報文的種類
- 爲了更有效地轉發 IP 數據報和提升交付成功的機會,在網際層使用了網際控制報文協議 ICMP (Internet Control Message Protocol)
- ICMP 是互聯網的標準協議
- ICMP 容許主機或路由器報告差錯狀況和提供有關異常狀況的報告但 ICMP 不是高層協議(看起來好像是高層
- 協議,由於 ICMP 報文是裝在 IP 數據報中,做爲其中的數據部分),而是 IP 層的協議
(1) 格式

ICMP 報文的種類有兩種,即 ICMP 差錯報告報文和 ICMP 詢問報文
ICMP 報文的前 4 個字節是統一的格式,共有三個字段:即類型、代碼和檢驗和。接着的 4 個字節的內容與 ICMP 的類型有關
ICMP 差錯報告報文共有 4 種
- 終點不可達
- 時間超過
- 參數問題
- 改變路由(重定向)(Redirect)
ICMP 詢問報文有兩種
- 回送請求和回答報文
- 時間戳請求和回答報文
- 下面的幾種 ICMP 報文再也不使用:
- 信息請求與回答報文
- 掩碼地址請求和回答報文
- 路由器詢問和通告報文
- 源點抑制報文
(二) ICMP 的應用舉例
PING (Packet InterNet Groper)
- PING 用來測試兩個主機之間的連通性
- PING 使用了 ICMP 回送請求與回送回答報文
- PING 是應用層直接使用網絡層 ICMP 的例子,它沒有經過運輸層的 TCP 或UDP
Traceroute 的應用舉例
- 在 Windows 操做系統中這個命令是 tracert
- 用來跟蹤一個分組從源點到終點的路徑
- 它利用 IP 數據報中的 TTL 字段和 ICMP 時間超過差錯報告報文實現對從源點到終點的路徑的跟蹤
五 互連網的路由選擇協議
(一) 內部網關協議 RIP
路由信息協議 RIP (Routing Information Protocol) 是內部網關協議 IGP 中最早獲得普遍使用的協議
RIP 協議要求網絡中的每個路由器都要維護從它本身到其餘每個目的網絡的距離記錄
RIP 是一種分佈式的、基於距離向量的路由選擇協議。
RIP 協議中的「距離」也稱爲「跳數」(hop count),由於每通過一個路由器,跳數就加 1
RIP 不能在兩個網絡之間同時使用多條路由。RIP 選擇一個具備最少路由器的路由(即最短路由),哪怕還存在另外一條高速(低時延)但路由器較多的路由
(1) RIP 協議的三個特色
- 僅和相鄰路由器交換信息**
- 交換的信息是當前本路由器所知道的所有信息,即本身的路由表
- 按固定的時間間隔交換路由信息,例如,每隔 30 秒。當網絡拓撲發生變化時,路由器也及時向相鄰路由器通告拓撲變化後的路由信息
(2) 工做原理(路由表的創建)
路由器在剛剛開始工做時,只知道到直接鏈接的網絡的距離(此距離定義爲1)。它的路由表是空的
之後,每個路由器也只和數目很是有限的相鄰路由器交換並更新路由信息
通過若干次更新後,全部的路由器最終都會知道到達本自治系統中任何一個網絡的最短距離和下一跳路由器的地址
- RIP 協議讓互聯網中的所有路由器都和本身的相鄰路由器不斷交換路由信息,並不斷更新其路由表,使得從每個路由器到每個目的網絡的路由都是最短的(即跳數最少)
- 雖然全部的路由器最終都擁有了整個自治系統的全局路由信息,但因爲每個路由器的位置不一樣,它們的路由表固然也應當是不一樣的
(3) 距離向量算法
路由器收到相鄰路由器(其地址爲 X)的一個 RIP 報文:
(1) 先修改此 RIP 報文中的全部項目:把「下一跳」字段中的地址都改成 X,並把全部的「距離」字段的值加 1。
(2) 對修改後的 RIP 報文中的每個項目,重複如下步驟:
若項目中的目的網絡不在路由表中,則把該項目加到路由表中。
不然
若下一跳字段給出的路由器地址是一樣的,則把收到的項目替換原路由表中的項目。
不然
若收到項目中的距離小於路由表中的距離,則進行更新,
不然,什麼也不作。
(3) 若 3 分鐘尚未收到相鄰路由器的更新路由表,則把此相鄰路由器記爲不可達路由器,即將距離置爲 16(表示不可達)。
(4) 返回。
(3) RIP 協議的優缺點
優勢:
缺點:
- RIP 限制了網絡的規模,它能使用的最大距離爲 15(16 表示不可達)
- 路由器之間交換的路由信息是路由器中的完整路由表,於是隨着網絡規模的擴大,開銷也就增長。
- 「壞消息傳播得慢」,使更新過程的收斂時間過長
(二) 內部網關協議 OSPF
開放最短路徑優先 OSPF (Open Shortest Path First)是爲克服 RIP 的缺點在 1989 年開發出來的
OSPF 的原理很簡單,但實現起來卻較複雜
- 「開放」代表 OSPF 協議不是受某一家廠商控制,而是公開發表的。
- 「最短路徑優先」是由於使用了 Dijkstra 提出的最短路徑算法 SPF
- 採用分佈式的鏈路狀態協議 (link state protocol)。
- 注意:OSPF 只是一個協議的名字,它並不表示其餘的路由選擇協議不是「最短路徑優先」。
(1) 三個要點
- 向本自治系統中全部路由器發送信息,這裏使用的方法是洪泛法
- 發送的信息就是與本路由器相鄰的全部路由器的鏈路狀態,但這只是路由器所知道的部分信息
- 「鏈路狀態」就是說明本路由器都和哪些路由器相鄰,以及該鏈路的「度量」(metric)。 只有當鏈路狀態發生變
- 化時,路由器才用洪泛法向全部路由器發送此信息。
(2) 鏈路狀態數據庫
- 因爲各路由器之間頻繁地交換鏈路狀態信息,所以全部的路由器最終都能創建一個鏈路狀態數據庫
- 這個數據庫實際上就是全網的拓撲結構圖,它在全網範圍內是一致的(這稱爲鏈路狀態數據庫的同步)
- OSPF 的鏈路狀態數據庫能較快地進行更新,使各個路由器能及時更新其路由表
- OSPF 的更新過程收斂得快是其重要優勢
(3) OSPF 的區域
- 爲了使 OSPF 可以用於規模很大的網絡,OSPF 將一個自治系統再劃分爲若干個更小的範圍,叫作區域
- 每個區域都有一個 32 位的區域標識符(用點分十進制表示)
- 區域也不能太大,在一個區域內的路由器最好不超過 200 個
(4) OSPF 直接用 IP 數據報傳送
- OSPF 不用 UDP 而是直接用 IP 數據報傳送
- OSPF 構成的數據報很短。這樣作可減小路由信息的通訊量
- 數據報很短的另外一好處是能夠沒必要將長的數據報分片傳送
- 但分片傳送的數據報只要丟失一個,就沒法組裝成原來的數據報,而整個數據報就必須重傳
(5) OSPF 的五種分組類型
- 類型1,問候 (Hello) 分組
- 類型2,數據庫描述 (Database Description) 分組
- 類型3,鏈路狀態請求 (Link State Request) 分組
- 類型4,鏈路狀態更新 (Link State Update) 分組,用洪泛法對全網更新鏈路狀態類型5,鏈路狀態確認 (Link
- State Acknowledgment)分組
(三) 外部網關協議 BGP
-
BGP 是不一樣自治系統的路由器之間交換路由信息的協議
-
BGP 較新版本是 2006 年 1 月發表的 BGP-4(BGP 第 4 個版本),即 RFC 4271 ~ 4278
-
能夠將 BGP-4 簡寫爲 BGP
-
互聯網的規模太大,使得自治系統之間路由選擇很是困難。對於自治系統之間的路由選擇,要尋找最佳路由是很不現實的
- 當一條路徑經過幾個不一樣 AS 時,要想對這樣的路徑計算出有意義的代價是不太可能的
- 比較合理的作法是在 AS 之間交換「可達性」信息
-
自治系統之間的路由選擇必須考慮有關策略所以,邊界網關協議 BGP 只能是力求尋找一條可以到達目的網絡且比較好的路由(不能兜圈子),而並不是要尋找一條最佳路由。
(1) BGP 發言人
(2) BGP 交換路由信息
-
一個 BGP 發言人與其餘自治系統中的 BGP 發言人要交換路由信息,就要先創建 TCP 鏈接,而後在此鏈接上交換 BGP 報文以創建 BGP 會話(session),利用 BGP 會話交換路由信息
-
使用 TCP 鏈接能提供可靠的服務,也簡化了路由選擇協議
-
使用 TCP 鏈接交換路由信息的兩個 BGP 發言人,彼此成爲對方的鄰站(neighbor)或對等站(peer)
(3) BGP-4 共使用四種報文
- 打開 (OPEN) 報文,用來與相鄰的另外一個BGP發言人創建關係
- 更新 (UPDATE) 報文,用來發送某一路由的信息,以及列出要撤消的多條路由\
- 保活 (KEEPALIVE) 報文,用來確認打開報文和週期性地證明鄰站關係
- 通知 (NOTIFICATION) 報文,用來發送檢測到的差錯
六 IPv6
(一) 概念和組成
我國在2014-2015年也逐步中止了向新用戶和應用分配 IPv4 地址
解決 IP 地址耗盡的根本措施就是採用具備更大地址空間的新版本的 IP,即 IPv6
所引進的主要變化以下:
- 更大的地址空間。IPv6 將地址從 IPv4 的 32 位 增大到了 128 位。
- 擴展的地址層次結構。
- 靈活的首部格式。 IPv6 定義了許多可選的擴展首部。
- 改進的選項。 IPv6 容許數據報包含有選項的控制信息,其選項放在有效載荷中。
- 容許協議繼續擴充。
- 支持即插即用(即自動配置)。所以 IPv6 不須要使用 DHCP。
- 支持資源的預分配。 IPv6 支持實時視像等要求,保證必定的帶寬和時延的應用。
- IPv6 首部改成 8 字節對齊。首部長度必須是 8 字節的整數倍。原來的 IPv4 首部是 4 字節對齊。
IPv6 數據報由兩大部分組成:
- 基本首部 (base header)
- 有效載荷 (payload)。有效載荷也稱爲淨負荷。有效載荷容許有零個或多個擴展首部 (extension header),再後面是數據部分

(二) IPv4 轉 IPv6
向 IPv6 過渡只能採用逐步演進的辦法,同時,還必須使新安裝的 IPv6 系統可以向後兼容:IPv6 系統必須可以接收和轉發 IPv4 分組,而且可以爲 IPv4 分組選擇路由。
兩種向 IPv6 過渡的策略:
(1) 雙協議棧
雙協議棧 (dual stack) 是指在徹底過渡到 IPv6 以前,使一部分主機(或路由器)裝有兩個協議棧,一個 IPv4 和一個 IPv6。
雙協議棧的主機(或路由器)記爲 IPv6/IPv4,代表它同時具備兩種 IP 地址:一個 IPv6 地址和一個 IPv4 地址
雙協議棧主機在和 IPv6 主機通訊時是採用 IPv6 地址,而和 IPv4 主機通訊時就採用 IPv4 地址
根據 DNS 返回的地址類型能夠肯定使用 IPv4 地址仍是 IPv6 地址

(2) 隧道技術
在 IPv6 數據報要進入 IPv4 網絡時,把 IPv6 數據報封裝成爲 IPv4 數據報,整個的 IPv6 數據報變成了 IPv4 數據報的數據部分
當 IPv4 數據報離開 IPv4 網絡中的隧道時,再把數據部分(即原來的 IPv6 數據報)交給主機的 IPv6 協議棧
