從 IPv4 到 IPv6 過渡,無法錯過這些知識點

理解網絡模型

網絡的設計大佬們想出了分層的設計,將各個功能分開,交付給不同的層,這樣的好處是便於更新和維護(IPv6的到來並沒有使整個網絡重新設計),也便於我們的學習和理解.下面是各個版本的網絡體系的結構圖:

從 IPv4 到 IPv6 過渡,無法錯過這些知識點

讓我們明確下各層的工作職責(以五層協議為例):

應用層,該層協議主要負責各個應用程序之間交互的規則.如HTTP,DNS,其交互的數據單元可以稱為”報文”.運輸層,為應用層提供通用的數據傳輸服務.為上層跑腿的.TCP,UDP均是運輸層協議.

網絡層,為網絡中不同的主機提供通信服務.IP協議工作在該層.

數據鏈路層,負責相鄰兩點的數據傳送.

物理層, 傳輸比特流, 0 或 1. 每一層將數據封裝成自己能理解的數據格式,交付給下一層,下一層將收到的作為自己的數據再次添加本層的必要數據,向下交付,直到鏈路層,傳遞到目的地後,每層再將該層的必要數據去掉,交付給上層.

如下圖:

從 IPv4 到 IPv6 過渡,無法錯過這些知識點

理解IP協議

在理解了網絡模型和各層直接的配合之後,下面進入今天的正題,網際協議(IP).

該節主要理解IP協議給我們提供的功能有哪些,說白了就是它能幹嘛.

為網絡中的主機(PC或路由或網關)提供身份證.

定義了網絡主機的基本交流方式, 從IP數據報的格式可以看出.

為路由尋址提供方便, 從路由表結構可以看出.


任何一個協議都可以由語法,語義和同步三部分組成.

語法,交換信息的格式,對於IP協議,就是IP報文的格式.

語義,即需要發出何種控制信息,以及接收到信息後如何響應.

同步,對事件順序的詳細說明.

也就是定義了使用IP協議進行交流的法則.


IPv4

IPv4是IP協議的第4個版本,就是我們現在使用的.下面從多個方面瞭解下該版本.

IP地址

網絡上的主機都需要一個IP地址,這樣才能知道彼此的位置.IPv4地址由32bit構成,常使用點分十進制表示(192.168.1.1).

分類

IP地址的分類就是把所有IP劃分為若干類別, 每一類都由固定長度的字段組成.分別為網絡號和主機號.下面是各類地址組成示意圖:


從 IPv4 到 IPv6 過渡,無法錯過這些知識點


A類地址,8位網絡號,第一位固定為0,可用的網絡號只有126個(2^7-2),網絡號從0到127. 減去2是因為:IP地址全為0表示”本網絡”,保留; 網絡號為127作為軟件迴環測試使用, 若主機發出目的地為127.0.0.1的數據時,該數據不會向任何網絡上的主機發送.也就是說127開頭的地址不能使用. 對於A類地址中的每一個網絡號,對應的主機號有(2^24-2)個: 主機號全0表示,其網絡號對應的網絡地址, 全1表示所有主機的意思.

B類地址網絡號為16位,但前面2位以固定為1 0.無論怎麼取值,無法出現全0或全1的情況.128.0.0.0的網絡是不使用的,實際使用的最小B類網絡地址為128.1.0.0.所以B類的網絡地址有(2^14-1)個.

C類的地址有24位的網絡號,最前面的3位固定為1 1 0.192.0.0.0的網絡地址也是不使用的,最小的C類地址為192.0.1.0



總結如下:


從 IPv4 到 IPv6 過渡,無法錯過這些知識點

分類的好處:

  • 方便管理,IP地址管理機構只需管理網絡號,剩下的可以由下級管理.
  • 路由尋址時根據網絡地址轉發分組,減小路由表.

數據報格式

先看下IP數據報的基本格式:

從 IPv4 到 IPv6 過渡,無法錯過這些知識點

可以看到IP數據報包含了首部和數據部分. 其中首部包含固定的20字節和可變的部分. 下面是各部分的解釋:

版本,佔4位,IP協議的版本號,通信雙方需要相同.

首部長度

,佔4位, 單位4字節.最大能表示(2^4-1) * 4 = 60字節.當IP分組的首部長度不是4的整數倍時,需要使用填充字段填充.

區分服務,佔8位, 表示服務類型,未使用.

總長度, 佔16位,表示首部和數據部分的總長度(單位字節).因此數據報的最大總長度為(2^16-1 = 65535)字節.

標識(identification), 佔16位.當數據報長度超過下層的MTU時,需要分片, 被分片的數據報的標識一樣,這樣可以進行重組.

標誌(Flag), 佔3位, 目前只有2位有意義

