剖析IPv6時(shí)代的域名系統(tǒng)

字號(hào):

IPv6協(xié)議是取代IPv4的下一代網(wǎng)絡(luò)協(xié)議,它具有許多新的特性與功能。域名系統(tǒng)(DNS)是Internet的基礎(chǔ)架構(gòu),IPv6的新特性也需要DNS的支持。因此,DNS必須升級(jí)以滿足IPv6的需求。本文將從IPv6 DNS的體系結(jié)構(gòu)、IPv6的地址解析、IPv6地址自動(dòng)配置和即插即用、IPv4到IPv6的過(guò)渡等幾方面對(duì)IPv6時(shí)代的DNS進(jìn)行分析和研究。
    一、IPv6優(yōu)勢(shì)簡(jiǎn)介
    域名系統(tǒng)(Domain Name System,簡(jiǎn)稱DNS)的主要功能是通過(guò)域名和IP地址之間的相互對(duì)應(yīng)關(guān)系來(lái)精確定位網(wǎng)絡(luò)資源,即根據(jù)域名查詢IP地址,反之亦然。DNS是當(dāng)今Internet的基礎(chǔ)架構(gòu),眾多的網(wǎng)絡(luò)服務(wù)都是建立在DNS體系基礎(chǔ)之上的。業(yè)界權(quán)威人士說(shuō):“只有理解了DNS,才真正懂得了Internet?!?IPv6協(xié)議是用來(lái)取代IPv4的互聯(lián)網(wǎng)協(xié)議。相比IPv4,IPv6具有很多優(yōu)點(diǎn)。首先,它提供了巨大的地址空間;其次,IPv6的地址結(jié)構(gòu)和地址分配采用嚴(yán)格的層次結(jié)構(gòu),以便于進(jìn)行地址聚合,從而使路由器中路由表的規(guī)模大幅度“瘦身”;再次,IPv6協(xié)議支持網(wǎng)絡(luò)節(jié)點(diǎn)地址的自動(dòng)配置,可以實(shí)現(xiàn)即插即用功能。此外,IPv6協(xié)議對(duì)主機(jī)移動(dòng)性有較好的支持,適合于越來(lái)越多的互聯(lián)網(wǎng)移動(dòng)應(yīng)用;IPv6協(xié)議在安全性、對(duì)多媒體流的支持性等方面都具有超過(guò)IPv4的優(yōu)勢(shì)。
    IPv6網(wǎng)絡(luò)中的DNS非常重要,一些IPv6的新特性和DNS的支持密不可分。本文從IPv6 DNS的體系結(jié)構(gòu)、IPv6的地址解析、IPv6地址自動(dòng)配置和即插即用、IPv4到IPv6的過(guò)渡等幾方面對(duì)IPv6時(shí)代的DNS進(jìn)行了分析和研究。
    二、IPv6域名系統(tǒng)的體系結(jié)構(gòu)
    IPv6網(wǎng)絡(luò)中的DNS與IPv4的DNS在體系結(jié)構(gòu)上是一致的,都采用樹(shù)型結(jié)構(gòu)的域名空間。IPv4協(xié)議與IPv6協(xié)議的不同并不意味著需要單獨(dú)應(yīng)用IPv4 DNS體系和IPv6 DNS體系,相反,它們的DNS體系和域名空間必須保持一致,即IPv4和IPv6共同擁有統(tǒng)一的域名空間。在IPv4到IPv6的過(guò)渡階段,域名可以同時(shí)對(duì)應(yīng)于多個(gè)IPv4和IPv6的地址。隨著IPv6網(wǎng)絡(luò)的普及,IPv6地址將逐漸取代IPv4地址。
    的最上方是DNS樹(shù)形結(jié)構(gòu)中惟一的根(Root),用點(diǎn)號(hào)“.”表示。根的下一級(jí)稱為域(Top Level Domain, 簡(jiǎn)稱TLD),也稱一級(jí)域。域的下級(jí)就是二級(jí)域(Second Level Domain, 簡(jiǎn)稱SLD),二級(jí)域的下級(jí)就是三級(jí)域,依此類推。每個(gè)域都是其上級(jí)域的子域(Sub Domain),比如 “.net.cn”是“.cn”的子域,而“cnnic.net.cn”既是“net.cn”的子域,也是“.cn”的子域。
    DNS樹(shù)上的每一個(gè)節(jié)點(diǎn)都有一個(gè)標(biāo)識(shí)(Label),根節(jié)點(diǎn)的標(biāo)識(shí)是“空”(即長(zhǎng)度為0),其他節(jié)點(diǎn)的標(biāo)識(shí)長(zhǎng)度在1~63字節(jié)之間。一個(gè)節(jié)點(diǎn)的域名是由從這個(gè)節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑上的所有標(biāo)識(shí)從左到右順序排列組成的,標(biāo)識(shí)之間用“.”分隔。
    整個(gè)DNS域名空間劃分成若干個(gè)區(qū)(Zone),見(jiàn)上圖中的橢圓標(biāo)記。每個(gè)區(qū)都有域名服務(wù)器(包括主服務(wù)器和輔服務(wù)器),以資源記錄(Resource Record)的形式來(lái)存儲(chǔ)域名信息。資源記錄包括了主機(jī)名(域名)和IP地址的對(duì)應(yīng)以及子域服務(wù)器的授權(quán)等多種類型。 用戶在使用DNS服務(wù)時(shí),不必細(xì)致地了解DNS域名空間的樹(shù)型結(jié)構(gòu)體系,只須在設(shè)置網(wǎng)絡(luò)時(shí)指定一個(gè)DNS服務(wù)器或使用動(dòng)態(tài)主機(jī)配置(DHCP)等相關(guān)技術(shù)。用戶的應(yīng)用程序可以通過(guò)操作系統(tǒng)內(nèi)嵌的解析器(Resolver)訪問(wèn)DNS系統(tǒng),查詢域名相關(guān)的網(wǎng)絡(luò)資源信息。
    三. IPv6地址及其表示方法
    IPv6地址長(zhǎng)度為128比特,地址按照其傳輸類型分為3種:
    (1)單播地址(Unicast Address):用來(lái)標(biāo)識(shí)單一網(wǎng)絡(luò)接口。目標(biāo)地址是單播地址的數(shù)據(jù)包將發(fā)送給以這個(gè)地址為標(biāo)識(shí)的網(wǎng)絡(luò)接口。
    (2)任播地址(Anycast Address):用來(lái)標(biāo)識(shí)一組網(wǎng)絡(luò)接口(通常屬于不同的節(jié)點(diǎn))。目標(biāo)地址是任播地址的數(shù)據(jù)包發(fā)送給其中路由意義上最近的一個(gè)網(wǎng)絡(luò)接口的地址。
    (3)多播地址(Multicast Address):用來(lái)標(biāo)識(shí)一組網(wǎng)絡(luò)接口(通常屬于不同的節(jié)點(diǎn))。發(fā)送到多播地址的數(shù)據(jù)包將發(fā)送給本組中所有的網(wǎng)絡(luò)接口。在IPv6中沒(méi)有廣播地址(Broadcast Address),用多播地址取代。 其中,單播地址按照地址的傳輸范圍分為可聚合全局單播地址(Aggregatable Global Unicast Addresses)、NSAP地址、IPX層次地址、站點(diǎn)本地地址(Site-Local Address)和鏈路本地地址(link-Local Address)等。所有的網(wǎng)絡(luò)接口至少要有一個(gè)鏈路本地地址,同時(shí)還可以擁有多個(gè)地址(包括單播地址,任播地址和多播地址)。
    IPv6的地址在表示和書(shū)寫(xiě)時(shí),用冒號(hào)將128比特分割成8個(gè)16比特的部分,每個(gè)部分包括4位的16進(jìn)制數(shù)字。例如:
    1080:0000:0000:0000:0008:0800:200C:123A
    在每個(gè)4位一組的十六進(jìn)制數(shù)中,如其高位為0,則可省略。例如將0800寫(xiě)成800,0008寫(xiě)成8,0000寫(xiě)成0。于是1080:0000:0000:0000:0008:0800:200C:123A可縮寫(xiě)成1080:0:0:0:8:800:200C:123A。為了進(jìn)一步簡(jiǎn)化,規(guī)范中導(dǎo)入了重疊冒號(hào)的規(guī)則,即用重疊冒號(hào)置換地址中的連續(xù)16比特的0。例如,將上例中的連續(xù)3個(gè)0置換后,可以表示成如下的縮寫(xiě)形式: 1080::8:800:200C:123A。重疊冒號(hào)的規(guī)則在一個(gè)地址中只能使用一次,例如:地址0:0:0:BA98:7654:0:0:0可縮寫(xiě)成::BA98:7654:0:0:0或0:0:0:BA98:7654::,但不能記成::BA98:7654::。
    另外,可以用“IPv6地址/前綴長(zhǎng)度”來(lái)表示地址前綴。這個(gè)表示方法類似于CIDR中IPv4的地址前綴表示法。這里IPv6地址是上述任一種表示法所表示的IPv6地址,前綴長(zhǎng)度是一個(gè)十進(jìn)制值,指定該地址中最左邊的用于組成前綴的比特?cái)?shù)。例如,對(duì)32比特的前綴10800000(十六進(jìn)制),可以如下表示:
    1080::8:800:200C:123A/32
    1080::/32