計算機網絡的網絡層,真就一看就懂?

本篇文章字數大約1W+,因爲包含大量的概念,可能比較難理解,我儘量使用圖和例子結合的方式,讓大家容易理解.主要內容是關於計算機網絡中的網絡層的最詳細知識,從網絡層概念出發,討論網路層的功能和具體實現,以及相關的協議.

往期相關文章:

學計算機網絡之前瞭解這些,學習效率不提升過來打我

計算機網絡物理層第一章物理層詳解

吐血碼萬字長文搞懂了數據鏈路層

網絡層

網絡層概述

  • 主要任務就是把分組從源端傳到目的端,爲分組交換網上的不同主機提供通信服務
  • 網絡層傳輸單位是數據報

網絡層的功能

  • 路由選擇和分組轉發(找路)
  • 異構網絡互聯(手機,WIFI,校園網不同網絡之間實現通信)
  • 擁塞控制:若所有結點都來不及接受分組,而要丟棄大量分組的話,網絡就處於擁塞狀態,因此要採取一定措施,緩解這種擁塞,注意和流量控制不同,擁塞控制是全局性的
    • 方法1:開環控制 靜態控制方法,在網絡開始工作之前,就把可能出現的擁塞處理
    • 方法2:閉環控制 動態控制方法,網絡工作時自動控制擁塞

數據交換方式

如何使數據通過網絡核心(路由器)從源主機到目的主機呢?

答:數據交換

現在我們常用的數據交換方式是:通過交換設備的互聯來實現數據的傳遞和交流

能夠避免大量的使用鏈路直接相連的複雜性,也避免了只有一臺交換設備對交換設備端口和吞吐量的要求

image-20200605074208257

電路交換

電路交換階段:

建立連接(呼叫/電路建立)----->通信----->釋放連接(拆除電路)

image-20200605075344055

特點

在通信過程中獨佔資源,意思就是隻要連接建立在通信過程中,並且沒有釋放連接,那麼其他人是沒有辦法搶佔資源的.

電路交換的優點

  1. 通信時延小
  2. 有序傳輸
  3. 沒有衝突
  4. 實時性強

電路交換的缺點

  1. 建立連接時間長
  2. 線路獨佔,使用效率低
  3. 靈活性差(當有交換設備宕機時,通信設備無法正常通信)
  4. 無差錯控制能力(發送數據時,不管數據是否出錯,只是單純的把數據發送出去)

報文交換

報文:源應用發送的信息整體,比如說源主機應用發送的是一個PFD文件,那麼這個PDF文件就是信息的整體,也就是報文

image-20200605075600340

在報文交換過程中,可以選擇多種路徑(那個路徑空閒,就有可能選擇它),然後在發送給目的主機.

優點:

  1. 無需建立連接
  2. 存儲轉發,動態分配線路
  3. 線路可靠性較高(可選擇多條線路,一臺交換設備出現宕機,就選擇其他的路線)
  4. 線路利用率較高(線路給所有的主機使用,當時只有空閒才能被新的發送端使用,那麼線路的利用率就比較高)
  5. 多目標服務(一個報文可以發送給多個目的主機)

缺點:

  1. 有存儲轉發時延(在交換過程中,從發送端傳輸到交換設備,交換設備需要先把報文存儲起來,然後等鏈路空閒了在轉發出去,因此就有存儲轉發時延)
  2. 報文大小不定,需要網絡節點有較大的緩存空間

分組交換

分組交換和報文交換都使用了存儲轉發的思想,但是分組交換轉發的是分組

**分組:**把大的數據塊分割成小的數據塊(也就是把之前的報文,分割成小塊)

這裏要注意的是:分組交換中,傳輸的分組是並行傳輸的,即分組可以同時在鏈路上傳輸,而報文交換是整個報文進行傳輸的.

image-20200605080608672

優點

  1. 無需建立連接
  2. 存儲轉發,動態分配線路
  3. 線路可靠性較高
  4. 線路利用率較高
  5. 相對於報文交換,存儲管理更容易(對緩存大小的要求不高)

缺點:

  1. 有存儲轉發時延
  2. 需要傳輸額外的信息量
  3. 亂序到目的主機時要對分組排序重組

一個例題來看看報文交換方式和分組交換方式

image-20200605082509007

對於報文交換:
10000bit1000bit/s=10s,2,10s×3=30s \frac{10000bit}{1000bit/s}=10s\\ 又題中要求最少的時間,因此只經過2個交換設備\\ 而且題中沒有傳播時延,因此不考慮傳播時延 \\10s×3 =3 0s
對於分組交換:
10bit1000bit/s=0.01s,.10000bit1000bit/s=10s0.01s×2=0.02s10s+0.02s=10.02s \\\frac{10bit}{1000bit/s}=0.01s\\ 因爲在分組交換中,分組是並行傳輸的.因此\\ \frac{10000bit}{1000bit/s}=10s 0.01s×2=0.02s\\ 10s+0.02s=10.02s