最低位,MF(More Fragment) = 1 表示後面還有分片. MF = 0 表示分片中的最後一個.

中間一位,DF(Don’t Fragment),不要分片,只有當DF=0才允許分片.

片偏移, 佔13位.較長的分組在分片後, 某片在原分組的相對位置.必須是8字節的整數倍。

生存時間, 佔8位, Time To Live(TTL),開始指生存的秒數,後來變為經過路由的跳數,每經過一個路由,TTL減小1,當為0時,丟棄該數據.顯然,最大跳數為255, 為1時就只能在局域網中傳播了。


協議, 佔8位.支出該數據報的數據是使用何種協議, 以便目的主機IP層知道將數據交付給哪個協議處理. 常用的協議及對應數值:


從 IPv4 到 IPv6 過渡,無法錯過這些知識點


首部校驗和, 佔16位.數據報的首部校驗和,不包括數據部分.

源地址, 目的地址, 各佔32位


IPV6

IPv6的出現是解決IPv4資源枯竭的問題.其仍然支持無連接的傳送, 但傳送的是PDU分組,而不是IPv4的數據報.

IP地址

IPv6的地址是128bit,在可預見的未來是夠用的.但和IPv4版本並不兼容, 若使用IPv4版本的主機A和使用IPv6版本的主機B之間通信是需要特殊處理的,在後面會介紹方法.

IPv6的地址表示

IPv6的地址採用冒號十六進制記法 , 8組4個16進制數字,中間使用冒號隔開.例如:

6845:8C64:FFFF:FFFF:0:1180:9000:FFFF

若一組中全是0,可以省略三個.

若存在連續多組0,可以使用冒號取代,但只能壓縮一次 FF05:0:0:0:0:0:0:B3 可以壓縮為 FF05::B3


1090:0:0:0:8:800:200C:417A 可以壓縮為 1090::8:800:200C:417A 全零可記為 ::

最後的2組可以使用IPv4的點分十進制表示 0:0:0:0:0:0:128.10.2.1 可表示為 ::128.10.2.1


數據報格式

IPv6數據報由兩大部分組成, 基本首部和有效載荷.有效載荷運行有0個或多個擴展首部.

從 IPv4 到 IPv6 過渡,無法錯過這些知識點

可以看到,IPv6的首部是固定的40字節,和IPv4不同;在組成上也有很大區別,下面看下各部分的意思.

版本, 佔4位, 協議的版本,通信雙方需要相同

通信量類, 佔8位.區分不同的IPv6的數據報或優先級.

流標號, 佔20位. IPv6一個新機制就是支持資源預分配, 運行路由把每個數據報與特定的資源分配和聯繫.IPv6提出流的概念.指互聯網上從特定源點到特定終點的一系列數據報(如實時的音頻或視頻傳輸), 在這個流經過的路徑上路由都保證指明的服務質量.所有屬於同一個流的數據報具有相同的流標號.賦值為0即為關閉.

有效載荷長度, 佔16位.指明除基本首部以外的字節數.最大64KB.

下一首部, 佔8位.相當於IPv4的協議字段或可選字段.

當IPv6沒有擴展首部時, 該字段和IPv4的協議字段一樣.

有擴展首部時,表示第一個擴展首部的類型.

跳數限制, 和IPv4的TTL一樣

源地址,目的地址, 各佔128位


從IPv4向IPv6過渡

網絡如此龐大,從IPv4向IPv6的變換不可能一蹴而就.若要在兩個版本的協議下通信,有下面的2個方法

雙協議棧

簡單的說就是一個主機能夠理解兩個版本的內容,這樣主機也要有2個版本對應的IP地址.具有雙協議棧的主機, 可以通過DNS系統知道目的主機使用的協議版本.

下面是兩臺使用IPv6的主機通信示意圖,它們之間需要通過IPv4網絡, 在必要的時候經過雙協議棧的主機進行協議的轉換,當然轉換的時候有些信息可能丟失,這也是不可避免的.

從 IPv4 到 IPv6 過渡,無法錯過這些知識點

使用隧道技術

隧道技術的原理是,在IPv6的數據需要進入IPv4網絡時,將IPv6的數據報(準確的說是PDU)當成IPv4數據報的數據部分,使用IPv4版本傳輸,在離開IPv4網絡時在此組裝成IPv6的數據,發往目的地.下面是一個示意圖:

從 IPv4 到 IPv6 過渡,無法錯過這些知識點

結束語

關於IP協議,還有很多可以談的地方, 這裡就不再深入了.讀完希望你能有一個”明鏡一樣”的感覺。

本文來源於網絡,作者:埃文小工來源:今日頭條出於傳播網絡知識之目的,轉載該文章,如需刪除,請私信。


分享到:


相關文章: