Teredo 原理概述
http://www.ipv6bbs.cn/thread-144-1-1.html
(出處: IPv6BBS胎撇,滿天星發(fā)表于 2010-9-14 22:40:00)
摘要
了解 Teredo (又成為面向 IPv6 的 IPv4 NAT穿越蚪腋,是一項(xiàng) IPv6 / IPv4 過渡技術(shù),在 IPv6 / IPv4 主機(jī)位于一個(gè)或多個(gè) IPv4 NAT 之后時(shí),用來為單播 IPv6 連接提供地址分配和主機(jī)間自動(dòng)隧道牡属。為了能夠通過 IPv4 NAT秧廉, IPv6 數(shù)據(jù)包作為基于 IPv4 的用戶數(shù)據(jù)包協(xié)議(UDP) 消息發(fā)送出去。本文向讀者提供了有關(guān) Teredo 的概述(包括 Teredo 地址以及數(shù)據(jù)包結(jié)構(gòu))堰塌,并且詳細(xì)解釋了 Teredo 客戶端的發(fā)起通信的方式、特定于 Teredo 主機(jī)的中繼分衫、僅支持 IPv6 主機(jī)使用 IPv4 Internet 的方法场刑、 IPv6 Internet、 Teredo 服務(wù)器以及 Teredo 中繼蚪战。
鳴謝
Christian Huitema, 架構(gòu)設(shè)計(jì)師, Microsoft 公司
Stewart Tansley, 項(xiàng)目經(jīng)理, Microsoft 公司
Mohit Talwar, 軟件開發(fā)工程師, Microsoft 公司
Dave Thaler, 軟件開發(fā)主管, Microsoft 公司
本頁內(nèi)容
簡介
網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT)概述
Teredo 構(gòu)成
Teredo 地址
Teredo 數(shù)據(jù)包格式
Teredo 路由
Teredo 過程
總結(jié)
簡介
在開始有關(guān) Teredo 詳細(xì)討論前牵现,我們有必要首先了解一下什么是 Teredo 以及我們?yōu)槭裁葱枰?Teredo 是一項(xiàng)地址分配和自動(dòng)隧道技術(shù),能夠跨越 IPv4 Internet 實(shí)現(xiàn) IPv6 單播連接邀桑。在它之前已經(jīng)有了一種能夠通過 IPv4 Internet 實(shí)現(xiàn) IPv6 單播連接的自動(dòng)隧道技術(shù) —— 6to4 瞎疼。 6to4 路由器使用一個(gè)公用的 IPv4 地址來構(gòu)建 6to4 前綴,起到 IPv6 通告和促進(jìn)路由器的作用壁畸。 6to4 路由器壓縮和解壓經(jīng)過站點(diǎn)節(jié)點(diǎn)的 IPv6 數(shù)據(jù)流贼急。
6to4 技術(shù)依靠公用 IPv4 地址的配置以及邊界設(shè)備中采用的 6to4 路由功能。在許多小型辦公室/家庭辦公室(SOHO)配置中捏萍, IPv4 Internet 絡(luò)地址轉(zhuǎn)換 (NAT) 被廣泛使用太抓。如要了解更多關(guān)于網(wǎng)絡(luò)地址轉(zhuǎn)換工作的情況,請參閱文中的“網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)概述”令杈。在大多數(shù) NAT 配置中走敌,提供 NAT 功能的設(shè)備并不具備成為 6to4 路由器的功能。即使 NAT 設(shè)備普遍支持 6to4 逗噩,還是有一些配置包含多層NAT掉丽。在這些多層配置中,支持 6to4 的NAT無法成為路由器异雁,因?yàn)樗痪邆湟粋€(gè)公共的 IPv4 地址捶障。
Teredo 通過在站點(diǎn)內(nèi)的主機(jī)之間實(shí)現(xiàn) IPv6 數(shù)據(jù)包隧道來解決現(xiàn)今 NAT 設(shè)備缺乏 6to4 功能以及多層 NAT 配置問題。相反纲刀, 6to4 使用邊緣設(shè)備之間的隧道残邀。主機(jī)之間隧道給 NAT 帶來了另外一個(gè)問題:IPv4 壓縮的 IPv6 數(shù)據(jù)包發(fā)送時(shí)協(xié)議域的 IPv4 標(biāo)頭設(shè)定為41。大多數(shù)的 NAT只解析 TCP 或者 UDP 數(shù)據(jù)流,而且需要通過手動(dòng)設(shè)置來實(shí)現(xiàn)對其它協(xié)議的解析或者安裝負(fù)責(zé)處理解析的 NAT 編輯器芥挣。因?yàn)閰f(xié)議41的解析并不是 NAT 的通用功能驱闷,所以 IPv4 壓縮的 IPv6 通信傳輸不能通過一般的 NAT。為了使 IPv6 數(shù)據(jù)傳輸能夠通過單個(gè)或多層 NAT空免, IPv6 數(shù)據(jù)包必須壓縮成 IPv4 UDP 格式的數(shù)據(jù)空另,包含 IPv4 和 UDP 標(biāo)頭各一個(gè)。UDP 數(shù)據(jù)普遍能夠被 NAT 解析而且能夠通過多層 NAT蹋砚。
總之扼菠, Teredo 是一項(xiàng) IPv6/IPv4 轉(zhuǎn)換技術(shù),能夠?qū)崿F(xiàn)在處于單個(gè)或者多個(gè) IPv4 NAT 后的主機(jī)之間的 IPv6 自動(dòng)隧道坝咐。來自 Teredo 主機(jī)的 IPv6 數(shù)據(jù)流能夠通過 NAT循榆,因?yàn)樗且?IPv4 UDP 數(shù)據(jù)格式發(fā)送的。如果 NAT 支持 UDP 端口解析墨坚,那么它就支持 Teredo 秧饮。但是對稱 NAT是一個(gè)例外,詳細(xì)情況在本文的 "NAT 的種類" 中講解泽篮。
Teredo 是作為實(shí)現(xiàn) IPv6 連接最后一種轉(zhuǎn)換技術(shù)而設(shè)計(jì)的盗尸,認(rèn)識到這一點(diǎn)很重要。如果原來的 IPv6 帽撑、 6to4 或者ISATAP連接可用泼各,那么主機(jī)就不必作為 Teredo 的客戶端。現(xiàn)在亏拉,越來越多的 IPv4 NAT 經(jīng)過了升級以便能夠支持 6to4 扣蜻,而且 IPv6 連接變得越來越普遍, Teredo 將會使用得越來越少及塘,直到最后完全被放棄弱贼。
網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT)概述
網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT) 是指符合 RFC 1631 標(biāo)準(zhǔn)的 IPv4 路由器,它能夠在發(fā)送前解析數(shù)據(jù)包 IP 地址以及 TCP/UDP 端口號磷蛹。例如,設(shè)想一個(gè)由多臺計(jì)算機(jī)組成的溪烤,連接到 Internet 的小型商務(wù)網(wǎng)味咳。通常需要為每臺連接到 Internet 的電腦從 Internet 服務(wù)提供商 (ISP) 處得到一個(gè) IP 地址。但是通過 NAT檬嘀,這個(gè)小型的商務(wù)網(wǎng)就可以使用私有地址 (如 RFC 1918 所述) 槽驶,然后通過 NAT 將專用地址映射到單個(gè)或者多個(gè) IP 公用地址。
NAT 是針對以下各項(xiàng)要求的常見解決方案:
?? ? ? ? 你想利用一條連接訪問 Internet鸳兽,而不是將多臺電腦連接到 Internet 上掂铐。
?? ? ? ? 你想使用私有地址。
?? ? ? ? 你想在不部署代理服務(wù)器的情況下使用 Internet 資源。
網(wǎng)絡(luò)地址轉(zhuǎn)換的工作原理
當(dāng)一臺小型商務(wù)企業(yè)的內(nèi)部網(wǎng)計(jì)算機(jī)用戶連接到 Internet 資源時(shí)全陨,該用戶的 TCP/IP 協(xié)議產(chǎn)生一個(gè) IP 數(shù)據(jù)包爆班,該數(shù)據(jù)包包含以下值,這些值位于 IP 和 TCP 或 UDP 標(biāo)頭中:(粗體內(nèi)容表示受 NAT 影響的項(xiàng)目):
?? ? ? ? 目標(biāo) IP 地址:Internet 資源 IP 地址
?? ? ? ? 源 IP 地址:私有 IP 地址
?? ? ? ? 目標(biāo)端口:Internet 資源 TCP 或 UDP 端口
?? ? ? ? 源端口:源應(yīng)用程序 TCP 或 UDP 端口
請求源主機(jī)或者其它路由器將此 IP 數(shù)據(jù)包發(fā)送給 NAT, 然后由 NAT 將向外發(fā)送的數(shù)據(jù)包的地址解析如下:
?? ? ? ? 目標(biāo)IP地址:Internet 資源 IP 地址
?? ? ? ? 源IP 地址:ISP 分配的公用地址
?? ? ? ? 目標(biāo)端口:Internet 資源 TCP 或 UDP 端口
?? ? ? ? 源端口:重新映射的源應(yīng)用程序 TCP 或 UDP 端口
NAT 將重新映射的 IP 數(shù)據(jù)包發(fā)送到 Internet 辱姨。響應(yīng)計(jì)算機(jī)將向 NAT 返回一個(gè)響應(yīng)柿菩。當(dāng) NAT 接收到此響應(yīng)時(shí),該數(shù)據(jù)包將包含以下地址信息:
?? ? ? ? 目標(biāo)IP 地址:ISP 分配的公用地址
?? ? ? ? 源IP地址:Internet 資源 IP 地址
?? ? ? ? 目標(biāo)端口:重新映射的源應(yīng)用程序 TCP 或 UDP 端口
?? ? ? ? 源端口:Internet 資源的 TCP 或者 UDP 端口
當(dāng) NAT 完成映射和解析地址后雨涛,將向 Internet 客戶端發(fā)送數(shù)據(jù)包枢舶,此數(shù)據(jù)包包含以下地址信息:
?? ? ? ? 目標(biāo) IP 地址:私有 IP 地址
?? ? ? ? 源 IP 地址:Internet 資源 IP 地址
?? ? ? ? 目標(biāo)端口:源應(yīng)用程序 TCP 或者 UDP 端口
?? ? ? ? 源端口:Internet 資源 TCP 或 UDP 端口
對于向外發(fā)送的數(shù)據(jù)包,源 IP 地址和 TCP/UDP 端口號將被映射到一個(gè)公用源 IP 地址和一個(gè)可能變化的 TCP/UDP 端口號替久。對于接收的數(shù)據(jù)包凉泄,目標(biāo) IP 地址和 TCP/UDP 端口號將被映射到私有 IP 地址和初始 TCP/UDP 端口號。
例如蚯根,一個(gè)小型辦公網(wǎng)絡(luò)使用 192.168.0.0/24 作為企業(yè)內(nèi)部網(wǎng)絡(luò)私有 ID 并且其 Internet 網(wǎng)絡(luò)服務(wù)提供商分配的單一公用IP地址為131.107.0.1后众。當(dāng)此小型內(nèi)部網(wǎng)中一臺內(nèi)部私有地址為 192.168.0.99 的客戶訪問 IP 地址為 157.60.0.1的網(wǎng)站服務(wù)器時(shí),此用戶機(jī)的 TCP/IP 協(xié)議產(chǎn)生一個(gè)包含以下在 IP 和 TCP 或者 UDP 標(biāo)頭中的數(shù)值的 IP 數(shù)據(jù)包:
?? ? ? ? 目標(biāo)IP地址:157.60.0.1
?? ? ? ? 源IP地址:192.168.0.99
?? ? ? ? 目標(biāo)端口:80
?? ? ? ? 源端口:1025
請求源主機(jī)將此 IP 數(shù)據(jù)包發(fā)送給 NAT 設(shè)備稼锅,然后由 NAT 設(shè)備解析向外發(fā)送數(shù)據(jù)包的地址如下:
?? ? ? ? 目標(biāo) IP 地址:157.60.0.1
?? ? ? ? 源 IP 地址:131.107.0.1
?? ? ? ? 目標(biāo)端口:80
?? ? ? ? 源端口:5000
NAT 將重新映射后的 IP 數(shù)據(jù)包發(fā)送到 Internet吼具。網(wǎng)站服務(wù)器向 NAT 返回一個(gè)響應(yīng)。當(dāng) NAT 接受到此響應(yīng)時(shí)矩距,數(shù)據(jù)包包含以下地址信息:
?? ? ? ? 目標(biāo)IP地址:131.107.0.1
?? ? ? ? 源IP地址:157.50.0.1
?? ? ? ? 目標(biāo)端口:5000
?? ? ? ? 源端口:80
當(dāng) NAT 完成地址的映射和解析后拗盒,它將此數(shù)據(jù)包發(fā)送給 Internet 客戶端,數(shù)據(jù)包包含以下地址信息:
?? ? ? ? 目標(biāo)IP地址:192.168.0.99
?? ? ? ? 源IP地址:157.60.0.1
?? ? ? ? 目標(biāo)端口:1025
?? ? ? ? 源端口:80
圖 1 展示了此例子的配置方式锥债。
圖1:NAT示例
從私用流量到公共流量的映射儲存在一個(gè) NAT 轉(zhuǎn)換表中陡蝇,包括兩種類型的條目:
1.動(dòng)態(tài)映射
在專用網(wǎng)絡(luò)用戶開始通信時(shí)產(chǎn)生。除非被與 NAT 轉(zhuǎn)換表相對應(yīng)的流量所刷新哮肚,否則動(dòng)態(tài)映射在指定的時(shí)間后將從 NAT 轉(zhuǎn)換表中刪除登夫。
2.靜態(tài)映射
通過手動(dòng)設(shè)置,使 Internet 客戶進(jìn)行的通信能夠映射到某個(gè)特定的私有網(wǎng)絡(luò)地址和端口允趟。如果想讓連接在 Internet 上的計(jì)算機(jī)能夠使用某個(gè)私有網(wǎng)絡(luò)上的服務(wù)器(如網(wǎng)站服務(wù)器)以及應(yīng)用程序(如游戲)恼策,那么靜態(tài)映射是必需的。靜態(tài)映射不會從 NAT 轉(zhuǎn)換表中刪除潮剪。
如果在 NAT 轉(zhuǎn)換表中存在某個(gè)映射涣楷,那么 NAT 只是單向地從 Internet 向私有網(wǎng)絡(luò)傳送數(shù)據(jù)。這樣抗碰,NAT 就為連接到私有網(wǎng)絡(luò)部分的計(jì)算機(jī)提供了某種程度的保護(hù)狮斗。但是,如果考慮到 Internet 的安全性弧蝇,NAT 就要配合全功能的防火墻一起使用碳褒。
NAT 的類型
以下各類 NAT 的定義:
?Cone(Cone) NAT
完全 NAT 是指在 NAT 轉(zhuǎn)換表中存儲了內(nèi)部地址和端口號與外部地址和端口號之間映射關(guān)系的一類 NAT折砸。一旦 NAT 轉(zhuǎn)換表開始工作,來自任何源地址和端口通往外部地址和端口的入站數(shù)據(jù)包都將被轉(zhuǎn)換沙峻。
?受限 NAT
受限 NAT是指在 NAT 轉(zhuǎn)換表中存儲了內(nèi)部地址和端口號與外部地址和端口號之間的映射睦授,無論是特定的源地址或者特定源地址與端口號。如果從某個(gè)未知外部地址或者端口到外部目標(biāo)地址和端口的入站數(shù)據(jù)包與 NAT 轉(zhuǎn)換表吻合专酗,那么此數(shù)據(jù)流將被自動(dòng)放棄睹逃。
?對稱 NAT
對稱 NAT 是指根據(jù)外部目標(biāo)地址(適用于出站數(shù)據(jù)包)將相同的內(nèi)部地址和端口號映射到不同的外部地址和端口號的 NAT。
Teredo 只能工作于Cone和受限 NAT祷肯,不能工作于對稱 NAT沉填。
Teredo 構(gòu)成
Teredo 結(jié)構(gòu)由以下各部分組成(如圖 2 所示):
?? ? ? ? Teredo 客戶端
?? ? ? ? Teredo 服務(wù)器
?? ? ? ? Teredo 中繼
?? ? ? ? 特定于 Teredo 主機(jī)的中繼
圖2:Teredo 結(jié)構(gòu)圖
Teredo 客戶端
Teredo 客戶端是指支持 Teredo 隧道接口的 IPv6 / IPv4 節(jié)點(diǎn),通過此隧道界面數(shù)據(jù)包可以傳送給其它的 Teredo 客戶端以及 IPv6 Internet上的其它節(jié)點(diǎn) (通過 Teredo 中繼)佑笋。 Teredo 客戶端與 Teredo 服務(wù)器建立通信獲得配置基于 Teredo 的 IPv6 地址用的地址前綴或者幫助建立與 IPv6 Internet上其它 Teredo 客戶端和服務(wù)器之間的通信翼闹。
The Advanced Networking Pack for Windows XP 包含了一個(gè) Teredo 客戶端。
Teredo 服務(wù)器
Teredo 服務(wù)器是指連接 IPv4 Internet 與 IPv6 Internet 的 IPv6 / IPv4 節(jié)點(diǎn)蒋纬,支持用來接受數(shù)據(jù)包的 Teredo 隧道接口猎荠。Teredo 服務(wù)器的常見作用是幫助 Teredo 客戶端的地址配置以及協(xié)助在 Teredo 客戶端之間或者客戶端與純 IPv6 主機(jī)之間與其他 Teredo 客戶端建立通信連接。Teredo 服務(wù)器使用 UDP 3544 端口偵聽 Teredo 通信蜀备。
有關(guān) Teredo 服務(wù)器在協(xié)助建立通信連接中的作用关摇,請參閱本文" Teredo 程序步驟"。
The Advanced Networking Pack for Windows XP 不包含 Teredo 服務(wù)器功能碾阁。 The Advanced Networking Pack for Windows XP 有助于建立通信連接输虱, Microsoft 采用 IPv4 Internet上的 Teredo 服務(wù)器。
Teredo 中繼
Teredo 中繼是指能夠在 IPv4 Internet 上的 Teredo 客戶端之間(使用 Teredo 隧道接口)以及與純 IPv6 主機(jī)之間傳送數(shù)據(jù)包的 IPv6 / IPv4 路由器脂凶。在某些情況下宪睹,Teredo 中繼和 Teredo 服務(wù)器協(xié)同工作,幫助在 Teredo 客戶端之間以及與純 IPv6 主機(jī)之間建立連接蚕钦。 Teredor 中繼使用 UDP 3544 端口偵聽 Teredo 通信亭病。
有關(guān) Teredo 中繼在 Teredo 客戶端之間以及 Teredo 客戶端與純 IPv6 主機(jī)之間的發(fā)起和開展通信方面所具有的作用,請參閱本文中"Teredo 進(jìn)程"部分 嘶居。
The Advanced Networking Pack for Windows XP 不包含 Teredo 中繼功能罪帖。 Microsoft 沒有打算使用任何 IPv4 Internet 上的 Teredo 中繼。個(gè)人 Internet 服務(wù)提供商 (ISP) 可以使用他們自己的 Teredo 中繼邮屁。在向處于 IPv6 Internet 上的 IPv6 主機(jī)發(fā)送數(shù)據(jù)包的時(shí)候整袁,采用了The Advanced Networking Pack for Windows XP 的 Teredo 客戶端將和 Teredo 中繼協(xié)同工作。 Teredo 中繼并不需要和特定于 Teredo 主機(jī)的中繼進(jìn)行通信樱报。
特定于 Teredo 主機(jī)的中繼
配置了全球地址的 Teredo 客戶端與 IPv6 主機(jī)之間的通信必須經(jīng)過 Teredo 中繼。這對于連接到 IPv6 Internet 的 IPv6 主機(jī)而言是必需的泞当。但是迹蛤,當(dāng) IPv6 主機(jī)既支持 IPv6 又支持 IPv4,并且同時(shí)連接到 IPv4 Internet 和 IPv6 Internet, 那么,Teredo 客戶端與 IPv6 主機(jī)之間的通信就會通過 IPv4 Internet 實(shí)現(xiàn)盗飒,而不必經(jīng)過 IPv6 Internet 和 Teredo 中繼嚷量。
特定于 Teredo 主機(jī)的中繼是指同時(shí)具有 IPv4 與 IPv6 Internet連接,并且無需 Teredo 中繼即可通過 IPv4 Internet 直接與 Teredo 客戶端通信的 IPv6 / IPv4 節(jié)點(diǎn)逆趣。與 IPv4 Internet 的連接可以通過使用一個(gè)公用的 IPv4 地址或者使用一個(gè)專用 IPv4 地址和邊界 NAT 來實(shí)現(xiàn)蝶溶。與 IPv6 Internet 的連接可以通過直接連接或者當(dāng) IPv6 數(shù)據(jù)包通過 IPv4 Internet 隧道時(shí)使用諸如 6to4 這類的 IPv6 轉(zhuǎn)換技術(shù)來實(shí)現(xiàn)。特定于 Teredo 主機(jī)的中繼使用 UDP 3544 端口偵聽 Teredo 通信宣渗。
采用了 The Advanced Networking Pack for Windows XP 的 Teredo 客戶端包括了特定于 Teredo 主機(jī)的中繼功能抖所。當(dāng)在安裝了 SP1 或者更高版本的補(bǔ)丁并且分配了全球地址的 Windows XP 上安裝了The Advanced Networking Pack for Windows XP 后,特定于 Teredo 主機(jī)的中繼功能便會自動(dòng)激活痕囱。這個(gè)全球地址可以通過從本地 IPv6 路由器田轧、ISATAP 路由器或者 6to4 路由器發(fā)送的路由器通告中獲得。如果運(yùn)行 Windows XP SP1 的計(jì)算機(jī)沒有全球地址鞍恢,那么 Teredo 客戶端功能便被激活傻粘。
特定于 Teredo 主機(jī)的中繼能夠使 Teredo 客戶端與 6to4 主機(jī)、帶有非 6to4 全球地址前綴的 IPv6 主機(jī)或者組織內(nèi)部的地址中使用全球前綴的 ISATAP 以及 6over4 主機(jī)進(jìn)行有效通信帮掉。但是所有的主機(jī)都必須使用 The Advanced Networking Pack for Windows XP弦悉。
Teredo 地址
Teredo 地址格式見圖 3。
圖3:Teredo 地址格式
Teredo 地址包含以下內(nèi)容:
?? ? ? ? Teredo 前綴
最前面的 32 位是 Teredo 前綴蟆炊,所有的 Teredo 地址的前綴都是相同的稽莉。互聯(lián)網(wǎng)號碼分配機(jī)構(gòu)(IANA)還沒有對該前綴進(jìn)行定義盅称,盡管該前綴 3FFE:831F::/32 已經(jīng)運(yùn)用于初始配置肩祥。
?? ? ? ? Teredo 服務(wù)器 IPv4 地址
接下來的 32 位包含 Teredo 服務(wù)器的 IPv4 的公共地址以幫助設(shè)定 Teredo 地址。更多信息請參閱本文中的 " Teredo 客戶的初始配置"缩膝。
?? ? ? ? 標(biāo)志
接下來的 16 位是為 Teredo 標(biāo)志預(yù)留的混狠。唯一定義的標(biāo)志是被稱作“Cone Flag”的高位。 只有當(dāng)接入 Internet 的 NAT 為Cone NAT時(shí)疾层,“Cone Flag”才可以使用将饺。接入 Internet 的 NAT 是否是Cone NAT 在 Teredo 客戶端的初始配置中設(shè)定。更多信息請參閱本文的 "Teredo 客戶初始設(shè)定" 章節(jié)痛黎。
?? ? ? ? 隱藏外部端口
接下來的 16 位儲存的是與該 Teredo 客戶端所有 Teredo 通信相對應(yīng)的外部 UDP 端口的隱藏模式予弧。當(dāng) Teredo 客戶端向 Teredo 服務(wù)器發(fā)送初始數(shù)據(jù)包時(shí),NAT 會將源數(shù)據(jù)包的 UDP 端口映射到一個(gè)不同的外部 UDP 端口湖饱。Teredo 客戶保留了這個(gè)端口映射以便使其留在 NAT 轉(zhuǎn)換表中掖蛤。因此,主機(jī)所有的 Teredo 通信均使用同一外部映射的 UDP 端口井厌。UDP 外部端口是由 Teredo 服務(wù)器根據(jù)從 UDP 源端口導(dǎo)入的原始 Teredo 客戶數(shù)據(jù)包決定并發(fā)回 Teredo 客戶的蚓庭。
外部端口的隱藏是將外部端口與 0xFFFF 進(jìn)行邏輯異或運(yùn)算致讥。例如,外部端口的隱藏文件 5000 的16位進(jìn)制格式是 EC77 (5000 = 0x1388, 0x1388 XOR 0xFFFF = 0xEC77)器赞。隱藏這個(gè)外部端口可以預(yù)防 NAT 在數(shù)據(jù)包的有效載荷內(nèi)轉(zhuǎn)發(fā)時(shí)對其進(jìn)行轉(zhuǎn)換垢袱。
?? ? ? ? 隱藏外部地址
最后32 位儲存與 Teredo 客戶端所有 Teredo 通信相對應(yīng)的外部 IPv4 地址的模糊形式。就像外部端口一樣港柜,當(dāng) Teredo 客戶端向其服務(wù)器發(fā)送初始數(shù)據(jù)包后请契,數(shù)據(jù)包的源 IP 地址被 NAT 映射到一個(gè)不同的外部公用地址。 Teredo 客戶保留了這個(gè)地址映射以便使其留在 NAT 的轉(zhuǎn)換表夏醉。因此爽锥,主機(jī)上所有的 Teredo 通信均使用同一外部的映射公用 IPv4 地址。外部 IPv4 地址是由 Teredo 服務(wù)器根據(jù) Teredo 客戶發(fā)送的原始數(shù)據(jù)包的源 IPv4 地址決定的授舟,并且發(fā)回給 Teredo 客戶救恨。
外部地址通過與 0xFFFFFFFF 進(jìn)行異或運(yùn)算后被隱藏。例如释树,公共 IPv4 地址 131.107.0.1 隱藏后其十六進(jìn)制的冒號格式為 7C94:FFFE (131.107.0.1 = 0x836B0001, 0x836B0001 XOR 0xFFFFFFFF = 0x7C94FFFE)肠槽。隱藏外部地址避免了 NAT 在數(shù)據(jù)包的有效載荷內(nèi)轉(zhuǎn)發(fā)時(shí)將其轉(zhuǎn)換。
圖 4 是 2 個(gè) Teredo 客戶端與他們的地址的示例奢啥。
圖4:Teredo 地址示例
對于 Teredo 客戶端 A秸仙,其 Teredo 地址由以下項(xiàng)目組成:
?? ? ? ? Teredo 通信的外部地址和端口是 157.60.0.1,UDP 端口是 4096
?? ? ? ? Teredo 服務(wù)器的公用 IPv4 a 地址為 206.73.118.1
?? ? ? ? 位于一個(gè) Cone NAT 后面
所以, 使用 Teredo 地址前綴格式:ServerAddr:Flags:ObscExtPort:ObscExtAddr, Teredo 客戶端 Teredo 地址為 3FFE:831F:CE49:7601:0:DFFF:7C94:FFFE桩盲。這基于以下幾點(diǎn):
?? ? ? ? CE49:7601 是 206.73.118.1 的 16 進(jìn)制冒號形式
?? ? ? ? 8000 是完全標(biāo)記設(shè)為 1 時(shí)標(biāo)記域的值寂纪,表示 Teredo 客戶端 A 的 NAT 是一個(gè)Cone NAT 。
?? ? ? ? EFFF 是 4096 (0x1000) 的隱藏形式
?? ? ? ? C2C3:FFFE 是 157.60.0.1的隱藏形式
對于 Teredo 客戶端 B,其 Teredo 地址由以下項(xiàng)目組成:
?? ? ? ? Teredo 通信的外部地址和端口是131.107.0.1赌结,UDP端口是8192
?? ? ? ? Teredo 服務(wù)器位于公用 IPv4 a 地址 206.73.118.1上
?? ? ? ? 位于一個(gè)受限 NAT 的后面
所以捞蛋,使用 Teredo 地址前綴格式:ServerAddr:Flags:ObscExtPort:ObscExtAddr, Teredo 客戶端 Teredo 地址為 3FFE:831F:CE49:7601:0:DFFF:7C94:FFFE。這基于以下幾點(diǎn):
?? ? ? ? CE49:7601 是 206.73.118.1 的 16 進(jìn)制冒號形式
?? ? ? ? 0 是完全標(biāo)記設(shè)為 0 時(shí)標(biāo)記域的值柬姚,表示 Teredo 客戶端 B 的 NAT 是一個(gè)受限 NAT拟杉。
?? ? ? ? DFFF 是 8192 (0x2000) 的隱藏形式
?? ? ? ? 7C94:FFFE 是 131.107.0.1 的隱藏形式
Teredo 地址只是分配給 Teredo 客戶端。Teredo 服務(wù)器量承、中繼搬设、和特定于主機(jī)的中繼并不分配 Teredo 地址。
Teredo 數(shù)據(jù)包格式
本章節(jié)討論以下問題:
?? ? ? ? Teredo 數(shù)據(jù)包格式
?? ? ? ? Teredo 氣泡數(shù)據(jù)包
?? ? ? ? Teredo 指示符
Teredo 數(shù)據(jù)包格式
Teredo 數(shù)據(jù)包格式如圖5所示撕捍。
圖5: Teredo 數(shù)據(jù)包格式
Teredo 數(shù)據(jù)包由以下部分構(gòu)成:
?? ? ? ? IPv4 標(biāo)頭包含與自動(dòng)隧道終端相對應(yīng)的源 IPv4 地址和目標(biāo) IPv4 地址并且可以被NAT轉(zhuǎn)換拿穴。
?? ? ? ? UDP 標(biāo)頭包含 Teredo 數(shù)據(jù)通信的源端口和目標(biāo)端口,可以被 NAT 解析忧风。
?? ? ? ? IPv6 標(biāo)頭包含源 IPv6 地址和目標(biāo) IPv6 地址默色,其中至少有一個(gè)是 Teredo 地址。
?? ? ? ? IPv6 載荷包含零個(gè)或者更多的 IPv6 擴(kuò)展標(biāo)頭以及壓縮的 IPv6 數(shù)據(jù)包的上層協(xié)議數(shù)據(jù)單位(PDU)狮腿。
Teredo 氣泡數(shù)據(jù)包
Teredo 氣泡數(shù)據(jù)包為建立或維持一個(gè) NAT 映射而發(fā)送腿宰,由 IPv6 標(biāo)頭組成弟蚀,并且不包含 IPv6 有效載荷。
圖6為 Teredo 氣泡數(shù)據(jù)包酗失。
圖6: Teredo 氣泡數(shù)據(jù)包
在 IPv6 標(biāo)頭中,下一個(gè)標(biāo)頭的域設(shè)置為 59昧绣,表示沒有有效載荷规肴。
Teredo 指示符
Teredo 使用兩種不同的指示符,它們是用來表示驗(yàn)證或者地址和端口信息的標(biāo)頭夜畴。
驗(yàn)證指示符
驗(yàn)證指示符用來保證在 Teredo 客戶端和 Teredo 服務(wù)器之間進(jìn)行路由器請求和路由器通告信息的可靠性拖刃。 Teredo 客戶端和 Teredo 服務(wù)器都使用在鑒定指示符中產(chǎn)生驗(yàn)證信息的密鑰進(jìn)行加密。驗(yàn)證指示符處于 UDP 標(biāo)頭與 IPv6 數(shù)據(jù)包之間贪绘。如果在路由器通告信息中同時(shí)出現(xiàn)原始和驗(yàn)證指示符兑牡,那么驗(yàn)證指示符將被放在原始指示信息前面。
驗(yàn)證指示符的結(jié)構(gòu)如圖 7 所示税灌。
圖7:驗(yàn)證信息結(jié)構(gòu)圖
驗(yàn)證數(shù)據(jù)包含以下各域:
?? ? ? ? Indicator Type(指示符的類型)
這個(gè)長度為兩個(gè)字節(jié)的值指定了指示符的類型均函。對于驗(yàn)證指示符,其值為1菱涤。 Teredo 客戶端和 Teredo 服務(wù)器 能夠通過 IPv6 數(shù)據(jù)包的前兩個(gè)字節(jié)區(qū)分出驗(yàn)證信息苞也,因?yàn)?IPv6 數(shù)據(jù)包的前四個(gè)高位字節(jié)設(shè)定為 0110 (6), 與 IPv6 標(biāo)頭的轉(zhuǎn)換域相對應(yīng)。
?? ? ? ? Client ID Length(客戶端 ID 長度)
這個(gè)長度為 1 個(gè)字節(jié)的值指定了“客戶端標(biāo)識”域的長度粘秆。
?? ? ? ? Authentication Data Length(驗(yàn)證數(shù)據(jù)的長度)
這個(gè)長度為 1 字節(jié)的域指定了“驗(yàn)證值”域的長度如迟。
?? ? ? ? Client Identification(客戶端標(biāo)識)
這個(gè)長度不定的域包含一個(gè) Teredo 客戶端的標(biāo)識字符串。
?? ? ? ? Authentication Value(驗(yàn)證值)
這個(gè)長度不定的域包含使用共享密鑰計(jì)算的此數(shù)據(jù)包的驗(yàn)證值攻走。有關(guān)如何計(jì)算驗(yàn)證值的信息請參閱 Teredo Internet 草案的 5.2.2 章節(jié)殷勘。
?? ? ? ? Nonce(現(xiàn)在)
這個(gè)長度為 8 字節(jié)的域包含了一個(gè)任意數(shù)字,用來證明數(shù)據(jù)交流還在進(jìn)行并且防止數(shù)據(jù)包重復(fù)傳送攻擊昔搂。
?? ? ? ? Confirmation(確認(rèn))
這個(gè)長度為 1 字節(jié)的域包含一個(gè)用來表明客戶端是否在路由器的請求信息中使用了正確的密鑰值玲销,這個(gè)確認(rèn)域設(shè)置為0。在路由器通告信息中巩趁,此確認(rèn)域設(shè)置為 0 或者密鑰錯(cuò)誤時(shí)為一個(gè)非 0 值痒玩。
雖然在路由器通告信息和路由器請求信息中也包含了驗(yàn)證指示符,但是在 采用了 The Advanced Networking Pack for Windows XP 的 Teredo 客戶端中并不使用客戶標(biāo)識符或者驗(yàn)證值议慰。當(dāng)在沒有客戶端標(biāo)識符或者驗(yàn)證值的時(shí)候蠢古,驗(yàn)證指示符的格式如圖 8 所示。
圖8:沒有客戶端標(biāo)識符或者驗(yàn)證值時(shí)别凹,驗(yàn)證指示符的格式
原始指示符
原始指示符用來表示 Teredo 客戶端草讶、 Teredo 中繼或者特定于 Teredo 主機(jī)的中繼的 IPv4 地址和 UDP 端口。它的用途的一個(gè)例子就是炉菲,當(dāng) Teredo 服務(wù)器回應(yīng) Teredo 客戶端的路由器請求信息而發(fā)出路由器通告信息堕战。在這種情況下坤溃,原始指示數(shù)據(jù)包含了對應(yīng)于 Teredo 客戶端 Teredo 通信流的已經(jīng)映射的 IPv4 地址和 UDP 端口號。有關(guān)更多信息嘱丢,請參閱本文"Teredo 客戶端初始配置"
如同驗(yàn)證指示符薪介,原始指示符放在 UDP 標(biāo)頭與 IPv6 標(biāo)頭之間。它的結(jié)構(gòu)如圖 9 所示越驻。
圖9:原始指示符的結(jié)構(gòu)
原始指示數(shù)據(jù)包含以下域:
?? ? ? ? 指示符類型
這個(gè)長度為 2 字節(jié)的域說明了指示符的類型汁政。對于原始指示符,其值為 0缀旁。 Teredo 客戶端可以根據(jù) IPv6 數(shù)據(jù)包的前兩個(gè)字節(jié)區(qū)分出原始指示符记劈,因?yàn)?IPv6 數(shù)據(jù)包的前兩個(gè)高位字節(jié)設(shè)置為0110 (6), 與 IPv6 標(biāo)頭的轉(zhuǎn)換域相對應(yīng)。
?? ? ? ? 隱藏原始端口號
這個(gè)兩個(gè)字節(jié)的與包含一個(gè)與 Teredo 客戶端并巍、 Teredo 中繼或者 特定于 Teredo 主機(jī)的中繼 Teredo 通信相對應(yīng)的隱藏外部端口(同 0xFFFF 異或)目木。 模糊原始端口的值與 0xFFFF 異或函匕。
?? ? ? ? 隱藏原始地址
這個(gè)長度為 4 字節(jié)的域包含與 Teredo 客戶端溢十、 Teredo 中繼或者特定于 Teredo 主機(jī)的中繼 Teredo 通信相對應(yīng)的隱藏外部 IPv4 地址 (同 0xFFFFFFFF XORed) 屯阀。隱藏原始地址域與 0xFFFFFFFF 異或判没。
圖 10 表示了實(shí)現(xiàn)了 The Advanced Networking Pack for Windows XP 的 Teredo 客戶端使用的三種包含原始與驗(yàn)證指示符的不同數(shù)據(jù)包類型郊愧。
Teredo 路由
圖 11 顯示了 Teredo 數(shù)據(jù)包在 Teredo 主機(jī)穗慕, 特定于 Teredo 主機(jī)的中繼和 IPv6 主機(jī)之間的傳輸放典。
圖 11:Teredo 路由
在 IPv6 網(wǎng)上辽幌,前綴 ::/32 路由被用于將使用 Teredo 前綴定義的數(shù)據(jù)包發(fā)送到最近的 Teredo 中繼上忠蝗。 Teredo 服務(wù)器现横, Teredo 中繼和 特定于 Teredo 主機(jī)的中繼有一個(gè)前綴::/32 路由,此路由包含了所有用該前綴作為在鏈的地址阁最,也包含用作 Teredo 隧道出口的地址戒祠。 Teredo 隧道接口是一個(gè)邏輯接口,它將自動(dòng)將 IPv4 地址與 UDP 的封裝成發(fā)送的數(shù)據(jù)包速种。 Teredo 服務(wù)器姜盈, Teredo 中繼和 特定于 Teredo 主機(jī)的中繼同時(shí)還有一個(gè)默認(rèn)路由(::/0)指向 IPv6 網(wǎng)絡(luò)。特別地配阵,這個(gè)默認(rèn)路由包含一個(gè)在 IPv6 網(wǎng)絡(luò)上用一個(gè)物理接口與 IPv6 網(wǎng)相連的臨近路由器的下個(gè)中繼段的 IPv6 地址馏颂。
Teredo 客戶端路由
Advanced Networking Pack for Windows XP 中的 Terodo 客戶端有一個(gè)默認(rèn)路由,它將使用該前綴的所有地址都視作 on-link 地址棋傍,也包含用 Teredo 隧道接口的地址救拉。當(dāng)這個(gè)默認(rèn)地址使用時(shí),下一中繼段的地址被置于 IPv6 數(shù)據(jù)包中的目標(biāo)地址中瘫拣,同時(shí)下一中繼段接口被置于 Teredo 隧道接口中亿絮。
當(dāng) Teredo 隧道接口發(fā)送數(shù)據(jù)包時(shí),分為下面三種情況:
1.目標(biāo)是位于同一個(gè) IPv4 Internet 絡(luò)上的 Teredo 客戶端。
2.目標(biāo)是位于另一個(gè)站點(diǎn)上的 Teredo 客戶端派昧。
3.目標(biāo)是 IPv6 Internet 上的一個(gè)節(jié)點(diǎn)黔姜。
On-link Teredo 目標(biāo)
對于發(fā)往相同站點(diǎn)和鏈接中其它 Teredo 主機(jī)的數(shù)據(jù)包, Teredo 隧道接口通過交換氣泡數(shù)據(jù)包來代替 Neighbor Discovery 的地址解析進(jìn)程蒂萎。交換氣泡數(shù)據(jù)包保證了每一個(gè) Teredo 客戶端之間能夠直接發(fā)送數(shù)據(jù)包秆吵。想要了解更多信息,請查閱本文 "相同鏈接上的 Teredo 主機(jī)之間的通信初始化" 章節(jié)五慈。
Teredo 檢查多播氣泡數(shù)據(jù)的緩存帮毁,決定目標(biāo) Teredo 地址是否與同一連接上的 Teredo 客戶端通信。每一個(gè) Teredo 客戶端都在 IPv4 鏈路上發(fā)送多點(diǎn)傳輸氣泡數(shù)據(jù)包給 Teredo 服務(wù)器以顯示它在鏈路上的存在豺撑。每個(gè) Teredo 客戶端接受到其它 Teredo 客戶端的氣泡數(shù)據(jù)包后,與自己的 Teredo 和 IPv4 地址一起發(fā)送給多播氣泡緩存黔牵。因此聪轿,如果目標(biāo) Teredo 地址在多點(diǎn)傳輸氣泡緩存中,那么目標(biāo)就是一個(gè) on-link 鄰居猾浦。
站點(diǎn)間的 Teredo 目標(biāo)
對于發(fā)往不同節(jié)點(diǎn)上的另一臺 Teredo 主機(jī)的數(shù)據(jù)包陆错,如果兩個(gè) Teredo 主機(jī)都跨越 受限 NAT,Teredo 隧道接口使用氣泡數(shù)據(jù)包替代“鄰居發(fā)現(xiàn)”(Neighbor Discovery)地址解析過程金赦。當(dāng)兩臺 Teredo 主機(jī)都穿越受限網(wǎng)絡(luò)地址轉(zhuǎn)換時(shí)音瓷, Teredo 隧道出口用氣泡數(shù)據(jù)包的交換代替發(fā)現(xiàn) Neighbor Discovery 協(xié)議的地址解析過程。氣泡數(shù)據(jù)包的交換在雙方的 NAT 上都會生成特定地址和端口的映射夹抗。這樣绳慎,兩個(gè)不同點(diǎn)的 Teredo 客戶端就可以直接發(fā)送數(shù)據(jù)包給對方。如果希望進(jìn)一步了解相關(guān)信息漠烧,請參閱本文的"在不同站點(diǎn)的 Teredo 客戶端中初始化通信"部分杏愤。
IPv6 網(wǎng)絡(luò)目標(biāo)
對于 IPv6 Internet 的數(shù)據(jù)包, Teredo 隧道接口用 ICMPv6 Echo Request 和 Echo Reply消息來代替 Neighbor Discovery 協(xié)議的地址解析進(jìn)程已脓。當(dāng)一個(gè) ICMPv6 Echo Request 消息發(fā)送給目標(biāo)后珊楼,包含有在 IPv6 網(wǎng)上離 IPv6 主機(jī)最近的 Teredo 中繼的 IPv4 地址的 ICMP Echo Reply 消息就回復(fù)。想進(jìn)一步了解度液,請查看本文的"從 Teredo 客戶端到 特定于 Teredo 主機(jī)的中繼的初始化通信" 和 "從 Teredo 客戶端到 IPv6 主機(jī)的初始化通信"章節(jié)厕宗。
Teredo 過程
此部分提供了 Teredo 有關(guān)數(shù)據(jù)包交換的細(xì)節(jié),具體如下:
?? ? ? ? Teredo 客戶端的初始化設(shè)置
?? ? ? ? 維護(hù) NAT 映射
?? ? ? ? 相同鏈接 Teredo 客戶端之間的初始化通信
?? ? ? ? 不同站點(diǎn) Teredo 客戶端之間的初始化通信
?? ? ? ? 從 Teredo 客戶端到 特定于 Teredo 主機(jī)的中繼的初始化通信
?? ? ? ? 從 特定于 Teredo 主機(jī)的中繼到 Teredo 客戶端的初始化通信
?? ? ? ? 從 Teredo 客戶端到 IPv6 主機(jī)的初始化通信
?? ? ? ? 從 IPv6 主機(jī)到 Teredo 客戶端的初始化通信
所有這些過程都是由 Advanced Networking Pack for Windows XP 中的 Teredo 客戶端支持的堕担;并且是自動(dòng)已慢、無需用戶干涉的。唯一的例外是:Teredo 服務(wù)器的 IPv4 地址是可選配置霹购。
Teredo 客戶端的初始化設(shè)置
Teredo 客戶端的初始化設(shè)置通過發(fā)送一系列路由請求消息給 Teredo 服務(wù)器確定一個(gè) Teredo 地址蛇受,并了解客戶端是通過一個(gè)Cone,受限還是在對稱的 NAT。圖12顯示了 Teredo 客戶端的初始化進(jìn)程兢仰。
圖12: Teredo 客戶端的初始化設(shè)置
Teredo 客戶端的初始化設(shè)置包括以下過程:
1.路由服務(wù)器請求信息 Router Solicitation (RS) 由 Teredo 客戶端發(fā)給首選的 Teredo 服務(wù)器(Teredo 服務(wù)器1)乍丈。 Teredo 客戶端從設(shè)置過“Cone”標(biāo)志的當(dāng)?shù)劓溄拥刂钒l(fā)出 RS。
2.Teredo 服務(wù)器 1 回應(yīng)一個(gè)路由器登記信息 Router Advertisement (RA)把将。由于 RS 已經(jīng)設(shè)置了“Cone”標(biāo)記轻专, Teredo 服務(wù)器1會從一個(gè)動(dòng)態(tài)的 IPv4 地址發(fā)送出 RA。Teredo 客戶端收到 RA 后會得知那是一個(gè)“Cone”的網(wǎng)絡(luò)地址轉(zhuǎn)換察蹲。
3.如果沒有收到 RA请垛, Teredo 客戶端就會從當(dāng)?shù)劓溄拥刂钒l(fā)送另一個(gè)沒有設(shè)置“Cone”標(biāo)志的 RS。
4.Teredo 服務(wù)器 1 回應(yīng)一個(gè) RA洽议。因?yàn)?RA 沒有設(shè)置“Cone”標(biāo)志宗收,所以服務(wù)器 1 會發(fā)送一個(gè)與 RS 目標(biāo)地址通信的 IPv4 原地址。如果 Teredo 客戶端收到 RA亚兄,就得出那是受限的地址轉(zhuǎn)換混稽。
5.為了確保 Teredo 客戶端不是一個(gè)對稱的網(wǎng)絡(luò)地址轉(zhuǎn)換,它就會發(fā)出另一個(gè) RA 到 Teredo 服務(wù)器( Teredo 服務(wù)器 2)审胚。
6.Teredo 伺服器 2 回應(yīng)一個(gè) RA匈勋。客戶端對兩個(gè) Teredo 服務(wù)器的 RA 來源指示符中的映射地址和 UDP 端口進(jìn)行比較膳叨。如果他們不同洽洁,那么NAT就是在映射相同的內(nèi)部地址和端口號到不同的外部地址和端口號。 Teredo 客戶端確定這個(gè) NAT 是一個(gè)對稱的 NAT菲嘴,不能用 Teredo 進(jìn)行通信饿自。
由于收到 RA(先前進(jìn)程的第二步或第四步), Teredo 客戶端以如下方式構(gòu)造地址:
?? ? ? ? 首先 64 位包含收到的 RA 前綴信息龄坪。這 64 位由 Teredo 服務(wù)器登記的前置碼璃俗,包含 Teredo 前綴(32 bits)和 Teredo 服務(wù)器的 IPv4 的地址碼(32位)。
?? ? ? ? 接下來的 16 位是 0x8000 (Cone NAT ) 或是 0x0 (受限 NAT)
?? ? ? ? 再接下來的 16 位對從 RA 中 Origin (原始)指示符來的外部 UDP 端口號進(jìn)行賦值悉默。
?? ? ? ? 最后 32 位放置從 RA 中 Origin 指示符來的外部 IP 地址城豁。
實(shí)現(xiàn)了 The Advanced Networking Pack for Windows XP 的 Teredo 客戶端會自動(dòng)嘗試通過解析 name Teredo .IPv6.Microsoft.com 來測定 Teredo 服務(wù)器的 IPv4 地址。相應(yīng)地抄课,你可以用netsh interface IPv6 set Teredo servername= 命令來設(shè)置 Teredo 服務(wù)器的 IPv4 地址唱星。
維持 NAT 映射
圖13 顯示了 Teredo 客戶端是如何維持 Teredo 通信的 NAT 映射的。
圖 13:維持 NAT 映射
Teredo 客戶端會定期地(一般默認(rèn)每隔 30 秒鐘)發(fā)送單一的氣泡數(shù)據(jù)包到 Teredo 服務(wù)器跟磨。 Teredo 服務(wù)器會在不回復(fù)的情況下丟棄該數(shù)據(jù)包间聊。這個(gè)周期性的數(shù)據(jù)包會重新刷新 NAT 的轉(zhuǎn)換表。否則抵拘,這個(gè)映射就無效并被刪除哎榴。如果映射不存在,對于Cone NAT 而言,所有接收的數(shù)據(jù)流尚蝌;對于受限 NAT 而言迎变,所有從 Teredo 服務(wù)器到 Teredo 主機(jī)的數(shù)據(jù)流會地被 NAT 悄悄刪除。
同一鏈接上的 Teredo 客戶端之間的通信初始化
圖 14 顯示了同一鏈接上的 Teredo 客戶端之間的通信初始化飘言。
圖 14:同一鏈接上的 Teredo 客戶端之間的通信初始化
在同一個(gè)鏈接中衣形,要從客戶端 A 發(fā)送一個(gè)通信初始化數(shù)據(jù)包到客戶端 B,按照下面的過程:
1.Teredo 客戶端發(fā)送一個(gè)氣泡數(shù)據(jù)包到 Teredo IPv4 Discovery Address姿鸿,一個(gè)租用的多播地址(其真實(shí)地址由 IANA 決定)谆吴。在氣泡數(shù)據(jù)包的 IPv6 頭部,目標(biāo)地址被置于 Teredo 客戶端 B 的 Teredo 地址中苛预。
2.根據(jù)從收到 Teredo 客戶端 A 的發(fā)出多播氣泡數(shù)據(jù)包的認(rèn)證信息句狼, Teredo 客戶端 B 指定 Teredo 客戶端 A 和 UDP 端口 on-link 的 IPv4 地址用于 Teredo 通信,并且用于發(fā)送一個(gè)多播的氣泡數(shù)據(jù)包給 Teredo 客戶端A作為回應(yīng)热某。根據(jù)從收到 Teredo 客戶端 B 的發(fā)出多播氣泡數(shù)據(jù)包的認(rèn)證信息腻菇, Teredo 客戶端 A 指定 Teredo 客戶端 B 和 UDP 端口 on-link 的 IPv4 地址用于 Teredo 通信。
3.Teredo 客戶端 A 發(fā)送一個(gè)通信初始化數(shù)據(jù)包給 Teredo 客戶端 B苫拍。
不同站點(diǎn)下 Teredo 客戶端之間的通信初始化
不同站點(diǎn)下 Teredo 客戶端之間的通信初始化取決于節(jié)點(diǎn)之間是用Cone NAT 還是受限NAT。
Cone NAT
圖15 表明當(dāng)節(jié)點(diǎn)都位于Cone NAT 之后時(shí)旺隙, Teredo 客戶端之間的通信初始化绒极。
圖15:節(jié)點(diǎn)都位于 Cone NAT 之后時(shí), Teredo 客戶端之間的通信初始化蔬捷。
當(dāng) Teredo 客戶端都在 Cone NAT 之后時(shí)垄提,Cone NAT 允許其轉(zhuǎn)換表?xiàng)l目開放任何源 IP 地址和 UDP 端口讓 Teredo 客戶端進(jìn)行 Teredo 通信。因此周拐, Teredo 客戶端 A 可以在無需運(yùn)用氣泡數(shù)據(jù)包建立額外的 NAT 轉(zhuǎn)換表?xiàng)l目的情況下向 Teredo 客戶端 B 直接發(fā)送數(shù)據(jù)铡俐。
受限 NAT
圖16 表明了當(dāng)不同站點(diǎn)使用受限 NAT 時(shí), Teredo 客戶端之間的通信初始化妥粟。
圖16:不同站點(diǎn)使用受限 NAT 時(shí)审丘, Teredo 客戶端之間的通信初始化
從 Teredo 客戶端 A 發(fā)送通信初始化數(shù)據(jù)包到 Teredo 客戶端 B,過程如下:
1.Teredo 客戶端 A 直接發(fā)送氣泡數(shù)據(jù)包給 Teredo 客戶端 B勾给。因?yàn)?Teredo 客戶端 B 是位于受限 NAT 之后滩报,從任意的 IPv4 源地址和 UDP 端口號來的 Teredo 通信是不允許的,除非那是一個(gè)特定源的 NAT 轉(zhuǎn)換表?xiàng)l目播急。假如沒有脓钾,受限 NAT 丟棄此數(shù)據(jù)包。但是桩警,當(dāng)受限 NAT 為 Teredo 客戶端 A 發(fā)送氣泡數(shù)據(jù)包時(shí)可训,它會建立一個(gè)特定源的 NAT 的轉(zhuǎn)換表,使得接下來的 Teredo 客戶端 B 的數(shù)據(jù)包被發(fā)送至 Teredo 客戶端 A。
2.Teredo 客戶端 A 通過 Teredo 服務(wù)器 2( Teredo 客戶端B的 Teredo 服務(wù)器)發(fā)送數(shù)據(jù)包給 Teredo 客戶端 B握截。在氣泡數(shù)據(jù)包中的 IPv4 目標(biāo)地址設(shè)置指向 Teredo 服務(wù)器 2 的 IPv4 地址飞崖,該地址由客戶端 A 從客戶端 B 的 Teredo 地址的第 3 和第 4 塊識別。
3.Teredo 服務(wù)器處理這個(gè)數(shù)據(jù)包川蒙,為 Teredo 客戶端指定 IPv6 目標(biāo)地址蚜厉,然后將氣泡數(shù)據(jù)包轉(zhuǎn)發(fā)到 Teredo 客戶端 B。受限 NAT 為 Teredo 客戶端 B 發(fā)送數(shù)據(jù)包畜眨,是因?yàn)榇嬖谝粋€(gè)特定源為從 Teredo 服務(wù)器 2 進(jìn)行 Teredo 通信進(jìn)行映射昼牛。
4.Teredo 客戶端 B 用自己直接向 Teredo 客戶端 A 發(fā)送的數(shù)據(jù)包,對從 Teredo 客戶端 A 收到的數(shù)據(jù)包進(jìn)行回應(yīng)康聂。因?yàn)?Teredo 客戶端 A 的受限 NAT 有一個(gè)特定源的映射贰健,為從 Teredo 客戶端 B 來的 Teredo 通信服務(wù)的(就象過程1那樣,通過從 Teredo 客戶端 A 發(fā)送初始數(shù)據(jù)包來建立)恬汁,這個(gè)數(shù)據(jù)包被發(fā)送到 Teredo 客戶端 A伶椿。
5.根據(jù)來自 Teredo 客戶端 B 的氣泡數(shù)據(jù)包的認(rèn)證信息, Teredo 客戶端 A了解到特定于源特 NAT 映射存在于兩個(gè)用戶的 NAT 上氓侧。 Teredo 客戶端 A 直接發(fā)送一個(gè)初始數(shù)據(jù)包到 Teredo 客戶端 B脊另。
Teredo 客戶端到 特定于 Teredo 主機(jī)的中繼的通信初始化
從 Teredo 客戶端發(fā)送初始數(shù)據(jù)包到一個(gè) 特定于 Teredo 主機(jī)的中繼,依賴于 Teredo 客戶端是一個(gè)Cone NAT 還是一個(gè)受限NAT约巷。
Cone NAT
圖17表明當(dāng) Teredo 客戶端在 Cone NAT 之后從 Teredo 客戶端到主機(jī)特定中繼的通信初始化偎痛。
圖17: Teredo 客戶端在 Cone NAT 之后從 Teredo 客戶端到主機(jī)特定中繼的通信初始化
從 Teredo 客戶端發(fā)送通信初始化數(shù)據(jù)包到特定于 Teredo 主機(jī)的中繼,進(jìn)程如下:
1.Teredo 客戶端 A 發(fā)送一個(gè)經(jīng)過其 Teredo 服務(wù)器的 ICMPv6 Echo Request 消息
2.Teredo 服務(wù)器接收到ICMPv6的ICMPv6 Echo Request 消息独郎,然后在 IPv6 網(wǎng)絡(luò)上發(fā)送到 特定于 Teredo 主機(jī)的中繼或者在 IPv4 Internet 上把它封裝在隧道里踩麦。
3.特定于 Teredo 主機(jī)的中繼用一個(gè)被送到 Teredo 客戶端 A 的 Teredo 地址進(jìn)行ICMPv6 Echo Reply響應(yīng)。
4.在特定于 Teredo 主機(jī)的中繼收到的回送答復(fù)后氓癌,Teredo 客戶端就會發(fā)送一個(gè)通信初始化的數(shù)據(jù)包到 特定于 Teredo 主機(jī)的中繼的 ICMPv4 地址和 UDP 端口上谓谦。
所有后續(xù)的往來于 Teredo 客戶端和特定于 Teredo 主機(jī)中繼的數(shù)據(jù)包將直接發(fā)送。
受限 NAT
圖18 顯示了當(dāng) Teredo 客戶端位于受限 NAT 之后贪婉,從 Teredo 客戶端發(fā)送通信初始化數(shù)據(jù)到特定于 Teredo 主機(jī)的中繼的過程反粥。
圖18: Teredo 客戶端位于受限 NAT 之后,從 Teredo 客戶端發(fā)送通信初始化數(shù)據(jù)到 特定于 Teredo 主機(jī)的中繼
從 Teredo 客戶端發(fā)送通信初始化數(shù)據(jù)到特定于 Teredo 主機(jī)的中繼疲迂,進(jìn)程如下:
1.Teredo 客戶端通過自己的 Teredo 服務(wù)器發(fā)送一個(gè) ICMPv6 Echo Request 消息到特定于 Teredo 主機(jī)的中繼星压。
2.Teredo 服務(wù)器收到 ICMPv6 Echo Request 消息后,在 IPv6 網(wǎng)上發(fā)送給 特定于 Teredo 主機(jī)的中繼或者封裝到 IPv4 Internet 絡(luò)的隧道上鬼譬。
3.特定于 Teredo 主機(jī)的中繼確定 Teredo 客戶端位于受限 NAT之后 娜膘。如果 Teredo 中繼發(fā)送 ICMPv6 Echo Request 消息給 Teredo 客戶端,則 NAT 丟棄此消息优质,因?yàn)闆]有從 特定于 Teredo 主機(jī)的中繼來的 Teredo 通信的源特定的映射竣贪。因此军洼, 特定于 Teredo 主機(jī)的中繼經(jīng)由 Teredo 服務(wù)器在 IPv4 Internet 絡(luò)上發(fā)送一個(gè)氣泡數(shù)據(jù)包到 Teredo 客戶端。
4.Teredo 服務(wù)器從特定于 Teredo 主機(jī)的中繼的氣泡數(shù)據(jù)包演怎。 Teredo 服務(wù)器發(fā)送氣泡數(shù)據(jù)包到 Teredo 客戶端匕争,同時(shí),Origin 指示符包含了這個(gè)特定于 Teredo 主機(jī)的中繼的 IPv4 地址和 UDP 端口號爷耀。因?yàn)橐粋€(gè)從 Teredo 服務(wù)器的 Teredo 通信的映射存在于 NAT甘桑,一個(gè)氣泡數(shù)據(jù)包被發(fā)送到 Teredo 客戶端。
5.Teredo 客戶端確定從收到氣泡數(shù)據(jù)包的來源指示符上確定特定于 Teredo 主機(jī)的中繼的 IPv4 地址和 UDP 端口歹叮。要建立一個(gè)從 特定于 Teredo 主機(jī)的中繼的 Teredo 的通信的映射跑杭, Teredo 客戶端還要發(fā)送一個(gè)氣泡數(shù)據(jù)包到 特定于 Teredo 主機(jī)的中繼。
6.根據(jù)來自 Teredo 客戶端的氣泡數(shù)據(jù)包的收條——與一個(gè)進(jìn)入隊(duì)列等待轉(zhuǎn)發(fā)(ICMPv6 Echo Reply 消息)的數(shù)據(jù)包對應(yīng)咆耿,特定于 Teredo 主機(jī)的中繼確定一個(gè)特定于來源的 NAT 映射現(xiàn)在存在于 Teredo 客戶端的受限 NAT 之中德谅。特定于 Teredo 主機(jī)的中繼將 ICMPv6 Echo Reply 消息發(fā)送到 Teredo 客戶端。
7.一個(gè)通信初始化的數(shù)據(jù)包從 Teredo 客戶端發(fā)送到特定于 Teredo 主機(jī)的中繼的 IPv4 地址和 UDP 端口上萨螺。
所有 Teredo 客戶端與 特定于 Teredo 主機(jī)的中繼并發(fā)的數(shù)據(jù)包都直接被發(fā)送窄做。
特定于 Teredo 主機(jī)的中繼到 Teredo 客戶端的通信初始化
特定于 Teredo 主機(jī)的中繼到 Teredo 客戶端的通信初始化依賴于 Teredo 客戶端是Cone NAT 之后的還是受限 NAT。
Cone NAT
圖19顯示了當(dāng) Teredo 客戶端位于Cone NAT 之后時(shí)慰技,特定于 Teredo 主機(jī)的中繼到 Teredo 客戶端的通信初始化椭盏。
圖19:Teredo 客戶端位于Cone NAT 之后時(shí),特定于 Teredo 主機(jī)的中繼到 Teredo 客戶端的通信初始化
要從 特定于 Teredo 主機(jī)的中繼發(fā)送到 Teredo 客戶端的一個(gè)通信初始化數(shù)據(jù)包吻商, 特定于 Teredo 主機(jī)的中繼要確定 Teredo 客戶端是一個(gè)Cone NAT 掏颊。因此, 特定于 Teredo 主機(jī)的中繼直接發(fā)送初始化數(shù)據(jù)包到 Teredo 客戶端手报。
要確定初始化數(shù)據(jù)包的 IPv6 地址真實(shí)蚯舱,并且符合特定于 Teredo 主機(jī)的中繼改化, Teredo 客戶端用本文的有關(guān)" 特定于 Teredo 主機(jī)的中繼到 Teredo 客戶端的通信初始化"(Cone NAT 之后的)的 1 至 3 步與 特定于 Teredo 主機(jī)的中繼執(zhí)行一次 ICMPv6 Echo Request/Echo Reply 的消息交換掩蛤。當(dāng)此消息交換完成, Teredo 客戶端向特定于 Teredo 主機(jī)的中繼發(fā)送對通信初始化數(shù)據(jù)包進(jìn)行響應(yīng)的消息陈肛。
受限NAT
圖20 顯示了當(dāng) Teredo 客戶端位于受限 NAT 之后時(shí) 特定于 Teredo 主機(jī)的中繼到 Teredo 客戶端的通信初始化揍鸟。
圖20: Teredo 客戶端位于受限 NAT 之后時(shí),特定于 Teredo 主機(jī)的中繼到 Teredo 客戶端的通信初始化句旱。
從特定于 Teredo 主機(jī)的中繼發(fā)送通信初始化數(shù)據(jù)包到 Teredo 客戶端阳藻,過程如下:
1.特定于 Teredo 主機(jī)的中繼通過 IPv4 Internet 絡(luò)經(jīng)由 Teredo 服務(wù)器發(fā)送一個(gè)氣泡數(shù)據(jù)包到 Teredo 客戶端。
2.Teredo 服務(wù)器接收到來自 特定于 Teredo 主機(jī)的中繼的氣泡數(shù)據(jù)包谈撒。 Teredo 服務(wù)器把這個(gè)數(shù)據(jù)包發(fā)送給 Teredo 客戶端腥泥,同時(shí),來源指示符包含了 特定于 Teredo 主機(jī)的中繼的 IPv4 地址和 UDP 端口號啃匿。因?yàn)橐粋€(gè)從 Teredo 服務(wù)器來的 Teredo 通信的特定源映射存在于 NAT蛔外,氣泡數(shù)據(jù)保被發(fā)送給 Teredo 客戶端蛆楞。
3.Teredo 客戶端通過收到的氣泡數(shù)據(jù)中的來源指示符來確定特定于 Teredo 主機(jī)的中繼的 IPv4 地址和 UDP 端口號。為了建立一個(gè)從 Teredo 中繼的 Teredo 通信的映像夹厌, Teredo 客戶端發(fā)送一個(gè)氣泡數(shù)據(jù)包給特定于 Teredo 主機(jī)的中繼豹爹。
4.根據(jù)氣泡數(shù)據(jù)包的收條——與一個(gè)進(jìn)入隊(duì)列等待轉(zhuǎn)發(fā)的數(shù)據(jù)包(該數(shù)據(jù)包來自于特定于 Teredo 主機(jī)的中繼)對應(yīng),特定于 Teredo 主機(jī)的中繼確定一個(gè)特定于來源的 NAT 映射現(xiàn)在存在于 Teredo 客戶端的受限 NAT 之中矛纹。特定于 Teredo 主機(jī)的中繼發(fā)送通信初始化數(shù)據(jù)包給 Teredo 客戶端臂聋。
為確保初始化通信數(shù)據(jù)包的 IPv6 地址真實(shí),并且指向 特定于 Teredo 主機(jī)的中繼或南, Teredo 客戶端按照" Teredo 客戶端到 特定于 Teredo 主機(jī)的中繼的通信初始化"(針對受限NAT)的步驟1至6孩等,與 特定于 Teredo 主機(jī)的中繼執(zhí)行一個(gè) ICMPv6 Echo Request/Echo Reply的消息交換。當(dāng)消息交換執(zhí)行完畢迎献, Teredo 客戶端對發(fā)送到 Teredo 特定主機(jī)服務(wù)器的通信初始化數(shù)據(jù)包進(jìn)行響應(yīng)瞎访。
Teredo 客戶端到 IPv6 主機(jī)的消息初始化
Teredo 客戶端到 IPv6 主機(jī)的消息初始化依賴于 Teredo 客戶端是Cone NAT 的,還是受限NAT吁恍。
Cone NAT
圖21 顯示了當(dāng) Teredo 客戶端位于Cone NAT 之后時(shí)扒秸, Teredo 客戶端與 IPv6 主機(jī)的通信初始化過程。
圖21: Teredo 客戶端位于Cone NAT 之后時(shí)冀瓦, Teredo 客戶端與 IPv6 主機(jī)的通信初始化過程
Teredo 客戶端發(fā)送初始化通信數(shù)據(jù)包到 IPv6 主機(jī)伴奥,過程如下:
1.要發(fā)送一個(gè)通信初始化數(shù)據(jù)包, Teredo 客戶端必須首先驗(yàn)證離 IPv6 主機(jī)最近 Teredo 中繼的 IPv4 地址和 UDP 端口號翼闽。 Teredo 客戶端A經(jīng)由它自己的 Teredo 服務(wù)器發(fā)送一個(gè) ICMPv6 Echo Request 消息拾徙。
2.Teredo 服務(wù)器收到 ICMPv6 Echo Request 消息后,在 IPv6 網(wǎng)上把它發(fā)送給 IPv6 主機(jī)感局。
3.IPv6 主機(jī)發(fā)送給 Teredo 客戶端的一個(gè) Teredo 地址予以響應(yīng)尼啡。根據(jù) IPv6 的網(wǎng)絡(luò)路由結(jié)構(gòu),這個(gè)含有 Teredo 地址的數(shù)據(jù)包被發(fā)送給最近的 Teredo 中繼询微。
4.Teredo 中繼將 ICMPv6 Echo Reply 壓縮崖瞭,并直接發(fā)送給 Teredo 客戶端。因?yàn)檫@是Cone NAT 之后的撑毛,所以來自 Teredo 中繼的數(shù)據(jù)包被發(fā)送到 Teredo 客戶端书聚。
5.Teredo 客戶端從ICMPv6 Echo Reply消息的 IPv4 源地址和UDP端口號確認(rèn) Teredo 中繼的 IPv4 地址最接近 IPv6 主機(jī)。一個(gè)通信初始化數(shù)據(jù)包就被發(fā)送至 Teredo 中繼的 IPv4 地址和UDP端口上藻雌。
6.Teredo 中繼去除 IPv4 和 UDP 的標(biāo)頭雌续,并把此數(shù)據(jù)包發(fā)給 IPv6 主機(jī)。
所有接下來的往返于 Teredo 客戶端和 IPv6 主機(jī)的數(shù)據(jù)包采用經(jīng)由 Teredo 中繼的路徑胯杭。
受限 NAT
圖22 顯示了當(dāng) Teredo 客戶端位于受限 NAT 之后時(shí)驯杜,Teredo 客戶端到 IPv6 主機(jī)通信的初始化。
圖22 顯示了當(dāng) Teredo 客戶端位于受限 NAT 之后時(shí)做个, Teredo 客戶端到 IPv6 主機(jī)通信的初始化鸽心。
IPv6 主機(jī)發(fā)送初始化數(shù)據(jù)包至 Teredo 客戶端腔呜,過程如下:
1.要發(fā)送初始化數(shù)據(jù)包至 IPv6 主機(jī), Teredo 客戶端必須首先驗(yàn)證 Teredo 中繼的 IPv4 地址是否距離 IPv6 主機(jī)最近再悼。 Teredo 客戶端 A 通過它自己的 Teredo 服務(wù)器發(fā)送一個(gè) ICMPv6 Echo Request 消息給 IPv6 主機(jī)核畴。
2.Teredo 服務(wù)器收到 ICMPv6 Echo Request 消息,并且在 IPv6 網(wǎng)絡(luò)上發(fā)送給 IPv6 主機(jī)冲九。
3.IPv6 主機(jī)響應(yīng)一個(gè)發(fā)送至 Teredo 客戶端 A 的 Teredo 地址的 ICMPv6 Echo Reply 消息谤草。根據(jù) IPv6 網(wǎng)絡(luò)的路由結(jié)構(gòu),這個(gè)以 Teredo 地址打包的數(shù)據(jù)包被發(fā)送至最近的 Teredo 中繼莺奸。
4.Teredo 中繼驗(yàn)證 Teredo 客戶端位于受限 NAT 之后丑孩。如果 Teredo 中繼本應(yīng)發(fā)送 ICMPv6 Echo Request 消息至 Teredo 客戶端而沒發(fā),NAT將會丟棄它灭贷。這是因?yàn)椴淮嬖谝粋€(gè)起始于 Teredo 中繼的 Teredo 通道的映射温学。因此, Teredo 中繼在 IPv4 Internet 絡(luò)上通過 Teredo 服務(wù)器發(fā)送一個(gè)氣泡數(shù)據(jù)包至 Teredo 客戶端甚疟。
5.Teredo 服務(wù)器收到來自 Teredo 中繼的氣泡數(shù)據(jù)包仗岖。 Teredo 服務(wù)器發(fā)送氣泡數(shù)據(jù)包之 Teredo 客戶端,同時(shí)來源指示符獲得 Teredo 中繼的 IPv4 地址和 UDP 端口號览妖。因?yàn)橐粋€(gè)起始于 Teredo 服務(wù)器的 Teredo 通道的特定源映射存在于 NAT轧拄,氣泡數(shù)據(jù)包就被發(fā)送至 Teredo 客戶端。
6.Teredo 客戶端從收到的氣泡數(shù)據(jù)包的來源指示驗(yàn)證 Teredo 中繼的 IPv4 地址是不是距離 IPv6 主機(jī)最近讽膏。為了建立一個(gè)起始于 Teredo 中繼的 Teredo 通道的特定于來源的映射檩电, Teredo 客戶端發(fā)送一個(gè)氣泡數(shù)據(jù)包至 Teredo 中繼。
7.根據(jù)氣泡數(shù)據(jù)包已符合等待發(fā)送的接收回執(zhí)(ICMPv6 Echo Reply消息)府树, Teredo 中繼確認(rèn) Teredo 客戶端的受限 NAT 現(xiàn)在存在一個(gè)特定源的映射俐末。 Teredo 中繼發(fā)送 ICMPv6 Echo Reply 消息至 Teredo 客戶端。
8.從 Teredo 客戶端發(fā)送一個(gè)通信初始化數(shù)據(jù)包至 Teredo 中繼的 IPv4 地址和UDP端口奄侠。
9.Teredo 中繼移除 IPv4 標(biāo)頭并發(fā)送此數(shù)據(jù)包至 IPv6 主機(jī)卓箫。
所有接下來的往返于 Teredo 客戶端和 IPv6 主機(jī)之間的數(shù)據(jù)包都采用經(jīng)由 Teredo 中繼的路徑。
IPv6 主機(jī)到 Teredo 客戶端的通信初始化遭铺。
IPv6 主機(jī)到 Teredo 客戶端的通信初始化依賴于 Teredo 客戶端是基于Cone NAT 的丽柿,還是受限NAT的恢准。
Cone NAT
圖23顯示了當(dāng)客戶端位于Cone NAT 之后時(shí)魂挂, IPv6 主機(jī)到 Teredo 客戶端的通信初始化。
圖23:客戶端位于 Cone NAT 之后時(shí)馁筐,IPv6 主機(jī)到 Teredo 客戶端的通信初始化
從 IPv6 主機(jī)發(fā)送初始化數(shù)據(jù)包至 Teredo 客戶端涂召,過程如下:
1.IPv6 主機(jī)發(fā)送一個(gè)數(shù)據(jù)包至 Teredo 客戶端。根據(jù) IPv6 網(wǎng)絡(luò)的結(jié)構(gòu)敏沉,以 Teredo 地址打包的數(shù)據(jù)包被發(fā)至最近的 Teredo 中繼果正。
2.Teredo 中繼驗(yàn)證 Teredo 客戶端是位于受限 NAT 之后炎码。因此, Teredo 中繼就將數(shù)據(jù)包與 IPv4 和 UDP 的標(biāo)志壓縮在一起秋泳,從 IPv6 主機(jī)發(fā)送到 Teredo 客戶端潦闲。
根據(jù)這個(gè)數(shù)據(jù)包的接收回執(zhí),Teredo 客戶端迫皱,儲存對應(yīng)于 Teredo 中繼的 IPv4 地址和 UDP 端口號歉闰,這樣,響應(yīng)數(shù)據(jù)包才能被發(fā)送給 Teredo 中繼卓起。 Teredo 中繼接收到它們和敬,除去 IPv4 和 UDP 標(biāo)志后,發(fā)送該 IPv6 數(shù)據(jù)包到 IPv6 主機(jī)戏阅。
為確保這個(gè)通信初始化數(shù)據(jù)包的 IPv6 地址真實(shí)有效昼弟,并且對應(yīng) IPv6 主機(jī), Teredo 客戶端按照本文關(guān)于" Teredo 客戶端到 IPv6 主機(jī)通信初始化"(針對Cone NAT )的1-4步驟奕筐,與 IPv6 主機(jī)執(zhí)行一次ICMPv6 Echo Request/Echo Reply消息交換舱痘。當(dāng)消息交換執(zhí)行完成后, Teredo 客戶端送到 IPv6 主機(jī)的通信初始化數(shù)據(jù)包進(jìn)行響應(yīng)离赫。
受限 NAT
圖24 表明當(dāng) Teredo 客戶端位于受限 NAT之后衰粹, IPv6 主機(jī)到 Teredo 客戶端的通信初始化。
圖24: Teredo 客戶端位于受限NAT之后時(shí)笆怠, IPv6 主機(jī)到 Teredo 客戶端的通信初始化
從 IPv6 主機(jī)發(fā)送通信初始化數(shù)據(jù)包至 Teredo 客戶端铝耻,進(jìn)程如下:
1.IPv6 主機(jī)發(fā)送一個(gè)數(shù)據(jù)包至 Teredo 客戶端。根據(jù) IPv6 網(wǎng)絡(luò)的結(jié)構(gòu)蹬刷,以 Teredo 地址打包的數(shù)據(jù)包被發(fā)至最近的 Teredo 中繼瓢捉。
2.Teredo 中繼驗(yàn)證 Teredo 客戶端位于受限 NAT之后。如果 Teredo 中繼本應(yīng)發(fā)送這個(gè)數(shù)據(jù)包至 Teredo 客戶端而沒有發(fā)办成,NAT將會丟棄這個(gè)數(shù)據(jù)包泡态,因?yàn)椴淮嬖谝粋€(gè)起始于 Teredo 中繼的 Teredo 通道的特定于來源的映射。因此迂卢, Teredo 中繼在 IPv4 Internet 上某弦,將氣泡數(shù)據(jù)包通過 Teredo 服務(wù)器發(fā)送到 Teredo 客戶端。
3.Teredo 服務(wù)器收到來自 Teredo 中繼的氣泡數(shù)據(jù)包而克。 Teredo 服務(wù)器將帶有來源指示的氣泡數(shù)據(jù)包發(fā)送至 Teredo 客戶端靶壮,這個(gè)來源指示包含有 Teredo 中繼的 IPv4 地址和UDP端口號。因?yàn)橐粋€(gè)起始于 Teredo 服務(wù)器的 Teredo 通道的特定于來源的映射已存在于 NAT 中员萍,這個(gè)氣泡數(shù)據(jù)包被發(fā)送至 Teredo 客戶端腾降。
4.Teredo 客戶端從接收的氣泡數(shù)據(jù)包的來源指示驗(yàn)證 Teredo 中繼的 IPv4 地址是不是最離 IPv6 主機(jī)最近。
5.根據(jù)收到氣泡數(shù)據(jù)包已等待發(fā)送的回執(zhí)(此數(shù)據(jù)包來自 IPv6 主機(jī))碎绎, Teredo 中繼確認(rèn)在客戶端的受限NAT中建立了一個(gè)特定于來源的通道映射螃壤。 Teredo 中繼向 Teredo 客戶端發(fā)送數(shù)據(jù)包抗果。
為根據(jù)收到氣泡數(shù)據(jù)包已等待發(fā)送的回執(zhí)(此數(shù)據(jù)包來自 IPv6 主機(jī)), Teredo 中繼確認(rèn)在客戶端的受限 NAT 中建立了一個(gè)特定于來源的通道映射奸晴。 Teredo 中繼發(fā)送數(shù)據(jù)包給 Teredo 客戶端冤馏。
總結(jié)
Teredo 是一種地址分配和主機(jī)間自動(dòng)隧道技術(shù),當(dāng) IPv6 / IPv4 主機(jī)均位于一個(gè)或多個(gè) IPv4 NAT 之后時(shí)寄啼,它可以幫助用戶建立IPv6 單播連接宿接。IPv6 數(shù)據(jù)包以基于 IPv4 的 UDP 消息發(fā)送。 Teredo 通信依托于 Teredo 服務(wù)器和 Teredo 中繼辕录。一個(gè) 特定于 Teredo 主機(jī)的中繼相當(dāng)于一個(gè)沒有使用 Teredo 地址的 IPv6 或是 IPv4 睦霎,但是能夠在通信路徑上不使用 Teredo 中繼的情況下與 Teredo 用戶進(jìn)行通信。本文對獲得 Teredo 地址走诞,維持 NAT 映射以及在兩個(gè) Teredo 客戶端副女、兩個(gè)特定于 Teredo 主機(jī)的中繼、和兩個(gè) IPv6 主機(jī)之間進(jìn)行通信的初始化流程都做了詳盡的說明蚣旱。不管是基于Cone NAT 還是受限NAT碑幅,任何初始化通信過程都基于 Teredo 客戶端。