計算機網絡 網絡層(四)IPv6和IP多播

計算機網絡(十)

學習計算機網絡過程中的心得體會以及知識點的整理,方便我自己查找,也希望可以和大家一起交流。

—— 網絡層 ——

上接《計算機網絡 網絡層(三)》

《計算機網絡 網絡層(三)》

6. IPv6

  • IP 是互聯網的核心協議。
  • 互聯網經過幾十年的飛速發展,到2011年2月,IPv4 的 32 位地址已經耗盡。
  • ISP 已經不能再申請到新的 IP 地址塊了。
  • 我國在2014-2015年也逐步停止了向新用戶和應用分配 IPv4 地址。
  • 解決 IP 地址耗盡的根本措施就是採用具有更大地址空間的新版本的 IP,即 IPv6。

6.1 IPv6的基本首部

  • IPv6 仍支持無連接的傳送,但將協議數據單元 PDU 稱爲分組。爲方便起見,本書仍採用數據報這一名詞。

  • 所引進的主要變化如下:

    • 更大的地址空間。IPv6 將地址從 IPv4 的 32 位 增大到了 128 位。
    • 擴展的地址層次結構。
    • 靈活的首部格式。 IPv6 定義了許多可選的擴展首部。
    • 改進的選項。 IPv6 允許數據報包含有選項的控制信息,其選項放在有效載荷中。
    • 允許協議繼續擴充。
    • 支持即插即用(即自動配置)。因此 IPv6 不需要使用 DHCP。
    • 支持資源的預分配。 IPv6 支持實時視像等要求,保證一定的帶寬和時延的應用。
    • IPv6 首部改爲 8 字節對齊。首部長度必須是 8 字節的整數倍。原來的 IPv4 首部是 4 字節對齊。
  • IPv6數據報由兩大部分組成:

    • 基本首部 (base header)
    • 有效載荷 (payload)。有效載荷也稱爲淨負荷。有效載荷允許有零個或多個擴展首部(extension header),再後面是數據部分。
      網絡層
6.1.1 IPv6 數據報的基本首部
  • IPv6 將首部長度變爲固定的 40 字節,稱爲基本首部。
  • 把首部中不必要的功能取消了,使得 IPv6 首部的字段數減少到只有 8 個。
  • IPv6 對首部中的某些字段進行了如下的更改:
    網絡層
    網絡層
  • 版本(version)—— 4 位。它指明瞭協議的版本,對 IPv6 該字段總是 6。
  • 通信量類(traffic class)—— 8 位。這是爲了區分不同的 IPv6 數據報的類別或優先級。目前正在進行不同的通信量類性能的實驗。
  • 流標號(flow label)—— 20 位。 “流”是互聯網絡上從特定源點到特定終點的一系列數據報, “流”所經過的路徑上的路由器都保證指明的服務質量。所有屬於同一個流的數據報都具有同樣的流標號。
  • 有效載荷長度(payload length)—— 16 位。它指明 IPv6 數據報除基本首部以外的字節數(所有擴展首部都算在有效載荷之內),其最大值是 64 KB。
  • 下一個首部(next header)—— 8 位。它相當於 IPv4 的協議字段或可選字段。
  • 跳數限制(hop limit)—— 8 位。源站在數據報發出時即設定跳數限制。路由器在轉發數據報時將跳數限制字段中的值減 1。
    當跳數限制的值爲零時,就要將此數據報丟棄。
  • 源地址—— 128 位。是數據報的發送站的 IP 地址。
  • 目的地址—— 128 位。是數據報的接收站的 IP 地址。

IPv6 的擴展首部

  • IPv6 把原來 IPv4 首部中選項的功能都放在擴展首部中,並將擴展首部留給路徑兩端的源站和目的站的主機來處理。
  • 數據報途中經過的路由器都不處理這些擴展首部(只有一個首部例外,即逐跳選項擴展首部)。
  • 這樣就大大提高了路由器的處理效率

六種擴展首部
在 RFC 2460 中定義了六種擴展首部:

  • (1) 逐跳選項
  • (2) 路由選擇
  • (3) 分片
  • (4) 鑑別
  • (5) 封裝安全有效載荷
  • (6) 目的站選項

6.2 IPv6的地址

  • IPv6 數據報的目的地址可以是以下三種基本類型地址之一:
  • (1) 單播 (unicast):傳統的點對點通信。
  • (2) 多播 (multicast):一點對多點的通信。
  • (3) 任播 (anycast):這是 IPv6 增加的一種類型。任播的目的站是一組計算機,但數據報在交付時只交付其中的一個,通常是距離最近的一個。
