tft每日頭條

 > 生活

 > 網絡啟動協議ipv6

網絡啟動協議ipv6

生活 更新时间:2024-09-03 01:26:41
網絡協議——IPv6從初始到詳解,協議包頭說明IPv6地址的顯示規則

32位的IPv4地址的表示方式了,ipv4地址被分割為4個8位段,其中每個8位段的數字大小在0~255之間,并且每個8位段之間使用英文符号句點“.”來分開,因此有時也使用術語“點分十進制表示法”來專指IPv4地址的這種表示法。

而128位的IPv6地址則被分割成8個16位段來表示,其中每個16位段書寫為大小在0x0000~0xFFFF之間的十六進制的數字表示,并且每個16位段之間使用英文符号冒号“:”來分開。例如,下面就是一個IPv6地址的書寫方式:3ffe:1944:0100:000a:0000:00bc:2500:0d0b

有2條規則來簡化書寫規則:

1.任何一個16位段中起始的0不必寫出來;任何一個16位段如果少于4個十六進制的數字,就認為忽略書寫的數字是起始的0;

即之前的ipv6地址可以簡寫為:

3ffe:1944:0100:000a:0:bc:2500:d0b

這裡需要注意的是,隻有起始的0才可以被忽略掉,末尾的0是不能忽略的;

2.任何由全0組成的1個或多個16位段的單個連續的字符串都可以用一個雙冒号“::”來表示;

例如:

ff02:0000:0000:0000:0000:0000:0000:0005

簡寫為:

ff02::5

這條規則僅對于單個連續不間斷的全0字符傳分段部分可以使用雙冒号"::"來表示;并且不能使用使用兩次雙冒号;

IPv6 地址掩碼

ipv6 協議的前綴始終通過位計數的方式标識。通過在ipv6地址後面加一個斜線'/',随後再跟一個十進制的數字來标識一個ipv6地址的起始位有多少位是前綴位。

eg:

3ffe:1944:100:a::bc:2500:d0b/64

當需要書寫一個IPv6地址的前綴時,也可以使用和IPv4地址一樣的書寫方式将所有的主機位設置為0。例如:3ffe:1944:100:a::/64

## IPv6 的地址類型

ipv6地址存在以下3種類型:

單播  Unicast

任意播 Anycast

多播 Multicast

ipv6沒有廣播地址,但是ipv6地址協議提供了一個包含“全部節點”的多播地址,用來實現與IPv4 地址協議中廣播同樣的目的;

1.全球單播地址

單播地址用來表示單台設備的地址。一個全球單播地址是指這個單播地址是全球唯一的;

早期ipv6 單播地址的通用格式如下:

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)1

地址的主機部分被稱作接口ID(Interface ID);之所以取這個名字是因為一台主機可以擁有不止一個的IPv6接口,因而使用這樣的地址标識主機的一個接口比标識一台主機本身更加準确。

但是,它的精确性也就僅僅到此為止:單個接口也能夠擁有多個IPv6地址,并且能夠擁有一個附加的IPv4的地址,在這樣的實例中,接口ID僅僅表示該接口的幾個标識符的其中一個。

除了長度不同外,IPv6地址與IPv4地址協議之間最顯著的不同就是子網标識符的位置不同。IPv6地址的子網标識符的位置是地址的網絡域的一部分,而不是該地址的主機域的一部分。

在IPv4地址分類體系結構的傳統概念中,一個地址的子網部分來自于該地址的主機部分,減少了地址的主機位。結果是,IPv4地址的主機部分不僅僅使它的分類産生變化,而且導緻用于子網标識的位數産生變化。

使用地址的網絡部分作為IPv6子網ID的一個直接的好處就是,所有IPv6地址的接口ID都有大小一緻的位數,這就大大地簡化了地址的解析複雜度。而且,使用地址的網絡部分作為子網ID,會産生一個更加清楚的分工,功能更加清晰:網絡部分提供了一台設備到下行專用數據鍊路的定位,而主機部分提供這條數據鍊路上該設備的标識。

除了極少數的例外,全球IPv6地址的接口ID都是64位二進制位的長度。同樣,除了極少數的例外,子網ID字段都是16位二進制位(如圖22所示)。一個16位的子網ID字段可以提供65536個不同的子網。使用固定長度大小的子網ID看起來好像有些浪費,因為在大多數實例中遠沒有使用到這麼大容量的子網數。但是,考慮到使用IPv6地址空間的總長度和容易分配、設計、管理以及解析地址的好處,使用固定長度大小的子網ID所帶來的浪費也是可接受的。

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)2

