複製鏈接
請複製以下鏈接發送給好友

雙協議棧

鎖定
雙協議棧技術就是指在一台設備上同時啓用IPv4協議棧和IPv6協議棧。這樣的話,這台設備既能和IPv4網絡通信,又能和IPv6網絡通信。如果這台設備是一個路由器,那麼這台路由器的不同接口上,分別配置了IPv4地址和IPv6地址,並很可能分別連接了IPv4網絡和IPv6網絡。如果這台設備是一個計算機,那麼它將同時擁有IPv4地址和IPv6地址,並具備同時處理這兩個協議地址的功能。 [1] 
中文名
雙協議棧
外文名
Dual Stack
對    象
通信端節點
種    類
IPv4和IPv6
雙協議棧 ( Dual Stack) 採用該技術的節點上同時運行IPv4和IPv6兩套協議棧。這是使IPv6節點保持與純IPv4節點兼容最直接的方式,針對的對象是通信端節點(包括主機路由器)。這種方式對IPv4和IPv6提供了完全的兼容,但是對於IP地址耗盡的問題卻沒有任何幫助。由於需要雙路由基礎設施,這種方式反而增加了網絡的複雜度。
一、雙協議棧的工作方式
雙協議棧是指在單個節點同時支持IPv4和IPv6兩種協議棧。由於IPv6和IPv4是功能相近的網絡層協議, 兩者都基於相同的物理平台, 而且加載於其上的傳輸層協議TCP和UDP也基本沒有區別, 因此, 支持雙協議棧的節點既能與支持IPv4協議的節點通信, 又能與支持IPv6協議的節點通信。可以相信, 網絡中主要服務商在網絡全部升級到IPv6協議之前必將支持雙協議棧的運行。
1 . 接收數據包
雙棧節點與其它類型的多棧節點的工作方式相同。鏈路層接收到數據段, 拆開並檢查包頭。如果IPv4/IPv6頭中的第一個字段, 即IP包的版本號是4, 該數據包就由IPv4棧來處理; 如果版本號是6, 則由IPv6棧處理; 如果建立了自動隧道機制, 則採用相應的技術將數據包重新整合為IPv6數據包, 由IPv6棧來處理。
2 . 發送數據包
由於雙棧主機同時支持IPv4和IPv6兩種協議, 所以當其在網絡中通信的時候需要根據情況確定使用其中的一種協議棧進行通信, 這就需要制定雙協議棧的工作方式。在網絡通信過程中, 目的地址是作為路由選擇的主要參數, 因而根據應用程序所使用的目的地址的協議類型對雙協議棧的工作方式做出如下約定:
( 1) 若應用程序使用的目的地址為IPv4地址, 則使用IPv4協議;
假設節點A與節點B通信, A為雙棧節點, 節點B支持IPv4協議( 目的地址為IPv4地址) 。則雙棧節點A工作方式:
使用IPv4協議與節點B通信。
完備性證明: 節點A有兩種選擇, 使用IPv4協議或者IPv6協議與主機B通信。根據給定條件, A, B節點均支持
IPv4協議, 所以選擇IPv4協議可以保證通信正常進行, 故約定是充分的。如果使用IPv6協議進行通信, 因為不能確定B是否為雙棧節點( 給定條件僅是目的地址為IPv4地址) , 所以當B節點不支持IPv6協議時不能保證通信正常進行, 故約定是必要的。至此可以認為約定( 1) 是完備的。
( 2) 若目的地址為IPv6地址, 且為本地在線網絡, 則使用IPv6協議。
( 3) 若應用程序使用的目的地址為IPv4兼容的IPv6地址, 並且非本地在線網絡, 則使用IPv4協議, 此時的IPv6將
封裝在IPv4中。IPv4兼容的IPv6地址, 是IPv6協議規範中提供的特殊地址。這類地址高階96位均為0, 低價32位包含IPv4地址。IPv4兼容地址被節點用於通過IPv4路由器以隧道方式傳送IPv6包,這些節點既理解IPv4又理解IPv6。能夠自動將IPv6包以隧道方式在IPv4網絡中傳送的IPv4/IPv6雙棧節點將使用這些地址。根據IPv6協議地址規範以及( 3) 假定的條件, 可以確定目的節點B同樣是一個雙棧節點, 而結合IPv4/IPv6過渡時期網絡的基本狀況, 節點A與節點B的通信將跨越IPv4網絡,所以使用IPv4協議是可行的。當然, 也可以使用IPv6協議進行通信, 但在過渡初期, ( 3) 的約定將優於使用IPv6協議通信。
( 4) 若應用程序使用的目的地址是非IPv4兼容的IPv6地址, 非本地在線網絡, 則使用IPv6協議。類似約定( 2) , 使用IPv6協議能夠保證通信正常進行,而如果是跨越純IPv4網絡的通信, 將採用隧道等機制實現通信; 而如果通過本地網絡, 則無須隧道機制即可完成通信。
( 5) 若應用程序使用域名作為目標地址, 則先從域名服務器得到相應的IPv4/IPv6地址, 然後根據地址情況進行相應的處理。
以上( 1) 至( 5) 是雙協議棧的工作方式, 隨着IPv6網絡規模的不斷擴大, 這些工作方式必將做相應的修改和補充,這將取決於過渡的進程與IPv6網絡的不斷演進。
二、基於雙協議棧的應用服務
1 . 基於雙協議棧的域名服務域名系統( 簡稱: DNS) 的主要功能是通過域名和IP地址之間的相互對應關係, 來精確定位網絡資源, 即根據域名查詢IP地址, 反之亦然。DNS是Internet的基礎架構, 眾多的網絡服務都是建立在DNS體系基礎之上的。因此, DNS的重要性不言而喻。
IPv4地址正向解析的資源記錄是“A”記錄。IPv6地址解析目前有兩種資源記錄, 即“AAAA” 和“A6” 記錄。“A6”記錄支持一些“AAAA”所不具備的新特性, 如地址聚合, 地址更改( Renumber) 等。
在DNS服務器中同時存在“A” 記錄和“AAAA” ( 或“A6”) 記錄。由於節點既可以處理IPv4協議, 也可以處理IPv6協議, 因此無需DNS ALG等轉換設備。無論DNS服務器回答“A”記錄還是“AAAA”記錄, 都可以進行通信。
2 . 基於雙協議棧的BBS服務
BBS是互聯網上交流的平台, 在網絡服務中起着重要的作用, 隨着IPv4向IPv6的平滑過渡, 創建基於雙協議棧的
BBS服務系統就顯得很有必要。根據“ 基本的支持IPv6的socket ( 套接字) 接口擴展”, 修改相關部分代碼, 就可實現兼容IPv6和IPv4的BBS系統。
( 1) IPv6套接口地址結構
在〈sys/socket.h〉中定義了IPv6的地址族———AF_INET6和協議族———PF_INET6, 或者將新的sockaddr_in6數據結構同原來的sockaddr_in數據結構區分開, 後者將在創建socket時使用。
( 2) IPv6的幾種特殊地址在構造支持IPv6的BBS系統時, 要用到以下兩種IPv6的特殊地址。①IPv4地址映射的IPv6地址。②IPv6通配地址。
( 3) 如何使程序兼容IPv4/IPv6大部分現有的網絡應用程序是為IPv4編寫的, 從上述原理可看出, 除了一些同IPv4的特性緊密相關的程序( 如使用多播、IP選項或原始套接口的程序) , 大部分IPv4應用程序若要轉換成兼容IPv4/IPv6應用程序並不是很困難的。基於這種思想, 根據Socket API對IPv4和IPv6兼容所做的支持, 對現有的BBS系統( 基於IPv4的應用程序系統) 進行一系列的修改, 構造一個支持IPv6的BBS系統。採取以下主要步驟:
①構造一個雙協議棧( Dual Stack) BBS服務器, 分別賦予IPv4和IPv6地址, 使得其上運行的BBS服務既能處理使用IPv4的客户, 又能處理使用IPv6的客户。
②對原來的IPv4套接字地址部分進行修改, 創建基於IPv6 套接字。
③將IPv6套接字綁定到IPv6通配地址和23號監聽端口。
④採用兼容IPv4/IPv6的地址轉換函數代替只支持IPv4的地址轉換函數。
⑤修改程序中有關IP地址顯示格式的代碼, 以足夠長度
支持IPv6地址的顯示。
3 . IPv6校園網過渡方案
在過渡過程中, IPv6網段作為孤島接入IPv4網絡, 為實現IPv6網段之間以及IPv4、IPv6網段之間的互通, 必須綜合各種過渡技術, 優化網絡結構, 在保證網絡安全可靠運行以及逐步過渡、節約投資的前提下, 設計過渡方案。根據以上基本原則以及網絡運行狀況, 對於校園網絡的初期過渡方案
規劃如下:
( 1) 跨IPv4網絡的IPv6間通信採用隧道技術實現;
( 2) 基於IPv4的服務器逐步升級為雙協議棧節點服務器;
( 3) IPv4/IPv6客户端互通則可以採用NAT- PT技術實現;
( 4) 本地IPv6網段聯出口路由器接入上級IPv6網絡。
在開展IPv6應用的初期, 應該儘量保證原有網絡系統安全、穩定運行, 所以對於新增的IPv6網段, 應該以獨立鏈路接入上級IPv6網絡。選擇雙協議棧路由器作為IPv6網段的接入節點, 以保證新建IPv6網段能同時使用本地網絡服務
參考資料
  • 1.    李振強、趙曉宇、馬嚴等.IPv6技術揭秘:人民郵電出版社,2006年4月