6.2.1 結點與接口
  • IPv6 將實現 IPv6 的主機和路由器均稱爲結點
  • 一個結點就可能有多個與鏈路相連的接口。
  • IPv6 地址是分配給結點上面的接口的。
    • 一個接口可以有多個單播地址。
    • 其中的任何一個地址都可以當作到達該結點的目的地址。即一個結點接口的單播地址可用來唯一地標誌該結點
6.2.2 冒號十六進制記法
  • 在IPv6中,每個地址佔 128 位,地址空間大於 3.4x1038
  • 爲了使地址再稍簡潔些,IPv6 使用冒號十六進制記法(colon hexadecimal notation, 簡寫爲colon hex)。
  • 每個 16 位的值用十六進制值表示,各值之間用冒號分隔。例如:
    68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
  • 在十六進制記法中,允許把數字前面的0省略。例如把0000中的前三個0省略,寫成1個0。
  • 冒號十六進制記法可以允許零壓縮 (zero compression),即一連串連續的零可以爲一對冒號所取代。
    FF05:0:0:0:0:0:0:B3 可壓縮爲:
    FF05::B3
  • 注意:在任一地址中只能使用一次零壓縮

點分十進制記法的後綴

  • 冒號十六進制記法可結合使用點分十進制記法的後綴,這種結合在 IPv4 向 IPv6 的轉換階段特別有用。
  • 例如:0:0:0:0:0:0:128.10.2.1
    再使用零壓縮即可得出: ::128.10.2.1
  • CIDR 的斜線表示法仍然可用。
  • 例如:60 位的前綴 12AB00000000CD3 可記爲:
    12AB:0000:0000:CD30:0000:0000:0000:0000/60
    12AB::CD30:0:0:0:0/60 (零壓縮)
    12AB:0:0:CD30::/60 (零壓縮)
6.2.3 IPv6 地址分類

網絡層

  • 未指明地
    • 這是 16 字節的全 0 地址,可縮寫爲兩個冒號“::”。
    • 這個地址只能爲還沒有配置到一個標準的 IP 地址的主機當作源地址使用。
    • 這類地址僅此一個。
  • 環回地址
    • 即 0:0:0:0:0:0:0:1(記爲 ::1)。
    • 作用和IPv4的環回地址一樣。
    • 這類地址也是僅此一個。
  • 多播地址
    • 功能和 IPv4 的一樣。
    • 這類地址佔 IPv6 地址總數的 1/256。
  • 本地鏈路單播地址 (Link-Local Unicast Address)
    • 有些單位的網絡使用 TCP/IP 協議,但並沒有連接到互聯網上。連接在這樣的網絡上的主機都可以使用這種本地地址進行通信,但不能和互聯網上的其他主機通信。
    • 這類地址佔 IPv6 地址總數的 1/1024。
  • 全球單播地址
    • IPv6 的這一類單播地址是使用得最多的一類。
    • 曾提出過多種方案來進一步劃分這128位的單播地址。
    • 根據2006年發佈的草案標準RFC 4291的建議, IPv6 單播地址的劃分方法非常靈活。
      網絡層

6.3 從IPv4向IPv6過渡

  • 向 IPv6 過渡只能採用逐步演進的辦法,同時,還必須使新安裝的 IPv6 系統能夠向後兼容:IPv6 系統必須能夠接收和轉發 IPv4 分組,並且能夠爲 IPv4 分組選擇路由。
  • 兩種向 IPv6 過渡的策略:
    • 使用雙協議棧
    • 使用隧道技術
6.3.1 雙協議棧
  • 雙協議棧(dual stack)是指在完全過渡到 IPv6 之前,使一部分主機(或路由器)裝有兩個協議棧,一個 IPv4 和一個 IPv6
  • 雙協議棧的主機(或路由器)記爲 IPv6/IPv4,表明它同時具有兩種 IP 地址:一個 IPv6 地址和一個 IPv4 地址
  • 雙協議棧主機在和 IPv6 主機通信時是採用 IPv6 地址,而和 IPv4 主機通信時就採用 IPv4 地址。
  • 根據 DNS 返回的地址類型可以確定使用 IPv4 地址還是 IPv6 地址。
    網絡層
6.3.2 隧道技術
  • 在 IPv6 數據報要進入IPv4網絡時,把 IPv6 數據報封裝成爲 IPv4 數據報,整個的 IPv6 數據報變成了 IPv4 數據報的數據部分。
  • 當 IPv4 數據報離開 IPv4 網絡中的隧道時,再把數據部分(即原來的 IPv6 數據報)交給主機的 IPv6 協議棧。
    網絡層

6.4 ICMPv6

  • IPv6 也不保證數據報的可靠交付,因爲互聯網中的路由器可能會丟棄數據報。
  • 因此 IPv6 也需要使用 ICMP 來反饋一些差錯信息。新的版本稱爲 ICMPv6。
  • 地址解析協議 ARP 和網際組管理協議 IGMP 協議的功能都已被合併到 ICMPv6 中。
    網絡層