計算題中要注意的點:

  1. 單位換算:b/B,Mbps,kbps
    • 1 Byte = 8bit
    • 1 bit/s = 1bps
    • 1Mbps(速率)= 10^6bps
    • 1kbps= 10^3bps
  2. 是否考慮傳播時延
  3. 時間至少是多少------選擇最小跳數(交換設備儘量少)
  4. 起始時間(從發送開始到接收完爲止/從發送開始到發送完畢)
  5. 是否有分組頭部大小的開銷
  6. 報文交換時延更長,分組交換時延可能不是整數

分組交換技術的數據報方式和虛電路方式

數據報方式爲網路層提供無連接服務

虛電路方式爲網路層提供連接服務

無連接服務:不事先爲分組的傳輸確定傳輸路徑,每個分組獨立確定傳輸路徑,不同分組傳輸路徑可能不同

連接服務:首先爲分組的傳輸確定傳輸路徑(建立連接),然後沿該路徑(連接)傳輸系列分組,系列分組傳輸路徑相同,傳輸結束後拆除連接.

這裏穿插集中傳輸單元名詞解析

應用層 報文
傳輸層 報文段
網絡層 IP數據報,分組
數據鏈路層
物流層 比特流

數據報方式

image-20200605090214569

虛電路方式

image-20200605090852827

數據報和虛電路總結

image-20200605091241362

三種數據交換方式比較總結

image-20200605083753197

  1. 報文交換分組交換都採用存儲轉發
  2. 傳送數據量大,且傳送時間遠大於呼叫時間,選擇電路交換,電路交換的傳輸時延最小
  3. 從信道的利用率來看,報文交換分組交換優於電路交換,其中分組交換時延更小

IP數據報格式

image-20200605115040402

在網絡層協議中ARP協議處於最下層,他要爲IP協議服務,而IP協議又要爲ICMP .IGMP協議服務

IP數據報格式

image-20200605115318977

image-20200605115953524

IP數據報分片

最大傳送單元MTU

鏈路層數據幀可封裝數據的上限

以太網的MTU是1500字節

image-20200605121714790

如果所傳送的數據報長度超過某鏈路的MTU值?

分片

結合之前的IP數據報格式

image-20200605122914832

  • 總長度單位是1B
  • 片偏移量單位是8B
  • 首部長度單位是4B

意思就是實際的長度值,等於原長度的值×單位

根據片偏移可得:

除了最後一個分片,每個分片長度一定是8B的整數倍

IP數據報分片例題

image-20200605122602775

IPV4地址

IP地址

ip地址就是給互聯網上的每一臺主機(或路由器)的每一個接口分配一個在全世界範圍內是唯一的32位的標識符

IP編址的歷史階段

1.分類的IP地址

就是把很大的IP地址空間分成幾類

IP地址不僅可以標識一臺主機,也可以標識主機所連接的網絡.IP地址是標識的是應用的端口

  • IP地址::={<網絡好>,<主機號>}

image-20200605124220601

image-20200605124357053

特殊的IP地址

image-20200605124435053

私有的IP地址

image-20200605124921700

分類的IP地址規則

image-20200605125319781

網絡地址轉換NAT

網絡地址轉換:在專用網(如私有地址的網絡校園網)連接到因特網的路由器上安裝NAT軟件,安裝NAT軟件的路由器叫NAT路由器,它至少有一個有效的外部全球IP地址

image-20200605145340027

分類IP地址的缺點

image-20200605145752097

  • 對第一個缺點的解釋:申請到的IP地址段可使用的主機數很多,但是實際使用的主機數遠遠達不到最多可使用的主機數,造成了IP地址空間利用率的浪費
  • 對第二個缺點的解釋:要新申請IP地址空間很麻煩,不能按照自主意願擴展

從而誕生了子網的劃分

2.子網的劃分

對最基本的編址方法的改進

image-20200605150248348

注意:

  • 劃分子網後,整個網絡(多個子網的網絡整體)對於外界來說仍然表現爲一個網絡

子網掩碼是如何分配和識別外界IP地址的

image-20200605150748738

做一個子網掩碼來識別IP地址獲取真實在內網中IP地址(也就是劃分子網後的)的例題

已知IP地址是141.14.72.24,子網掩碼是255.255.192.0,求網絡地址
:,IP:2551,141141:00,240072192010010001100000001000000=64:141.14.64.0 分析:要求網絡地址,我們要將IP地址和子網掩碼逐位相與\\ 又:255在二進制中是全1的,所以他和141相與的結果還是141\\ 又:0在二進制中是全0的,所以他和24相與的結果是全0的就是0\\ 所以我們真實要求的就是72和192相與的結果\\ \frac{01001000}{11000000}結果爲01000000=64\\ 因此最終的網絡地址是:141.14.64.0
要記住常用的二進制和十進制之間的對應

