「計算機網絡筆記」第五章 網絡層

  1. 「計算機網絡筆記」第一章 概述
  2. 「計算機網絡筆記」第二章 物理層
  3. 「計算機網絡筆記」第三章 網絡層
  4. 「計算機網絡筆記」第四章 介質訪問控制子層
  5. 「計算機網絡筆記」第五章 網絡層
  6. 「計算機網絡筆記」第六章 傳輸層
  7. 「計算機網絡筆記」第七章 應用層

5.1 網絡層概述

功能

源端產生的數據包/數據分組,一路送達目的機

  • 信息封裝
  • 目的機的識別
  • 找到路由(源機->目的機的路徑)

被路由的協議

IP協議

  • IP地址:定位目的機
  • IP分組:信息的封裝
  • IPv6協議:新一代IP協議

路由選擇協議

找到源機和目的機之間的最優路徑

  • 距離矢量路由選擇協議
  • 鏈路狀態路由選擇協議

源機和目的機之間的網絡

數據報子網 虛電路子網
電路 不需要建立 一定要建立
分組 包含完整的源地址和目的地址信息獨立尋徑 包含很短的一個標號
路由 不需要保留任何連接狀態 都要保留連接狀態
路由器
失效影響
基本沒有影響 連接/數據傳輸中斷
服務質量
擁塞控制
很難實現 容易實現

5.2 IP地址

  • 提供一種盡力而為best-effort地把數據從源端傳輸到接收方的方法
  • 為路由提供路由所需要的信息
  • IP協議 = 被路由協議

IP地址

  • 32位二進制位

  • 點分十進制

    • 32 => 4×8

    • 每個8位組,二進制 => 十進制,0~255

Example:IP地址體現了層次性
[.... ....] Internet
[130.1.0.0] 網絡
[130.1.1.0] 子網1
[130.1.1.1] 主機

IP地址的兩層結構

  • 網絡部分:0~15位
  • 主機部分:16~31位

A類地址

0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • 1字節標識網絡地址,2、3、4字節標識主機地址
  • 第1個字節 => [0,127]
  • 每個A類地址/A類網絡,容納 224-2 臺主機
    • 減去的2:用于廣播地址和網絡地址

B類地址

10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • 1、2字節標識網絡地址,3、4字節標識主機地址
  • 第1個字節 => [128,191]
  • 每個B類地址/B類網絡,容納 216-2 臺主機

C類地址

110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • 1、2、3字節標識網絡地址,4字節標識主機地址
  • 第1個字節 => [192,223]
  • 每個C類地址/C類網絡,容納 28-2 臺主機

保留的IP地址

不能分配給某個接口/某個主機使用

  • D類:1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • E類:11110xxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

  • 網絡地址:xxxxxxxx.xxxxxxxx.00000000.00000000

  • 廣播地址:xxxxxxxx.xxxxxxxx.11111111.11111111

  • 0.0.0.0

    • 表示:這個主機、這個網絡
    • 在路由表中,默認路由的目的地址
  • 255.255.255.255

    • 泛洪廣播地址
  • 127.0.0.0

    • 環回地址Lookback Network
    • 127.0.0.1 => localhost
  • 169.254.0.0

    • 非正常地址
    • 不能對外正常通信

5.3 子網規劃

將大網絡分割成小網絡

主路由器

  • 邊界路由器

  • 負責和外部聯系

  • 了解內部網絡結構的機制:子網掩碼

子網掩碼

  • 決定分組往哪個子網轉發

  • 點分十進制表示 => 連續的1(網絡位) + 連續的0(主機位)

  • 按位操作

    • 目的IP地址 AND 子網掩碼 = 目的網絡地址
    • 按位操作后,主機位全為0
  • A、B、C類的缺省

A類 B類 C類
點分十進制表示 255.0.0.0 255.255.0.0 255.255.255.0
網絡前綴表示 /8 /16 /24

子網位

  • 從IP地址的主機部分借位

    • 從高位開始借
    • 至少保留2位
  • Example:192.168.1.0/24,主機域借2位作為子網位

    子網的網絡地址:

    192.168.1.00 000000 => 192.168.1.0/26

    192.168.1.01 000000 => 192.168.1.64/26

    192.168.1.10 000000 => 192.168.1.128/26

    192.168.1.11 000000 => 192.168.1.192/26

    • 第4個子網的網絡地址:192.168.1.10 000000 => 192.168.1.64
    • 第4個子網的廣播地址:192.168.1.10 111111 => 192.168.1.127