6.4.1 ICMPv6 報文的分類
  • CMPv6 是面向報文的協議,它利用報文來報告差錯,獲取信息,探測鄰站或管理多播通信。
  • ICMPv6 還增加了幾個定義報文的功能及含義的其他協議。
    網絡層

7. IP 多播

7.1 IP 多播的基本概念

  • IP 多播 (multicast,以前曾譯爲組播) 已成爲互聯網的一個熱門課題。
  • 目的:更好第支持一對多通信
  • 一對多通信:一個源點發送到許多個終點。
  • 例如,實時信息的交付(如新聞、股市行情等),軟件更新,交互式會議及其他多媒體通信。
    網絡層
    網絡層
  • 在互聯網上進行多播就叫作 IP 多播
  • 互聯網範圍的多播要靠路由器來實現。
  • 能夠運行多播協議的路由器稱爲多播路由器(multicast router)。當然它也可以轉發普通的單播IP數據報。
  • 從1992年起,在互聯網上開始試驗虛擬的多播主幹網MBONE (Multicast Backbone On the InterNEt)。 現在多播主幹網已經有了相當大的規模。
7.1.1 IP多播地址
  • IP 多播所傳送的分組需要使用多播 IP 地址。
  • 在多播數據報的目的地址寫入的是多播組的標識符。
  • 多播組的標識符就是 IP 地址中的 D 類地址(多播地址)。
  • 每一個D類地址標誌一個多播組。
  • 多播地址只能用於目的地址,不能用於源地址。
7.1.2 多播數據報
  • 多播數據報和一般的 IP 數據報的區別就是它使用 D 類 IP 地址作爲目的地址,並且首部中的協議字段值是2,表明使用網際組管理協議 IGMP。
  • 多播數據報也是“盡最大努力交付”,不保證一定能夠交付多播組內的所有成員。
  • 對多播數據報不產生 ICMP 差錯報文。因此,若在 PING 命令後面鍵入多播地址,將永遠不會收到響應。

7.2 在局域網上進行硬件多播

  • 互聯網號碼指派管理局 IANA 擁有的以太網地址塊的高 24 位爲 00-00-5E。
  • 因此 TCP/IP 協議使用的以太網多播地址塊的範圍是
    從 00-00-5E-00-00-00
    到 00-00-5E-FF-FF-FF
  • 不難看出,在每一個地址中,只有23位可用作多播。
  • D 類 IP 地址可供分配的有 28 位,在這 28 位中的前 5 位不能用來構成以太網硬件地址。
    D 類 IP 地址與以太網多播地址的映射關係
    網絡層
  • 由於多播IP地址與以太網硬件地址的映射關係不是唯一的,因此收到多播數據報的主機,還要在 IP 層利用軟件進行過濾,把不是本主機要接收的數據報丟棄。

7.3 網際組管理協議 IGMP 和多播路由選擇協議

7.3.1 IP 多播需要兩種協議
  • 爲了使路由器知道多播組成員的信息,需要利用網際組管理協議 IGMP (Internet Group Management Protocol)。
  • 連接在局域網上的多播路由器還必須和互聯網上的其他多播路由器協同工作,以便把多播數據報用最小代價傳送給所有的組成員。這就需要使用多播路由選擇協議。

IGMP 使多播路由器知道多播組成員信息
網絡層
IGMP 的使用範圍

  • IGMP 並非在互聯網範圍內對所有多播組成員進行管理的協議。
  • IGMP 不知道 IP 多播組包含的成員數,也不知道這些成員都分佈在哪些網絡上。
  • IGMP 協議是讓連接在本地局域網上的多播路由器知道本局域網上是否有主機(嚴格講,是主機上的某個進程)參加或退出了某個多播組。

多播路由選擇協議更爲複雜
網絡層

  • 多播轉發必須動態地適應多播組成員的變化(這時網絡拓撲並未發生變化)。請注意,單播路由選擇通常是在網絡拓撲發生變化時才需要更新路由。
  • 多播路由器在轉發多播數據報時,不能僅僅根據多播數據報中的目的地址,而是還要考慮這個多播數據報從什麼地方來和要到什麼地方去。
  • 多播數據報可以由沒有加入多播組的主機發出,也可以通過沒有組成員接入的網絡。
7.3.2 網際組管理協議 IGMP
  • 1989 年公佈的 RFC 1112(IGMPv1)早已成爲了互聯網的標準協議。
  • 1997 年公佈的 RFC 2236(IGMPv2,建議標準)對 IGMPv1 進行了更新。
  • 2002 年 10 月公佈了 RFC 3376(IGMPv3,建議標準),宣佈 RFC 2236(IGMPv2)是陳舊的。