image-20200605151606379

要注意:不同的子網掩碼對於同一IP地址可能獲取相同的網絡地址,但是也有有區別的,區別就是不同的子網掩碼,就會主機位和最大使用的主機數是不同的.

子網掩碼練習

image-20200605152905135

子網對分組的轉發過程

image-20200605155433230

3.構成超網(無分類編址方法)

比較新的無分類的編址方法

無分類編址CIDR

image-20200605161658738

練習球最小地址和最大地址

192.199.170.82/27的最大網絡地址和最小網絡地址
25=323227192.199.1702482:01010010,,100100,101000000,64,192.199.170.6401011111,95,192.199.170.95 2^5=32表明了這個網絡地址最多的主機數爲32個主機\\ 因爲27位來表示網絡前綴\\ 那麼192.199.170這三個字節24位是可以不動的\\ 那麼先寫出82的二進制和十進制轉換:01010010,要給網絡前綴在包含前面三位,那麼剩下的10010作爲主機號\\ 最小地址爲主機號全爲0,最大地址爲主機號全爲1\\ 那麼010 後面00000,就是64,那麼最小地址爲192.199.170.64\\ 那麼010 後面11111,就是95,那麼最小地址爲192.199.170.95

構成超網

將多個子網聚合成一個較大的子網,叫做構成超網,或路由聚合

構成超網和劃分子網可以說是一個相逆的過程.它是把多個較小的子網組合成一個較大的網絡

方法:將網絡前綴縮短

image-20200605163732413

最長前綴匹配

使用CIDR時,查找路由表可能得到幾個匹配結果,應選擇具有最長網絡前綴的路由.前綴越長,地址塊越小,路由越具體

image-20200605164315367

image-20200605164623161

ARP協議

在計算機中發送數據的過程

image-20200605165404792

當數據在同一局域網中進行傳輸時:(同網段)

當數據報分組分片傳輸到數據鏈路層,我們需要給數據加頭MAC1(自身的物理地址),MAC3(目的機的物理地址)

如果在主機1中沒有找到MAC3的物理地址(會在主機1的ARP高速緩存中進行查找),那麼它會發送廣播來請求主機3的物理地址MAC3,然後主機3再響應給主機1它的物理地址

然後在數據鏈路層中加尾部FCS後封裝成幀.交由下一層傳輸.

當數據在不是同一局域網中進行傳輸時:(不同網段)

image-20200605170640937

需要注意的點:

  • 主機1在局域網中找不到目的地址時,它會找自己局域網的網關地址(局域網中每臺主機都知道該局域網中網關的地址)
  • 路由器只會封裝和解封裝到網絡層,因此在網絡層向數據鏈路層封裝主機物理地址時,也會將路由器的物理地址封裝到數據報進行傳輸,來告訴下一層數據是來自哪裏的

總結ARP協議

由於在實際網絡的鏈路上傳送數據幀時,最終必須使用MAC地址

ARP協議:完成主機或路由器IP地址到MAC地址的映射.[解決嚇一跳走哪的問題]

image-20200605171837258

  • ARP協議自動進行

APR協議習題

主機發送IP數據報給主機B,經過了5個路由器,請問此過程總共使用了幾次ARP協議?
,ARP,使ARP6,. 首先,ARP協議解決的問題就是下一跳去哪的問題,因此有幾次轉跳就使用幾次ARP協議\\ 因此答案是6,可以畫草圖可以更加的明晰.

DHCP協議

動態主機配置協議DHCP協議是應用層協議,使用客戶/服務器方式,客戶端和服務器端通過廣播方式進行交互,基於UDP

和動態主機配置相反的是靜態的分配IP地址,比如在機房上課時,管理員給我們每臺機器靜態的分配IP地址.

DHCP提供即插即用聯網的機制,主機可以從服務器動態獲取IP地址子網掩碼.默認網關.DNS服務器名稱與IP地址,允許地址重用,支持移動用戶加入網絡,支持在用地址續租

  • 地址重用指的是當主機進入到DHCP協議的局域網內,那麼就會爲其自動的分配IP地址,當這太主機離開後,那麼這個IP地址可以分配給下一個主機

DHCP協議的工作流程

  1. 主機廣播DHCP發現報文 -----相當於----------“這裏有沒有DHCP服務器”
    • 試圖找到網絡中的服務器,服務器會獲得該主機的IP地址
  2. DHCP服務器廣播DHCP提供報文--------相當於--------“有!”
    • 服務器擬分配給主機一個IP地址及相關配置,先到先得
  3. 主機廣播DHCP請求報文--------相當於-----“那我使用你給我的IP地址”
    • 主機向服務器請求提供IP地址
  4. DHCP服務器廣播DHCP確認報文------相當於----“用吧”
    • 正式將IP地址分配給主機

ICMP協議

image-20200606145227404