5.4 IP尋址

根據目的IP地址,找到目的網絡

路由器

  • 執行IP尋址的主要設備

  • 1個路由器Router = 1跳Hop

  • 收到一個分組

    • 打開分組

      • 提取到目的IP地址
    • 確定網絡,查找路由表

      • 目的IP地址和子網掩碼按位與運算,得到目的網絡

      • 用目的網絡查找路由表

    • 重新封裝,轉發next hop

  • 到達最后一個網絡目的網絡,MAC尋址(交換機執行)

不同 MAC地址 IP地址
網絡范圍使用 小型網絡 互聯網
依賴的地址結構 平面地址 結構化地址
所處OSI模型的層 數據鏈路層 網絡層
地址的格式 十六進制 點分十進制

5.5 IP分組

  • IP分組包含12個基本的字段和選項字段
  • IP分組分為:頭部、數據

報頭長度

  • 大小:4bit
  • 單位:4Byte
  • 0101 ~ 1111

數據報總長

  • 大小:16bit
  • 單位:Byte

生存時間 TTL

  • 大小:8bit
  • 單位:hop
  • 每經過一個路由器,TTL-1
  • 當TTL-1=0時,路由器丟棄該分組,向源發回一個超時消息
  • 防止分組在網絡無限循環

用戶協議

  • 大小:8bit
  • 指明傳輸層采用的協議
    • UDP:17
    • TCP:6

目的IP地址

  • 大小:32bit

5.6 IPv6概述

IPv4存在問題

  • 地址數
  • 端到端模式收到破壞
    • 地址數匱乏,使用了私人地址
    • 私人地址不具有唯一性,和互聯網通訊,必須進行轉換
    • NAT轉換器
  • 配置復雜
  • 安全問題
  • 路由表膨脹
    • 增加了每一個分組的延遲
  • QoS和性能問題

IPv6的目標

  • 支持幾十億臺主機
  • 縮減路由表的規模
  • 簡化協議,路由器處理分組更快
  • 更好的安全性
  • ... ...

5.7 IPv6地址

基本概念

  • 局域網段:LAN段,最小單位交換機一個接口下的這一條鏈路
  • 鏈路:路由器一個接口下的,若干個局域網段構成的
  • 鄰接點:一條鏈路上的兩臺主機
IPv6基本概念

冒分十六進制

  • IPv6地址:128位(v4僅有32位)
  • 128 => 8組 × 16位
  • 簡化規則
    • 忽略前導0
    • 省略全0 => 雙冒號,一個地址里最多只能出現一次雙冒號

IPv6地址分類

  • 單播地址Unicast Address
    • 一對一通信
  • 組播地址Multicast Address
    • 特定組內通信
  • 任播地址Anycast Address
    • 特定組內,任意一臺計算機

特殊地址

  • 未指定
    • 二進制前綴:000...0(128bit)
    • IPv6:::/128
    • 一臺設備未正式的獲得地址時,以此代替
    • 路由表中目的網絡,表示默認路由
  • 環回地址
    • 二進制前綴:000...1(128bit)
    • IPv6:::1/128
    • 類似IPv4中的127.0.0.1
  • 組播
    • 二進制前綴:11111111
    • IPv6:FF00::/8
  • 鏈路本地地址
    • 二進制前綴:1111111010
    • IPv6:FE80::/10
    • 屬于單播地址
  • 網點本地地址
    • 二進制前綴:1111111111
    • IPv6:FEC0::/10

鏈路本地地址

屬于單播地址

  • 用在單一的鏈路上
  • 如果一個分組的目的地址||源地址是鏈路本地地址,分組不回轉發到其他鏈路
  • IPv6設備啟動時,首先生成一個鏈路本地地址,此時就可以和鏈路上的其他節點通信
  • FE80:0:0:0 + EUI64位地址(合128bit)
  • EUI64地址
    • 將MAC地址轉化成二進制的48位
    • 在前24位和后24位中間加上16位11111111 11111110
    • 從高位起的第7位,0 => 1(U/L位:用于確定該地址是全局管理的還是本地管理的)

可聚合全球單播地址