Internet地址授權委員會(Internet Assigned Numbers Authority,IANA)和地區Internet注冊機構(Regional Internet Registries,RIR)通常把長度為/32或/35的IPv6前綴分配給本地Internet注冊機構(Local Internet Registries,LIR)。然後,本地Internet注冊機構LIR——通常是大型的Internet服務提供商(ISP),他們再把更長的前綴分配給他們各自的客戶。在大多數的實例中,本地Internet注冊機構LIR分配的前綴長度都是/48。正如前面所提及的,有一些例外的情況,LIR也可能會分配不同長度的前綴;

2.标識IPv6的地址類型

ipv6地址起始的一些二進制指明了該地址的類型;eg,目前所有的全球單播地址的前三位是001;所有的全球單播地址都是以2或3開頭的,這根據全球路由選擇前綴的第四位的值而定;

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)3

3.本地單播地址

當我們談論全球單播地址的時候,我們就認為這個地址是全球範圍使用的。也就是說,這樣的地址是全球惟一的,并且能夠在全球範圍内被路由而無需進行更改。

IPv6也擁有鍊路本地單播地址(link-local unicast address),這種地址是使用範圍限定在單條鍊路上的地址。它的惟一性是僅僅限于所在的鍊路,并且相同的地址也可能存在于另一條鍊路上,因此這樣的地址離開所在的鍊路是不可路由的。正如讀者在表21中所看到的,鍊路本地單播地址的起始10位永遠是1111111010(FE80::/10)。

4.任意播地址

一個任意播地址(Anycast address,也可稱為任播地址或泛播地址)表示的更像一種服務,而不是一台設備,并且相同的地址可以駐留在提供相同服務的一台或多台設備中。如圖2-3所示,某些服務是由3台服務器提供的,但卻是通過IPv6地址3ffe:205:1100::15來進行該服務的所有通告的。

接收到包含該地址通告的路由器不會知道是由3台不同的設備通告給它的。相反,路由器會假定有3條路由到達相同的目的地,并會選擇一條代價最低的路由。如圖2-3所示,這條路由是到達服務器C的,它的代價是20。

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)4

使用任意播地址的好處就是,路由器總是選擇到達“最近的”或“代價最低的”服務器的路由。因此,提供一些通用服務的服務器能夠通過一個大型的網絡進行傳播,并且流量可以由本地傳送到最近的服務器,這樣就可以使網絡中的流量模型變得更有效。而且,如果其中一台服務器變得不可用時,路由器能夠把路由指向下一台最近的服務器。舉例來說,如圖2-3所示,如果服務器C因為網絡或服務器本身出現故障而變得不可用了,那麼路由器就會選擇到達服務器A的路徑,因為到達服務器A是倒數第二個代價最低的路由。從路由器的角度來看,它選擇的是到達同一個目的地最優的路由。

任意播地址僅是根據它們提供的服務功能而定義的,而不是根據它們的格式,而且理論上來說可能是任何範圍内的任何一個IPv6單播地址。但是,在RFC2526中定義了一個保留的任意播地址的格式。任意播地址在IPv4協議的網絡中已經使用了一段時間,但是在IPv6協議中它們的定義才被正式化。

5.多播地址

多播地址标識的不是一台設備,而是一組設備——一個多播組(multicast group,或稱為多播群)。發送給一個多播組的數據包可以由單台設備發起。因此,一個多播數據包通常包括一個單播地址作為它的源地址,一個多播地址作為它的目的地址。在一個數據包中,多播地址從來不會作為源地址出現。

一個多播組的成員可能隻有一台單個的設備,也可能甚至是該網絡上所有的設備。事實上,IPv6協議并不像IPv4協議那樣有一個保留的廣播地址,而是有一個保留的包含所有節點的多播組,實際上做相同的事情:所有接收它的設備都是屬于該多播組。

多點傳送實際上是IPv6協議的一個基本的操作,特别是對于即插即用特性的一些功能,例如路由器發現和地址自動配置等,這些功能是鄰居發現協議的一部分。

IPv6多播地址的格式如圖2-4所示。多播地址起始的8位總是全1,并且後跟的4位被指定作為标記位。這些标記位的前3位目前沒有使用,全部設置為0。第4位用來指出這個地址是一個永久的、公認的地址(設為0),還是一個管理分配使用的暫時性的地址(設為1)。接下來的4位數字表示該地址的範圍,如表2-2所示。表2-3中顯示了幾個保留的、公認的IPv6多播地址,所有這些地址都屬于鍊路本地的範圍。由于多播組總是一組獨立的節點,因而在多播地址中的子網字段是不需要的,或者說是沒有意義的。而最後的112位是用來作為zu組id(group id),标識各個不同的多播組。目前的用法是設置前面的80位為0,而隻使用後面的32位。

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)5

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)6

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)7

6.嵌入的IPv4地址