從TCP/IP協議棧的結構我們可以看出ICMP協議是網絡層和傳輸層之間的協議,起到了橋樑的作用,其作用是爲了更有效地轉發IP數據報和提高交付成功的機會…

ICMP協議支持:

  1. 主機或路由器
  2. 差錯(或異常)報告
  3. 網絡探詢
  • 在我們的網絡層傳輸的數據報經常會出現出錯,那麼出錯之後,我們早網絡層通常的處理辦法就是丟棄出錯的報文.但是不僅僅是丟棄那麼簡單,我們還需要發送一個差錯報告

image-20200606145841821

ICMP協議的報文可分爲兩種

  1. ICMP差錯報文
  2. ICMP詢問報文

ICMP差錯報文(5種)

  1. 終點不可達:當路由器或主機不能交付數據報時就向源點發送終點不可達報文.
  2. 源點抑制:當路由器或主機由於擁塞而丟棄數據報時,就向源點發送源點抑制報文,使源點知道應當把數據報的發送數據速率放慢
  3. 時間超過:當路由器收到生存時間TTL=0的數據報時,除丟棄該數據報外,還要發送源點發送時間超過報文.當終點在預先規定的時間內收不到一個數據報的全部數據報片時,就把已經收到的數據報片都丟棄並向源點發送時間超過報文.(講了兩種情況)
  4. 參數問題:當路由器或目的主機收到的數據報的**首部中有的字段的值不正確,**就丟棄該數據報,並向源點發送參數問題報文.
  5. 改變路由(重定向):路由器把改變路由報文發送給主機讓主機知道下次應該把數據報發送給另外的路由器(可通過更好的路由).

ICMP差錯報告報文的數據格式

image-20200606151151434

但是並不是任何出錯的情況都應該發送一個差錯報文的

不應該發送差錯報文的情況

  1. 對ICMP差錯報告報文不在發送ICMP差錯報告報文(禁止套娃)
  2. 對第一個分片的數據報文的所有後續數據報片都不發送ICMP差錯報告報文.
  3. 對具有組播地址的數據報都不發送ICMP差錯報告報文
    • 組播指的是:**一點到多點,**和廣播要區分開,廣播指的是:一點到所有點
  4. 對具有特殊地址(如127.0.0.0[環回地址]或0.0.0.0[本網段的主機地址])的數據報不發送ICMP差錯報告報文

ICMP詢問報文(4種)

  1. 回送請求和回答報文:主機或路由器向特點目的主機發出的詢問,收到此報文的主機或者路由器必須給源主機或路由器發送ICMP回送回答報文.測試目的站是否可達以及瞭解其相關狀態
  2. 時間戳請求和回答報文:請某個主機或路由器回答當前的日期和時間.用來測試時鐘同步和測量時間
  3. 掩碼地址請求和回答報文
  4. 路由器詢問和通告報文
    • 3和4這兩種報文現在已經不再使用了

ICMP的應用

兩種:

  • PING:測試兩個主機之間的連通性,使用了ICMP回送請求和回答報文
  • Traceroute:跟蹤一個分組從源點到終點的路徑,使用了ICMP時間超過差錯報告報文

簡單解釋一下Traceroute的工作過程:

我們知道每個IP數據報都有TTL的值(代表了該數據報可以傳送幾個路由器),沒經過一個路由器,那麼TTL的值就會減1,直到TTL等於0時,這時數據報不能繼續傳送給下一個路由器,Traceroute就是當TTL等於0時,路由器會向源主機發送一個ICMP事假超過差錯報告報文,裏面就記錄了該數據報從源點(源主機開始傳輸數據的路徑)

IPv6

爲什麼要有IPv6,

因爲IPv4的編碼方式已經讓把編碼的IP地址消耗殆盡了,再加上需求的增加.我們之前學了了CIDR和NAT技術延緩了IPv4消耗殆盡.

但是這種方式治標不治本,因此有了IPv6,就可以從根本上解決IP地址即將不夠用的窘況.

  • IPv6改進首部格式,
  • 能夠快速處理/轉發數據報
  • 支持QoS
    • QoS:指一個網絡能夠利用各種基礎技術,爲指定的網絡通信提供更好的服務能力,是網絡的一種安全機制,是用來解決網絡延遲和阻塞等問題的一種技術.

IPv6的數據報格式

image-20200606163017484

image-20200606163337462