3bit 13bit 8bit 24bit 16bit 64bit
001 TLA
頂級聚類地址
RES
保留位
NLA
次級聚類地址
SLA
站點級聚類地址
InterfaceID
  • SLA可用作子網規劃
  • 如果主機可以和默認網關通訊,就可以從默認網關獲取全球IPv6地址的前綴
  • 默認網關:和主機直接相連的路由器
  • 前綴 + InterfaceID => 全球單播地址

5.8 IPv6分組

IPv6的報頭

  • 協議版本(4bit):0110 => IPv6

  • 流標記(20bit):為源端和目的端提供了建立偽連接的方式

  • 凈荷長度(16bit):固定頭之后的字節數

  • 下一個頭Next Header(8位)

    • 指明當前頭之后,擴展頭的類型
    • 若當前頭為最后一個頭,則用于指明上層傳輸層指定的用戶協議(與IPv4中相同)
  • 跳數限制Hop Limit:等同于IPv4中的TTL

與IPv4的不同

  • 刪除校驗和

    • 上層傳輸層和下層數據鏈路層都有自己的校驗和
  • 刪除分段/分片

    • 源端在一開始必須知道全部路徑/網絡的最小MTU

    • MTU:最大傳輸單元,Maximum Transmission Unit

    • PMTU算法

5.9 IPv6過渡技術

  • 雙棧
  • 隧道
  • 地址轉換

5.10 路由表

路由表的結構

  • 目的網絡/子網掩碼
  • 路徑代價
  • 下一跳(網關)
  • 轉出接口
  • ...

路由信息

直連路由 靜態路由 動態路由
路由器學習感知 管理人員人工配置 路由選擇協議
  • 直連路由

    • 路由器開啟了接口,自動發現接口對應的子網,并記錄到路由表
  • 靜態路由

    • 常見的靜態路由:缺省/默認路由
    • 默認路由
      • 避免錯誤丟包
      • 縮減路由表的規模
      • 減少路由器的運行負擔
    • 優點
      • 適用小型網絡
      • 安全,不會發送通告
      • 穩定,通過同一路徑總是到達同一網絡
      • 不需要CPU、RAM、帶寬等開銷
    • 缺點
      • 網絡規模增大,配置復雜性增長
      • 人工更新維護繁瑣
  • 動態路由(多數)

    • 路由選擇協議動態地建立、更新和維護的路由
    • 適合大型網絡
    • 不受網絡規模的限制
    • 自動更新、維護路由信息
    • 量度路徑最優
      • 跳數
      • 帶寬
      • ...

5.11 距離矢量路由選擇協議

Distance Vector

  • 常用于小型網絡
  • 典型DV算法:路由選擇信息協議
    • RIPRouteing Information Protocol
    • 早期互聯網使用
  • 矢量/向量:一個有序數組,n維向量中存了n個數,有先后次序之分。

DV的工作原理

  • 每個路由器維護兩個矢量,Di和Si

    • Di:該路由器到所有其他路由器的距離,{ di1,di2,... ... ,din}
    • Si:該路由器到所有其他路由器的下一跳,{ si1,si2,... ... ,sin}
    • di1:從節點i節點1的度量/代價
    • si1:從節點i節點1的最優路幾個上的下一跳
    • n:網絡中路由器的個數
  • 鄰居路由器交換路由信息(矢量信息)

  • 每個路由器根據收到的路由信息,更新路由表

DV算法的特點

  • 優點
    • 簡單
  • 缺點
    • 交換信息大
    • 路由信息傳播緩慢,可能導致路徑信息不一致
    • 不適合大型網絡

5.12 路由選擇信息協議 RIP

特點

  • 采用跳數作為Si量度
  • 當量度超過15跳,目的網絡即作不可達
    • 解決路由環問題
    • 完全相信鄰居路由器,導致的路由環/無窮計數問題
  • 30秒交換一次路由信息

5.14 鏈路狀態路由選擇

Link State Routing

主要思路

  • 發現
  • 設置
  • 構造
  • 發送
  • 計算

發現

  • 發現鄰居節點,了解它們的網絡地址
  • 路由器啟動時,向每個鄰居路由器發送Hello數據包

設置

  • 到每個鄰居的成本度量
  • 常見度量:鏈路帶寬(反比),延遲
  • 發送特別的Echo分組,另一端立即回送應答,通過測量往返時間RTT,得到延遲估計值

