2019 iOS面試題大全---全方面剖析面試
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之HTTP協(xié)議
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之HTTPS复哆、對稱加密、非對稱加密
2019 iOS面試-----一個(gè)基于UDP的簡單的聊天Demo(用C語言腌零、python梯找、GCDAsyncUdpSocket來實(shí)現(xiàn)UDP通信)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之UDP的特點(diǎn)、UDP的報(bào)文結(jié)構(gòu)及差錯(cuò)檢測
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之TCP益涧、三次握手锈锤、四次揮手、代碼實(shí)現(xiàn)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之TCP進(jìn)階:可靠數(shù)據(jù)傳輸闲询、流量控制(滑動(dòng)窗口)久免、擁塞控制
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之DNS
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之Cookie和Session
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之IP協(xié)議、IP數(shù)據(jù)報(bào)分片扭弧、IPv4編址阎姥、網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之IPv6、從IPv4到IPv6的遷移
由于新的子網(wǎng)和IP結(jié)點(diǎn)以驚人的增長率連到因特網(wǎng)上鸽捻,并被分配唯一的IP地址呼巴,32比特的IPv4地址空間即將用盡,為了解決這一問題御蒲,IPv6也應(yīng)運(yùn)而生衣赶。而事實(shí)上在20多年前,因特網(wǎng)工程任務(wù)組就開始致力于開發(fā)一種替代IPv4的協(xié)議厚满,即IPv6
一府瞄、IPv6數(shù)據(jù)報(bào)格式
1、IPv6數(shù)據(jù)報(bào)格式
版本(4比特)
該字段用于標(biāo)識IP版本號痰滋,IPv6將該字段值設(shè)為6摘能。而如果將該字段設(shè)為4并不能創(chuàng)建一個(gè)合法的IPv4數(shù)據(jù)報(bào)流量類型(8比特)
類似于IPv4數(shù)據(jù)報(bào)中的服務(wù)類型(TOS)流標(biāo)簽(20比特)
流標(biāo)簽字段是IPv6數(shù)據(jù)報(bào)中新增的一個(gè)字段,用來標(biāo)識一條數(shù)據(jù)報(bào)的流類型敲街,以便在網(wǎng)絡(luò)層區(qū)分不同的報(bào)文团搞。有效載荷長度(16比特)
IPv6數(shù)據(jù)報(bào)中在40定長字節(jié)數(shù)據(jù)報(bào)首部后的字節(jié)數(shù)量,即除了IPv6的數(shù)據(jù)報(bào)首部以外的其他部分的總長度
下一個(gè)首部(8比特)
當(dāng)IPv6沒有擴(kuò)展報(bào)頭時(shí)多艇,該字段的作用和IPv4的協(xié)議字段一樣逻恐。當(dāng)含有擴(kuò)展報(bào)頭時(shí),該字段的值即為第一個(gè)擴(kuò)展報(bào)頭的類型跳限制(8比特)
與IPv4報(bào)文中的TTL字段類似,轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)的每臺路由器將對該字段的內(nèi)容減1.如果跳限制計(jì)數(shù)到達(dá)0复隆,則該數(shù)據(jù)報(bào)將被丟棄源地址和目的地址(各128比特)
記錄源IP地址拨匆,目的IP地址數(shù)據(jù)
可以看出,在IPv4數(shù)據(jù)報(bào)中出現(xiàn)的幾個(gè)字段在IPv6數(shù)據(jù)報(bào)中已不復(fù)存在:
- 分片/重新組裝
IPv6不允許在中間路由器上進(jìn)行分片和重新組裝挽拂。這種操作只能在源與目的地上執(zhí)行惭每。如果路由器收到的IPv6數(shù)據(jù)報(bào)因太大不能轉(zhuǎn)發(fā)出鏈路上的話,路由器會(huì)丟掉該數(shù)據(jù)報(bào)亏栈,并回一個(gè)“分組太大”的ICMP差錯(cuò)報(bào)文- 首部檢驗(yàn)和
因?yàn)檫\(yùn)輸層和數(shù)據(jù)鏈路層協(xié)議執(zhí)行了檢驗(yàn)操作台腥,該項(xiàng)功能在網(wǎng)絡(luò)層就沒有必要了,從而更快速處理IP分組- 選項(xiàng)
選項(xiàng)字段不再是標(biāo)準(zhǔn)IP首部的一部分了绒北。但并沒有消失黎侈,而是可能出現(xiàn)在IPv6首部中由“下一個(gè)首部”指出的位置上。即就像TCP或UDP協(xié)議首部能夠是IP分組中的“下一個(gè)首部”闷游,選項(xiàng)字段也能是“下一個(gè)首部”
IPv6相對IPv4最重要的變化如下:
- 擴(kuò)大的地址容量
IPv6將IP地址長度由32比特增加到128比特峻汉,這使得理論可存在的IP地址增加到2個(gè),約340萬億億億億
個(gè)脐往,這是一個(gè)非常大的數(shù)字休吠,確保全世界再也不會(huì)用盡IP地址,甚至可以為地球上每一粒沙子都分配一個(gè)唯一的IP地址
除了單播和多播地址外钙勃,IPv6沒有廣播這一說法蛛碌,而是引入了一種稱為任播地址的新型地址,這種地址可以使數(shù)據(jù)報(bào)交付給一組主機(jī)中的任意一個(gè)- 簡化高效的40字節(jié)首部
除去共32字節(jié)的源地址和目標(biāo)地址外辖源,首部其余字段只占了8字節(jié)- 流標(biāo)簽與優(yōu)先級
給屬于特殊流的分組打上標(biāo)簽,這些特殊流是發(fā)送方要求進(jìn)行特殊處理的流希太,如一種非默認(rèn)服務(wù)質(zhì)量或需要實(shí)時(shí)服務(wù)的流
2克饶、IPv6書寫和表達(dá)方式
表述和書寫時(shí),把長度為128比特的IPv6地址分成8個(gè)16位的二進(jìn)制段誊辉、每一個(gè)16位的二進(jìn)制段用4位的16進(jìn)制數(shù)表示矾湃,段間用“:”(冒號)隔開(其書寫方法和IPv4的十進(jìn)制數(shù)加“.”不同)。
例如:1000:0000:0000:0000:000A:000B:000C:000D
就是每一個(gè)16位的二進(jìn)制數(shù)的段用4位16進(jìn)制數(shù)的段來表示堕澄、段間用“:”(冒號)隔開的一個(gè)IPv6地址邀跃;其中:各個(gè)4位16進(jìn)制數(shù)的段中的高位0允許省略;因此蛙紫,上面的IPv6地址也可以縮寫成:1000:0:0:0:A:B:C:D
拍屑。
為了更進(jìn)一步簡化,IPv6的地址規(guī)范中還規(guī)定坑傅,可以在一個(gè)IPv6地址中最多使用一次雙冒號(::)
來取代IPv6地址中緊密相連的多個(gè)全0的16進(jìn)制數(shù)的段(因?yàn)槿绻试S在一個(gè)IPv6地址中使用一次以上的雙冒號時(shí)將無法判斷IPv6地址的長度僵驰,所以IPv6的地址規(guī)范中才規(guī)定:在一個(gè)IPv6地址中最多只能使用一次雙冒號),這樣上面的IPv6地址還可以縮寫成:1000::A:B:C:D
。
雙冒號使用的地點(diǎn)可以在IPv6地址的前面蒜茴、后面或者是中間星爪;例如:對于1000:0:0:0:A:B:0:0
這樣的一個(gè)IPv6地址,可以寫成1000::A:B:0:0
粉私,也可以寫成1000:0:0:0:A:B::
顽腾;但是不能寫成1000::A:B::
。
帶有端口號的IPV6地址字符串形式诺核,地址部分應(yīng)當(dāng)用“[]”括起來抄肖,在后面跟著‘:’帶上端口號,如 [A01F::0]:8000
二猪瞬、從IPv4到IPv6的遷移
基于IPv4的公共因特網(wǎng)如何遷移到IPv6呢憎瘸?這是個(gè)非常現(xiàn)實(shí)的問題
雖然IPv6使能系統(tǒng)可做成向后兼容陈瘦,即能接收幌甘、發(fā)送和路由IPv4數(shù)據(jù)報(bào),但已部署的IPv4使能系統(tǒng)卻不能處理IPv6數(shù)據(jù)報(bào)
1痊项、雙協(xié)議棧
引入IPv6使能結(jié)點(diǎn)的最直接方式是雙棧方法锅风,即使用該方法的IPv6結(jié)點(diǎn)
還有完整的IPv4實(shí)現(xiàn),即IPv6/IPv4結(jié)點(diǎn)鞍泉,具有接收和發(fā)送IPv4和IPv6兩種數(shù)據(jù)報(bào)的能力皱埠。
當(dāng)與IPv4結(jié)點(diǎn)
互操作時(shí),IPv6/IPv4結(jié)點(diǎn)
可使用IPv4數(shù)據(jù)報(bào)咖驮;當(dāng)與IPv6結(jié)點(diǎn)
互操作時(shí)边器,IPv6/IPv4結(jié)點(diǎn)
又可使用IPv6數(shù)據(jù)報(bào)。
IPv6/IPv4結(jié)點(diǎn)
必須有IPv6與IPv4兩種地址托修。此外忘巧,它們還必須能確定另一個(gè)結(jié)點(diǎn)是否是IPv6使能的或僅IPv4使能的。
可以使用DNS來解決睦刃,若要解析的結(jié)點(diǎn)名字是IPv6使能的砚嘴,則DNS會(huì)返回一個(gè)IPv6地址,否則返回一個(gè)IPv4地址涩拙。如果發(fā)出DNS請求的結(jié)點(diǎn)是僅IPv4使能的际长,則只返回一個(gè)IPv4地址。
兩個(gè)IPv6使能的結(jié)點(diǎn)不應(yīng)相互發(fā)送IPv4數(shù)據(jù)報(bào)兴泥,而如果發(fā)送方或接收方任意一個(gè)僅為IPv4使能的,則必須使用IPv4數(shù)據(jù)報(bào)工育。
這樣就會(huì)有下面這種情況:
如圖,假如結(jié)點(diǎn)A郁轻、B翅娶、E文留、F都是IPv6使能的結(jié)點(diǎn),而結(jié)點(diǎn)C和D是僅IPv4使能的結(jié)點(diǎn)竭沫,那么當(dāng)按
A->B->C->D->E->F
順序發(fā)送數(shù)據(jù)報(bào)時(shí),AB之間會(huì)發(fā)IPv6數(shù)據(jù)報(bào)燥翅,BC會(huì)發(fā)IPV4數(shù)據(jù)報(bào), 由于IPv6數(shù)據(jù)報(bào)特定的字段在IPv4數(shù)據(jù)報(bào)中無對應(yīng)的部分蜕提,這些字段將會(huì)丟失森书。因此,即使E和F之間能發(fā)IPv6數(shù)據(jù)報(bào)谎势,從D到達(dá)E的IPv4數(shù)據(jù)報(bào)并未含有從A發(fā)出的初始IPv6數(shù)據(jù)報(bào)中的所有字段凛膏。
2、隧道
建隧道是另一種雙棧方法脏榆,該方法能解決上述問題猖毫。
假定兩個(gè)IPv6結(jié)點(diǎn)要使用IPv6數(shù)據(jù)報(bào)進(jìn)行交互,但是它們是經(jīng)由中間IPv4路由器互聯(lián)的须喂。將兩臺IPv6路由器中間的IPv4路由器的集合成為一個(gè)隧道吁断,如B->C->D->E
。
如圖坞生,借助于隧道仔役,在隧道發(fā)送端的
IPv6結(jié)點(diǎn)
可將整個(gè)IPv6數(shù)據(jù)報(bào)放到一個(gè)IPv4數(shù)據(jù)報(bào)的數(shù)據(jù)字段中。于是是己,該IPv4數(shù)據(jù)報(bào)的地址設(shè)為指向隧道接收端的IPv6結(jié)點(diǎn)
又兵,再發(fā)送給隧道中的第一個(gè)結(jié)點(diǎn)。而隧道中的IPv4路由器在它們之間為該數(shù)據(jù)報(bào)提供路由卒废,就像對待其他IPv4數(shù)據(jù)報(bào)一樣沛厨,完全不知道該數(shù)據(jù)報(bào)自身就含有一個(gè)完整的IPv6數(shù)據(jù)報(bào)。而隧道接收端的IPv6結(jié)點(diǎn)
最終收到該IPv4數(shù)據(jù)報(bào)摔认,并確定該IPv4數(shù)據(jù)報(bào)中含有一個(gè)IPv6數(shù)據(jù)報(bào)俄烁,于是提取出該IPv6數(shù)據(jù)報(bào),然后再為該IPv6數(shù)據(jù)報(bào)提供路由
3级野、NAT-PT
除了雙棧和隧道方案外,還有一種NAT-PT(Network Address Translator - Protocol Translator)附帶協(xié)議轉(zhuǎn)換器的網(wǎng)絡(luò)地址轉(zhuǎn)換器方案
IPv4 IPv6共存技術(shù)-----NAT-PT
可以參考下這篇文章
IPv6 測試可在這測試是否支持IPv6