IPv6和IPv4

  1. IPv6將地址從32位(4B)擴大到128位(16B),更大的地址空間
  2. IPv6將IPv4的校驗和字段徹底移除,以減少每跳的處理時間
  3. IPv6將IPv4的可選字段移出了首部,變成了擴展首部,成爲靈活的首部格式,路由器通常不對擴展首部進行檢查,大大提高了路由器的處理效率.
  4. IPv6支持即插即用(即自動配置IP地址),不需要DHCP協議
  5. IPv6的首部長度必須是8B的整數倍,IPv4首部是4B的整數倍
  6. IPv6只能在主機處分片,IPv4可以在路由器和主機處分片
    • IPv6中,如果數據報很大,必須在路由器那裏分片,但是IPv6不能在路由器分片,所以只能將該數據報丟棄,然後一個差錯報告報文
  7. ICMPv6:附加報文類型"分組過大"
  8. IPv6支持資源的預分配,支持實時視像等要求,保證在一定帶寬和時延的應用
  9. IPv6取消了協議字段,改成了下一個首部字段
  10. IPv6取消了總長度字段,改用有效載荷長度字段
  11. IPv6取消了服務類型字端

注意:其中加粗的是比較重要的知識,其餘的作爲了解.

IPv6地址表示形式

一般形式:冒號十六進制記法:BF2:AA12:0216:FEBC:BA5F:039A:2170

壓縮形式:4BF2:0000:0000:0000:BA5F:039A:000A:2176

-------->4BF5:0:0:0:BA5F:39A:A:2176

  • 即每一組至少保證有一個數字,然後把零刪除

IPv6基本地址類型

  • 單播:一對一通信 可做源地址+目的地址
  • 多播:一對多通信 可做目的地址
  • 任播:一對多種的一個通信(實際上還是一對一的通信,但是形式上是一對多的通信) 可做目的地址

IPv6和IPv4的過渡策略

image-20200606170149543

IPv6腦圖

image-20200606170320301

路由算法

標準路由轉發表

image-20200606171304872

路由算法的分類

image-20200606171357103

分層次的路由選擇協議

選擇分層次的路由選擇協議的原因:

  1. 因特網規模很大
  2. 許多單位不想讓外界知道自己的路由選擇協議,但還想連入因特網

具體的實現:

image-20200606171822316

image-20200606171856801

RIP協議與距離向量算法

RIP協議

RIP是一種分佈式的基於距離向量的路由選擇協議,是因特網的協議標準,最大優點是簡單.

RIP協議要求網絡中每一個路由器都維護從它自己到其它每一個目的網絡的唯一最佳距離記錄(即一組距離).

就是在路由表中記錄了自己到其它網絡的路徑(下一跳的地址)和距離

image-20200606174945250

  • 距離:通常爲"跳數",即從源端口到目的端口所經過的路由器個數,經過一個路由器跳數+1.特別的,從一路由器到直接連接的網絡距離爲1.RIP允許一條路由最多隻能包含15個路由器,因此距離爲16表示網絡不可達.-------->因此RIP協議只適合規模比較小的網絡

那麼這張路由表是怎麼得出來的呢?

通過交換

RIP協議和誰交換?多久交換一次?交換什麼?

  1. 僅和相鄰路由器交換信息
  2. 路由器交換的信息是自己的路由表
  3. 每30秒交換一次路由信息,然後路由器根據新信息更新路由表(計算鄰居提供的信息,並更新自己的路由表).若超過180s沒收到鄰居路由器的通告,則判定鄰居沒了,並更新自己路由表(把含有鄰居的表項刪除)

路由器剛開始工作時,只知道直接連接的網絡的距離(距離爲1),接着每一個路由器也只和數目非常有限的相鄰路由器交換並更新路由信息.

經過若干次更新後,所有路由器最終都會知道到達本自治系統任何一個網絡的最短距離和下一跳路由器的地址,即"收斂"

現在知道了RIP協議是要交換路由表,並更新自己的路由表,那麼路由表具體是怎麼更新的?

要理解這個問題,我們要藉助距離向量算法.

距離向量算法

RIP報文:包含着路由表全部信息的報文信息

也就是說每個相鄰的路由器之間交換的是RIP報文

距離向量算法的過程

image-20200606181118580

  1. 修改相鄰路由器發來的RIP報文中所有表項
    • 對地址爲X的相鄰路由器發來的RIP報文,修改此報文中的所有項目:把"下一跳"字段中的地址改爲X,並把所有"距離"字段+1(自己不能直接到達的,就要藉助相鄰的路由器)
  2. 對修改後的RIP報文中的每一個項目,進行以下步驟:
    1. 如果R1路由表中若沒有Net3,則把該項目填入R1路由表
    2. 如果路由表中若有Net3,則查看下一跳路由器地址
      1. 如果下一跳是X,則把收到的項目替換源路由表中的項目(因爲我們路由表中的信息要以最新的信息爲準)
      2. 如果下一跳不是X,原來距離比從X走的距離遠則更新,否則不做處理
  3. 如果180s還沒收到相鄰路由器X的更新路由表,則把X記爲不可達的路由器,即把距離設置爲16
  4. 返回(循環更新)

距離向量法練習1

image-20200606181551546

距離向量法練習2

image-20200606182327897