有幾種轉換技術,将ipv4地址的網絡轉換成ipv6地址的技術,或者另外一種讓兩者共存的技術---要求ipv4的地址在ipv6地址環境中進行通信。

這裡具體就不展開了;沒遇到過;

IPv6包頭格式

IPv6包頭(Paekct Header)的格式如圖2-5所示。這和IPv4的數據包頭部有些明顯的相像,也有些或明顯的或細微的不同之處,IPv4的數據包頭部請參見之前的文章。

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)8

• 版本(Version)——和IPv4的報頭(Header)一樣,是一個4位的字段,用來指出IP協議的版本。當然,在這裡它被設置為0110,表明是版本6。

• 流量類别(TrafficClass)——是一個8位的字段,這相當于IPv4協議中的ToS字段。但是,考慮到ToS字段這些年的發展,現在都用來做區分服務等級(Differentiated Class of Service,DiffServ)了。所以,即使這個字段和舊的ToS字段有些相似,它們的名字要比所傳送的值更能确切地反映目前的用處。

• 流标簽(Flow Label)——是IPv6協議獨有的字段,長度為20位。這個字段的設置目的是允許為特定的業務流打上标簽;也就是說,數據包不僅僅始發于相同的源和到達相同的目的地,而且在源和目的地都屬于相同的應用。區分不同的流可以帶來幾方面的優點,從可以提供更精細的服務類别區分的顆粒,到在平衡業務流量通過多條路徑時可以确保屬于同一個流的數據包能夠總是轉發到相同的路徑上去,以便避免對數據包進行重新排序。流(或更精确地稱為微分流,microflows)可以用源地址、目的地址加上源和目的端口的組合來确定。但是,為了識别源和目的端口,路由器必須能夠看到IP報頭的上層——TCP或UDP(或其他傳輸層協議)報頭——這就增加了轉發處理的複雜性,并可能會影響路由器的性能。由于IPv6的擴展報頭,在IPv6的數據包裡搜索傳輸層報頭尤其會産生問題。一台IPv6的路由器比較分步通過可能存在的多個擴展報頭來搜索傳輸層報頭。

在發起一個數據包時,加上合适的流标簽字段,路由器就能識别一個流,而不必進一步的查找數據包頭部。

盡管如此,它還是作出了這樣一個許諾——允許IPv6可以為像IP語音(VoIP)這樣的應用提供比IPv4更好的服務質量保證(QoS)。

目前有關使用流标簽字段的完整說明仍在争論,因此目前路由器,交換機還是忽略該字段。

• 有效載荷長度(Payload Length)——用來指定數據包所封裝的有效載荷的長度,以字節計數。因為IPv4的報頭包含可選字段和填充字段,因而它的報頭長度是可變的。因此,為了得到IPv4數據包的有效載荷長度,必須用總長度字段的值減去報頭長度字段的值。而另一方面,IPv6數據包頭部長度總是固定的40字節,而且單從有效載荷長度字段就足以能得到有效載荷的起始和結尾了。在這裡也請讀者注意,盡管IPv4的總長度字段是16位的,但是IPv6的有效載荷長度字段卻是20位。這意味着該字段能夠指定更長的有效載荷(1048575字節,相對IPv4中隻有65535字節)。因此,IPv6數據包本身在理論上來說具有傳送更大的有效載荷的能力。

• 下一報頭(Next Header)——指出了跟随該IPv6數據包頭部後面的報頭。在這裡,這個字段和IPv4協議報頭中的協議字段非常類似。事實上,當下一報頭字段是一個上層協議報頭時,其将用于同樣的目的。與IPv4中的字段一樣,這個字段也是8位的。但是,在IPv6協議中,跟随在該數據包頭部後面的報頭可能不是一個上層協議報頭,而是一個擴展的頭部(在下一節中講述)。因此,從下一頭部字段的命名上就可以反映出它具有更廣泛的功能範圍。

• 跳數限制(Hop Limit)——這個字段和IPv4協議中生存時間(TTL)字段在長度(都是8位)和功能上都是非常一緻的。TTL字段的最初設想是,在數據包轉發過程期間,當在路由器上排隊等待時就用該字段的值減去相應的以等待的秒數為單位的計數值,但這一功能從來沒有實現過。相反,路由器直接對TTL值進行減1,而不管該數據包在這台路由器上排隊等待了多長時間(況且,在現代網絡中,數據包在任何一個地方排隊等待接近1s的時間都是非常不正常的)。因此,TTL事實上總是被用來作為衡量一個數據包到達目的地的路徑中所能跨越的最大路由器跳數的工具。如果TTL值減少為0,那麼該數據包就被路由器丢棄。跳數限制的功能也完全相同,但它的命名更加貼近了它的功能特點。

• 源地址和目的地址(Source and Destination Address)——這和IPv4協議中的源地址和目的字段是一樣的,當然,在IPv6協議中,這些字段是128位的長度而已。

