話說(shuō)IPv4與IPv6之間的那點(diǎn)事
對(duì)于IPv4,IP地址的匱乏,網(wǎng)絡(luò)安全的漏洞,帶寬問(wèn)題等等。那么現(xiàn)在IPv6的來(lái)臨卻正好解決了這些問(wèn)題,但是對(duì)于普及來(lái)說(shuō),它卻又有著相當(dāng)大的問(wèn)題。針對(duì)這個(gè)情況,我們就要做好IPv4與IPv6之間的通信問(wèn)題了。
(1)Dual Stack Model ( RFC2893 )
在這種模型下,任意節(jié)點(diǎn)都是完全雙棧的。這時(shí)不存在IPv4與IPv6之間的相互通信問(wèn)題,但是這種機(jī)制要給每一個(gè)IPv6的站點(diǎn)分配一個(gè)IPv4地址。這種方法不能解決IPv4地址資源不足的問(wèn)題,而且隨著IPv6站點(diǎn)的增加會(huì)很難得到滿(mǎn)足,因此這種方法只能用在早期的變遷過(guò)程。
(2)Limited Dual Stack Model ( RFC2893 )
在這種模型下,服務(wù)器和路由器仍然是雙棧的,而非服務(wù)器的主機(jī)只需要支持IPv6。這種機(jī)制可以節(jié)省大量的IPv4地址,但是在純IPv6和純IPv4節(jié)點(diǎn)之間的通信將會(huì)出現(xiàn)問(wèn)題,為了解決這種問(wèn)題,必須與其它技術(shù)結(jié)合使用。
(3)SIIT ( Stateless IP/ ICMP Translation, RFC2765 )
SIIT定義了在IPv4與IPv6的分組報(bào)頭之間進(jìn)行翻譯的方法,這種翻譯是無(wú)狀態(tài)的,因此對(duì)于每一個(gè)分組都要進(jìn)行翻譯。這種機(jī)制可以和其它的機(jī)制(如NAT-PT)結(jié)合,用于純IPv6站點(diǎn)同純 IPv4站點(diǎn)之間的通信,但是在采用網(wǎng)絡(luò)層加密和數(shù)據(jù)完整性保護(hù)的環(huán)境下這種技術(shù)不可用。純IPv6節(jié)點(diǎn)和純IPv4節(jié)點(diǎn)通過(guò)一個(gè)SIIT轉(zhuǎn)換器通信,IPv6節(jié)點(diǎn)看到的對(duì)方一個(gè)IPv4?mapped地址的主機(jī),同時(shí)它自己則使用一個(gè)IPv4 translated的地址。如果IPv6主機(jī)發(fā)出的IP分組中的目的地址是一個(gè)IPv4?mapped地址,那么SIIT轉(zhuǎn)換器就知道這個(gè)IP分組需要進(jìn)行協(xié)議轉(zhuǎn)換。
(4)NAT-PT (Network Address Translation - Protocol Translation, RFC2766 )
NAT-PT就是在做IPv4與IPv6地址轉(zhuǎn)換(NAT)的同時(shí)在IPv4分組和IPv6分組之間進(jìn)行報(bào)頭和語(yǔ)義的翻譯(PT)。適用于純IPv4站點(diǎn)和純IPv6站點(diǎn)之間的通信。對(duì)于一些內(nèi)嵌地址信息的高層協(xié)議(如FTP),NAT-PT需要和應(yīng)用層的網(wǎng)關(guān)協(xié)作來(lái)完成翻譯。在NAT-PT的基礎(chǔ)上利用端口信息,就可以實(shí)現(xiàn)NAPT-PT,這點(diǎn)同目前IPv4下的NAPT沒(méi)有本質(zhì)區(qū)別。
NAT-PT的原理和SIIT類(lèi)似,其改進(jìn)的地方是將傳統(tǒng)的IPv4下的NAT應(yīng)用于SIIT中的IPv4地址的選取當(dāng)中。SIIT的一個(gè)***的缺點(diǎn)是需要比較大的IPv4地址池,以供IPv6應(yīng)用動(dòng)態(tài)分配。這個(gè)IPv4地址池很大程度上制約了SIIT 的應(yīng)用。而NAT-PT采用傳統(tǒng)的IPv4下的NAT技術(shù)來(lái)分配IPv4地址,這樣就可以以很少的IPv4地址構(gòu)成自己的IPv4地址分配池,可以給大量的需要進(jìn)行地址轉(zhuǎn)換的應(yīng)用使用協(xié)議轉(zhuǎn)換服務(wù)。
在實(shí)現(xiàn)方面,如果沒(méi)有DNS-ALG的支持,只能實(shí)現(xiàn)由IPv6發(fā)起的與IPv4之間的通信,反之,包就會(huì)被丟棄。如果有DNS-ALG的支持,就可以實(shí)現(xiàn)雙向的通信。有一些應(yīng)用需要一定程度的地址穩(wěn)定性,NAT-PT可以被配置成提供V6到特定V4地址的靜態(tài)映射。
該機(jī)制適用于過(guò)渡的初始階段,使得基于雙協(xié)議棧的主機(jī),能夠運(yùn)行IPv4應(yīng)用程序與IPv6應(yīng)用互相通信。這種技術(shù)允許不支持IPv6的應(yīng)用程序透明地訪問(wèn)純IPv6站點(diǎn)。該機(jī)制要求主機(jī)必須是雙棧的,同時(shí)要在協(xié)議棧中插入三個(gè)特殊的擴(kuò)展模塊:域名解析器、地址映射器和翻譯器,相當(dāng)于在主機(jī)的協(xié)議棧中使用了NAT-PT。
(6)BIA ( Bump-In-the-API, Internet Draft )
這種技術(shù)同BIS類(lèi)似,只是在API層而不是在協(xié)議棧的層次上進(jìn)行分組的翻譯,所以它的實(shí)現(xiàn)比BIS要簡(jiǎn)單一些,因?yàn)椴恍枰獙?duì)IP包頭進(jìn)行翻譯。BIS與BIA的主要區(qū)別是:BIS用在沒(méi)有IPv6協(xié)議棧的系統(tǒng)上,BIA用在有IPv6協(xié)議棧的系統(tǒng)上。#p#
當(dāng)雙棧主機(jī)上的IPv4應(yīng)用與其它IPv6主機(jī)通信時(shí),API翻譯器檢測(cè)到從IPv4應(yīng)用發(fā)出的基于socket API的函數(shù),就調(diào)用IPv6 socket API函數(shù)與IPv6主機(jī)通信。
(7)SOCKS64 ( Socks gateway, rfc3089 )
SOCKS64是原有SOCKS協(xié)議 ( RFC1928 )的擴(kuò)展,相當(dāng)于IP層的代理。這種機(jī)制不需要修改DNS或者做地址映射,可用于多種環(huán)境,但是需要采用SOCKS代理服務(wù)器,并在客戶(hù)端安裝支持SOCKS代理的軟件,對(duì)于用戶(hù)來(lái)講不是透明的。該機(jī)制增加了兩個(gè)新的功能部件,它們構(gòu)成了網(wǎng)關(guān)機(jī)制。
除了上述7種通信方式,IPv4與IPv6還可以通過(guò)TRT、DSTM、ALG等方式進(jìn)行通信。
如何選擇IPv4與IPv6的過(guò)渡機(jī)制
從已有的過(guò)渡機(jī)制可以看出,目前所有的方案都是針對(duì)某一種問(wèn)題而提出的。這些過(guò)渡機(jī)制都不是普遍適用的,每一種機(jī)制都適用于某種或幾種特定的網(wǎng)絡(luò)情況,而且常常需要和其它的技術(shù)組合使用。在實(shí)際應(yīng)用時(shí)需要綜合考慮各種實(shí)際情況來(lái)制定合適的過(guò)渡策略。對(duì)于某一類(lèi)互連問(wèn)題,設(shè)計(jì)者們可以找出新的方式,并隨著網(wǎng)絡(luò)技術(shù)和發(fā)展不斷的改進(jìn)和更新這種方式。
為選擇一個(gè)合適的機(jī)制,首先需求要明確,明確應(yīng)用的類(lèi)型、范圍和系統(tǒng)的類(lèi)型,然后選擇合適的轉(zhuǎn)換機(jī)制進(jìn)行設(shè)計(jì)和實(shí)施。IPv4向IPv6過(guò)渡時(shí)期,通常采用的組網(wǎng)原則:
◆在能直接建立IPv6鏈路的情況下,使用純IPv6路由;
◆在不能使用IPv6鏈路的情況下,IPv6節(jié)點(diǎn)之間使用隧道技術(shù);
◆雙棧的IPv6/IPv4主機(jī)和純IPv6或者純IPv4 的主機(jī)通信不需要采用協(xié)議轉(zhuǎn)換,而直接“自動(dòng)”選擇相應(yīng)的通信協(xié)議(IPv4或者 IPv6)。
◆對(duì)于純IPv6和純IPv4主機(jī)之間的通信,則應(yīng)該使用協(xié)議轉(zhuǎn)換或者應(yīng)用層網(wǎng)關(guān)(ALG)技術(shù),設(shè)計(jì)的協(xié)議轉(zhuǎn)換器或者ALG應(yīng)該盡量保證在不修改原有應(yīng)用的情況下就可以使用