B(5,0,8,12,6,2)BA,B,C,D,E,FA:5,B:0,C:8,D:12,E:6,F:2.CB,DE6,3,5:CB,D,E6,3,5:CB:(11(),6(),14(0),18,12,8())CB6CD:(19,15,9(0),3(),12,13)CE:(12,11,8(0),14,5(),9)CC0,0,C(11,6,0,3,5,8) B的向量(5,0,8,12,6,2)指的是B到A,B,C,D,E,F的距離\\分別爲A:5,B:0,C:8,D:12,E:6,F:2. \\ 其他向量同理 \\C到B,D和E的延遲分別是6,3,5表示的是:\\ C到B,D,E之間分別有6跳,3跳,5跳\\ 因此可得: C到B:(11(選中),6(選中),14(0),18,12,8(選中))相當於給C到B每個向量都加上6 \\C到D:(19,15,9(0),3(選中),12,13) \\C到E:(12,11,8(0),14,5(選中),9) \\又因爲C到C的距離爲0,那麼三組向量中的第三個值可以改爲0\\ 然後在三組向量中選擇較小的距離,就可得出C到所有結點的最短路徑\\ 最終可得結果(11,6,0,3,5,8)
這一道題中延遲就是指C到B,D,E之間不是相鄰的,要和第一題有所區別

RIP協議的報文格式

image-20200606183652202

OSPF協議

開方最短路徑有限OSPF協議:"開放"標明OSPF協議不是受某一家廠商控制,而是公共發表的"最短路徑優先"是因爲使用了Dijksrtra提出的最短路徑算法SPF

OSPF最主要的特徵是使用分佈式的鏈路狀態協議

OSPF特點:

  • 和誰交換?
    • 1.使用洪泛法向自治系統內所有路由器發送信息,即路由器通過輸出端口向所有相鄰的路由器發送信息,而每一個相鄰路由器又再次將此信息發往其所有的相鄰路由器(表面上好像只給自己相鄰的路由器發送信息,但是實際上經過一定的時間就實現了所有路由器的信息交換這就叫做洪泛法)廣播
  • 交換什麼?
    • 2.發送的信息就是與本路由器相鄰的所有路由器的鏈路狀態(本路由器和哪些路由器相鄰,以及該鏈路的度量/代價—費用.距離.時延.帶寬等)
    • 注意在OSPF協議中交換的和在RIP協議中交換的不同,在RIP協議中交換的鏈路狀態指的是跳數,但是在OSPF中交換的鏈路狀態是可以我們自己指定的,可以包括費用,距離,時延,帶寬等
  • 多久交換?
    • 3.只有當**鏈路狀態發生變化時,**路由器才向所有路由器洪泛發送此信息
    • 這個和RIP協議也是不同的,在RIP協議中每隔30s就會重新發送一次路由信息

最後,所有路由器都能建立一個鏈路狀態數據庫,即全網拓撲圖

鏈路狀態的路由算法

步驟:

  1. 每隔路由器發現它的鄰居節點[HELLO問候分組],並瞭解鄰居節點的網絡地址.(要去了解周圍的臨站哪些是可達的站,因爲只有可達的站才能進行數據的交換)
  2. 設置到它的每個鄰居的成本度量metric
  3. 構造[DD數據庫描述分組],想臨站給出自己的鏈路狀態數據庫(相當於全網的拓撲結構圖)中的所有鏈路狀態項目的摘要信息.(就能知道在全網中哪些站點是可達的,並且他們的可達關係是怎麼建立的,代價是多少,那麼就把自己知道的信息作爲摘要信息放到DD數據庫描述分組中發給臨站)
  4. 如果DD分組中的摘要自己都有,則臨站不做處理,如果有沒有的或者是更新的,則發送[LSR鏈路狀態請求分組]請求自己沒有的和比自己更新的信息
  5. 收到臨站的LSR分組後,發送[LSU鏈路狀態更新分組]進行更新
  6. 更新完畢後,臨站返回一個[LSAck鏈路狀態確認分組]進行確認

只要一個路由器的鏈路狀態發生變化

5.泛洪發送[LSU鏈路狀態更新分組]進行更新

6.更新完畢後,其他站返回一個[LSAck鏈路狀態確認分組]進行去人

7.使用Dijkstra根據自己的鏈路狀態數據庫構造到其他節點間的最短路徑

OSPF的區域

image-20200606225815403

OSPF分組

image-20200606230000439

OSPF的其他特點

image-20200606230128645

BGP協議

  • 和誰交換?
    • 與其他AS的臨站BGP發言人交換信息

image-20200606230339470

  • 交換什麼?
    • 交換的網絡可達性的信息,即要到達某個網絡所要經過的一系列AS
  • 多久交換?
    • 發生變化的時候交換一次

BGP協議交換信息的過程

BGP所要交換的網絡可達性的信息,即要到達某個網絡所要經過的一系列AS.當BGP發言人互相交換了網絡可達性的信息後,額BGP發言人就根據所採用的策略從收到的路由信息中找出到達各AS的較好路由.

BGP協議交換信息的過程

