IP協(xié)議是在TCP/IP協(xié)議模型中的重要組成部分满哪,目前我們使用最多的是IPv4協(xié)議雳攘,IPv6協(xié)議的用戶(hù)量也在慢慢增加挖诸,蘋(píng)果在幾年之前就已經(jīng)開(kāi)始支持IPv6協(xié)議了智末。我們先來(lái)了解一下IPv4和IPv6協(xié)議谅摄,然后看下他們的不同,以及從IPv4到IPv6的過(guò)渡階段使用方案系馆。
IP協(xié)議的主要功能包括尋址和分段送漠。
IP可以根據(jù)數(shù)據(jù)包包頭中包括的目的地址將數(shù)據(jù)包傳送到目的地址,在此過(guò)程中IP負(fù)責(zé)選擇傳送的道路由蘑,這種選擇道路稱(chēng)為路由功能闽寡。如果有些網(wǎng)絡(luò)內(nèi)只能傳送小數(shù)據(jù)包,IP可以將數(shù)據(jù)包重新組裝并在報(bào)頭域內(nèi)注明尼酿。
IPv4協(xié)議
來(lái)一張圖爷狈,看一下IPv4協(xié)議的數(shù)據(jù)報(bào)格式,主要就是對(duì)頭部的學(xué)習(xí)了解。
數(shù)據(jù)報(bào)是一個(gè)可變長(zhǎng)分組裳擎,由兩部分組成:頭部和數(shù)據(jù)涎永。頭部長(zhǎng)度可由20~60個(gè)字節(jié)組成,該部分包含有與路由選擇和傳輸有關(guān)的重要信息鹿响。頭部的字段含義如下:
1.版本(4位):版本占了4位,最大值為15羡微,是協(xié)議版本號(hào)的定義,IPv4的話(huà)版本號(hào)就是4惶我,IPv6的話(huà)版本號(hào)就是6妈倔。
2.首部長(zhǎng)度(4位):首部長(zhǎng)度占了4位,最大值是15指孤,不過(guò)這個(gè)數(shù)字代表的含義是在整個(gè)頭部中含有的32位字長(zhǎng)的數(shù)量启涯,首部長(zhǎng)度的最小值為5贬堵,最大值為15。由此根據(jù)計(jì)算可得整個(gè)頭部的最小值為5 * 32位 = 5 * 4字節(jié) = 20字節(jié)结洼,最大值為 15 * 32位 = 15 * 4字節(jié) = 60字節(jié)黎做。
3.區(qū)分服務(wù)(TOS)(4位):該字段定義上層協(xié)議對(duì)處理當(dāng)前數(shù)據(jù)報(bào)所期望的服務(wù)質(zhì)量,并對(duì)數(shù)據(jù)報(bào)按照重要性級(jí)別進(jìn)行分配松忍。前3位成為優(yōu)先位蒸殿,后面4位成為服務(wù)類(lèi)型,最后1位沒(méi)有定義鸣峭。這些8位字段用于分配優(yōu)先級(jí)宏所、延遲、吞吐量以及可靠性摊溶。(想具體了解TOS的具體使用規(guī)則及位控制請(qǐng)移步文末擴(kuò)展部分爬骤。)
4.總長(zhǎng)度(16位):該字段定義整個(gè)IP數(shù)據(jù)報(bào)的字節(jié)長(zhǎng)度,包括協(xié)議頭部和數(shù)據(jù)莫换。其最大值為65535字節(jié)霞玄。以太網(wǎng)協(xié)議對(duì)能夠封裝在一個(gè)幀中的數(shù)據(jù)有最小值和最大值的限制(46~1500個(gè)字節(jié))。過(guò)大的數(shù)據(jù)需要進(jìn)行切片傳輸拉岁。
鏈路層的幀格式中的數(shù)據(jù)字段的最大長(zhǎng)度稱(chēng)為最大傳送單元MTU(Maximum Transfer Unit)坷剧。當(dāng)數(shù)據(jù)包封裝成鏈路層的幀的時(shí)候,該數(shù)據(jù)報(bào)的頭部+數(shù)據(jù)的長(zhǎng)度不可以超過(guò)MTU的最大長(zhǎng)度喊暖,超過(guò)的需要進(jìn)行切片傳輸惫企。
5.標(biāo)識(shí)(16位):該字段的值由發(fā)送到分配,如果該數(shù)據(jù)報(bào)需要進(jìn)行切片分段的話(huà)陵叽,每一段的標(biāo)識(shí)位的值都是一樣的狞尔,方便接收端收到分段的數(shù)據(jù)后進(jìn)行組裝。
6.標(biāo)志(3位):該字段占3位咨跌,但是只有前兩位才有意義:
最低位為MF (More Fragment)沪么,當(dāng)MF=0的時(shí)候,表明該數(shù)據(jù)報(bào)已經(jīng)是分段傳輸?shù)淖詈笠欢螆?bào)文锌半,當(dāng)MF=1的時(shí)候說(shuō)明后面還有分段報(bào)文需要拼接禽车。
中間位為DF(Don’t Fragment),當(dāng)DF = 0的時(shí)候說(shuō)明該報(bào)文不允許切片,=1的時(shí)候可以進(jìn)行切片分段傳輸
7.片位移(13位):標(biāo)記了該段報(bào)文在原始報(bào)文中的位置刊殉,方便接收端進(jìn)行拼接操作殉摔。片位移以8個(gè)字節(jié)為偏移單位,所以對(duì)數(shù)據(jù)包進(jìn)行分段操作的時(shí)候一定是以8個(gè)字節(jié)為單位進(jìn)行分段的记焊。如果最后一個(gè)分段不足8個(gè)字節(jié)的話(huà)會(huì)進(jìn)行填充逸月。
8.生存時(shí)間TTL(8位):該字段定義為路由器跳數(shù),指的是在傳輸?shù)倪^(guò)程中最多可以經(jīng)過(guò)多少個(gè)路由器進(jìn)行轉(zhuǎn)發(fā)遍膜,最大值為255(2的8次方 - 1)碗硬,每經(jīng)過(guò)一次路由器跳轉(zhuǎn)這個(gè)值就會(huì)被-1瓤湘,當(dāng)該值為0的時(shí)候路由器會(huì)將該數(shù)據(jù)報(bào)丟棄。該值存在的意義是防止無(wú)法交付的資源在路由里無(wú)限跳轉(zhuǎn)占用網(wǎng)絡(luò)資源恩尾。
9.協(xié)議(8位):表示在傳輸層使用哪種協(xié)議進(jìn)行封裝的(比如17代表UDP弛说,6代表TCP,1代表ICMP),這樣接收方的網(wǎng)絡(luò)層可以知道使用何種協(xié)議來(lái)對(duì)數(shù)據(jù)進(jìn)行解析翰意。
10.首部校驗(yàn)和(16位):該字段幫助確保IP協(xié)議頭的完整性木人。由于某些協(xié)議頭字段的改變,這就需要對(duì)每個(gè)點(diǎn)重新計(jì)算和檢驗(yàn)冀偶。計(jì)算過(guò)程是先將校驗(yàn)和字段置為0醒第,然后將整個(gè)頭部每16位劃分為一部分,將各部分相加进鸠,再將計(jì)算結(jié)果取反碼稠曼,插入到校驗(yàn)和字段中。當(dāng)接收方接收到數(shù)據(jù)報(bào)后堤如,也對(duì)其首部進(jìn)行校驗(yàn)計(jì)算蒲列,如果結(jié)果與“首部校驗(yàn)和”的值不同,就丟棄收到的數(shù)據(jù)報(bào)搀罢。
11.源地址(32位):源主機(jī)IP地址,在整個(gè)傳輸過(guò)程中保持不變侥猩。將IP地址看作是32位數(shù)值則需要將網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)化位主機(jī)字節(jié)順序榔至。轉(zhuǎn)化的方法是:將每4個(gè)字節(jié)首尾互換,將2欺劳、3字節(jié)互換唧取。
12.目的地址(32位):目的主機(jī)IP地址,在整個(gè)傳輸過(guò)程中保持不變划提。
13.可選字段:長(zhǎng)度可變枫弟,如果選項(xiàng)存在的話(huà),它在IPv4分組中緊跟在基本IPv4頭部之后鹏往。實(shí)際應(yīng)用中用到的很少(想了解的看文末擴(kuò)展吧)淡诗。
14.填充:IP頭是以32bit字長(zhǎng)為單位,有時(shí)需要填充來(lái)實(shí)現(xiàn)伊履。
15.數(shù)據(jù)部分:從傳輸層封裝過(guò)來(lái)的數(shù)據(jù)韩容。
IPv6協(xié)議
IPv6的很多字段含義和IPv4是一樣的
各字段含義:
1.版本號(hào)(4位):值為6
2.流量等級(jí)(8位)(Traffic Class (流量類(lèi)別)):該節(jié)段代替了IPv4中的Type of Service字段,它有助于處理實(shí)時(shí)數(shù)據(jù)以及任何需要特別處理的數(shù)據(jù)唐瀑。發(fā)送節(jié)點(diǎn)和轉(zhuǎn)發(fā)路由器可以使用該字段來(lái)識(shí)別和分辨IPv6數(shù)據(jù)包的類(lèi)別和優(yōu)先級(jí)群凶。
3.流標(biāo)簽(20位):用來(lái)標(biāo)識(shí)同一個(gè)流里面的報(bào)文
4.載荷長(zhǎng)度(16位):單位為字節(jié)長(zhǎng)度,該長(zhǎng)度包括了IPV6擴(kuò)展頭的長(zhǎng)度
5.下一報(bào)頭(8位):該字段用來(lái)指明報(bào)頭后接的報(bào)文頭部的類(lèi)型哄辣,若存在擴(kuò)展頭请梢,表示第一個(gè)擴(kuò)展頭的類(lèi)型赠尾,否則表示其上層協(xié)議的類(lèi)型,它是IPv6各種功能的核心實(shí)現(xiàn)方法(詳細(xì)了解請(qǐng)看文末擴(kuò)展)毅弧。
6.跳數(shù)限制(8位):該字段類(lèi)似于IPv4中的TTL气嫁,每次轉(zhuǎn)發(fā)跳數(shù)減一,該字段達(dá)到0時(shí)包將會(huì)被丟棄
11.源地址(128位):源主機(jī)IP地址
12.目的地址(128位):目的主機(jī)IP地址
IPv6和IPv4的區(qū)別:
1.取消了首部長(zhǎng)度形真,因?yàn)镮Pv6的首部長(zhǎng)度是固定40個(gè)字節(jié)杉编。
2.取消了服務(wù)類(lèi)型,因?yàn)榱鳂?biāo)號(hào)和優(yōu)先級(jí)結(jié)合起來(lái)實(shí)現(xiàn)了服務(wù)類(lèi)型的功能咆霜。
3.取消了總長(zhǎng)度字段邓馒,改用為有效載荷長(zhǎng)度,有效載荷就是后面的擴(kuò)展首部加上數(shù)據(jù)報(bào)中的數(shù)據(jù)蛾坯。
4.取消了標(biāo)識(shí)光酣,標(biāo)志和片偏移,因?yàn)檫@些功能都包含在了擴(kuò)展首部里面脉课。
5.取消了協(xié)議字段救军,改用為下一個(gè)首部,功能不變倘零,這樣更容易理解唱遭。
6.取消了生存時(shí)間ttl,改用為跳數(shù)限制呈驶,功能不變拷泽,這樣更容易理解,更形象了袖瞻。
7.取消了首部效驗(yàn)和司致,這樣加快了路由器對(duì)數(shù)據(jù)報(bào)的處理速度,在數(shù)據(jù)鏈路層中聋迎,當(dāng)我們發(fā)現(xiàn)有差錯(cuò)的幀就會(huì)拋棄脂矫,在運(yùn)輸層中,在udp中霉晕,當(dāng)發(fā)現(xiàn)有差錯(cuò)就會(huì)拋棄庭再,在tcp中,當(dāng)發(fā)現(xiàn)有差錯(cuò)就會(huì)重傳娄昆,直到傳送到目的進(jìn)程為止佩微。因此在網(wǎng)路層的檢測(cè)就可以精簡(jiǎn)掉。
8.取消了選項(xiàng)字段萌焰,功能歸并在了擴(kuò)展首部上哺眯。
IPv6和IPv4相比的改進(jìn):
1.IPv6的地址大小增加到128位。這解決了IPv4地址空間有限的問(wèn)題扒俯,并提供了一個(gè)更深層次的編址層級(jí)以及更簡(jiǎn)單的配置
2.IPv6的報(bào)頭固定為40字節(jié)奶卓。這剛好容下8字節(jié)的報(bào)頭和兩個(gè)16字節(jié)的IP地址(源地址和目的地址)一疯。IPv6的報(bào)頭中去掉了IPv4報(bào)頭中的一些字段,或者是將其變?yōu)榭蛇x項(xiàng)夺姑。這樣墩邀,數(shù)據(jù)包可以在低處理消耗下更快地進(jìn)行操作。
3.對(duì)于IPv4盏浙,選項(xiàng)集成于基本的IPv4報(bào)頭中眉睹。而對(duì)于IPv6,這些選項(xiàng)被作為擴(kuò)展報(bào)頭(Extension header)來(lái)處理废膘,是可選的竹海。
4.IPv6指定了固有的對(duì)身份驗(yàn)證的支持,以及對(duì)數(shù)據(jù)完整性和數(shù)據(jù)機(jī)密性的支持丐黄。
5.屬于同一傳輸流斋配,且需要特別處理或需要服務(wù)質(zhì)量的數(shù)據(jù)包,可以由發(fā)送者進(jìn)行標(biāo)記灌闺。實(shí)時(shí)服務(wù)就是這種應(yīng)用的典型例子艰争。
6.即使IPv6報(bào)頭的總長(zhǎng)度是默認(rèn)的IPv4報(bào)頭的兩倍長(zhǎng),達(dá)到了40字節(jié)桂对,但它實(shí)際上還是被簡(jiǎn)化了的甩卓,因?yàn)閳?bào)頭的絕大部分被兩個(gè)16字節(jié)的IPv6地址占據(jù)。這樣蕉斜,只剩8個(gè)字節(jié)可供其他報(bào)頭信息使用猛频。
7.數(shù)據(jù)包的報(bào)頭越簡(jiǎn)單,處理過(guò)程就越快蛛勉。IPv6采用新方法來(lái)處理選項(xiàng),顯著地改善了處理速度睦柴,保證對(duì)數(shù)據(jù)報(bào)文的高速轉(zhuǎn)發(fā)和較低的延時(shí)诽凌,提高了QoS。
IPv6的表示方式
IPv6的地址長(zhǎng)度為128位坦敌,是IPv4地址長(zhǎng)度的4倍侣诵。于是IPv4點(diǎn)分十進(jìn)制格式不再適用,采用十六進(jìn)制表示狱窘。IPv6有3種表示方法杜顺。
一、冒分十六進(jìn)制表示法
格式為X:X:X:X:X:X:X:X蘸炸,其中每個(gè)X表示地址中的16b躬络,以十六進(jìn)制表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
這種表示法中搭儒,每個(gè)X的前導(dǎo)0是可以省略的穷当,例如:
2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
二提茁、0位壓縮表示法
在某些情況下,一個(gè)IPv6地址中間可能包含很長(zhǎng)的一段0馁菜,可以把連續(xù)的一段0壓縮為“::”茴扁。但為保證地址解析的唯一性,地址中”::”只能出現(xiàn)一次汪疮,例如:
FF01:0:0:0:0:0:0:1101 → FF01::1101
0:0:0:0:0:0:0:1 → ::1
0:0:0:0:0:0:0:0 → ::
三峭火、內(nèi)嵌IPv4地址表示法
為了實(shí)現(xiàn)IPv4-IPv6互通,IPv4地址會(huì)嵌入IPv6地址中智嚷,此時(shí)地址常表示為:X:X:X:X:X:X:d.d.d.d卖丸,前96b采用冒分十六進(jìn)制表示,而最后32b地址則使用IPv4的點(diǎn)分十進(jìn)制表示纤勒,例如::192.168.0.1與::FFFF:192.168.0.1就是兩個(gè)典型的例子坯苹,注意在前96b中,壓縮0位的方法依舊適用 [9]
IPv4和IPv6的協(xié)議不同摇天,是無(wú)法 互相通信的粹湃,那么在過(guò)渡時(shí)期如何進(jìn)行使用呢?
(該段落圖片和文字均引用自 IT知識(shí)大全:IPv6詳解)
1泉坐、雙協(xié)議棧技術(shù)
雙協(xié)議棧技術(shù)是指在路由器或者主機(jī)上同時(shí)運(yùn)行IPv4和IPv6協(xié)議为鳄。其中大多數(shù)應(yīng)用服務(wù)器采用的為雙棧主機(jī)的解決方案,嚴(yán)格意義上它并不是解決IPv4與IPv6互通的問(wèn)題腕让,而是適配兩種網(wǎng)絡(luò)模式來(lái)為不同網(wǎng)絡(luò)下的客戶(hù)端提供服務(wù)孤钦。
當(dāng)IPv4網(wǎng)絡(luò)下的客戶(hù)端發(fā)起請(qǐng)求時(shí),服務(wù)器及鏈路會(huì)在IPv4網(wǎng)絡(luò)下進(jìn)行響應(yīng)纯丸。同理偏形,當(dāng)發(fā)起客戶(hù)端處于IPv6網(wǎng)絡(luò)時(shí),服務(wù)器會(huì)在IPv6網(wǎng)絡(luò)下進(jìn)行響應(yīng)觉鼻。
反之俊扭,也可以在客戶(hù)終端上配置雙協(xié)議棧,來(lái)分別訪(fǎng)問(wèn)不同網(wǎng)絡(luò)協(xié)議下的服務(wù)器坠陈。
2萨惑、隧道技術(shù)
目前常見(jiàn)的IPv6隧道傳輸方案有手工隧道與自動(dòng)隧道,例如6 over 4仇矾、6 to 4等庸蔼。其中自動(dòng)隧道因?yàn)樾枰瑫r(shí)配置IPv4和IPv6地址,所以需要雙協(xié)議棧路由器支持贮匕。
隧道技術(shù)是指將IPv6的數(shù)據(jù)包封裝在IPv4的數(shù)據(jù)包里進(jìn)行發(fā)送姐仅,它好處就是不需要對(duì)現(xiàn)有的IPv4網(wǎng)絡(luò)進(jìn)行改造,就可以直接利用隧道來(lái)傳輸IPv6的數(shù)據(jù)包。隧道技術(shù)主要是為了向IPv6網(wǎng)絡(luò)過(guò)渡過(guò)程中減少搭建設(shè)備的成本萍嬉,但是它依然無(wú)法解決純IPv4主機(jī)與IPv6主機(jī)的互通問(wèn)題乌昔。
3、網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換技術(shù)
IPv6_上的網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換技術(shù)類(lèi)似于IPv4上經(jīng)常使用的NAT技術(shù)壤追,但是轉(zhuǎn)換的內(nèi)容不一樣磕道。早期的翻譯網(wǎng)關(guān)采用的為NAT- -PT技術(shù),但是因?yàn)榧夹g(shù)的局限性和安全性行冰,最終還是改用了NAT64轉(zhuǎn)換技術(shù)溺蕉。
NAT64的工作原理就是搭建一臺(tái) 翻譯網(wǎng)關(guān)位于IPv4與IPv6網(wǎng)絡(luò)之間,將通過(guò)網(wǎng)關(guān)的IPv6與IPv4的數(shù)據(jù)包進(jìn)行翻譯傳輸悼做。NAT64-般只能單方向的將發(fā)往IPv4網(wǎng)絡(luò)的IPv6報(bào)文進(jìn)行翻譯疯特,而不能主動(dòng)翻譯反方向的IPv4發(fā)往IPv6的報(bào)文,需要進(jìn)行靜態(tài)條目綁定才能真正實(shí)現(xiàn)IPv4訪(fǎng)問(wèn)IPv6網(wǎng)絡(luò),在技術(shù)實(shí)現(xiàn)上成本較高肛走。
4漓雅、IVI技術(shù)
IVI技術(shù)是國(guó)內(nèi)研發(fā)的翻譯網(wǎng)關(guān)技術(shù),雖然都屬于翻譯網(wǎng)關(guān)朽色,但是NAT64轉(zhuǎn)換基 于狀態(tài)邻吞,而IVI可以進(jìn)行無(wú)狀態(tài)的映射。
網(wǎng)絡(luò)運(yùn)營(yíng)商通過(guò)對(duì)一部分IPv4和IPv6地址進(jìn)行映射葫男,生成IVI專(zhuān)用地址抱冷。IPv6網(wǎng)絡(luò)的用戶(hù)如果想訪(fǎng)問(wèn)IPv4網(wǎng)絡(luò),可以通過(guò)IV|網(wǎng)關(guān)的映射表獲得IPv4地址來(lái)直接訪(fǎng)問(wèn)IPv4網(wǎng)絡(luò)梢褐。而IPv4用戶(hù) 如果需要訪(fǎng)問(wèn)IPv6網(wǎng)絡(luò)旺遮,則會(huì)通過(guò)IVI網(wǎng)關(guān)獲得IVI- 6地址來(lái)訪(fǎng)問(wèn)IPv6網(wǎng)絡(luò)。目前IVI是IPv4向IPv6過(guò)渡的較優(yōu)方案盈咳,原因就是它不需要改變用戶(hù)的使用習(xí)慣和成本耿眉,可以直接由運(yùn)營(yíng)商進(jìn)行搭建翻譯網(wǎng)關(guān)來(lái)進(jìn)行雙網(wǎng)互訪(fǎng)。
擴(kuò)展:
1.IPv4 ToS字段的使用及含義
前3位(0-2)定義優(yōu)先級(jí)鱼响,IP優(yōu)先級(jí)(IP Precedence)使用最高3比特跷敬,可以定義8個(gè)服務(wù)等級(jí).
111–Network Control(網(wǎng)絡(luò)控制);
110–Internetwork Control(網(wǎng)間控制)热押;
101–Critic(關(guān)鍵);
100–Flash Override(疾速)斤寇;
011–Flash(閃速)桶癣;
010–Immediate(快速);
001–Priority(優(yōu)先)娘锁;
000–Routine(普通)牙寞。
優(yōu)先級(jí)6和7一般保留給網(wǎng)絡(luò)控制數(shù)據(jù)使用,如路由。
優(yōu)先級(jí)5推薦給語(yǔ)音數(shù)據(jù)使用间雀。
優(yōu)先級(jí)4由視頻會(huì)議和視頻流使用悔详。
優(yōu)先級(jí)3給語(yǔ)音控制數(shù)據(jù)使用。
優(yōu)先級(jí)1和2給數(shù)據(jù)業(yè)務(wù)使用惹挟。
優(yōu)先級(jí)0為默認(rèn)標(biāo)記值茄螃。
中間4位(3-6)定義延遲、吞吐量和可靠性连锯,由RFC791定義(3-5位)归苍,稱(chēng)為DTR(Delay,Throughput运怖,Reliability)位拼弃,后來(lái)RFC1349又?jǐn)U展到第6位。
0000–normal service摇展; 最小時(shí)延
1000–minimize delay吻氧; 最大吞吐量
0100–maximize throughput; 最高可靠性
0010–maximize reliability咏连; 最小費(fèi)用
0001–minimize monetary cost盯孙。
4 bit中只能置其中1 bit。如果所有4 bit均為0捻勉,那么就意味著是一般服務(wù)镀梭。
Telnet、Rlogin這兩個(gè)交互應(yīng)用要求最小的傳輸時(shí)延踱启,F(xiàn)TP文件傳輸要求最大吞吐量报账,最高可靠性是指網(wǎng)絡(luò)管理(SNMP)和路由選擇協(xié)議。用戶(hù)網(wǎng)絡(luò)新聞要求最小費(fèi)用埠偿。
2.IP選項(xiàng)
IP選項(xiàng):用于提供一些在數(shù)據(jù)傳輸時(shí)需要用到的附加功能透罢,比如記錄路由、嚴(yán)格源路由等冠蒋,還負(fù)責(zé)數(shù)據(jù)傳輸?shù)陌踩珕?wèn)題羽圃,還用于偵測(cè)和調(diào)試網(wǎng)絡(luò)。不是必需的字段抖剿,長(zhǎng)度可變朽寞,默認(rèn)大小為0字節(jié),最大40字節(jié)斩郎。
IP選項(xiàng)由選項(xiàng)碼脑融、選項(xiàng)長(zhǎng)度和選項(xiàng)數(shù)據(jù)三部分組成,其中選項(xiàng)碼為1字節(jié)缩宜,可分為復(fù)制位肘迎、選項(xiàng)類(lèi)和選項(xiàng)號(hào)三部分甥温。
·復(fù)制位:1bit,用于控制數(shù)據(jù)報(bào)分片時(shí)是否將選項(xiàng)復(fù)制到各個(gè)分片中妓布,0表示不復(fù)制姻蚓。
·選項(xiàng)類(lèi):2bit,用于定義選項(xiàng)的一般作用匣沼。
·選項(xiàng)號(hào):5bit狰挡,用于定義選項(xiàng)的具體類(lèi)型。
主要使用的選項(xiàng)類(lèi)型見(jiàn)下表:
·選項(xiàng)長(zhǎng)度:8bit肛著,定義整個(gè)選項(xiàng)的長(zhǎng)度圆兵。
·選項(xiàng)數(shù)據(jù):變長(zhǎng),用于定義選項(xiàng)請(qǐng)求枢贿。
表中的6種主要選項(xiàng)類(lèi)型的說(shuō)明:
·EOL:選項(xiàng)結(jié)束殉农,提示最后一個(gè)選項(xiàng),必須放在所有選項(xiàng)的后面
·NOP:空操作局荚,用于選項(xiàng)間的邊界對(duì)正超凳,當(dāng)數(shù)據(jù)報(bào)有兩個(gè)以上的選項(xiàng)時(shí),如果其中某個(gè)選項(xiàng)的長(zhǎng)度不足4字節(jié)的倍數(shù)耀态,則可以在其中加入NOP轮傍,將長(zhǎng)度補(bǔ)足到4字節(jié)的倍數(shù),以便對(duì)正到下一個(gè)選項(xiàng)的起始位置首装。
·RR:記錄路由创夜,用于記錄數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中傳送過(guò)程中從信源到信宿所經(jīng)過(guò)的各路由器的IP地址。因?yàn)樗涗浀穆酚善鲾?shù)量不定仙逻,因此該選項(xiàng)的長(zhǎng)度可變驰吓。格式為:
其中,指針指向路由記錄地址表中下一個(gè)可以存放路由器IP地址的位置系奉,每記錄一個(gè)路由IP地址檬贰,指針值增加4,直到路由記錄地址表用完為止缺亮。
·SSRR:嚴(yán)格的源路由翁涤,用于信源預(yù)先設(shè)定數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中傳送時(shí)指定數(shù)據(jù)報(bào)的傳送路徑并記錄傳輸路徑。格式與RR類(lèi)似萌踱,但選項(xiàng)碼為10001001葵礼。選項(xiàng)中所指定的路由器必須是一一相連的,并且兩個(gè)相鄰的路由器之間不能有其他路由器并鸵,以確保數(shù)據(jù)報(bào)根據(jù)指定的路由器能順利地從信源傳送到信宿章咧。IP報(bào)頭的目的地址只是代表數(shù)據(jù)報(bào)要傳送的下一跳地址,而不是信宿地址能真;信宿地址是選項(xiàng)中路由記錄指定的最后一個(gè)IP地址。
·LSRR:寬松的源路由,用于預(yù)先指定數(shù)據(jù)報(bào)傳送過(guò)程中必須經(jīng)過(guò)的關(guān)鍵路由粉铐。這些指定的路由并不一定能組成一條完備的路徑疼约,只是給出了路徑上的某些關(guān)鍵點(diǎn),并記錄傳送過(guò)程中所經(jīng)過(guò)的路由器的IP地址蝙泼。選項(xiàng)格式與RR類(lèi)似程剥,但選項(xiàng)碼為10000011。
·TS:時(shí)間戳汤踏,用于記錄路由器處理數(shù)據(jù)報(bào)的時(shí)間织鲸。根據(jù)時(shí)間戳可以估算數(shù)據(jù)報(bào)從一個(gè)路由器傳送到另一個(gè)路由器所花費(fèi)的時(shí)間,進(jìn)而分析網(wǎng)絡(luò)吞吐率和負(fù)載情況溪胶。
其中搂擦,溢出字段用于記錄因預(yù)留空間不夠而未能記錄下來(lái)的時(shí)間戳個(gè)數(shù)。當(dāng)溢出字段也溢出時(shí)哗脖,路由器將丟棄數(shù)據(jù)報(bào)瀑踢,并產(chǎn)生ICMP參數(shù)錯(cuò)報(bào)文發(fā)送給信源。標(biāo)志字段用于定義時(shí)間戳選項(xiàng)的格式才避,取值范圍:
·0:路由器僅記錄時(shí)間戳數(shù)據(jù)橱夭,忽略IP地址
·1:路由器記錄出口IP地址和時(shí)間戳
·3:僅記錄信源指定地址處的時(shí)間戳
時(shí)間戳以ms為單位,從世界標(biāo)準(zhǔn)時(shí)間午夜零時(shí)開(kāi)始計(jì)算桑逝。在IP數(shù)據(jù)報(bào)需要分片傳送時(shí)棘劣,時(shí)間戳選項(xiàng)不復(fù)制到各個(gè)分片,僅在第一片出現(xiàn)楞遏。
3.下一報(bào)頭
長(zhǎng)度為8bit茬暇,這個(gè)字段指出了ipv6基本報(bào)頭之后所跟的下一個(gè)擴(kuò)展報(bào)頭字段中的協(xié)議類(lèi)型,與ipv4字段類(lèi)似可以指出上層協(xié)議是tcp還是udp 同時(shí)還可以指明是否存在 ipv6擴(kuò)展頭
下一報(bào)頭值對(duì)應(yīng)擴(kuò)展類(lèi)型或者協(xié)議如下
IPv6報(bào)文中不再有“選項(xiàng)”字段橱健,而是通過(guò)“下一報(bào)頭”字段配合IPv6擴(kuò)展報(bào)頭來(lái)實(shí)現(xiàn)選項(xiàng)的功能而钞。使用擴(kuò)展頭時(shí),將在IPv6報(bào)文下一報(bào)頭字段表明首個(gè)擴(kuò)展報(bào)頭的類(lèi)型拘荡,再根據(jù)該類(lèi)型對(duì)擴(kuò)展報(bào)頭進(jìn)行讀取與處理臼节。每個(gè)擴(kuò)展報(bào)頭同樣包含下一報(bào)頭字段,若接下來(lái)有其他擴(kuò)展報(bào)頭珊皿,即在該字段中繼續(xù)標(biāo)明接下來(lái)的擴(kuò)展報(bào)頭的類(lèi)型网缝,從而達(dá)到添加連續(xù)多個(gè)擴(kuò)展報(bào)頭的目的。在最后一個(gè)擴(kuò)展報(bào)頭的下一報(bào)頭字段中蟋定,則標(biāo)明該報(bào)文上層協(xié)議的類(lèi)型粉臊,用以讀取上層協(xié)議數(shù)據(jù)
參考
IPv4 服務(wù)類(lèi)型(TOS)字段
百度百科
IP協(xié)議
網(wǎng)絡(luò)層:IP協(xié)議詳解(IP協(xié)議真的得看這篇)
IPv6協(xié)議
IP協(xié)議詳解(一)