讀書筆記 ---- 《計算機網路—謝希仁第7版》---- 第4章 網路層(下篇)
第4章 網路層(上篇):https://blog.csdn.net/pcwl1206/article/details/83999363
本文目錄:
第4章 網路層(下篇)
4.4 網際網路的路由選擇協議
本節將討論幾種常用的路由選擇協議,也就是要討論路由表中的路由是怎樣得出來得。
4.4.1 有關路由選擇協議的幾個基本概念
4.4.1.1 理想的路由演算法
路由選擇協議的核心就是路由演算法,即需要何種演算法來獲得路由表中的各專案,一個理想的路由演算法應具備如下特點:
1、演算法必須是正確的和完整的。這裡的“正確”的含義是:沿著各路由表所指引的路由,分組一定能夠最終到達目的網路和目的主機;
2、演算法在計算上應簡單。路由選擇協議不應該使網路通訊增加太多的額外開銷;
3、演算法應該能適應通訊量和網路拓撲的變化,即自適應性。當網路中的通訊量傳送變化時,演算法能自適應地改變路由以均衡各鏈路的負載。當某個或某些結點、鏈路發生故障不能工作時,或者修理好了再投入允許時,演算法也能及時地改變路由;
4、演算法應具有穩定性。在網路通訊量和網路拓撲相對穩定的情況下,路由演算法應收斂於一個可以接受的解,而不應使得出的路由不停地變化;
5、演算法應是公平的。路由選擇演算法對所有使用者(除對少數優先順序高的使用者)都是平等的;
6、演算法應是最佳的。路由選擇演算法應當能夠找出最好的路由。使得分組平均時延最小而網路的吞吐量最大。
4.4.1.2 靜態路由和動態路由
倘若從路由演算法能否隨網路的通訊量或拓撲自適應地進行調整變化來劃分,則只有兩大類:靜態路由選擇策略和動態路由選擇策略。
1、靜態路由選擇也叫做非自適應路由選擇,其特點是簡單和開銷較小,但不能及時適應網路狀態的變化。對於較小的網路,完全可以採用靜態路由選擇,用人工配置每一條路由;
2、動態路由選擇也叫做自適應路由選擇,其特點是能較好地適應網路狀態的變化,但實現起來較為複雜,開銷也較大。動態路由選擇適用於較複雜的大網路。
4.4.1.3 分層次的路由選擇協議
網際網路採用的路由選擇協議主要是自適應的(即動態的)、分散式路由選擇協議。
由於網際網路規模非常大以及有些單位不願意外界瞭解本單位的網路佈局細節但是又要接入網際網路,所以可以把整個網際網路劃分為多個較小的自治系統AS(autonomous system),一個AS對其他AS表現出的是一個單一的和一致的路由選擇策略。
一個大的ISP就是一個AS,這樣,網際網路把路由選擇協議分為兩大類:內部閘道器協議IGP和外部閘道器協議EGP。
1、內部閘道器協議IGP(Interior Gateway Protocol):即在一個自治系統內部使用的路由選擇協議。目前這類路由選擇協議使用的最多,如:RIP和OSPF協議。
2、外部閘道器協議EGP(External Gateway Protocol):源主機和目標主機不在一個AS中使用的路由選擇協議。目前使用最多的外部閘道器協議的是BGP的版本4(BGP-4)。
4.4.2 內部閘道器協議RIP
4.4.2.1 工作原理
RIP(Routing Information Protocol),路由資訊協議。是一種分散式的基於距離向量(即跳數)的路由選擇協議。
RIP認為好的路由器就是它通過的路由器的數目少,即“距離短”。RIP允許一條路徑最多隻能包含15個路由器,第16個就不可達了。本節討論的RIP和OSPF都是分散式的路由選擇協議,它們共同的特點就是每一個路由器都要不斷地和其他一些路由器交換路由資訊。我們需要明確三個要點:和哪些路由器交換資訊?交換什麼資訊?在什麼時候交換資訊?
用RIP協議的特點來回答這三個問題:
1、僅和相鄰路由器交換資訊;
2、路由器交換的資訊是當前本路由器所知道的全部資訊,即自己現在的路由表;
3、按固定的時間間隔交換路由資訊。如,每隔30S。
RIP協議讓一個自治系統AS中的所有路由器都和自己相鄰路由器定期交換資訊,並不斷更新其路由表,使得從每一個路由器到每一個目的網路的路由器都是最短的(即跳數最少)。
RIP協議存在的問題:當網路出現故障時,要經過比較長的時間才能將此資訊傳送到所有的路由器,即”好訊息傳的快,而壞訊息傳的慢“。
總之,RIP協議最大的優點是實現簡單、開銷較小。但是RIP的缺點也較多。首先,RIP限制了網路的規模,它能使用的最大距離為15.其次,路由器之間的路由資訊是路由器中完整的路由表,因而隨著網路規模的擴大,開銷也隨之增大。最後,”壞訊息傳播的慢“,使更新過程的收斂時間過長。然而目前在規模較小的網路中,使用RIP協議仍佔多數。
4.4.3 內部閘道器協議OSPF
4.4.3.1 OSPF協議的基本特點
這個協議的名字是開放最短路徑優先OSPF(Open Shortest Path First),它是為了克服RIP的缺點而開發出來的,使用的是最短路徑演算法。
OSPF最主要的特徵就是使用分散式的鏈路狀態協議(link state protocol),而不是像RIP那樣的距離向量協議。和RIP相比,OSPF的三個要點和RIP的都不一樣:
1、向本自治系統中的所有路由器傳送訊息。這裡使用的是洪泛法,這就是路由器通過所有輸出埠向所有相鄰的路由器傳送訊息。而每一個相鄰的路由器又再將此資訊發往其所有相鄰路由器。這樣,最終整個區域中所有的路由器都得到了這個資訊的一個副本。而RIP協議僅僅向自己向自己相鄰的幾個路由器傳送訊息;
2、傳送的訊息就是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器知道的部分資訊;
3、只有當鏈路狀態發生變化時,路由器才向所有路由器用洪泛法傳送此訊息。
其他特點:
4、OSPF允許管理員給每條路由指派不同的代價,即對於不同型別的業務可計算出不同的路由。一般通過頻寬來計算;
5、如果到同一個目的網路有多條相同代價的路徑,那麼可以將通訊量分配給這幾條路徑,這叫做多路徑間的負載均衡。
由於各路由器之間頻繁地交換鏈路狀態資訊,因此,所有的路由器最終都能建立一個鏈路狀態資料庫(link-state database),這個資料庫實際上就是全網的拓撲結構圖。而RIP協議的每一個路由器雖然知道所有的網路的距離以及下一跳路由器,但卻不知道全網的拓撲結構。
為了使OSPF能夠用於規模很大的網路,OSPF將一個自治系統再劃分為若干個更小的範圍,叫做區域(area)。
劃分區域的好處就是把利用洪泛法交換鏈路狀態資訊的範圍侷限於每一個區域而不是整個自治系統,這就減少了整個網路上的通訊量。
4.4.3.2 OSPF的五種分組型別
(1)問候(Hello)分組,用來發現和維持鄰站的可達性;
(2)資料庫描述分組,向鄰站給出自己的鏈路狀態資料庫中的所有鏈路狀態專案的摘要資訊;
(3)鏈路狀態請求分組,向對方請求傳送某些鏈路狀態專案的詳細資訊;
(4)鏈路狀態更新分組,用洪泛法對全網更新鏈路狀態;
(5)鏈路狀態確認分組,對鏈路更新分組確認。
4.4.4 外部閘道器協議BGP
BGP是不同自治系統的路由器之間交換路由資訊的協議,BGP最新版本為BGP-4。
邊界閘道器協議BGP只能是力求尋找一條能夠到達目的網路且比較好的路由(不能兜圈子),並非要尋找一條最佳路由。BGP採用了路徑向量(path vector)路由選擇協議。
每個自治系統需要有一個BGP發言人。一般來說,兩個BGP發言人都是通過一個共享網路連線在一起的,而BGP發言人往往就是BGP邊界路由器。每一個BGP發言人除了必須執行BGP協議外,還必須執行該自治系統所使用的內部閘道器協議,如:RIP或OSPF。
一個BGP發言人與其他AS的BGP發言人要交換路由資訊,就需要先建立TCP連線,然後在此連線上交換BGP報文以建立BGP會話,利用BGP會話交換路由資訊,如增加了新的路由或者撤銷了過時的路由,以及報告出差錯情況等。
下面給出一個BGP發言人交換路徑向量的例子:自治系統AS2的BGP發言人通知主幹網的BGP發言人:”要到達網路N1,N2,N3和N4可以經過AS2。“主幹網在收到這個通知後,就傳送通知:”要達到網路N1,N2,N3和N4可沿路徑(AS1,AS2)“。同理,主幹網還可發出通知:”要到達網路N5,N6和N7可沿路徑(AS1,AS2)“
如果一個BGP發言人收到了其他BGP發言人發來的路徑通知,它就要檢查一下本自治系統是否在此通知路徑中。如果在此通知路徑中,就不能採用這條路徑了,因為會兜圈子。
BGP-4的四種報文:
1、OPEN:開啟報文,用來與相鄰的另一個BGP發言人建立關係,使通訊初始化;
2、UPDATE:更新報文,用來通告某一路由資訊,以及列出要撤銷的多條路由;
3、KEEPALIVE:保活報文,用來週期性地證實鄰站的連通性,一般間隔是30s;
4、NOTIFICATION:通知報文,用來發送檢測到的差錯。
4.4.5 路由器的構成
4.4.5.1 路由器的結構
路由器是一種具有多個輸入埠和多個輸出埠的專用計算機,其任務是轉發分組。從路由器某個輸入埠收到的分組,按照分組要去的目的地(即目的網路),把該分組從路由器的某個合適的輸出埠轉發給下一跳路由器。下一跳路由器也按照這樣的方法處理分組,直到該分組到達終點為止。路由器的轉發分組正是網路層的主要工作。
整個路由器結構可以劃分為兩大部分:路由選擇部分和分組轉發部分。
路由選擇部分也叫控制部分,其核心構建是路由選擇處理機。路由選擇處理機的任務是根據所選定的路由選擇協議構造出路由表,同時經常或者定期地和相鄰路由器交換路由資訊而不斷地更新和維護路由表。
分組轉發部分由三部分組成:交換結構、一組輸入埠和一組輸出埠。
分組在路由器的輸入埠和輸出埠都可能會在佇列中排隊等候處理。若分組處理的速率趕不上分組進入佇列的速率,則佇列的儲存空間最終必定減少到零,這就使後面再進入佇列的分組由於沒有儲存空間而只能被丟棄。
交換結構三種常用的交換方法:通過儲存器、通過匯流排、通過網際網路絡。
4.5 IPV6
IP是網際網路的核心協議。解決IP地址耗盡的根本措施就是採用具有更大地址空間的新版本IP,即IPv6。
4.5.1 IPv6的基本首部
IPv6所引進的主要變化如下:
1、更大的地址空間。IPv6把地址從IPv4的32位增大到4倍,即增大到128位;
2、擴充套件的地址層次結構。IPv6的地址空間很大,因此可以劃分為更多的層次;
3、靈活的首部格式。
4、改進的選項。IPv6允許資料報包含有選項的控制資訊,因而可以包含一些新的選項;
5、允許協議繼續擴充。
6、IPv6首部改為8位元組對齊,原來的IPv4首部是4位元組對齊
....................
IPv6資料報由兩大部分組成,即基本首部和後面的有效載荷。有效載荷允許有零個或多個擴充套件首部,再後面是資料部分。但是,所有的擴充套件首部都不屬於IPv6資料報的首部。
如下圖所示:對IPv6首部中的各欄位的作用進行了說明:
IPv6把原來IPv4首部中選項的功能都放在擴充套件首部中,並把擴充套件首部留給路徑兩端的源點和終點的主機來處理,而資料報途中經過的路由器都不處理這些擴充套件首部,這樣就大大提高了路由器的處理效率。
4.5.2 IPv6的地址
一般來講,一個IPv6資料報的目的地址可以是以下三種基本型別地址之一:
(1)單播(unicast):就是傳統的點對點通訊;
(2)多播(multicast):就是一點對多點的通訊,資料報傳送到一組計算機中的每一個;
(3)任播(anycast):這是IPv6增加的一種型別。任播的終點是一組計算機,但資料報只交付給其中一個,通常是距離最近的一個。
IPv6採用冒號十六進位制記法,各值之間用冒號分隔,0可以省略,例如:
68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
在十六進位制記法中允許零壓縮,即一連串連續的零可以為一對冒號所取代,例如:
FF05:0:0:0:0:0:0:B3 可以壓縮為: FF05:B3
IPv6的地址分類見下表:
4.5.3 IPv4向IPv6過渡
IPv4向IPv6過渡只能採用逐步演進的辦法,同時,還必須使新安裝的IPv6系統能夠向後相容。這就是說,IPv6系統必須能夠接收和轉發IPv4分組,並且能夠為IPv4分組選擇路由。
兩種IPv4向IPv6過渡的策略:雙協議棧和隧道技術。
4.5.3.1 雙協議棧
雙協議棧:指一部分主機或者路由裝有雙協議棧,一個IPv4和一個IPv6。因此雙協議棧主機或者路由既能夠和IPv6的系統通訊,又能夠和IPv4的系統通訊。雙協議棧的主機記為:IPv6/IPv4,表明它同時具有兩種IP地址:一個IPv6地址和一個IPv4地址。但是有可能會出現IPv6中某些欄位(例如:流標號)無法恢復。
4.5.3.2 隧道技術
這種方法的要點就是在IPv6資料報要進入IPv4網路時,把IPv6資料報封裝成為IPv4資料報。如下圖所示:
4.6 IP多播
4.6.1 IP多播的基本概念
在網際網路上進行多播就叫做IP多播。IP多播所傳送的分組需要使用多播IP地址。
與單播相比,在一對多的通訊中,多播可大大節約網路資源。視訊伺服器只需要將視訊分組當作多播資料報來發送,並且只用傳送一次。路由器R1在轉發分組的時候,需要把收到的分組複製成3個副本,分別向R2、R3、R4各轉發1個副本。當分組到達目的區域網時,由於區域網具有硬體多播功能,因此不需要複製分組,在區域網上的多播組成員都能收到這個視訊分組。
在網際網路範圍的多要靠路由器來實現,能夠執行多播協議的路由器稱為多播路由器。
在多播資料報的目的地址中寫入的是多播組的識別符號,然後設法讓加入到這個多播組的主機IP地址與多播組的識別符號關聯起來。這裡的識別符號就是IP地址中的D類地址。多播資料報和一般的IP資料報的區別就是它使用D類IP地址作為目的地址,並且首部協議欄位值是2,表明使用網際管理協議IGMP。
4.6.2 在區域網上進行硬體多播
乙太網硬體地址欄位中的第一個位元組的最低位為1時就代表是多播硬體。
由於多播IP地址和乙太網硬體地址的對映關係不是唯一的,因此收到的多播資料報的主機,還要在IP層利用軟體進行過濾,把不是本主機要接收的資料報丟棄。
4.6.3 網際組管理協議IGMP和多播路由選擇協議
如下圖所示,圖中四臺有IP的主機都參加了一個多播組,其組的地址為226.15.37.123。顯然,多播資料報應當傳送到路由器R1、R2和R3,而不應該傳到R4,因為R4連線的區域網上現在沒有這個多播組的成員。那麼這個路由器又怎樣知道多播組的成員資訊呢?這就需要網際管理協議IGMP(Internet Group Management Protocol)。
IGMP協議是讓連線在本地區域網上的多播路由器知道本區域網上是否有主機參加或者退出了某個多播組。
顯然,僅有IGMP協議是不能完成多播任務的。連線在區域網上的多播路由器還必須和網際網路上的其他多播路由器協同工作,以便把多播資料報用最小代價傳送給所有的組成員。這就需要使用多播路由選擇協議。
4.6.3.1 網際組管理協議IGMP
IGMP的工作可分為兩個階段:
第一個階段:當某臺主機加入新的多播組時,該主機應向多播組的多播地址傳送一個IGMP報文,宣告自己要成為該組的成員。本地的多播路由器收到IGMP報文後,還要利用多播路由選擇協議把這種組成員關係轉發給網際網路上其他多播路由器;
第二個階段:組成員關係是動態的。本地多播路由器要週期性地探詢本地區域網上的主機,以便知道這些主機是否還繼續是組的成員。只要有一臺主機對某個組響應,那麼多播路由器就認為這個組是活躍的。但一個組經過幾次的探詢後仍然沒有一臺主機響應,多播路由器就認為本網路上的主機都離開了這個組,因此也就不再把這個組的成員關係轉發給其他的多播路由器。
多播路由器並不需要保留組成員關係的準確記錄,因為向區域網上的組成員轉發資料報是使用硬體多播。多播路由器只需要知道網路上是否至少還有一臺主機是本地組成員即可。實際上,對詢問報文每一個組只需要有一臺主機發送響應。
4.6.3.2 多播路由選擇協議
在多播過程中一個多播組中的成員是動態變化的。例如在收聽網上某個廣播節目的時候,隨時會有主機加入或者離開這個多播組。多播路由選擇實際上就是要找出以源主機為根節點的多播轉發樹。
在多播轉發樹上,每一個多播路由器向樹的葉節點方向轉發收到的多播資料報,但在多播轉發樹上的路由器不會收到重複的多播轉發報。不難看出,對不同的多播組對應於不同的多播轉發樹。同一個多播組,對不同的源點也會有不同的多博轉發樹。
已經有了多種實用的多播路由選擇協議,它們在轉發多播資料報時使用了以下三種方法:
1、洪泛與剪除
這種方法適合較小的多播組,而所有的組成員接入區域網也是相鄰的。為了避免兜圈子,採用了反向路徑廣播RPB,即每一個路由器在收到一個多播資料報時,先檢查資料報是否是從源點經最短路徑傳送過來的。
路由器R1收到源點發來的多播資料報後,向R2和R3轉發。R2發現R1就在自己到源點的最短路徑上,因此向R3和R4轉發收到的資料報。R3發現R2不在自己到源點最短路徑上,因此將R2發來的多播資料報丟棄掉。其他路由器也這樣進行轉發。R7到源點有兩條最短路徑,我們假設R4的IP地址比R5的IP地址小(多條最短路徑時,選擇相鄰路由器IP地址較小的),因此R7只接收R4傳過來的資料報。最後就得出了上圖中加粗表示的多播轉發樹。
如果在多播轉發樹上的某個路由器發現它的下游樹枝已沒有該多播組的成員,就應把它和下游的樹枝一起剪除。
2、隧道技術
隧道技術多用於多播組的位置在地理位置上很分散的情況。
如圖所示,網1和網2都支援多播,但是路由器R1和R2之間的網路不支援多播,因此路由器R1就對多播資料報進行再次封裝,即加上普通資料報的首部,使之成為向單一目的站傳送的單播資料報,然後通過”隧道“從R1傳送到R2。可以想象汽車過海峽的場景,汽車自己無法過海峽,需要先開上輪渡,到了岸,再開走。
3、基於核心的發現技術
這種方法對於多播組的大小在較大範圍內變化時都合適。有一個多播組G的核心路由器,構建出多播組G的轉發樹。當有路由器要加入時,就從核心向外增多,擴大了多播轉發樹的覆蓋範圍。
4.7 虛擬專用網VPN和網路地址轉換NAT
4.7.1 虛擬專用網VPN
有時一個很大的機構(如連鎖超市或者連鎖酒店),它的很多部分遍佈範圍很廣,但是這些部門又經常需要交換資訊,那麼有兩種方法:
(1)租用電信公司的通訊線路為本機構專用,這種方法雖然簡單,但是租金太高,一般難以承受;
(2)利用公用的網際網路作為本機構各專用網之間的通訊載體,這樣的專用網又稱為虛擬專用網VPN(Virtual Private Network)。
下面給出三個專用的IP地址塊,這些地址只能用於一個機構的內部通訊,而不能用於和網際網路上的主機通訊。在網際網路中的所有路由器,對目的地址為專用地址的資料報一律不進行轉發。
1、10.0.0.0 到 10.255.255.255
2、172.16.0.0 到 172.31.255.255
3、192.168.0.0 到 192.168.255.255
【案例1】本案例說明如何使用IP隧道技術實現虛擬專用網。
每一個場所至少要有一個路由器具有合法的全球IP地址,下圖中的路由器R1和R2和網際網路相連的介面就必須是全球合法的IP地址,但是在專用網內部的介面地址則是專用網的本地地址。
在每一個場所A和B內部的通訊量都不經過網際網路。但如果場所A的主機X要和B中的主機Y通訊,那麼就必須經過路由器R1和R2.主機X向主機Y傳送的IP資料報的源地址我10.0.0.1,目的地址是10.2.0.3。這個資料報先作為本機構的內部資料報傳送到與網際網路連線的路由器R1,路由器R1收到內部資料後,發現其目的網路必須通過網際網路才能到達,就把整個的內部資料進行加密,然後重新加上資料報的首部,封裝成為在網際網路上傳送的外部資料報,其源地址是路由器R1的全球地址125.1.2.3,而目的地址是路由器R2的全球地址194.4.5.6。路由器R2收到資料報後將其資料部分取出來進行解密,恢復其原來的內部資料報(目的地址是10.2.0.3),交付主機Y,完成通訊。
【案例2:遠端訪問】下圖為一個遠端從外網訪問內網的案例:可以看出廣域網資料報有4個IP地址,前兩個為廣域網中使用的源IP地址和目標IP地址,後兩個為區域網中使用的源IP地址和目標IP地址。因為私有網路的IP是無法在網際網路上進行通訊的,所有必須在區域網資料包前面加上廣域網的IP。這樣相當於遠端PC有兩個IP地址,一個是廣域網中的,另一個是區域網中的。所以可以實現遠端訪問企業內部網路。
遠端訪問可以認為把計算機搬進了內網。遠端訪問在實際工作中非常有用,這裡不再講解。
4.7.2 網路地址轉換NAT
在專用網路內部的一些主機本來已經分配到了僅在內網使用的本地IP地址,但是又想和網際網路上的主機通訊(並不需要加密),這時可以使用網路地址轉換NAT(Network Address Translation)。
這種方法需要在專用網連線到網際網路的路由器上安裝NAT軟體。裝有NAT軟體的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通訊時,都要在NAT路由器上將其本地地址轉換為全球IP地址,才能和網際網路連線。如下圖所示:
如果專用網中的主機A向網際網路中的主機B傳送IP資料報,NAT會把主機A的源IP地址從192.168.0.3改為172.38.1.5,然後發出去。所以對於B來說,以為A的IP就是172.38.1.5。當NAT路由器收到B發來的IP資料報時,還要進行一次IP地址轉換。通過NAT地址轉換表,就可以把IP資料報上的目的IP地址172.38.1.5改為新的IP地址192.168.0.3了。
由此可見,當NAT路由器具有n個全球IP地址時,專用網內最多可以同時有n臺主機接入到網際網路。為了更加有效的利用全球IP地址,現在常用的NAT轉換表把運輸層的埠號也利用上了。這樣,就可以使用多個擁有本地地址的主機,共用一個NAT路由器上的全球IP地址。使用埠號的NAT也叫做網路地址與埠號轉換NAPT(Network Address and Port Translation)。如下表所示:
可以看出來,當NAPT路由器收到從網際網路發來的應答時,就可以從IP資料報的資料部分找出運輸層埠號,然後根據不同的目的埠號,從NAPT轉換表中找到目的主機。
這裡需要說明一點:通過NAT路由器的通訊必須是由專用網內的主機發起的。設想網際網路上的主機要發起通訊,當IP資料報到達NAT路由器時,NAT路由器就不知道應當把目的IP地址轉換為專用網內的哪一個IP地址。這就表名,這種專用網內部不能充當伺服器,因為網際網路上的使用者無法請求專用網內的伺服器提供服務。
4.8 多協議標記交換MPLS ---- 瞭解
多協議標記交換MPLS(MultiProtocol Label Switching):利用面向連線技術,使每個分組攜帶一個叫做標記的小整數。當分組到達交換機(即標記交換路由器)時,交換機讀取分組的標記,並用標記值來檢索分組轉發表。這樣就比查詢路由表來轉發分組要快的多。
MPLS的三個特點:
1、支援面向連線的服務質量;
2、支援流量工程,平衡網路負載;
3、有效地支援虛擬專用網VPN。
MPLS有個很重要的概念就是轉發等價類FEC(Forward Equivalence Class)。所謂“轉發等價類”就是路由器按照同樣方式對待的IP資料報集合。