交換的信息就是:交換路徑的一個向量,就是交換一組路徑的信息.

BGP發言人交換路徑向量:
AS2BGPAS1BGP:"N1.N2N3N4AS2" 自治系統AS_2的BGP發言人通知主幹網AS_1的BGP發言人:\\"要到達網絡N1.N2N3和N4可經過AS_2"
image-20200606231146622

BGP發言人交換路徑向量:
:"N5,N6,N7沿(AS1,AS3)" 主幹網還可以發出通知:\\ "要到達網絡N5,N6,N7可沿路徑(AS_1,AS_3)"

BGP協議報文格式

image-20200606231426737

BGP協議的特點:

  • BGP支持CIDR,因此BGP的路由表也就應當包括目的網絡前綴.下一跳路由器,以及到達該目的網絡所要經過的各個自治系統序列
  • 在BGP剛剛運行時,BGP的臨站是交換整個BGP路由表.但以後只需要在發生變化時更新有變化的部分,這樣做對節省網絡帶寬和減少路由器的處理開銷都有好處.

BGP-4的四種報文

image-20200606231913587

三種路由協議比較

  • RIP是一種分佈式的基於距離向量的內部網關路由選擇協議,通過廣播UDP``報文來交換路由信息.`
  • OSPF是一個內部網關協議,要交換的信息量較大,應使報文的長度儘量短,所以不使用傳輸層協議(如UDP或TCP),而是直接採用IP
  • BGP是一個外部網關協議,在不同的自知系統之間交換路由信息,由於網絡環境複雜需要保證可靠傳輸,所以採用TCP

image-20200606232438567

IP組播

IP數據報的三種傳輸方式

  • 單播
    • 單播用於發送數據包到單個目的地,且每發送一份單播報文都使用一個單播IP地址作爲目的地址.是一種點對點傳輸方式
    • 在發送者和每一個接受者之間需要單獨的數據信道
  • 廣播
    • 廣播是指發送數據包到同一廣播域或子網內的所有設備的一種數據傳輸方式,是一種點對多點的傳輸方式(直接發送給所有用戶)
  • 組播(多播)
    • 當網絡中的某些用戶需要特定數據時,組播數據發送者僅發送一次數據,藉助組播路由協議爲組播數據包建立組播分發樹,別傳遞的數據到達距離用戶端儘可能近的節點後才愛是複製和分發,是一種點對多點傳輸方式(有選擇的發送)
    • 組播提高了數據傳送效率.減少了主幹網出現擁塞的可能性.組播組中的主機可以是在同一個物理網絡,也可以來自不同的物理網絡(如果有組播路由器的支持)

image-20200607092450364

那麼在組播發送方式中發送數據包的過程中,我們怎麼知道哪些主機時在同一組播組呢?

這就要了解IP組播地址

我們之前在發送數據給另一臺主機時,目的地址填寫的就是我們要發送的目的主機的IP地址,這個IP地址是在全球範圍內都是唯一的IP地址,那麼我們要實現的是發送給同一個組播組的所有的主機,那麼就不能使用的是IP地址,不然僅僅會發送給這一臺主機,而不是一個組播組的所有主機.

IP組播地址讓源設備能夠將分組發送給一組設備.屬於多播組的設備將被分配有一個組播組IP地址(一羣共同需求的主機的相同標識)

組播地址範圍是224.0,0,0~239.255.255.255(D類地址),一個D類地址表示一個組播組,只能用作分組的目的地址.源地址總是爲單播地址

  1. 組播數據報也是"盡最大努力交付",不提供可靠交付,應用於UDP
  2. 對組播數據報不產生ICMP差錯報文
  3. 並非所有D類地址都可以作爲組播地址

image-20200607093555716

硬件組播

硬件組播解決的問題是在一個局域網內,對於一個IP數據報,應該把該數據報傳送給哪些主機?

在單播中我們傳輸一個IP數據報,我們的數據報進入到局域網中,我們要根據MAC地址要確定該把數據報發送給誰

同樣在組播中:

同單播地址一樣,組播IP地址也需要相應的組播MAC地址在本地網絡中實際傳送幀.組播MAC地址以十六進制值01-00-5E開頭,餘下的6個十六進制位是根據IP組播組地址的最後23位轉換得到的.

TCP/IP協議使用的以太網多播地址的範圍是:**01-00-5E-00-00到01-00-5E-7F-FF-FF.

image-20200607094510598

IGMP協議和組播路由選擇協議

這兩個協議就是我們講的組播的分類中在因特網範圍內組播(也就是局域網範圍外組播)所使用的協議

IGMP協議和組播路由器相互合作

image-20200607094808426

網際組管理協議IGMP

image-20200607094901501

IGMP協議讓路由器知道本局域網上是否有主機(的進程)參加或退出了某個組播組

IGMP在協議棧中的位置

image-20200607095120444

ICMP和IGMP都使用IP數據報傳遞報文

IGMP工作的兩個階段

  1. 某主機象牙假如組播組時該主機向組播組的組播地址發送一個IGMP報文,聲明自己要成爲該組的成員—>本地組播路由器收到IGMP報文後,要利用組播路由選擇協議把這組成員關係發給因特網上的其他組播路由器
  2. 本都組播路由器週期性的探詢本地局域網上的主機,以便知道這些主句是否還是組播組的成員----->只要有一個主機對某個組響應,那麼組播組就認爲這個組是活躍的;如果經過幾次探詢後沒有一個主機響應,組播路由器就認爲本網絡上的沒有此組播組的主機,因此就不在把這組的成員關係發給其他的組播路由器.

組播路由器知道的成員關係只是所連接的局域網中有無組播組的成員

組播路由選擇協議

目的:找出以源主機爲根節點的組播轉發樹

構造樹可以表面在路由器之間兜圈子

對不同的多播組對應於不同的多播轉發樹;同一個多播組,對不同的源點也會有不同的多播轉發樹.

image-20200607100033571

組播路由選擇協議中常使用的三種算法

  • 基於鏈路狀態的路由選擇
  • 基於距離-向量的路由的選擇
  • 協議無關的組播(稀疏/密集)

移動IP

移動IP要區分於我們之前通過DHCP協議獲取的動態IP,動態IP當離開局域網的範圍後就不能享受在局域網中的服務,而移動IP是可以的.

你出差時,只要登錄到總公司的網絡,就可以享受到在總公司的特權

image-20200607100605731

相關術語

移動IP技術是移動結點(計算機/服務器等)以固定的網絡IP地址,實現跨越不同網段的漫遊功能,並保證了基於網絡IP的網絡權限在漫遊過程中不發生任何改變

也就是說即使物理位置發生了改變,但是IP地址是不發生改變的,就可以實現跨越多個網段的功能

  • 移動結點:具有永久IP地址的移動設備
  • 歸屬代理(本地代理):一個移動結點擁有的就"居所"稱爲歸屬網絡,在歸屬網絡中代表移動結點執行移動管理功能的實體叫做歸屬代理
  • 外部代理(外地代理):在外部網絡中幫助移動節點完成移動管理功能的實體稱爲外部代理
  • 永久地址(歸屬地址/主地址):移動站點在歸屬網絡中的原始地址
  • 轉交地址(輔地址):移動站點在外部網絡使用的臨時地址

通信過程

image-20200607101832658

image-20200607103544892

網絡層設備

網絡層的設備是路由器:路由器是一種具有對個輸入端口和多個輸出端口的專用計算機,其任務是轉發分組.

image-20200607103902896

輸入輸出對線路上收到的分組的處理

image-20200607104036661

image-20200607104113111

路由器中的輸入或輸出隊列產生溢出是造成分組丟失的重要原因

三層設備的區別

代表物理設備 特點 能否隔離衝突域 能夠隔離廣播域
網絡層 路由器 可以互聯兩個不同網絡層協議的網段
數據鏈路層 網橋 可以互聯兩個物理層和鏈路層不同的網段 ×
物理層 集線器 不能互聯兩個物理層不同的網段 × ×

路由表和路由轉發

路由表根據路由選擇算法得出,主要用途是路由選擇,總用軟件來實現

image-20200607104834970

  • 0.0.0.0默認路由

由路由表就可以得到轉發表

轉發表由路由表得來,可以用軟件實現,也可以用特殊的硬件來實現.轉發表必須包含完成轉發功能所必需的信息.在轉發表的每一行必須包含從要到達的目的網絡到輸出端口和某些MAC地址信息的映射.

路由器中的輸入或輸出隊列產生溢出是造成分組丟失的重要原因

三層設備的區別

代表物理設備 特點 能否隔離衝突域 能夠隔離廣播域
網絡層 路由器 可以互聯兩個不同網絡層協議的網段
數據鏈路層 網橋 可以互聯兩個物理層和鏈路層不同的網段 ×
物理層 集線器 不能互聯兩個物理層不同的網段 × ×

路由表和路由轉發

路由表根據路由選擇算法得出,主要用途是路由選擇,總用軟件來實現

image-20200607104834970

  • 0.0.0.0默認路由

由路由表就可以得到轉發表

轉發表由路由表得來,可以用軟件實現,也可以用特殊的硬件來實現.轉發表必須包含完成轉發功能所必需的信息.在轉發表的每一行必須包含從要到達的目的網絡到輸出端口和某些MAC地址信息的映射.

我是一個普通二本的學生,可能寫的有不周到之處,希望各位大佬指點.讓我們一起努力,不過平庸的生活.
如果您感覺`我寫的不錯麻煩點個贊.

如果有什麼問題,可以留言我們一起探討
如果有什麼建議,也可以留言給我,我會虛心的接受,
最後謝謝您,看完了我的文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章