IGMP 是整個網際協議 IP 的一個組成部分

  • 和 ICMP 相似,IGMP 使用 IP 數據報傳遞其報文(即 IGMP 報文加上 IP 首部構成 IP 數據報),但它也向 IP 提供服務。
  • 因此,我們不把 IGMP 看成是一個單獨的協議,而是屬於整個網際協議 IP 的一個組成部分。

IGMP 工作可分爲兩個階段

  • 第一階段:加入多播組
    • 當某個主機加入新的多播組時,該主機應向多播組的多播地址發送IGMP 報文,聲明自己要成爲該組的成員。
    • 本地的多播路由器收到 IGMP 報文後,將組成員關係轉發給互聯網上的其他多播路由器。
  • 第二階段:探詢組成員變化情況。
    • 因爲組成員關係是動態的,因此本地多播路由器週期性地探詢本地局域網上的主機,以便知道這些主機是否還繼續是組的成員。
    • 只要對某個組有一個主機響應,那麼多播路由器就認爲這個組是活躍的。
    • 但一個組在經過幾次的探詢後仍然沒有一個主機響應,則不再將該組的成員關係轉發給其他的多播路由器。

IGMP 採用的一些具體措施

  • 在主機和多播路由器之間的所有通信都是使用 IP 多播。
  • 多播路由器在探詢組成員關係時,只需要對所有的組發送一個請求信息的詢問報文,而不需要對每一個組發送一個詢問報文。默認的詢問速率是每 125 秒發送一次。
  • 當同一個網絡上連接有幾個多播路由器時,它們能夠迅速和有效地選擇其中的一個來探詢主機的成員關係。
  • 在 IGMP 的詢問報文中有一個數值 N,它指明一個最長響應時間(默認值爲 10秒)。當收到詢問時,主機在 0 到 N 之間隨機選擇發送響應所需經過的時延。對應於最小時延的響應最先發送。
  • 同一個組內的每一個主機都要監聽響應,只要有本組的其他主機先發送了響應,自己就可以不再發送響應了。
7.3.3 多播路由選擇
  • 多播路由選擇協議尚未標準化。
  • 一個多播組中的成員是動態變化的,隨時會有主機加入或離開這個多播組。
  • 多播路由選擇實際上就是要找出以源主機爲根結點的多播轉發樹
  • 在多播轉發樹上的路由器不會收到重複的多播數據報。
  • 對不同的多播組對應於不同的多播轉發樹。
  • 同一個多播組,對不同的源點也會有不同的多播轉發樹。
  • 多播路由選擇協議在轉發多播數據報時使用三種方法:
    • (1) 洪泛與剪除

      • 這種方法適合於較小的多播組,而所有的組成員接入的局域網也是相鄰接的。
      • 一開始,路由器轉發多播數據報使用洪泛的方法(這就是廣播)。
      • 爲了避免兜圈子,採用了叫作反向路徑廣播 RPB (Reverse Path Broadcasting)的策略。
        RPB要點:
        • 路由器收到多播數據報時,先檢查它是否是從源點經最短路徑傳送來的。
        • 若是,就向所有其他方向轉發剛纔收到的多播數據報(但進入的方向除外),否則就丟棄而不轉發。
        • 如果存在幾條同樣長度的最短路徑,那麼只能選擇一條最短路徑,選擇的準則就是看這幾條最短路徑中的相鄰路由器誰的 IP 地址最小。
        • 最後就得出了用來轉發多播數據報的多播轉發樹,以後就按這個多播轉發樹轉發多播數據報。避免了多播數據報的兜圈子,同時每一個路由器也不會接收重複的多播數據報。
        • 如果在多播轉發樹上的某個路由器發現它的下游樹枝(即葉節點方向)已沒有該多播組的成員,就應把它和下游的樹枝一起剪除。
        • 當某個樹枝有新增加的組成員時,可以再接入到多播轉發樹上。
          網絡層
    • (2) 隧道技術 (tunneling)
      網絡層

    • (3) 基於核心的發現技術

      • 這種方法對於多播組的大小在較大範圍內變化時都適合。
      • 這種方法是對每一個多播組 G 指定一個核心(core) 路由器,給出它的 IP 單播地址
      • 核心路由器按照前面講過的方法創建出對應於多播組 G 的轉發樹。
7.3.4 幾種多播路由選擇協議
  • 距離向量多播路由選擇協議 DVMRP (Distance Vector Multicast Routing Protocol)
  • 基於核心的轉發樹 CBT (Core Based Tree)
  • 開放最短通路優先的多播擴展 MOSPF (Multicast Extensions to OSPF)
  • 協議無關多播-稀疏方式 PIM-SM (Protocol Independent Multicast-Sparse Mode)
  • 協議無關多播-密集方式 PIM-DM (Protocol Independent Multicast-Dense Mode)

後續內容查看《計算機網絡 網絡層(五)》

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