主要由基本的概述每瞒、地址的表示葵袭、子網(wǎng)劃分、報頭還有通信這幾個方面
概要
IPv6的特性
首先是IPv6的基本情況进统。IPv6是為了彌補IPv4的不足而誕生的。
1.互聯(lián)網(wǎng)的不斷發(fā)展下浪听,IPv4下的IP地址已經(jīng)飽和螟碎。對于互聯(lián)網(wǎng)物聯(lián)網(wǎng)的發(fā)展來說可能需要更加充足的IP地址。對于IPv6協(xié)議來說迹栓,IPv6的地址有128位的地址掉分,可以提供2^128個地址】艘粒可以滿足不斷增長的IP需求
2.IPv4本身不提供安全功能酥郭,需要其他的安全軟件對傳輸?shù)臄?shù)據(jù)進行加密。IPv6上IPSec安全功能是默認(rèn)開啟的愿吹。(IPv4上是可選的)這在一定程度上增加了通信的安全性不从。
3.IPv4的包頭長度是可變的,這樣的包頭加重了路由器轉(zhuǎn)發(fā)的負(fù)擔(dān)犁跪。而IPv6簡化了包頭椿息,將不必要的信息放在頭的末尾。路由器只需要查看第一部分的包頭進行轉(zhuǎn)發(fā)即可坷衍,不需要再去查看擴展包頭寝优。擴展包頭可以到應(yīng)用程序了再進行查看。
4.IPv4需要DHCP服務(wù)去配置IP枫耳。而IPv6支持主機有狀態(tài)和無狀態(tài)的自動配置倡勇。在一定程度上節(jié)省了資源
地址格式
IPv6由8個16位塊(128位二進制)組成。十六進制上由8組4位十六進制數(shù)字表示嘉涌,使用冒號:進行分割妻熊。
2001:0000:3238:DFE1:0063:0000:0000:FEFB
就算在十六進制下IP地址仍然顯示很長,由此有兩種方式來縮短IP地址
1.丟棄前導(dǎo)零
如果一個組內(nèi)有多個零時仑最∪右郏可以省略這些零。
2001:0000:3238:DFE1:63:0000:0000:FEFB
2001:0:3238:DFE1:63:0:0:FEFB
2.兩個或多個塊中連續(xù)為零可用::表示警医。
2001:0000:3238:DFE1:63::FEFB
一個IP地址中只能使用一次::否則分析器沒有辦法確定有多少字段缺少0 .沒有辦法補齊IP地址
IPv6的尋址模式
1.單播:
1 vs 1 主機只與目標(biāo)地址進行通信亿胸。
2. 組播:
1 vs N。 主機將數(shù)據(jù)發(fā)送給組播組內(nèi)的所有主機预皇。
3. 任播:
多個接口分配了相同的任播IP地址
主機要與配備有任播IP地址的主機通信侈玄,會發(fā)送單播消息。路由器會找到最近的目標(biāo)主機吟温。
IPv6的地址類型:
有三種單播地址:
全局單薄地址: Global unicast address
????格式: 全局路由前綴+子網(wǎng)ID+接口ID
????可理解為IPv4中的公網(wǎng)地址
全局地址是通過IPv6前綴下發(fā)所拿到的一個全局可達的IPv6地址序仙,例如下圖中的fd4d:e0f1:f1db::250:56ff:fe86:1b10。有了這個全局IPv6地址鲁豪,就能跟世界上任何一個IPv6全局地址通訊了潘悼,類似于通俗說的公網(wǎng)地址
鏈路本地地址:link-local address
? ? 自動配置IPv6的地址律秃。始終以FE80開頭。
? ? 格式:FE80+0+接口ID
? ? 只可以在本地鏈路上使用治唤。不能被路由
在同一個交換機下面的機器就能直接通過這個地址通訊啦棒动,不需要再配置別的地址。
·? ?
?假設(shè)公司內(nèi)網(wǎng)有兩個不同的子網(wǎng)A和B(IPv6中的鏈路就是同一子網(wǎng)內(nèi)的主機宾添。)
? ? 所以鏈路A的IPv6主機只能在鏈路A內(nèi)與其他IPv6主機進行通信船惨。不能和鏈路B的IPv6主機進行通信。(如果鏈路A的IPv6主機要與鏈路B的IPv6主機進行通信就需要跨路由)
? ? 本地鏈路地址只能在本地鏈路上使用缕陕。且不能被路由
唯一本地地址: unique local address
這種IPv6地址是全局唯一的掷漱。但只應(yīng)用于本地通信
格式:前綴+本地位+全局ID+子網(wǎng)ID+接口ID
唯一本地IPv6地址始終以FD開頭
對應(yīng)于鏈路本地地址上的例子。唯一本地地址是可以通過路由在鏈路A和鏈路B上進行通信的榄檬。但他的通信范圍只局限在私有網(wǎng)絡(luò)卜范。可以理解為IPv4的私有網(wǎng)絡(luò)鹿榜。
IPv6的子網(wǎng)劃分
IP:192.168.1.3? Mask:255.255.255.0
CIDRIP:192.168.1.3/24
IPv6使用網(wǎng)絡(luò)前綴來進行子網(wǎng)劃分海雪。
2001:C3:0:2C6A::/64 ----》 subnet
2001:C3:0:2C6A:C9B4:FF12:48BC:1A22/64 ----> address of the subnet
IPv6包頭
相比IPv4包頭來說IPv6的包頭精簡了很多。
刪除掉了IPv4的包頭長度/標(biāo)志/標(biāo)識/分片偏移/包頭校驗和/選項/可填充變量
Version:標(biāo)識Version即版本信息舱殿,4代表IPv4,6代表IPv6奥裸;
IHL:標(biāo)識了IP報文的首部長度,大小為20-60字節(jié)沪袭;
Type of Service:服務(wù)類型湾宙,在QoS中才會使用到此字段;
Total Length:IP報文段的總長度冈绊;
Identification:標(biāo)識侠鳄,主機每發(fā)一個報文,則+1死宣;
Flags:3個bit伟恶,分別為保留位,DF位(0可以分片毅该,1不能分片)博秫,MF位(0最后一片,1未完待續(xù))眶掌;
Fragment Offset:片偏移挡育,分片重組的時候需要使用到的字段,此處不做詳細(xì)解釋朴爬;
Time to Live:簡稱TTL即寒,數(shù)據(jù)包可在網(wǎng)絡(luò)中經(jīng)過的路由節(jié)點數(shù);
Protocol:下層協(xié)議,如UDP或TCP等蒿叠;
Header Checksum:首部校驗和;
Source Address:源IP地址蚣常;
Destination Address:目的IP地址市咽;
Options:選項字段;
Padding:填充字段抵蚊。
增加了流標(biāo)簽和擴展包頭信息
? ? 版本:表示internet協(xié)議的版本
? ? 流量類型:?最重要的6位用于服務(wù)類型施绎,以便讓路由器知道應(yīng)該向該分組提供什么服務(wù)。?最低有效2位用于顯式擁塞通知(ECN)贞绳。
? ? 流標(biāo)簽:維護同學(xué)的數(shù)據(jù)包的順序流谷醉。尚未定義好如何使用
? ? 有效負(fù)載長度:擴展包頭+上層數(shù)據(jù)
? ? 下一個包頭:擴展包頭
IPv6擴展報文頭的引入簡化了IPv6基本報文頭的格式,一個IPv6報文中可以包含0個及以上擴展報文頭冈闭。當(dāng)需要有多個IPv6擴展報文頭的時候俱尼,IPv6的基本報文頭的Next Header字段將會指明下一個擴展報文頭的類型,IPv6擴展報文頭的Next Header字段將會指明下一個擴展報文頭的類型萎攒,以此類推遇八,如果后續(xù)沒有IPv6擴展報文頭,那么此字段將指明上層協(xié)議類型耍休。
路由設(shè)備轉(zhuǎn)發(fā)時根據(jù)基本報頭中Next Header值來決定是否要處理擴展頭刃永,并不是所有的擴展報頭都需要被轉(zhuǎn)發(fā)路由設(shè)備查看和處理的。除了目的選項擴展報頭可能出現(xiàn)一次或兩次(一次在路由擴展報頭之前羊精,另一次在上層協(xié)議數(shù)據(jù)報文之前)斯够,其余擴展報頭只能出現(xiàn)一次。
ICMPv6-IPv6通信
用來實現(xiàn)地址解析喧锦,重復(fù)地址檢測读规,路由器發(fā)現(xiàn)以及路由重定向等功能。具體的ICMPv6的消息類型及具體作用如下
鄰居請求報文NS(Neighbor Solicitation)報文:Type字段值為135燃少,Code字段值為0掖桦,在地址解析中的作用類似于IPv4中的ARP請求報文。用來獲取鄰居的鏈路層地址供汛,驗證鄰居是否可達枪汪,進行重復(fù)地址檢測等。
鄰居通告報文NA(Neighbor Adivertisment)報文:Type字段值為136怔昨,Code字段值為0雀久,在地址解析中的作用類似于IPv4中的ARP應(yīng)答報文。用來對NS消息進行響應(yīng)趁舀。另外赖捌,當(dāng)節(jié)點在鏈路層變化的時候主動發(fā)出NA消息,告知鄰居本節(jié)點的變化。
ICMPv6路由器請求(Router Solicitation)消息:Type字段值為133越庇,節(jié)點啟動后罩锐,通過RS消息向路由器發(fā)出請求,請求前綴和其他配置信息卤唉,用于節(jié)點的自動配置涩惑。
ICMPv6路由器通告(Router Advertisement)消息:Type字段值為134,對RS消息進行回應(yīng)桑驱。在沒有抑制RA消息發(fā)布的條件下竭恬,路由器會周期性地發(fā)布RA消息,其中包括前綴信息選項和一些標(biāo)志位的信息熬的。
ICMPv6重定向(Redirect)消息:Type字段值為137痊硕,當(dāng)滿足一定的條件時,缺省網(wǎng)關(guān)通過向源主機發(fā)送重定向消息押框,使主機重新選擇正確的下一跳地址進行后續(xù)報文的發(fā)送岔绸。
地址解析
整體報文交互總覽(NS和NA):
①節(jié)點1會發(fā)送一個NS報文,Type值為135橡伞,源地址為節(jié)點1的IPv6地址亭螟。目的地址為節(jié)點2的被請求節(jié)點組播地址,要請求的為節(jié)點2的鏈路層地址骑歹。同時NS的報文的Options字段中攜帶了節(jié)點1的鏈路層地址预烙。如下圖:
獲取同一鏈路上鄰居節(jié)點的鏈路層地址(與IPv4的ARP功能相同),通過鄰居請求消息NS和鄰居通告消息NA實現(xiàn)道媚。節(jié)點1要獲取節(jié)點節(jié)點2的鏈路層地址扁掸。
DAD (重復(fù)地址檢測):
鄰居請求報文NS(Neighbor Solicitation)報文:Type字段值為135,Code字段值為0最域,在地址解析中的作用類似于IPv4中的ARP請求報文谴分。用來獲取鄰居的鏈路層地址,驗證鄰居是否可達镀脂,進行重復(fù)地址檢測等牺蹄。
節(jié)點在發(fā)送路由器公告前要獲得唯一的鏈路本地地址
為什么要唯一:未確定唯一性的地址不能使用。即不能接收目的地址或者發(fā)送源地址為此地址的分組
1.接口要加入全節(jié)點組播地址 FF02::1
2.要生成IPv6地址的請求節(jié)點組播地址(solicited-node multicast address).接受地址為IPv6的這些分組
3.發(fā)送NS請求薄翅。源地址為::沙兰。目的地址為臨時單播地址請求節(jié)點的組播地址
4.所生成的local-link address會處于暫時狀態(tài)(Tentative)。如果收到該節(jié)點的回應(yīng)則證明該節(jié)點已被使用翘魄。需要重新生成新的local-link address.如果沒有NS回應(yīng)則證明該節(jié)點沒有被其他主機使用鼎天。則確定local-link address
鄰居通告:將地址分配給接口并啟用后。主機再次發(fā)送鄰居通告告訴該段上的其他主機暑竟。這個IP地址已經(jīng)被使用了斋射。
路由器請求:
在段上對路由器發(fā)送組播數(shù)據(jù)包。了解該段上的路由器
幫助主機設(shè)置默認(rèn)網(wǎng)關(guān)
路由器通告:
路由器收到路由器請求時會回應(yīng)主機,告訴它他在鏈路上的存在
如果路由器覺得自己不是最佳網(wǎng)關(guān)罗岖,會給主機回復(fù)重定向消息涧至。告訴主機有更好的路由器可以使用
IPv4向IPv6的過度:
IPv4與IPv6是不兼容的,所以需要過度技術(shù)的支持
雙棧路由器:
網(wǎng)絡(luò)節(jié)點同時支持IPv4和IPv6兩種協(xié)議桑包。在IP網(wǎng)絡(luò)上形成邏輯相互獨立的兩個IP網(wǎng)絡(luò)南蓬。源地址根據(jù)要訪問的目的地的類型自動選擇相應(yīng)的網(wǎng)絡(luò)。
大多數(shù)軟硬件都支持IPv4和IPv6.這個方法解決了IPv4和IPv6的共存問題捡多,但是沒有解決IPv4和IPv6的互通問題蓖康。
隧道技術(shù):
目的是為了解決IPv6的信息孤島問題铐炫。
把一個協(xié)議數(shù)據(jù)包的報頭(IPv4)直接封裝在原包頭(IPv6)上垒手,偽裝成該一個協(xié)議(IPV4)。通過該協(xié)議的的網(wǎng)絡(luò)(IPv4)倒信。到了原本協(xié)議相應(yīng)的網(wǎng)絡(luò)(IPv6)之后再把添加的包頭(IPv4)拆掉
協(xié)議轉(zhuǎn)換技術(shù):
通過NAT-PT(網(wǎng)絡(luò)地址轉(zhuǎn)換 - 協(xié)議轉(zhuǎn)換)將IPv6網(wǎng)絡(luò)轉(zhuǎn)移成IPv4網(wǎng)絡(luò)傳送給IPv4主機