構造

  • 構造鏈路狀態分組LSPLink State Packet

  • LSP分組

    • 發送方的標識ID of the sender
    • 序列號sequence number
      • 32bit的序列號,解決序列號回轉問題
    • 年齡age
      • 每經過1秒,age-1 => age=0時,丟棄
      • 每隔很短的時間(通常大于age),新分組就會到來
    • 鄰居列表list of neighbors
    • 度量delay to each neighbor
  • 周期性的構造

  • 特殊事件發生時構造

    • 線路/鄰居down掉
    • 出現新的接口

發送

  • 這個分組發給所有其他的路由器
  • LSP分組的序列號隨著新分組的產生,遞增
  • 路由器記錄下所有看見的LSP
  • 當新分組到達
    • 先放于保留區
    • 新分組(不存在記錄中),則泛洪廣播
    • 保留區的分組和新分組比較序列號
      • 相等 => 丟棄
      • 不相等 => 保留新的

計算

  • 分組分發完全,構造全網拓撲圖
  • 基于完整的網絡圖,計算到每個目標的最短路徑(如:最短路徑算法)

LS算法特點

  • 優點
    • 路由器認識一致
    • LSP構造的圖完全一致
    • 收斂快
    • 適合大型網絡
  • 缺點
    • 路由器需要較大存儲空間
    • 計算負擔大

5.15 單區域OSPF

  • 開放的最短路徑優先
  • Open Shortest Path First
  • 鏈路狀態路由的典型實例

特點

  • 適用大型網絡
  • 解決路由自環問題
  • 度量:108÷帶寬
  • 收斂快

相關概念

  • RouterID:32位,自治系統內唯一,路由器的唯一標識
  • 協議號:89 => OSPF報文
  • TTL=1:OSPF通常只傳給鄰居路由器

OSPF分組的類型

OSPF數據包類型 描述
Hello 與鄰居建立和維護鄰居關系keep alive
數據庫描述包DD 描述一個OSPF路由器的鏈路狀態數據庫的內容
鏈路狀態請求LSR 請求相鄰路由器,發送其鏈路狀態數據庫中的具體條目
鏈路狀態更新LSU 向鄰居路由器發送鏈路狀態通告
鏈路狀態確認LSAck 確認收到了鄰居路由器的LSU
  • LSU的使用

    • 作為LSR的應答

    • 特殊事件發生時

      • 線路/鄰居down掉
      • 出現新的接口
  • LSAck

    • 任何時候收到LSU都需要回發LSAck

建立全毗鄰關系

  • 通過發送問候Hello包確認是否連接
  • 為了同步路由控制信息,利用數據庫描述Database Description包相互發送路由摘要信息和版本信息
  • 通過DD和自己的數據庫比對發現版本老舊,發送鏈路狀態請求Link State Request包,請求完整的路由控制信息
  • 對面會回發鏈路狀態更新Link State Update包,包含完整的路由狀態信息
  • 最后發送鏈路狀態確認Link State Acknowledgment包通知大家,本地已經接收到了路由狀態信息

指定路由器

  • Designated Router
  • 在一個比較復雜的網絡中,在同一個鏈路加入新的路由器,不需要在所有相鄰的路由器之間都進行控制信息`的交換,而是指定一個DR,并以它作為中心交換路由信息

5.16 無類域間路由 CIDR

  • Classless Inter Domain Routing
  • 緩解地址枯竭的趨勢(尤其是B類地址)
  • 縮減了路由表的開銷
    • 可以進行路由聚合,形成超網SuperNet
    • 路由聚合和子網規劃是相反的行為
  • 隔離了路由翻動

IP面臨的問題

  • 分類造成地址的浪費
  • 路由表的膨脹
    • 路由表動輒幾萬條
    • 分組到達時,查找路由表的時間會增加 => 通信的端到端延遲

基本思想

  • 分配IP地址時,不再以A、B、C的類別分類,按照可變長地址塊分配

舉例:用戶需要2000個IP地址

  • CIDR之前,只能分配一個B類地址
  • CIDR之后,分配一個x.x.x.x/21的塊地址
    • 網絡位:21位
    • 主機位:11位 => 211-2,2046個地址

IP地址的最長匹配前綴

  • 當一個分組到達路由器
  • 匹配到多個目標網絡時,選取網絡位最長的(子網掩碼1最多的)

路由聚合

  • 要求直連路由地址連續
  • 子網的下一跳是相同的

舉例:路由器RTA有4條直連路由,對應4個子網,形成連續的地址空間

  • 200.199.48.0/24 => x.x.001100 00.x
  • 200.199.49.0/24 => x.x.001100 01.x
  • 200.199.50.0/24 => x.x.001100 10.x
  • 200.199.51.0/24 => x.x.001100 11.x

第三段里的001100是不變的

=> 聚合結果:200.199.48.0/22(超網)

5.17 網絡地址翻譯 NAT

  • Net Address Translate
  • 私人地址和共有IP地址之間的轉換
  • IP地址枯竭的快速修補方案

私人地址空間

  • 不可路由
  • 全球不唯一
地址類別 RFC 1918 Internal Address Range CIDR前綴
A 10.0.0.0 ~ 10.255.255.255 10.0.0.0/8
B 172.16.0.0 ~ 172.31.255.255 172.16.0.0/12
C 192.168.0.0 ~ 192.168.255.255 192.168.0.0/16

NAT轉換器的工作原理

NAT的缺點

  • 影響部分協議和應用的同學
  • 增加了網絡延時
  • NAT轉換器可能成為網絡的瓶頸

5.18 互聯網控制消息協議 ICMP

Internet Control Message Protocol

  • 一般來說,ICMP消息僅發送給源機
  • ICMP消息不生成自己的差錯報告
  • ICMP消息封裝在IP分組中

主要功能

  • 確認IP包是否成功送達目標地址
  • 通知在發送過程當中IP包被丟棄的具體原因
  • 改善網絡設置

ICMP的具體應用

  • Ping
    • 源機向目的站點發送ICMP回聲請求報文
    • 目的站點接收到,必須向源機站點發回一個ICMP回聲應答報文
    • 源機站點收到應答報文,且其中的任選數據和發出去的相同,則判斷目的站點可達,否則為不可達
  • TraceRoute
  • 路徑MTU(最大傳輸單元)

Ping的應用

  • 測試TCP/IP是否正常工作

    ping 127.0.0.1
    
  • 測試網絡設備是否正常

    ping <本機的IP地址>
    
  • 檢查對外連接的路由器

    ping <默認網關IP>
    
  • 檢查與某臺設備的暢通情況

    ping <設備的IP>
    

5.19 地址解析協議 ARP

Address Resolution Protocol

  • 運行在局域網的協議
  • 將目標機的IP地址映射到MAC地址上

工作原理

  • ARP借助ARP請求ARP響應,兩種對應的包來確定MAC地址
  • ARP表緩存ARP的結果
  • 收到ARP請求,通過源機的IP地址和MAC地址的映射對,更新自己的ARP表
  • 免費ARP:每臺機器啟動時,廣播自己的IP-MAC地址對
    • Source IP = Target IP
    • 如果收到應答,說明自己的IP已被使用

舉例:主機A想要獲得同局域網下的主機B的MAC地址

A通過廣播發送一個ARP請求包

  • 請求包:包含請求通信的目標IP地址
  • 廣播的包可以被同一個鏈路上所有的主機/路由器接收

主機B接收到廣播的ARP請求包,并解析,發現包中的IP地址與自己的一致,則將自己的MAC地址封裝到ARP響應中發回。

其余主機解析后,發現目標IP地址不一致,則

  • 不做應答
  • 用ARP請求中的源信息來更新ARP表

5.20 擁塞控制

  • Congestion

  • 當一個子網或子網的一部分出現太多分組的時候,網絡的性能急劇下降。

  • 擁塞控制的措施

    • 開環:提前考慮
    • 閉環
  • 抑制分組生效時間慢,逐跳抑制可以快速緩解擁塞點壓力

  • 載荷脫落 => 丟棄分組,根據應用場景選擇不同的脫落策略

  • 隨機早期檢測可以防范于未然

5.20 流量整形

漏桶算法

  • 可以讓一個不穩定的流,整為一個穩定的流
  • 無法突發
  • 桶滿時,丟棄分組

令牌桶算法

  • 當一個分組要發送時,必須從桶中取出獲取到一個令牌
  • 令牌桶可以累計令牌,允許有上限的突發
  • 桶滿時,丟棄令牌
  • 有時候,可以在令牌桶后,再串接一個漏桶
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。