DNS之域名解析工(gōng)作原理
域名系統(英語:Domain Name System,縮寫:DNS)是互聯網的一(yī)項服務。它作爲将域名和IP地址相互映射的一(yī)個分(fēn)布式數據庫,能夠使人更方便地訪問互聯網。DNS使用TCP和UDP端口53。當前,對于每一(yī)級域名長度的限制是63個字符,域名總長度則不能超過253個字符。
域名解析(DNS最常用的遞歸查詢)
舉一(yī)個例子,www.steng.cn 這個域名和IP地址106.11.223.97 是相對應的。DNS就像是一(yī)個自動的電(diàn)話(huà)号碼簿,我(wǒ)(wǒ)們在浏覽器中(zhōng)輸入 www.steng.cn, 浏覽器會将www.steng.cn這個域名提交給DNS,DNS就會查詢www.steng.cn這個域名對應的IP地址 ,DNS查詢到www.steng.cn對應的IP地址爲106.11.223.97後,然後将這個IP地址返回給浏覽器,浏覽器就可以指向這個IP地址進行正常的網絡訪問了。
什麽是IPV6 ?
IPv6格式
IPv6二進位制下(xià)爲128位長度,以16位爲一(yī)組,每組以冒号“:”隔開(kāi),可以分(fēn)爲8組,每組以4位十六進制方式表示。例如:2001:0db8:86a3:08d3:1319:8a2e:0370:7344 是一(yī)個合法的IPv6地址。類似于IPv4的點分(fēn)十進制,同樣也存在點分(fēn)十六進制的寫法,将8組4位十六進制地址的冒号去(qù)除後,每位以點号“.”分(fēn)組,例如:2001:0db8:85a3:08d3:1319:8a2e:0370:7344則記爲2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4,其倒序寫法用于ip6.arpa子域名記錄IPv6地址與域名的映射。
同時IPv6在某些條件下(xià)可以省略:
每項數字前導的0可以省略,省略後前導數字仍是0則繼續,例如下(xià)組IPv6是等價的。
2001:0DB8:02de:0000:0000:0000:0000:0e13
2001:DB8:2de:0000:0000:0000:0000:e13
2001:DB8:2de:000:000:000:000:e13
2001:DB8:2de:00:00:00:00:e13
2001:DB8:2de:0:0:0:0:e13
可以用雙冒号“::”表示一(yī)組0或多組連續的0,但隻能出現一(yī)次:
2001:0000:0000:0000:0000:25de:0000:cade
2001:0000:0000:0000:25de:0000:0000:cade
2001:0000:0000:25de:0000:0000:0000:cade
2001:0000:25de:0000:0000:0000:0000:cade
2001:DB8:2de:0:0:0:0:e13
2001:DB8:2de::e13
2001:0DB8:0000:0000:0000:0000:1428:57ab
2001:0DB8:0000:0000:0000::1428:57ab
2001:0DB8:0:0:0:0:1428:57ab
2001:0DB8:0::0:1428:57ab
2001:0DB8::1428:57ab
如果四組數字都是零,可以被省略。遵照以上省略規則,下(xià)面這兩組IPv6都是相等的。
2001::25de::cade 是非法的,因爲雙冒号出現了兩次。它有可能是下(xià)種情形之一(yī),造成無法推斷。
如果這個地址實際上是IPv4的地址,後32位可以用10進制數表示;因此::ffff:192.168.89.9 相等于::ffff:c0a8:5909。
另外(wài),::ffff:1.2.3.4 格式叫做IPv4映射地址。
IPv4位址可以很容易的轉化爲IPv6格式。舉例來說,如果IPv4的一(yī)個地址爲135.75.43.52(十六進制爲0x874B2B34),它可以被轉化爲0000:0000:0000:0000:0000:FFFF:874B:2B34 或者::FFFF:874B:2B34。同時,還可以使用混合符号(IPv4-compatible address),則地址可以爲::ffff:135.75.43.52。
由于同一(yī)非全局地址可能在同一(yī)範圍的多個區域中(zhōng)使用(例如,在兩條獨立的物(wù)理鏈路中(zhōng)使用鏈路本地地址 fe80::1),而且一(yī)個節點可能連接到同一(yī)範圍的不同區域的接口(例如,一(yī)個路由器通常有多個接口連接到不同的鏈路)。IPv6新增了區域ID(Zone ID)加以區分(fēn),或稱作用域ID(Scope ID)。作用域ID僅用于本地鏈接,使用百分(fēn)号追加在地址後面。其内容特定于操作系統,例如Windows使用數字 fe80::2%3 ,Linux使用網卡名字 fe80::2%eth0 。 在URI中(zhōng)使用時,百分(fēn)号需要進行編碼,例如 fe80::a%en1 應顯示爲 http://[fe80::a%25en1] 。
IPv6地址的分(fēn)類
IPv6地址可分(fēn)爲三種:
單播(unicast)地址
單播地址标示一(yī)個網絡接口。協議會把送往地址的數據包送往給其接口。IPv6的單播地址可以有一(yī)個代表特殊地址名字的範疇,如鏈路本地地址(link local address)和唯一(yī)區域地址(ULA,unique local address)。單播地址包括可聚類的全球單播地址、鏈路本地地址等。
任播(anycast)地址
任播像是Unicast(單點傳播)與Broadcast(多點廣播)的綜合。單點廣播在來源和目的地間直接進行通信;多點廣播存在于單一(yī)來源和多個目的地進行通信。
而Anycast則在以上兩者之間,它像多點廣播(Broadcast)一(yī)樣,會有一(yī)組接收節點的地址列表,但指定爲Anycast的數據包,隻會發送給距離(lí)最近或發送成本最低(根據路由表來判斷)的其中(zhōng)一(yī)個接收地址,當該接收地址收到數據包并進行回應,且加入後續的傳輸。該接收列表的其他節點,會知(zhī)道某個節點地址已經回應了,它們就不再加入後續的傳輸作業。
以目前的應用爲例,Anycast地址隻能分(fēn)配給中(zhōng)間設備(如路由器、三層交換機等),不能分(fēn)配給終端設備(手機、電(diàn)腦等),而且不能作爲發送端的地址。
多播(multicast)地址
多播地址也稱組播地址。多播地址也被指定到一(yī)群不同的接口,送到多播地址的數據包會被發送到所有的地址。多播地址由皆爲一(yī)的字節起始,亦即:它們的前置爲FF00::/8。其第二個字節的最後四個比特用以标明"範疇"。
一(yī)般有node-local(0x1)、link-local(0x2)、site-local(0x5)、organization-local(0x8)和global(0xE)。多播地址中(zhōng)的最低112位會組成多播組群标識符,不過因爲傳統方法是從MAC地址産生(shēng),故隻有組群标識符中(zhōng)的最低32位有使用。定義過的組群标識符有用于所有節點的多播地址0x1和用于所有路由器的0x2。
另一(yī)個多播組群的地址爲"solicited-node多播地址",是由前置FF02::1:FF00:0/104和剩餘的組群标識符(最低24位)所組成。這些地址允許經由鄰居發現協議(NDP,Neighbor Discovery Protocol)來解譯鏈接層地址,因而不用幹擾到在區網内的所有節點。
特殊地址
IANA維護官方的IPv6地址空間列表。全局的單播地址的分(fēn)配可在各個區域互聯網注冊管理機構或 GRH DFP 頁面找到。
IPv6中(zhōng)有些地址是有特殊含義的:
未指定地址
::/128-所有比特皆爲零的地址稱作未指定地址。這個地址不可指定給某個網絡接口,并且隻有在主機尚未知(zhī)道其來源IP時,才會用于軟件中(zhōng)。路由器不可轉送包含未指定地址的數據包。
鏈路本地地址
::1/128-是一(yī)種單播繞回地址。如果一(yī)個應用程序将數據包送到此地址,IPv6堆棧會轉送這些數據包繞回到同樣的虛拟接口(相當于IPv4中(zhōng)的127.0.0.1/8)。
fe80::/10-這些鏈路本地地址指明,這些地址隻在區域連線中(zhōng)是合法的,這有點類似于IPv4中(zhōng)的169.254.0.0/16。
唯一(yī)區域地址
fc00::/7-唯一(yī)區域地址(ULA,unique local address)隻可用于本地通信,類似于IPv4的專用網絡地址10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。這定義在RFC 4193中(zhōng),是用來取代站點本地位域。這地址包含一(yī)個40比特的僞随機數,以減少當網站合并或數據包誤傳到網絡時碰撞的風險。這些地址除了隻能用于區域外(wài),還具備全局性的範疇,這點違反了唯一(yī)區域位域所取代的站點本地地址的定義。
多播地址
ff00::/8-這個前置表明定義在"IP Version 6 Addressing Architecture"(RFC 4291)中(zhōng)的多播地址。其中(zhōng),有些地址已用于指定特殊協議,如ff0X::101對應所有區域的NTP服務器(RFC 2375)。
請求節點多播地址(Solicited-node multicast address)
ff02::1:FFXX:XXXX-XX:XXXX爲相對應的單播或任播地址中(zhōng)的三個最低的字節。
IPv4轉譯地址
::ffff:x.x.x.x/96-用于IPv4映射地址。(參見以下(xià)的轉換機制)。
2001::/32-用于Teredo隧道。
2002::/16-用于6to4。
ORCHID
2001:10::/28-ORCHID (Overlay Routable Cryptographic Hash Identifiers)(RFC 4843)。這些是不可遶送的IPv6地址,用于加密散列識别。
文件
2001:db8::/32-這前置用于文件(RFC 3849)。這些地址應用于IPV6地址的示例中(zhōng),或描述網絡架構。
遭舍棄或删除的用法
::/96-這個前置曾用于IPv4兼容地址,現已删除。
fec0::/10-這個站點本地前置指明這地址隻在組織内合法。它已在2004年9月的RFC3879中(zhōng)舍棄,并且新系統不應該支持這類型的地址。