1、網絡層
1.1、網絡層功能概述
-
主要任務
是把分組從源端傳到目的端,為分組交換網上的不同主機提供通信服務
網絡層傳輸單位是 IP數據報/分組
- 數據報和分組是父與子的關系,數據報是比較長的數據,分組是對數據報進行切割划分出來的片段
-
功能
-
路由選擇與分組轉發
路由選擇就是找路,通過路由選擇算法找到最佳路徑
-
異構網絡互聯
網絡的異構性指的是傳輸介質、數據編碼方式、鏈路控制協議以及不同的數據單元格式和轉發機制,這些特點分別在物理層和數據鏈路層中定義
-
擁塞控制
若所有結點都來不及接受分組,而要丟棄大量分組的話,網絡就處於擁塞狀態。因此要采取一定措施,緩解這種擁塞
- 開環控制:靜態方法,類似數據鏈路層中的信道划分介質訪問控制
- 閉環控制:動態方法,類似數據鏈路層中的隨機訪問介質訪問控制
-
1.2、電路、報文與分組交換
1)為什么要數據交換?
通過交換網絡實現數據的傳遞與交流
2)數據交換方式
- 電路交換
- 報文交換
- 分組交換
- 數據報方式
- 虛電路方式
3)電路交換(獨占資源)
- 原理
在數據傳輸期間,源結點與目的結點之間有一條由中間結點構成的專用物理連接線路,在數據傳輸結束之前,這條線路一直保持
- 步驟
- 建立連接(呼叫/電路建立)
- 通信
- 釋放連接(拆除電路)
舉例:電話網絡
撥號的時候就是建立連接,接收方接收電話就相當於雙方的連接正式建立,然后雙方通話相當於進行數據傳輸,掛斷電話相當於連接釋放,此時其他人就可以利用剛才的鏈路進行數據通信
-
特點
-
獨占資源,用戶始終占用端到端的固定傳輸帶寬
例如A和B打電話,即使兩人不講話,這個資源也被占用
-
適用於 遠程批處理信息傳輸 或系統間 實時性要求高 的大量數據傳輸的情況
-
-
優點
- 通信時延小:因為連接建立好以后,數據就可以直接傳輸了,沒有檢錯
- 有序傳輸:發送方和接收方是獨占資源,因此發送數據、接收數據、傳輸都是按序進行
- 全雙工通信,沒有沖突:通信雙方有不同的信道,不會爭用物理信道
- 實時性強:雙方一旦建立物理通路,便可以實時通信,適用於交互式會話類通信
- 適用於 模擬信號 和 數字信號
-
缺點
- 建立連接時間長:比如電話網絡連接過程,要先撥號,然后等接收方接通以后才能建立連接
- 線路獨占,使用效率低:如果雙方建立連接后不進行數據傳輸,那么該信道就浪費了
- 靈活性差:假如有一個交換設備宕機,該通信線路就無法進行通信了
- 沒有差錯控制能力:只是單純的傳輸數據
- 無數據存儲能力,難以平滑通信量
4)報文交換(存儲轉發)
報文(message):是網絡中交換與傳輸的數據單元,即站點一次性要發送的數據塊(源主機應用發送的信息整體,例如源主機要發送一個pdf文件,那這個pdf文件就是報文)
報文包含了將要發送的完整的數據信息,其長短很不一致,長度不限且可變
- 原理
無需在兩個站點之間建立一條專用通路,其數據傳輸的單位是報文(插一句:數據傳輸基本單位是IP數據報/分組哦),傳送過程采用存儲轉發方式。(可以在一個交換設備A中存儲一會兒,然后可以走B也可以走C,取決於哪條鏈路是空閑的,再轉發出去。)
-
優點
- 無需建立連接
- 存儲轉發,動態分配線路
- 線路可靠性高
- 線路利用率較高
- 多目標服務:一個報文可同時發往多個目的地址
-
缺點
- 有存儲轉發時延,不適合傳送實時或交互式業務的數據
- 報文大小不定,需要網絡節點有較大緩存空間
- 只適用於數字信號
5)分組交換(存儲轉發)
分組:把大的數據塊分割成小的數據塊
- 原理
分組交換與報文交換的工作方式基本相同,都采用存儲轉發方式,形式上的主要差別在於,分組交換網中要限制所傳輸的數據單位的長度,一般選128B。發送節點首先對從終端設備送來的數據報文進行接收、存儲,而后將報文划分成一定長度的分組,並以分組為單位進行傳輸和交換。接收結點將收到的分組組裝成信息或報文
-
優點
-
無需建立連接:不需要預先建立專門通信線路,用戶可隨時發送分組
-
存儲轉發,動態分配線路
-
線路可靠性較高:分組較短,減少了出錯幾率
-
線路利用率較高:通信雙方在不同的時間一段一段地部分占有這條物理通道,多個分組可共享信道
-
相對於報文交換,存儲管理更容易
因為分組的長度固定,相應的換乘區的大小也固定。
適用於計算機之間突發性數據通信:因為分組短小
-
-
缺點
- 有存儲轉發時延
- 需要傳輸額外的信息量:每個分組都要加控制信息,增加了處理的時間
- 當分組是亂序到目的主機時,要對分組進行排序重組
6)數據交換方式的選擇
分組交換的數據傳輸過程可以看作流水線。計算最后一個分組到達目的主機的時延即可
1.3、分組交換 數據報 與 虛電路
1)數據報方式
因特網在用
-
通信過程
- 源主機(A)將報文分成多個分組,依次發送到直接相連的結點(A)
- 結點A收到分組后,對每個分組差錯檢測和路由選擇,不同分組的下一跳結點可能不同
- 結點C收到分組P1后,對分組P1進行差錯檢測,若正確則向結點A發送確認信息,結點A收到結點C確認后則丟棄分組P1副本
- 所有分組到達(主機B)
-
特點
-
數據報方式為網絡層提供 無連接服務
無連接服務:不事先為分組的傳輸確定傳輸路徑,每個分組獨立確定傳輸路徑,不同分組傳輸路徑可能不同。類似微信發消息發生錯位,后面章節會講到分組重組
-
同一報文的不同分組達到目的結點時可能發生亂序、重復與丟失
-
每個分組在傳輸過程中都必須攜帶 源地址 和 目的地址,以及 分組號
-
路由器根據分組的目的地址轉發分組:基於路由協議/算法構建轉發表,檢索轉發表,每個分組獨立選路
-
分組在交換結點存儲轉發時,需要排隊等候處理,這會帶來一定的時延。當通過交換結點的通信量較大或網絡發生擁塞時,這種時延會大大增加,交換結點還可根據情況丟棄部分分組
-
網絡具有冗余路徑,當某一交換結點或一段鏈路出現故障時,可相應地更新轉發表,尋找另一條路徑轉發分組,對故障的適應能力強,適用於突發性通信,不適於長報文、會話式通信
-
2)虛電路方式
虛電路將 數據報方式(體現在分組)和 電路交換方式(體現在建立連接)結合,以發揮兩者優點
-
描述
一條源主機到目的主機類似於電路的路徑(邏輯連接),路徑上所有結點都要維持這條虛電路的建立,都維持一張虛電路表,每一項記錄了一個打開的虛電路的信息
-
通信過程
- 建立連接:A主機給B主機發送“呼叫請求”分組並收到“呼叫應答”分組后才算建立連接
- 數據傳輸:全雙工通信(A和B互相發送數據)。每個分組攜帶虛電路號(作用是指引當前分組應該走哪一條虛電路,分組到路由器以后,路由器檢索轉發表,就知道該分組應該從哪個口轉出去,這里就體現了電路交換方式),分組號、檢驗和等控制信息。
- 釋放連接(虛電路釋放):源主機發送“釋放請求”分組以拆除虛電路
-
特點
-
虛電路方式為網絡層提供 連接服務
連接服務:首先為分組的傳輸確定傳輸路徑( 建立連接),然后沿該路徑(連接)傳輸系列分組,系列分組傳輸路徑相同,傳輸結束后拆除連接。類似打電話
-
一次通信的所有分組都 通過虛電路順序傳送,分組不需攜帶源地址、目的地址等信息。攜帶虛電路號,相對數據報方式開銷小,同一報文的不同分組到達目的結點時不會亂序、重復或丟失
-
分組通過虛電路上的每個節點時,節點只進行差錯檢測,不需進行路由選擇
-
每個節點可能與多個節點之間建立多條虛電路,每條虛電路支持特定的兩個端系統之間的數據傳輸,可以對兩個數據端點的流量進行控制,兩個端系統之間也可以有多條虛電路為不同的進程服務。
-
致命弱點:當網絡中的某個結點或某條鏈路出故障而徹底失效時,則所有經過該結點或該鏈路的虛電路將遭到破壞
-
3)特點總結
4)名詞解析
層次 | 數據單元 | 說明 |
---|---|---|
應用層 | 報文 | 整個信息,如文件 |
傳輸層 | 報文段 | 把很長的報文分割成一小段 |
網絡層 | IP數據報、分組 | 封裝了網絡層的IP地址(源/目的);數據報過大時分組 |
數據鏈路層 | 幀 | 加頭:MAC地址;加尾:FCS幀檢驗序列 |
物理層 | 比特流 | 把比特流轉成信號的形式放到鏈路上進行傳輸 |
2、路由算法與路由協議概述
2.1、路由算法
最佳路由:“最佳”只能是相對於某一種特定要求下得出的較為合理的選擇而已
2.2、路由算法的分類
-
靜態路由算法
(非自適應路由算法) 管理員手工配置路由信息
- 優點:簡便、可靠,在負荷穩定、拓撲變化不大的網絡中運行效果很好,廣泛用於高度安全性的軍事網絡和較小的商業網絡
- 缺點:路由更新慢(路由表需要人工更新),不適用大型網絡
-
動態路由算法
(自適應路由算法)路由器間彼此交換信息,按照路由算法優化出路由表項
- 優點:路由更新快,適用大型網絡,及時響應鏈路費用或網絡拓撲變化
- 缺點:算法復雜,增加網絡負擔
- 分類:
- 全局性:鏈路狀態路由算法,應用於OSPF協議,所有路由器掌握完整的網絡拓撲和鏈路費用信息。適用於較大網絡
- 分散性:距離向量路由算法,應用於RIP協議,路由器只掌握物理相連的鄰居及鏈路費用。適用於較小網絡
2.3、分層次的路由選擇協議
-
自治系統AS(使用內部網關協議)
在單一的技術管理下的一組路由器,而這些路由器使用一種AS內部的路由選擇協議(內部網關協議)和共同的度量以確定分組在該AS內的路由,同時還使用一種AS之間的路由協議(外部網關協議EGP)以確定在AS之間的路由。
一個AS內所有網絡都屬於一個行政單位來管轄,一個自治系統的所有路由器在本自治系統內都必須連通 -
路由選擇協議
- 內部網關協議IGP:一個AS內使用的,例如RIP(距離向量路由算法)、OSPF(鏈路狀態路由算法)
- 外部網關協議EGP:AS之間使用的,例如BGP(BGP-4)
采用分層路由后,路由器被划分為區域,每個路由器知道如何將分組路由到自己所在區域內的目標地址,但對於其他區域內的結構毫不知情。當不同的網絡相互連接時,可將每個網絡當作一個獨立的區域,這樣做的好處是一個網絡中的路由器不必知道其他網絡的拓撲結構
2.4、路由器交付
路由選擇分為直接交付和間接交付,當發送站與目的站在同一網段內,就使用直接交付(對應RIP協議局域網內發送數據過程);反之使用間接交付(對應RIP協議不同局域網之間發送數據過程)。直接交付是在同一網段內,不涉及路由器。
3、IPv4
IP協議:不可靠,無連接,采用分組交換技術
3.1、IPv4分組
IP分組/IP數據報 是數據傳送的基本單元
-
IPv4
- 即現在普遍使用的IP協議(版本為4)
- IP協議定義數據傳送的基本單元——IP分組/IP數據報及其確切的數據格式
- IP協議也包括一套規則,指明分組如何處理、錯誤怎樣控制。特別是,IP協議還包括非可靠投遞的思想(對於出錯的分組丟棄並發送一個ICMP差錯報文),以及與此關聯的分組路由選擇的思想
-
IP協議
- 不可靠(對於出錯的分組丟棄並發送一個ICMP差錯報文)
- 無連接(分組交換的數據報方式就是無連接的)
- 采用分組交換技術(數據報方式)
1)TCP/IP協議棧
- ARP協議為IP協議服務,IP協議為ICMP和IGMP協議服務
注意:在TCP/IP參考模型中,物理層和數據鏈路層一起稱為網絡接口層
2)IPv4分組的格式
一個IP分組由 首部 和 數據 兩部分組成
注意:在網絡層章節,IP數據報和分組不用做太詳細區分
-
數據部分:傳輸層的傳輸單元報文段,因為含有TCP、UDP段
-
首部:
-
首部固定部分(20B)
對於任何一個IP數據報,它的大小都相同,為20字節(20B),一定要有
共5行,每行32bit,即4Byte(字節),所以為 5*4 = 20B,詳見下圖
-
首部可變部分(0~40B):可有可無,大部分情況下沒有
-
首部詳解
-
首部固定部分各組成信息如下:
-
版本:版本字段長度為0-4bit;版本類型為 IPv4/IPv6
-
首部長度(最大60B):
長度為 4-8bit:4位的二進制數,可以表示16個(即2^4)十進制數0 ~ 15,所以長度值為0 ~15
單位是4B:假如長度是8,8 * 4B=32B,則首部長度的大小為32B(包含了可變長度)
首部長度最大值:15 * 4B = 60B(固定20B + 可變40B,5 * 4B + 10 * 4B = 15 * 4B)
長度最小為5:因為首部固定部分長度就為20B,20B/4B=5,所以首部長度最小為5
-
區分服務:指期望獲得哪種類型的服務。比如有的數據報想先發送
-
總長度:首部長度 + 數據部分,單位是1B
占16位:16 — 31
總長度上限值為 2^16-1=65525*1B = 65525B。實際上不會達到上限值,因為長度過大時會分組,以滿足數據鏈路層的MTU(最大數據傳輸單元)的要求
-
生存時間(TTL:time to live):IP分組的保質期。每經過一個路由器生存時間就-1,直到變成0則丟棄。(ICMP協議中有應用)
-
協議:數據部分的協議
需要重點記住的是TCP字段值為6(記:面向連接,很溜,6),UDP字段值為17(記:無連接不可靠,容易遺棄,17)
-
首部檢驗和:只檢驗首部
為什么叫首部檢驗和呢?
因為檢驗首部使用的方法是使用二進制的求和,在數據傳輸過程中,數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和。因為有些字段(例如生存時間,標志等)都可能發生變化,需要通過首部檢驗和檢驗一下發生變化后的數據報有沒有出錯,如果出錯則丟棄
-
源IP地址和目的IP地址:長度為32位
-
-
可變部分信息如下:
-
可選字段:0 ~ 40B
可有可無
大小來源:首部最大60B - 固定部分20B
用來支持排錯、測量以及安全等措施
-
填充:全0
把首部補成4B的整數倍。因為首部的長度單位是4B
-
3.2、IP數據報分片
1)最大傳送單元MTU
Maximum Transfer Unit
鏈路層數據幀可封裝數據的上限。例如以太網的MTU是1500字節。
如果所傳送的IP數據報/分組的長度超過某鏈路的MTU值?——分片!
所以分片的目的是為了在鏈路層傳輸的數據幀的長度不超過MTU值。
2)理解分片
結合IP數據報的標識、標志和片偏移(單位是8B)理解分片
-
標識:16位
同一數據報的分片使用同一標識。一個數據報的長度超過了MTU,就要進行分片,每個分片的標識相同,到了接收端就可以把同一標識的分片組合起來形成原來的數據報
-
標志:3位,只有2位有意義:x _ _
- 最高位保留不用
- 中間位DF(Don't Fragment:不許分片):DF=1為真,禁止分片;DF=0為假,允許分片
- 最低位MF(More Fragment:更多分片):MF=1,后面“還有分片”;MF=0,代表最后一片/沒有分片(數據報長度不大)
- 可以看出,只有 DF = 0 時,MF 才有意義
-
片偏移:
指出較長分組分片后,某片在原分組中的相對位置。以 8B 為單位(首部單位是4B)
可以推斷:除了最后一個分片,每個分片的數據部分長度一定是 8B 的整數倍
3)計算片偏移
-
片偏移分析過程
分片長度不超過1420B,首部為20B,所以每個分片數據部分不超過1400B。原始IP數據報數據部分為3800B,可以分為3個分片:第一和二分片數據部分1400B,第三個分片數據部分1000B。另外分片的首部長度與原始數據報的首部長度相同都為20B。
-
片偏移 = 數據部分起始字節(單位8B)
- 計算第一個分片 片偏移:數據部分起始字節為 0~1399B,0B/8B = 0
- 計算第二個分片 片偏移:數據部分起始字節為1400~2799B,1400B/8B = 175
- 計算第三個分片 片偏移:數據部分起始字節為2800~3799B,2400B/8B = 350
4)IP數據報格式各單位總結
- 一種八片首飾
- 1B 總(種)長度單位
- 8B 片偏移單位
- 首部長度單位 4(飾)B
3.3、IPv4地址
1)IP地址
主機A要與其主機B通信,就要知道主機B在哪個網絡?是哪個主機?
IP地址就是給網絡中的每一個主機或者說每一個主機的接口以及路由器的接口都賦予一個全球唯一化的標識符
2)IP編址的歷史階段
- 分類的IP地址
- 子網的划分
- 構成超網(無分類編址方法)
3)分類的IP地址
-
IP地址組成
實例:身份證號碼:110000 19960101 044 2
六位數字地址碼,八位數字出生日期碼,三位數字順序碼,一位數字校驗碼(性別)
-
IP地址:**全世界唯一 **的 32位/4字節 標識符,標識路由器主機的接口
-
IP地址::={<網絡號>,<主機號>}
-
- IP地址:網絡號 + 主機號;網絡地址:網絡號
- 互聯網中的IP地址
- 左邊黃色區域:網絡號為222.1.3.0,主機號分別是222.1.3.1、222.1.3.2、222.1.3.3
- 圖中的每一個路由器有三個IP地址,因為路由器的每個接口都有一個IP地址
- 綠色區域也可以稱為網絡,叫做無編號網絡(有IP地址,但是由一段線構成)
- 分類的IP地址
D類地址是多播地址:在一對多通信的時候使用的地址。(IP組播地址會講到)
-
A類網絡號范圍 1 ~ 126
A類網絡號占8位(1字節),又因為第一位必須為0,所以后7位可以組2^7 =128個網絡號
范圍為 0 ~ 2^7-1 = 127。其中網絡號全0表示本網,127表示環回地址
故A類地址網絡號范圍為 1~126(去掉 0 和 127)
其中第一個網絡號全0:0.0.0.0表示本網。最后一個網絡號127.0.0.0表示環回地址
私有IP地址:10.0.0.0 ~ 10.255.255.255共1個網段(網絡號)。路由器對目的地址是私有IP地址的數據報一律不進行轉發。要與外部互聯網建立通信,需要通過網絡地址轉換NAT。
-
B類網絡號范圍 128~191
網絡號占16位(2字節)
前兩位必須為10,所以后6位可以組 2^6 = 64個網絡號,最大網絡號為 128 + (2^6-1) = 191
其中第一個網絡號128.0不可指派
私有IP地址:172.16.0.0 ~ 172.31.255.255共16個網段
-
C類網絡號范圍 192~223
網絡號占24位(3字節)
前三位必須為110,所以后5位組成最大網絡號為 192 + (2^5-1) = 223。
其中第一個網絡號192.0.0不可指派
私有IP地址:192.168.0.0 ~ 192.168.255.255共256個網段
- 特殊IP地址
- 私有IP地址
- 不同類的IP地址特點
- A類別:最大可用網絡數為什么減2?
- 網絡號全0時和127時為特殊IP地址
- 為什么每個網絡中的最大主機數減2?
- 主機號全0(只表示網絡)和主機號全1(廣播地址)為特殊IP地址
- B類別:最大可用網絡數為什么減1?
- 128.0 網絡號(B類第一個網絡號)不可指派(但現在已經指派出去了)
- C類別:最大可用網絡數為什么減1?
- 192.0.0(C類第一個網絡號)網絡號不可指派
3.4、網絡地址轉換NAT
-
網絡地址轉換NAT ( Network Address Translation)
在專用網(私有IP地址)連接到因特網的路由器上安裝NAT軟件,安裝了NAT 軟件的路由器叫NAT路由器,它至少有一個有效的外部全球IP地址
-
網絡地址轉換過程
傳輸層報文段(攜帶端口信息)傳到網絡層,網絡層封裝為IP數據報,通過數據鏈路層傳輸到目的主機后,目的主機的傳輸層解封裝取得端口號。
-
網絡層轉換過程
在網絡層A發送IP數據報:封裝了源IP地址192.168.0.3(私有IP地址)和目的IP地址213.18.2.4
傳輸到NAT路由器后,根據NAT轉換表:將LAN端的源IP地址192.168.0.3轉換為WAN端的路由器IP地址172.38.1.5。此時數據報就可以在因特網中被識別和轉發。
B發送IP數據報給A:目的地址為NAT路由器全球IP地址
3.5、子網划分和子網掩碼
1)子網划分
子網號能否全0全1要看情況
-
分類的IP地址的弱點
-
IP地址空間的利用率有時很低
比如單位想申請B類網絡,但是主機數量又不多,這樣就會造成IP地址的浪費
-
兩級IP地址不夠靈活
-
-
有沒有一種辦法可以隨時隨地,靈活增加本單位的網絡,不需要事先去ISP申請新的網絡號呢?
可以使用子網划分!
-
划分子網思想
- 把主機號當中較高的位數作為子網號
- 由於主機號不能全0或全1,所以主機號至少兩位(如果只有一位的話,0或1)
- 子網號能否全0全1要看情況
2)子網掩碼
- 案例:單位網絡
圖中白色方框寫子網的都是子網網絡地址,而網絡145.13.0.0是單位的網絡地址。外部想訪問子網網絡地址,都要先到網絡IP地址為145.13.0.0的路由器接口,然后經過子網掩碼的計算才能訪問子網網絡地址
- 子網掩碼:無論是二級IP地址,還是三級IP地址,只要是網絡號就全寫1(子網號也全寫1,注意並不是第三個字節八位都是子網號都寫1,而是主機號當中較高的位數作為子網號才寫1),只要是主機號就全0
-
如何判斷IP數據報通過路由器分給哪個子網網絡地址?
子網掩碼與IP地址逐位 相與,就得到子網網絡地址
IP地址:網絡號+主機號
網絡地址:網絡號
255的二進制 與任意的二進制 相與,還得原來的二進制
0的二進制 與任意的二進制 相與,都得 0
二進制相與:1 & 1 = 1 ,其余為 0
與程序語言中一致:1表示真,0表示假;都是真1,結果即為真1,有一為假0,結果即為假0
- 將目的主機的IP地址145.13.3.10的子網號3寫為二進制:00000011
- 與子網掩碼的11111111逐位相與(都是1則返回1,否則返回0),得到00000011,即子網號為3
- 所以子網網絡地址為145.13.3.0
3)習題
-
已知目的IP地址是141.14.72.24,子網掩碼是255.255.192.0, 求網絡地址。如果子網掩碼是255.255.224.0,求網絡地址
72 = 64 + 8 = 2^6 + 2^3 = 01001000
此題為已知目的地址,求子網網絡地址。對於第一問:
分析:子網掩碼與IP地址逐位相與,就得到子網網絡地址。因為子網掩碼前兩個字節都是全1,IP地址的前兩個字節與子網掩碼前兩個字節相與后不變,所以只需要求IP地址的72與子網掩碼192的相與結果。
計算:IP地址的72轉為二進制是:01001000,子網掩碼192轉為二進制是11000000,相與后得01000000即64。所以子網網絡地址為141.14.64.0。
第二問同理得子網網絡地址為141.14.64.0
-
某主機的IP地址為180.80.77.55,子網掩碼為255.255.252.0。若該主機向其所在子網發送廣播分組,則目的地址可以是( )。
A.180.80.76.0 B. 180.80.76.255 C. 180.80.77.255 D. 180.80.79.255此題為求同一子網內的目的地址。
- 確定主機號:該主機發送廣播分組,所以目的地址的主機號全1
- 確定網絡號:因為主機IP地址是180開頭,該網絡是B類網絡,前兩個字節為網絡號。故該子網的網絡號是180.80.0.0
- 計算子網號:子網掩碼的252二進制為11111100,可以推出子網號是前6位,后10位是主機號。於是主機的子網號也是前6位(在同一子網內),即77的二進制01001101的前六位是子網號為010011,所以目的地址的子網號也是010011即76
- 得出目的地址:又目的地址的主機號全1,所以目的地址后10位全1。目的地址的后16位是01001111-11111111,前8位轉為十進制是79。故目的地址可以是180.80.79.255
252 = 128 + 64 + 32 + 16 + 8 + 4 = 2^7 + 64^6 + 2^5 + 2^4 + 2^3 + 2^2 = 11111100
255.255.252.0 = 11111111.11111111.11111100.00000000
77 = 64 + 13 = 64 + 8 + 4 + 1 = 2^6 + 2^3 + 2^2 + 2^0 = 01001101
01001100 = 64+8+4 = 76
180.80.76.0
10100111.11111111 = 79.255
-
常見數的二進制數
72 = 64 + 8 = 2^6 + 2^3 = 01001000
4)使用子網進行分組轉發
外部來了一個分組,經過路由器應該如何轉發,才能把分組正確的送到子網內對應的主機上?
路由器轉發分組的算法:
- 提取目的IP地址
- 是否直接交付:用目的地址與網絡中三個子網的子網掩碼分別進行相與操作,相與的結果(子網網絡地址)與其中的一個子網對應上了,說明應該直接轉發給這個子網
- 特定主機路由:路由表中有一行特定主機路由,如果三個子網都沒對應上,就看一下路由表中的特定主機路由是否和目的地址一樣
- 檢查路由表中有無其他路徑:如果路由表並沒有發現和目的地址一樣的特定主機路由,用目的地址與路由表中每一行子網掩碼都進行一次相與,相與后如果發現了對應的網絡,那就按照此網絡規定的下一跳地址轉發
- 默認路由0.0.0.0:如果還是沒有對應的網絡,就把分組交給默認路由(默認路由的子網掩碼也是全0),默認路由會依次發給其他一個路由器,然后循環以上操作。如果在分組的生存時間內還沒找到,就丟棄
- 丟棄,報告轉發分組出錯
3.6、無分類編址CIDR
1)CIDR概念
又稱為 無分類域間路由選擇CIDR(Classless Inter-Domain Routing)
-
消除了傳統的A類,B類和C類地址以及划分子網的概念
CIDR記法:IP地址后加上“/”,然后寫上網絡前綴(可以任意長度1 ~ 32)的位數
如:128.14.32.0/20:表示前20位是網絡號(網絡前綴),后12位是主機號
-
融合子網地址與子網掩碼,方便子網划分
- CIDR把網絡前綴都相同的連續的IP地址組成一個 CIDR地址塊
例如:128.14.35.7/20是某CIDR地址塊中的一個地址
二進制: 10000000 00001110 00100011 00000111
最小地址: 10000000 00001110 00100000 00000000 (128.14.32.0)
最大地址:10000000 00001110 00101111 11111111 (128.14.47.255)
可以計算該地址塊(最小地址/網絡前綴大小)的地址一共是2^12個,因為后12位為主機號
地址塊(網絡前綴):最小地址/網絡前綴大小,128.14.32.0/20。不需要指出起始地址時,可以記為“/20地址塊”
地址掩碼(子網掩碼):11111111 11111111 11110000 00000000 (網絡前綴全1,主機號全0)
舉例:求192.199.170.82/27的地址塊
一共有 2^5 = 32 個IP地址
最小地址:前27位是網絡前綴,所以第四個字節的前3位是網絡前綴,后5位是主機號。將第四個字節82寫為二進制:01010010。最小地址就是后5位全0,01000000=64。故最小地址為192.199.170.64。地址塊為192.199.170.64/27。
最大地址:后5位全1,01011111 = 95。故最大地址為192.199.170.95
地址掩碼(子網掩碼):11111111 11111111 1111111 11100000 (網絡前綴全1,主機號全0)
2)構成超網
將多個子網聚合成一個較大的子網,叫做構成超網,或路由聚合
- 划分子網是將大網絡切割成幾個子網
- 構成超網是將多個子網聚合成一個大子網
方法:將網絡前綴縮短
R1給網絡1和網絡2發送信息,需要查看自己的轉發表有沒有到達網絡1和網絡2的路徑,以及對應的下一跳地址是多少
-
構成超網前轉發表:第一行網絡前綴為網絡1的IP地址,下一跳地址為R2;第二行網絡前綴為網絡2的IP地址,下一跳地址也是R2
如果R2連接的網絡非常多,那么路由器轉發表就會變得異常龐大。既然第一行和第二行的下一跳地址都是R2,那么有什么辦法可以將下一跳地址相同的網絡合並為一行呢?——構成超網(將網絡前綴相同的部分合並為共同網絡前綴,即縮短前綴)
-
如何將網絡前綴縮短(合並為共同網絡前綴):網絡1和網絡2前16位相同,網絡1第三個字節二進制為00000000,網絡2第三個字節二進制為10000000。將網絡前綴由17縮短到16位后地址塊(最小地址/網絡前綴大小)為:206.1.0.0/16,此時就將網絡1和網絡2合並為超網。
-
構成超網后的轉發表:網絡前綴為206.1.0.0/16,下一跳地址為R2
在實際發送數據時,要用數據報當中的目的地址來和轉發表中的網絡前綴進行匹配,因為我們構成了超網,之前具體的網絡1和網絡2現在合並變成了超網,因此在匹配時,會發現在轉發表中有好幾行都是可以匹配的,這時就需要決定,應該選擇哪一個,從哪一跳走出去。——最長前綴匹配
3)最長前綴匹配
- 使用CIDR時,查找路由表可能得到幾個匹配結果,應選擇具有最長網絡前綴的路由。前綴越長,地址塊越小,路由越具體
- 構成超網是將前綴縮短,把具體的網絡變成了寬泛的網絡。在實際轉發時,應該找最具體的網絡,而不是最寬泛的網絡
例題:路由器R0的路由表見下表:若進入路由器R0的分組的目的地址為132.19.237.5,請問該分組,應該被轉發到哪一個下一跳路由器(B ) 。
A. R1 B. R2 C. R3 D. R4
-
R1:目的網絡的網絡前綴為前8位,與目的地址的前8位相同,所以目的地址可以被轉發到R2路由器
-
R2:網絡前綴為前11位,目的地址第二個字節二進制為00010011,目的地址前11位與網絡地址前11位相同,所以可以轉發到R2路由器
-
R3:網絡前綴為前22位,第三個字節二進制為11101000。目的地址第三個字節為11101101。第22位不相同,即網絡前綴不相同,所以目的地址不能轉發到R3路由器
132.19.237.5/22
237 = 11101101;前6位111011為236,與232不符
-
R4:網絡號全0,主機號全0表示默認路由,當目的地址與轉發表都不匹配時,交給默認路由,然后去別的路由器的轉發表找查找與目的地址匹配的網絡。
查找路由表可能得到幾個匹配結果,應選擇具有最長網絡前綴的路由。綜上,答案是B
4)地址塊中子網號可以全0全1
習題:某網絡的IP地址空間為192.168.5.0/24, 采用定長子網划分,子網掩碼255.255.255.248, 則該網絡中的最大子網個數、每個子網內的最大可分配地址個數分別是( B )。
A. 32,8 B.32,6 C.8,32 D. 8,30
網絡號:192.168.5;主機號:0(即第4個字節,共8位)
248 = 11111000:把主機號的前5位作為子網號,共 2^5 = 32
每個子網內主機個數:2^3 = 8 ;減去全0全1;8-2 = 6個
-
注意
-
CIDR地址塊中子網號可以全0全1
-
地址個數需要減2(主機號全0表示網絡,主機號全1表示廣播地址)
3.7、ARP協議
Address Resolution Protocol:地址解析協議
IP地址與MAC地址的映射
resolution [ˌrezəˈluːʃn] 解析
1)局域網內部發送數據過程
- 1號主機給3號主機發送數據過程:
- 傳輸層:把報文切割為報文段
- 網絡層:對報文段進行封裝成分組,添加1號主機IP地址和3號主機IP地址。
- 數據鏈路層:對分組進行封裝成數據幀,添加源MAC地址和目的MAC地址,現在不知道目的主機是哪一個,如何添加目的MAC地址呢?——ARP協議
- ARP協議過程(先廣播再單播)
- 數據鏈路層:將得到的MAC3添入,然后加一個尾部FCS,構成數據幀,再放入物理層上傳輸
- 物理層:形成數字信號或模擬信號,放到鏈路上傳播
- ARP高速緩存:局域網內部主機IP地址與MAC地址的映射
- ARP協議過程:
- 廣播一個ARP的分組請求:廣播分組包括:1號主機IP地址;目的MAC地址所對應的主機的IP地址;1號主機MAC地址;目的MAC地址(全1,表示廣播地址,別和IP地址主機號的全1混淆了)。交換機會在所有端口轉發廣播地址,故2號主機、3號主機和路由器端口都會收到1號主機的廣播分組。
- 單播ARP響應分組:3號主機根據IP地址知道這是發送給自己的,於是單播一個ARP響應分組給1號主機(單播:直接到1號主機)。該響應分組包括3號主機的IP地址和3號主機的MAC地址的映射。
2)不同局域網間發送數據過程
-
不在一個局域網內部,1號主機和5號主機通信過程:
-
ARP高速緩存存儲的是局域網內部IP地址與MAC地址的映射,1號主機IP地址與5號主機IP地址相與,發現與5號主機不在同一網段內
-
目的地址為默認網關的MAC地址:1號主機查詢默認網關(與外界溝通的路由器)的MAC地址MAC6,並添入到目的地址
得到MAC6的過程:
- 1號主機廣播ARP請求分組,因為要的到路由器的MAC地址,所以目的IP地址為路由器的IP地址。
- 路由器單播ARP響應分組,得到MAC地址MAC6。
-
到IP6路由器后,IP地址不變,再次通過ARP 協議得到第二個路由器的MAC地址MAC8,源地址就變成MAC7,目的地址就變成MAC8
-
- 到第二個路由器后,還是通過ARP協議得到MAC5。源地址就變成MAC9,目的地址就變成MAC5
3)ARP協議總結
-
為什么使用ARP協議?
由於在實際網絡的鏈路上傳送數據幀時,最終必須使用MAC地址
-
ARP協議功能
完成主機或路由器IP地址到MAC地址的映射。解決下一跳走哪的問題
-
ARP協議使用過程
1、檢查ARP高速緩存,有對應表項則寫入MAC幀,沒有則用目的MAC地址為FF-FF-FF-FF-FF-FF的幀封裝並廣播ARP請求分組,同一局域網中所有主機都能收到該請求
2、目的主機收到請求后就會向源主機單播一個ARP響應分組,源主機收到后將此映射寫入ARP緩存( ARP緩存也有生存周期TTL:10-20min更新一次) -
ARP協議4種典型情況
-
主機A發給本網絡上的主機B:用ARP找到主機B的硬件地址
-
主機A發給另一網絡上的主機B:用ARP找到本網絡上一個路由器(網關)的硬件地址
-
路由器發給本網絡的主機A:用ARP找到主機A的硬件地址
-
路由器發給另一網絡的主機B:用ARP找到本網絡上的一個路由器的硬件地址
-
-
ARP協議為IP協議提供服務:ARP協議是處於鏈路層和網絡層中間的協議,因為它結合了IP地址和MAC地址。主要划分到網絡層,為IP協議提供服務
4)習題
主機發送IP數據報給主機B,經過了5個路由器,請問此過程總共使用了幾次ARP協議?——6次
如果路由器之間是點對點協議,則2次。
3.8、DHCP協議
動態主機配置協議:Dynamic Host Configuration Protocol
dynamic [daɪˈnæmɪk] 動態的
-
DHCP協議概念
- 動態主機配置協議DHCP是應用層協議,使用客戶/服務器方式,客戶端和服務端通過廣播方式進行交互,基於UDP
-
DHCP協議功能
- DHCP提供即插即用聯網的機制,主機可以從服務器動態獲取IP地址、子網掩碼、默認網關、DNS服務器名稱與IP地址,允許地址重用,支持移動用戶加入網絡,支持在用地址續租
-
DHCP協議流程
-
主機廣播DHCP發現報文
“有沒有DHCP服務器呀?” 試圖找到網絡中的服務器,服務器獲得一個IP地址
-
DHCP服務器廣播DHCP提供報文
“有! 有! 有!” 服務器擬分配給主機一個IP地址及相關配置,先到先得
-
主機廣播DHCP請求報文
“我用你給我的IP地址啦?” 主機向服務器請求提供IP地址
為什么這里還用廣播呢?通知其他DHCP服務器,不要再等我了,把你的IP地址給其他人吧
-
DHCP服務器廣播DHCP確認報文
“用吧! ” 正式將IP地址分配給主機
-
3.9、ICMP協議
Internet Control Message Protocol:互聯網控制報文協議
保障IP數據報轉發
網絡層協議
1)互聯網控制報文協議ICMP
-
ICMP協議作用
為了更有效地轉發IP數據報和提高交付成功的機會
ICMP協議支持主機或路由器
-
ICMP協議功能
- 差錯(或異常)報告:實際通信過程中,總會有分組出錯,對於出錯的分組丟棄並發送一個ICMP差錯報文
- 網絡探詢
-
ICMP報文種類
- ICMP差錯報文
- ICMP詢問報文
-
ICMP報文格式
首部檢驗和只檢驗首部,ICMP報文的檢驗和檢驗數據部分
2)ICMP差錯報文(5種)
-
五種類型:
- 終點不可達:當路由器或主機不能交付數據報時就向源點發送終點不可達報文。無法交付
- 源點抑制(取消):當路由器或主機由於擁塞而丟棄數據報時,就向源點發送源點抑制報文,使源點知道應當把數據報的發送速率放慢。擁塞丟數據時告訴源點慢點
- 時間超過:當路由器收到生存時間TTL=0的數據報時,除丟棄該數據報外,還要向源點發送時間超過報文。當終點在預先規定的時間內不能收到一個數據報的全部數據報片時,就把已收到的數據報片都丟棄(保證一家人整整齊齊),並向源點發送時間超過報文。TTL=0 和 不完整
- 參數問題:當路由器或目的主機收到的數據報的首部中有的字段的值不正確時,就丟棄該數據報,並向源點發送參數問題報文。首部字段有問題
- 改變路由(重定向):路由器把改變路由報文發送給主機,讓主機知道下次應將數據報發送給另外的路由器(可通過更好的路由)。值得更好的路由
-
發送ICMP差錯報文的情況:對於出錯的IP數據報丟棄並發送一個ICMP差錯報文
-
ICMP差錯報文組成:
- ICMP報文的前8字節(類型)+ 出錯的IP數據報首部 + 數據字段前8字節
- ICMP差錯報文是IP數據報的數據部分
- 不應發送ICMP差錯報文的情況
- 對ICMP差錯報告報文不再發送ICMP差錯報告報文
- 對第一個分片的數據報片的所有后續數據報片都不發送ICMP差錯報告報文(只對第一個分片發送)
- 對具有組播地址(一點對部分點,與廣播區分:一點對所有)的數據報都不發送ICMP差錯報告報文
- 對具有特殊地址(如127.0.0.0環回地址或0.0.0.0本網內主機地址)的數據報不發送ICMP差錯報告報文
3)ICMP詢問報文(4種)
-
回送請求 和 回答報文
主機或路由器向特定目的主機發出的詢問,收到此報文的主機必須給源主機或路由器發送ICMP回送回答報文。測試目的站是否可達以及了解其相關狀態
具體應用:PING -
時間戳請求和回答報文:請某個主機或路由器回答當前的日期和時間。用來進行時鍾同步和測量時間。
-
掩碼地址請求和回答報文(不再使用)
-
路由器詢問和通告報文(不再使用)
4)ICMP的應用
-
Ping:測試兩個主機之間的連通性,使用了ICMP回送請求和回答報文
-
Traceroute:跟蹤一個分組從源點到終點的路徑,使用了ICMP時間超過差錯報告報文
工作原理:現有源主機和目的主機,中間有多個路由器。源主機發送一連串數據報,數據報之間的差別就是TTL不同。第一個數據報TTL設置為1,當第一個數據報到達第一個路由器時,TTL-1=0丟棄並返回給源主機一個ICMP時間超過報文。第二個數據報TTL設置為2,當第二個數據報到達第二個路由器時,TTL=0丟棄並返回給源主機一個ICMP時間超過報文。其他數據報依次類推,這樣就可以算出該分組從源主機到目的主機的路徑
4、IPv6
4.1、為什么有IPv6?
-
32位的IPv4地址空間已分配殆盡,無分類編址CIDR和網絡地址轉換NAT方法治標不治本
-
改進首部格式:之前的IPv4首部部分20字節的字段太多,通過改進首部格式達到快速處理/轉發數據報
-
支持QoS:QoS ( Quality of Service,服務質量)指個網絡能夠利用各種基礎技術,為指定的網絡通信提供更好的服務能力,是網絡的一種安全機制,是用來解決網絡延遲和阻塞等問題的一種技術
4.2、IPv6數據報格式
首部40B,首部單位8B
- 版本:指明了協議版本,IPv6的版本就是6
- 優先級:區分數據報的類別和優先級
- 流標簽:“流”是互聯網絡上從特定源點到特定終點的一系列數據報。所有屬於同一個流的數據報都具有同樣的流標簽
- 有效載荷長度:有效載荷的大小(擴展首部+數據)
- 下一個首部:標識下一個擴展首部或上層協議首部。假如有一個數據報,攜帶基本首部和3個擴展首部(1、2、3),每個擴展首部內都有一個字段:下一個首部字段。基本首部也有下一個首部字段。基本首部的下一個首部標識的是擴展首部1,擴展首部1的下一個首部標識的是擴展首部2...最后一個擴展首部指向數據部分。數據部分是運輸層傳來的報文段
- 跳數限制:相當於IPv4的TTL。 如果達到0,路由器丟棄數據報並返回一個ICMP時間超過差錯報文
- 源地址(128位)
- 目的地址(128位)
4.3、IPv6和IPv4
- IPv6將地址從32位(4B) 擴大到 128位(16B),更大的地址空間
- IPv6將IPv4的 校驗和 字段徹底移除,以減少每跳的處理時間
- IPv6將IPv4的可選字段移出首部,變成了 擴展首部,成為靈活的首部格式,路由器通常不對擴展首部進行檢查,大大提高了路由器的處理效率
- IPv6支持 即插即用 (即自動配置),不需要DHCP協議(用足夠多的地址)
- IPv6首部長度必須是 8B 的整數倍,IPv4(一種八片首飾)首部是 4B 的整數倍
- IPv6 只能在主機處分片,IPv4可以在路由器和主機處分片。即使IPv6的分組很長,在路由器也無法分片,如果超過MTU,只能在路由器處 丟棄,並返回 ICMPv6差錯報文
- ICMPv6:附加報文類型 “分組過大”
- IPv6支持資源的預分配,支持實時視像等要求,保證一定的帶寬和時延的應用
- IPv6取消了協議字段(數據使用什么協議),改成下一個首部字段
- IPv6取消了 總長度 字段,改用 有效載荷長度 字段
- IPv6取消了 區分服務 字段
4.4、IPv6地址表示形式
-
一般形式
-
冒號十六進制記法:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170
每4位bit用一個16進制表示,2^4=16,一個16進制數剛好可以表示完4位
每4*4=16位=2B一組,用冒號隔開)
-
-
壓縮形式
-
常規壓縮:如:4BF5:0000:0000:0000:BA5F:039A:000A:2176——4BF5:0:0:0:BA5F:39A:A:2176
全0字段用一個0表示
非全0字段省略掉前面的0,不管有幾個;如:039A > 39A ,000A > A
-
零壓縮形式:如:FF05:0:0:0:0:0:0:B3——FF05::B3
一連串連續的0可以被一對冒號取代
雙冒號表示法在一個地址中僅可出現一次
-
4.5、IPv6基本地址類型
- 單播:一對一通信 可做源地址+目的地址
- 多播:一對多通信 可做目的地址 (取代了IPv4的廣播)
- 任播:一對多中的一個通信 可做目的地址 (通常是離發送方最近的主機)
4.6、IPv6向IPv4過渡的策略
-
雙棧協議:雙協議棧技術就是指在一台設備上同時啟用IPv4協議棧和IPv6協議棧。這樣的話,這台設備既能和IPv4網絡通信,又能和IPv6網絡通信。如果這台設備是一個路由器,那么這台路由器的不同接口上,分別配置了IPv4地址和IPv6地址,並很可能分別連接了IPv4網絡和IPv6網絡。如果這台設備是一個計算機,那么它將同時擁有IPv4地址和IPv6地址,並具備同時處理這兩個協議地址的功能。
-
隧道技術:通過使用互聯網絡的基礎設施在網絡之間傳遞數據的方式。使用隧道傳遞的數據(或負載)可以是不同協議的數據幀或包。隧道協議將其它協議的數據幀或包重新封裝然后通過隧道發送
4.7、總結
5、路由選擇協議
路由器之間的協議
路由選擇協議分類回顧:
- 內部網關協議IGP:一個自治系統AS內使用的,例如RIP協議(使用距離向量算法)、OSPF協議(使用鏈路狀態算法)
- 外部網關協議EGP:AS之間使用的,例如BGP(BGP-4)
5.1、RIP協議與距離向量算法
1)RIP協議(應用層協議)
-
RIP協議
Routing Information Protocol:路由信息協議
是一種分布式的基於距離向量算法的路由選擇協議,是因特網的協議標准,最大優點是簡單。
-
記錄最佳距離
要求網絡中每一個路由器都維護從它自己到其他每一個目的網絡的唯一最佳距離記錄(即一組距離)
-
距離(最多15個路由)
通常為“跳數”,即從源端口到目的端口所經過的路由器個數,經過一個路由器跳數+1
特別的,從一路由器到直接連接的網絡距離為1(也有的書是0)
RIP允許一條路由最多只能包含15個路由器,因此距離為16表示網絡不可達
所以RIP協議只適用於小互聯網
R2的路由表記錄如下:
2)交換對象、內容、時間
-
和誰交換?
僅和 相鄰路由器 交換信息
-
交換什么?
交換的信息是 自己的路由表(路由器把自己的路由表信息放到一個RIP報文里面,發送給相鄰路由器)
-
多久交換一次?
每30秒交換一次路由信息,然后路由器根據新信息更新路由表
若超過180s沒收到鄰居路由器的通告,則判定鄰居沒了,並更新自己路由表
交換過程:
路由器剛開始工作時,只知道直接連接的網絡的距離(距離為1),接着每一個路由器也只和數目非常有限的相鄰路由器交換並更新路由信息
經過若干次更新后,所有路由器最終都會知道到達本自治系統任何一個網絡的最短距離和下一跳路由器的地址,即“收斂”
路由表怎么更新的?——距離向量算法
3)距離向量算法
-
RIP報文
RIP報文包含的信息就是 路由表的全部信息,每兩個路由表之間交換信息其實就是交換的 RIP報文
距離向量算法過程
-
修改相鄰路由器發來的RIP報文中所有表項
- 對地址為X的相鄰路由器發來的RIP報文,修改此報文中的所有項目:把“下一跳”字段中的地址改為X,並把所有的“距離”字段+1
x路由器過30s后,要把自己的路由表信息放到RIP報文中,然后發送給R1
x中的一個表項就是Net3,2,R2。該RIP報文到達R1后,R1吸收x所有表的信息
首先把地址改為x,因為R1的下一跳地址是x,距離+1
-
對修改后的RIP報文中的每一個項目,進行以下步驟:
-
原R1路由表中若沒有Net3,則把該項目直接填入R1路由表
-
原R1路由表中若有Net3,則查看下一跳路由器地址(看一下新的情況是怎么樣的):
若原R1路由表該項目到Net3的下一跳也 是X,則用新的項目 替換 原路由表中的項目(為什么替換,因為路由表30s更新一次,以最新消息為准!
若原R1路由表該項目到Net3的下一跳 不是X,而是Y路由(說明Y也可以到Net3)。則比較距離,使用距離小的路由
-
-
若 180s 還沒收到相鄰路由器X的更新路由表,則把X記為不可達的路由器,即把距離設置為 16
-
返回
4)習題
5)RIP協議報文格式
使用UDP傳輸數據
- RIP是應用層協議,RIP報文:首部 + 路由部分,傳遞給傳輸層的UDP協議,作為UDP報文段的一部分。(為什么叫RIP報文?因為是應用層協議)
- 一個RIP報文最多可包括25個路由,如超過,必須再用一個RIP報文傳送。
6)RIP協議特點
好消息傳得快,壞消息傳的慢
RIP的特點:當網絡出現故障時,要經過比較長的時間(例如數分鍾)才能將此信息傳送到所有的路由器,“慢收斂”
- 網1出現故障,R1路由表更新信息:1 16 _ 表示到網1的距離是16(表示無法到達),直接交付
- 但R2在收到R1的更新報文之前,還發送原來的報文,因為這時R2並不知道R1出了故障
- R1收到R2的報文,更新路由表為1 3 R2(因為R2的報文顯示R2可以到達網1)
- 這樣不斷更新下去,直到R1和R2到網1的距離都增大到16 時,R1和R2才知道網1是不可達的
7)總結
5.2、OSPF協議與鏈路狀態算法
1)OSPF協議
考綱為網絡層協議
-
開放最短路徑優先OSPF(Open shortest path first)協議
“開放”標明OSPF協議不是受某一家廠商控制,而是公開發表的;“ 最短路徑優先”是因為使用了Dijkstra(迪傑斯特拉)提出的最短路徑算法SPF。(該算法十分重要,多次出現)
-
OSPF最主要的特征
就是使用 分布式 的 鏈路狀態協議
-
OSPF的特點
-
和誰交換?
使用 洪泛法(洪水泛濫)向自治系統內所有路由器發送信息,即路由器通過輸出端口向所有相鄰的路由器發送信息,而每一個相鄰路由器又再次將此信息發往其所有的相鄰路由器。類似 廣播 ——最終整個區域內 所有路由器 都得到了這個信息的一個副本
RIP僅和 相鄰路由器 交換信息
-
交換什么?
發送的信息就是與本路由器 相鄰的所有路由器的鏈路狀態 (本路由器和哪些路由器相鄰,以及該鏈路的度量/代價——費用、距離、時延、帶寬等)
RIP交換的信息是 自己的路由表
-
多久交換?
只有當鏈路 狀態發生變化時,路由器才向所有路由器洪泛發送此信息進行交換
RIP是每 30s 路由表交換一次
最后,所有路由器都能建立一個 鏈路狀態數據庫,即 全網拓撲圖
-
2)鏈路狀態路由算法
OSPF的五個重要分組
-
每個路由器通過每10s發送【HELLO問候分組】來發現鄰居結點,並了解鄰居節點的網絡地址
-
設置到它的每個鄰居的 成本度量metric(n. 度量標准)。
-
構造【DD數據庫描述分組】,向鄰站給出自己的鏈路狀態數據庫(全網的拓撲結構圖)中的所有鏈路狀態項目的摘要信息
路由器知道了拓撲結構圖,就知道全網有多少個路由器以及哪些路由器是相連的,還有代價是多少。把這些信息作為摘要信息放到DD數據庫描述分組中, 發給鄰站
-
如果DD分組中的摘要,鄰站自己都有,則鄰站不做處理;如果有 自已沒有的 或者 有更新的,則鄰站發送【LSR鏈路狀態請求分組】,請求 自己沒有的 和 比自己更新的信息
-
收到鄰站的LSR分組后,路由器發送【LSU鏈路狀態更新分組】進行更新
-
更新完畢后,鄰站返回一個【LSAck鏈路狀態確認分組】進行確認
網絡拓撲不是一成不變的,只要一個路由器的鏈路狀態發生變化:
-
泛洪發送【LSU鏈路狀態更新分組】進行更新
-
更新完畢后,其他站返回一個【LSAck鏈路狀態確認分組】進行確認。
-
使用Dijkstra根據自己的鏈路狀態數據庫構造到其他節點間的最短路徑
3)OSPF的區域
自治系統划分的小范圍
為了使OSPF能夠用於規模很大的網絡,OSPF將一個自治系統 再划分 為若干個更小的范圍,叫做 區域。每一個區域都有一個 32位的區域標識符 (用點分十進制表示)
區域也不能太大,在一個區域內的路由器最好 不超過200個。適用於規模比較大的自治系統
- R3、R4、R7既叫做主干路由器,也叫做區域邊界路由器
- R6叫做自治系統邊界路由器,連接其他自治系統
4)OSPF分組格式
直接用IP數據報傳送
- OSPF直接用IP數據報傳送。考綱上寫OSPF是網絡層協議,也有人說是傳輸層協議,因為它是在網絡層封裝為IP數據報的。
5)OSPF其他特點
- 每隔 30min,要刷新一次數據庫中的鏈路狀態
- 由於一個路由器的鏈路狀態 只涉及到與相鄰路由器 的連通狀態,因而與整個互聯網的規模並無直接關系。因此當互聯網規模很大時,OSPF協議要比距離向量協議RIP好得多
- OSPF不存在壞消息傳的慢的問題,它的 收斂速度很快
5.3、BGP協議和路徑向量算法
1)BGP協議(應用層協議)
邊界網關協議 :Border Gateway Protocol
-
和誰交換?
與其他AS的 鄰站BGP發言人 交換信息
在配置BGP時,每一個自治系統AS的管理員都要選擇至少一個路由器來作為AS的發言人。一般來說,兩個BGP發言人都是通過一個共享的網絡連接在一起的,BGP發言人往往就是 自治系統邊界路由器
-
交換什么?
BGP發言人之間交換的 網絡可達性的信息,即要到達某個網絡所要經過的一系列AS
-
多久交換?
發生變化時 更新有變化的部分
2)BGP協議交換信息的過程
BGP所交換的網絡可達性的信息就是要到達某個網絡 所要經過的一系列AS。當BGP發言人互相交換了網絡可達性的信息后,各BGP發言人就根據所采用的策略從收到的路由信息中找出到達各AS的 較好路由(不需要最好,因為網絡環境復雜)
對於AS1自治系統來說,有一個邊界路由器作為 BGP發言人,既使用BGP協議,同時也使用內部網關協議RIP或OSPF
- BGP發言人交換路徑向量(交換一組路徑的信息可以看作交換路徑的一個向量):
- 自治系統AS2的BGP發言人通知主干網AS1的BGP發言人:“要到達網絡N1、 N2、N3和N4可經過AS2”
- 主干網也可以發出通知(因為只要是相鄰的鄰站,就可以交換信息):“ 要到達網絡N5、N6和N7可沿路徑(AS1, AS3)”
3)BGP協議報文格式
借助傳輸層TCP傳送
一個BGP發言人與其他自治系統中的BGP發言人要交換路由信息,就要 先建立TCP連接,即通過TCP傳送(為什么使用TCP而不是UDP,因為使用TCP可以提供更加可靠的服務,簡化路由選擇協議),然后在此連接上交換BGP報文以建立BGP會話(session),利用BGP會話交換路由信息
BGP是應用層協議(看到報文就知道是應用層協議),借助傳輸層TCP傳送
4)BGP協議特點
-
BGP路由表:BGP支持無分類路由選擇 CIDR,因此BGP的路由表也就應當包括目的網絡前綴、下一跳路由器,以及到達該目的網絡所要經過的各個自治系統序列
-
交換內容:在BGP剛剛運行時,BGP的鄰站是交換整個的BGP路由表。但以后只需要在 發生變化時更新有變化的部分(多久交換)。這樣做對節省網絡帶寬和減少路由器的處理開銷都有好處
5)BGP的四種報文
-
OPEN (打開)報文
用來與相鄰的另一個BGP發言人建立關系(BGP報文需要借助TCP連接,OPEN報文就是在實現連接的建立),並認證發送方
-
UPDATE (更新)報文
通告新路徑或撤銷原路徑
-
KEEPALIVE(保活/確認存活)報文
在無UPDATE時(可能很長一段時間都不會給對方發送報文,又想知道對方是不是在線),周期性證實鄰站的連通性;也作為OPEN的確認
-
NOTIFICATION (通知)報文
報告先前報文的差錯;也被用於關閉連接
5.4、三種路由協議比較
- RIP是一種分布式的基於距離向量的內部網關路由選擇協議,通過廣播UDP報文(傳輸層)來交換路由信息
- OSPF是一個內部網關協議,要交換的信息量較大,應使報文的長度盡量短,所以不使用傳輸層協議(如UDP或TCP),而是直接采用網絡層IP
- BGP是一個外部網關協議,在不同的自治系統之間交換路由信息,由於網絡環境復雜,需要保證可靠傳輸,所以采用傳輸層TCP
6、IP組播
6.1、IP數據報的三種傳輸方式
- 單播
- 單播用於發送數據包到單個目的地,且每單播發送一份單播報文都使用一個單播IP地址作為目的地址。是一種 點對點 傳輸方式
- 單播所占的資源和帶寬比較多,因為在發送者和每一接收者之間需要單獨的數據信道
-
廣播
- 廣播是指發送數據包到 同一廣播域 或 子網內 的 所有設備 的一種數據傳輸方式,是一種 點對多點 傳輸方式
- 源地址是單播IP地址,目的地址是 全1廣播地址
-
組播(多播)
- 當網絡中的某些用戶需要特定數據時,組播數據發送者 僅發送一次數據,借助組播路由協議為組播數據包建立組播分發樹,被傳遞的數據到達距離用戶端 盡可能近的節點 后才開始復制和分發,是一種 點對多點 傳輸方式。(到最后一步,一個數據報才會被復制成多個數據報,分發給各主機)
- 組播提高了數據傳送效率。減少了主干網出現擁塞的可能性。組播組中的主機可以是在同一個物理網絡,也可以來自不同的物理網絡(需要有 組播路由器 的支持,組播路由器就是運行組播協議的路由器,組播路由器既可以運行組播協議也可以運行單播協議)
問題來了,發送的時候,怎么知道哪些主機是一個組播組呢?——IP組播地址
6.2、IP組播地址
1)IP組播地址
接收組播數據報
-
分析:我們知道,在因特網中進行通信時,每個主機都有一個全球唯一的IP地址。如果組播組中的某個主機想接收組播數據報,組播數據報如何才能傳到該主機中呢?組播數據報的目的地址肯定不能只寫該主機的IP地址,因為這樣寫,只會發給這一個主機,其他的同處於多播組的主機收不到該數據報。因此,需要在該主機中產生一個IP組播地址,來接收組播數據報
-
IP組播地址:IP組播地址讓源設備能夠將組播數據報發送給一組設備。即屬於多播組的設備將被分配同一個組播組IP地址(一群共同需求主機的相同標識)
-
組播地址范圍:組播地址范圍為 224.0.0.0~239.255.255.255 (D類地址),一個D類地址表示一個組播組。只能用作分組的 目的地址。源地址總是為 單播地址
-
IP組播數據報特點
- 組播數據報也是“盡最大努力交付”,不提供可靠交付,應用於UDP
- 對組播數據報不產生ICMP差錯報文
- 並非所有D類地址都可以作為組播地址
IP組播可以分為兩個部分,一部分是因特網范圍內組播,一部分是局域網內部硬件組播。現在大部分主機都是通過連接局域網,然后再連接因特網,所以最后通過因特網范圍內組播之后,還是要進入到局域網內的硬件組播
2)硬件組播與組播MAC地址
-
硬件組播
- 硬件組播說的其實就是在 局域網范圍 ,對於一個組播數據報,應該怎么發給這些主機或者說給哪些主機
-
組播MAC地址如何得到?
- 比如:現在發來一個單播數據報,進入局域網后應該交給哪個主機?要看主機的MAC地址。同單播地址一樣,組播IP地址也需要 相應的組播MAC地址 在本地網絡中實際傳送幀
- 組播MAC地址(48位 = 6B)以十六進制值 01-00-5E(固定)打頭,余下的6個十六進制位是根據 IP組播組地址(D類IP地址)的 最后23位 轉換得到的(1位十六進制數 = 4 bit;48 bit = 12 位十六進制數)
-
TCP/IP協議使用的以太網多播MAC地址的范圍是:從 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF
-
不同IP地址可能映射成同一MAC地址:可以發現,IP地址不能使用的5位可以構成2^5=32個IP地址。如果這32個主機后面23位一樣,那么這32個IP地址映射到多播MAC地址上就是一樣的。也就是說,會導致32個不同的IP地址映射成了同一個MAC地址。如何解決?——進行過濾
-
過濾:收到多播數據報的主機,還要在IP層利用軟件進行過濾,把不是本主機要接收的數據報丟棄
6.3、IGMP與組播路由選擇協議
1)概述
-
IGMP協議
-
在 一個路由器內部 所使用的協議
-
為什么使用IGMP協議?
對於一個連在局域網上的組播路由器,查詢它所連的局域網上是不是還有主機參加或退出了某個組播組。也就是一個組播路由器通過使用IGMP協議就可以知道它所連的局域網中,是不是還有可以接收組播數據報的主機
-
-
組播路由選擇協議
-
一看到路由選擇,就知道是一個在 多個路由器之間 進行路徑選擇的問題
-
為什么使用組播路由選擇協議?
如果只有IGMP協議,無法完成組播的任務。因為連接在局域網上的組播路由器還必須要和因特網上的其他路由器進行信息交換,才能夠把組播數據報用一個最小的代價(最優路徑)來傳送給組播組中的全部成員。這時就需要使用組播路由選擇協議
-
這兩個協議其實就是在因特網范圍內組播組要使用到的一些協議
2)網際組管理協議IGMP
Internet group management protocol:網際組管理協議
IGMP協議作用:IGMP協議讓路由器知道本局域網上是否有主機(的進程)參加或退出了某個組播組。
- 上圖,有四個標明了IP地址的主機加入了組播組,組播IP地址是226.15.37.123。每個路由器通過使用IGMP協議可以判斷如果如果接收到一個組播組,要不要給我局域網中的主機。
ICMP 和 IGMP 都使用IP數據報傳遞報文
IGMP工作的兩個階段:
-
ROUND 1:
- 主機向組播組地址發送IGMP報文表示要加入:某主機要加入組播組時,該主機向組播組的組播地址發送一個IGMP報文,聲明自己要成為該組的成員
- 加入后,也要告訴其他在組播組中的路由器呀:本地組播路由器收到IGMP報文后,要利用組播路由選擇協議把這組成員關系發給因特網上的其他組播路由器
-
ROUND 2:
-
定期探詢,各主機是否還是組播組成員:本地組播路由器周期性探詢(發送IGMP詢問報文)本地局域網上的主機,以便知道這些主機是否還是組播組的成員。既然是詢問,結果就有兩種!
-
結果1——有主機響應:只要有一個主機對某個組響應,那么組播路由器就認為這個組是活躍的
-
結果2——無響應,則不再發送該成員關系:如果經過幾次探詢后沒有一個主機響應,組播路由器就認為本網絡上的沒有此組播組的主機,因此就不再把這組的成員關系發給其他的組播路由器
有一個細節:組播組中有一台主機響應,該主機相當於代表一樣告訴組播路由器我們還有一個組播組在這,那么該組播組內其他主機就不需要響應了
-
-
成員關系:組播路由器知道的成員關系只是所連接的局域網中有無組播組的成員。 但是並不知道這一組成員有多少個,可以通過組播路由選擇協議知道
3)組播路由選擇協議
-
一個組播組中的成員是動態變化的,比如突然加入或者突然離開。就像看電視一樣,換台。組播路由選擇協議目的是找出 以源主機為根節點的 組播轉發樹
-
組播轉發樹:組播路由協議目的是找出以源主機為根節點的組播轉發樹
- 構造樹可以避免在路由器之間兜圈子
- 對不同的多播組對應於不同的多播轉發樹;同一個多播組,對不同的源點也會有不同的多播轉發樹
組播路由選擇協議常使用的三種算法:
- 基於鏈路狀態的路由選擇
- 基於距離-向量的路由選擇
- 協議無關的組播(稀疏/密集) :可以建立在任何協議之上的
6.4、總結
7、移動IP
7.1、移動IP相關術語
-
即使物理位置發生變化,但是網絡IP地址仍然不變
移動IP技術是移動結點(計算機/服務器等)以固定的網絡IP地址,實現跨越不同網段的漫游功能,並保證了基於網絡IP的網絡權限在漫游過程中不發生任何改變
-
移動結點
具有永久IP地址的移動設備
-
歸屬代理(本地代理)
一個移動結點擁有的舊“居所”稱為歸屬網絡,在歸屬網絡中代表移動節點執行移動管理功能的實體叫做歸屬代理
-
外部代理(外地代理)
在外部網絡中幫助移動節點完成移動管理功能的實體稱為外部代理
-
永久地址(歸屬地址/主地址)
移動站點在歸屬網絡中的原始地址
-
轉交地址(輔地址)
移動站點在外部網絡使用的臨時地址
7.2、移動IP通信過程
- 本地代理可以是路由器也可以是主機
- 主機A移動到了一個新網絡,叫做外部網絡/被訪網絡
A與B通信過程
-
A剛進入外部網絡
- 在外部代理登記獲得一個轉交地址(A的臨時地址,該地址的網絡號與外部網絡一樣),離開時注銷
- 外地代理向本地代理登記轉交地址。(此時,本地代理收到要發送給A的數據報,就往轉發地址轉發)
-
B給A發送數據報
- 本地代理截獲數據報
- 本地代理再封裝數據報,新的數據報 目的地址是轉交地址,發給外部代理(隧道)
- 外部代理拆封數據報並發給A。(外部代理路由器如何把數據報發給A:在一個局域網內進行通信,用的都是MAC地址,當A首次與外部代理通信時,外部代理就會記錄下A的MAC地址)
-
A給B發送數據報
- A用自己的主地址作為數據報源地址,用B的IP地址作為數據報的目的地址
-
A再移動到下一個網絡
- 在新外部代理登記注冊一個轉交地址
- 新外部代理給本地代理發送新的轉交地址(覆蓋舊的)
- 通信
-
A回到了歸屬網絡
- A向本地代理注銷轉交地址
- 按原始方式通信
8、網絡層設備
路由器是一種具有多個輸入端口和多個輸出端口的專用計算機,其任務是轉發分組
8.1、路由器組成與功能
1)路由器組成
-
路由選擇處理機:根據所選定的 路由選擇協議 構造出 路由表,同時經常或定期地和相鄰路由器交換路由信息而不斷地更新和維護路由表
-
交換結構:根據轉發表(路由表得來)對分組進行轉發
-
轉發VS路由選擇:轉發在 路由器內部,把一個分組從一個輸入端口轉發到一個輸出端口;路由選擇在路由之間選一個合適的路徑,把數據從源主機發送到目的主機
-
分組分為 路由交換信息的分組 和 數據分組:不是所有分組都從一個輸入端口轉發到一個輸出端口,若收到RIP/OSPF分組(路由器之間交換信息的分組)等, 則把分組送往路由選擇處理機;若收到數據分組,則查找轉發表並輸出
2)端口對收到的分組的處理
- 輸入端口對線路上收到的分組的處理過程
- 在交換結構中進行分組處理:若收到RIP/OSPF分組(路由器之間交換信息的分組)等, 則把分組送往路由選擇處理機;若收到數據分組,則查找轉發表並輸出
- 為什么分組要排隊:查表和轉發時會產生時延,可以看出 輸入端口中的查找和轉發功能 在路由器的交換功能中是 最重要 的
- 輸出端口的處理過程
- 緩存區域就是 隊列,如果交換結構轉發到輸出端口的速度超出鏈路發送的速度,可以在緩存區域排隊
- 若路由器處理分組的速率趕不上分組進入隊列的速率,則隊列的存儲空間最終必定減少到零,這就使后面再進入隊列的分組由於沒有存儲空間而只能被 丟棄
- 路由器中的輸入或輸出隊列 產生溢出 是造成 分組丟失 的重要原因
3)三層設備的區別
- 路由器:可以互聯兩個不同網絡層協議的網段
- 網橋:可以互聯兩個物理層和鏈路層不同的網段
- 集線器:傻瓜設備,不能互聯兩個物理層不同的網段
8.2、路由表與路由轉發
路由表(下一跳走哪):路由表根據路由選擇算法得出的,主要用途是路由選擇,總用軟件來實現。
默認路由:只要發送的分組在路由表中找不到對應的下一跳IP地址,就應該發給默認路由。
轉發表:轉發表由路由表得來,可以用軟件實現,也可以用特殊的硬件來實現。轉發表必須包含完成轉發功能所必需的信息,在轉發表的每一行必須包含從要到達的目的網絡到輸出端口和某些MAC地址信息的映射。
8.3、路由器安全
安全管理措施:為了保證路由器最基本的安全,需要在路由器上采取設置訪問控制列表和升級IOS進行安全補漏的安全管理措施。(路由器安全是針對黑客入侵的邏輯安全)
- IOS:互聯網操作系統IOS(Internetwork Operating System)