在IPv6報頭中,很明顯缺少的一個字段是IPv4報頭中包含的校驗和字段。在現代傳輸介質的可靠性全面提高的今天——當然無線傳輸或許是例外——由于上層協議通常攜帶它們自己的錯誤校驗和恢複機制,IPv6報頭本身的校驗和就體現不出太多的價值了,因而就被去掉了。

IPv6擴展報頭

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)9

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)10

對比IPv4和IPv6的報頭,雖熱原地址和目的地址字段的長度都是報頭的4倍,但是IPv6報頭本身的長度并不比IPv4報頭長:IPv6報頭長度為40字節,而IPv4報頭最小長度為20字節。如果IPv4的可選字段也用來擴展應用,那麼IPv4報頭長度實際上比IPv6報頭大;

除了可選項字段,其他的字段并不是很常用到,例如那些與分段有關的字段,從而在IPv6報頭裡就去掉了那些字段。因此,給定了固定長度并且排除了所有不攜帶每個數據包轉發時所必要信息的字段,IPv6報頭變得更加簡潔和有效。但是,如果我們需要使用這些IP特性的某個可選項,例如分段、源路由選擇或認證,我們又該怎麼做呢?于是就在IPv6協議中,提供了一項可選的功能——擴展報頭(extension header),在需要提供這些功能時可以添加在報頭之後。例如,如果需要使用源路由選擇、分段和認證等可選功能,那麼就可以把它們各自需要增加的功能信息加載到3個擴展報頭當中,就像圖2-6所顯示的那樣。因為這些報頭,IPv6數據包可以在以下兩個方面提高效率:

• 數據包僅僅需要傳送各自數據包所需要的信息,不需要傳送用不到的字段。

• 可以通過定義新的擴展報頭添加到IPv6數據包中來增加新的可選功能。

每一個擴展報頭都像IPv6報頭一樣,有一個下一報頭字段。因此,每一個報頭都會告知是哪一個報頭跟在它的後面。表2-4中顯示了當前定義的擴展報頭和它們下一報頭的值。

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)11

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)12

例如,如圖2-7所示,IPv6報頭中下一報頭字段的值表明它的下一個報頭是一個路由選擇擴展報頭(43),這個報頭的下一報頭字段表示它的下一個報頭是一個分段擴展報頭(44),依此類推。最後一個擴展報頭AH表示它的下一個報頭是一個TCP報頭(協議号為6)。

網絡啟動協議ipv6(網絡協議IPv6從初始到詳解)13

在RFC1883中描述了每一個擴展報頭的格式。但是概括來說,每個擴展報頭的功能如下:

• 逐跳可選項(Hop-By-Hop Options)——傳送必須被轉發路徑中的每一個節點都檢驗處理的信息。例如,路由器告警和超大包有效載荷選項等。

• 路由選擇(Routing)——通過列出在到達目的地的路徑中數據包所要經過的節點列表來提供源路由選擇的功能。

• 分段(Fragment)——是指在一個數據包被分段時用來為接收節點重組數據包提供必要的信息。在IPv4和IPv6數據包中有一個重要的不同是,隻有發起該數據包的節點能夠對數據包進行分段;而IPv6路由器對數據包并不分段。因此,發起該數據包的節點要麼必須使用路徑MTU發現(Path MTU Discovery,PMD)來得到該數據包到達目的地的路徑上最小的MTU值,要麼就從不發出大于1280字節的數據包。PMD将在後面講述。IPv6協議規定運行IPv6的所有鍊路都必須能夠支持最小1280字節大小的數據包。因此,發起數據包的節點如果可以選擇的話,可以利用最小長度大小選項,而不用PMD。

• 封裝安全有效載荷(Encapsulating Security Payload,ESP)——用于有效載荷的加密封裝。

• 認證報頭(Authentication Header,AH)——用于數據包必須在源與目的節點之間進行認證的情況。

• 目的地可選項(Destination Options)——用于傳送僅僅被目的節點,或者可能是路由選擇報頭中列出的節點檢驗處理的信息。

如果使用擴展報頭的話,在RFC1883中也規定了它們應該出現的順序。這裡嚴格規定,如果使用逐跳可選項的話,它必須直接跟在IPv6報頭的後面,以便于它能夠被必須處理它的傳輸節點很容易的發現。

建議的擴展報頭順序如下:

1.IPv6報頭。

2.逐跳可選項。

3.目的地可選項(隻有在路由選擇報頭中指定的中間路由器才必須處理這個報頭)。

4.路由選擇。

5.分段。

6.認證。

7.封裝安全有效載荷。

8.目的地可選項(隻有最後的目的節點必須處理這個報頭)。

9.上層報頭。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved