Teredo 原理概述

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)容

簡(jiǎn)介

網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT)概述

Teredo 構(gòu)成

Teredo 地址

Teredo 數(shù)據(jù)包格式

Teredo 路由

Teredo 過程

總結(jié)

簡(jiǎn)介

在開始有關(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)換工作的情況,請(qǐng)參閱文中的“網(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)對(duì)其它協(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 。但是對(duì)稱 NAT是一個(gè)例外,詳細(xì)情況在本文的 "NAT 的種類" 中講解。

Teredo 是作為實(shí)現(xiàn) IPv6 連接最后一種轉(zhuǎn)換技術(shù)而設(shè)計(jì)的,認(rèn)識(shí)到這一點(diǎn)很重要。如果原來的 IPv6 、 6to4 或者ISATAP連接可用,那么主機(jī)就不必作為 Teredo 的客戶端?,F(xiàn)在,越來越多的 IPv4 NAT 經(jīng)過了升級(jí)以便能夠支持 6to4 ,而且 IPv6 連接變得越來越普遍, Teredo 將會(huì)使用得越來越少,直到最后完全被放棄。

網(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 端口號(hào)。例如,設(shè)想一個(gè)由多臺(tái)計(jì)算機(jī)組成的,連接到 Internet 的小型商務(wù)網(wǎng)。通常需要為每臺(tái)連接到 Internet 的電腦從 Internet 服務(wù)提供商 (ISP) 處得到一個(gè) IP 地址。但是通過 NAT,這個(gè)小型的商務(wù)網(wǎng)就可以使用私有地址 (如 RFC 1918 所述) ,然后通過 NAT 將專用地址映射到單個(gè)或者多個(gè) IP 公用地址。

NAT 是針對(duì)以下各項(xiàng)要求的常見解決方案:

?? ? ? ? 你想利用一條連接訪問 Internet,而不是將多臺(tái)電腦連接到 Internet 上。

?? ? ? ? 你想使用私有地址。

?? ? ? ? 你想在不部署代理服務(wù)器的情況下使用 Internet 資源。

網(wǎng)絡(luò)地址轉(zhuǎn)換的工作原理

當(dāng)一臺(tái)小型商務(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 端口

請(qǐng)求源主機(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 端口

對(duì)于向外發(fā)送的數(shù)據(jù)包,源 IP 地址和 TCP/UDP 端口號(hào)將被映射到一個(gè)公用源 IP 地址和一個(gè)可能變化的 TCP/UDP 端口號(hào)。對(duì)于接收的數(shù)據(jù)包,目標(biāo) IP 地址和 TCP/UDP 端口號(hào)將被映射到私有 IP 地址和初始 TCP/UDP 端口號(hào)。

例如,一個(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)中一臺(tái)內(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

請(qǐng)求源主機(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示例

從私用流量到公共流量的映射儲(chǔ)存在一個(gè) NAT 轉(zhuǎn)換表中,包括兩種類型的條目:

1.動(dòng)態(tài)映射

在專用網(wǎng)絡(luò)用戶開始通信時(shí)產(chǎn)生。除非被與 NAT 轉(zhuǎn)換表相對(duì)應(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)映射不會(huì)從 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)換表中存儲(chǔ)了內(nèi)部地址和端口號(hào)與外部地址和端口號(hào)之間映射關(guān)系的一類 NAT。一旦 NAT 轉(zhuǎn)換表開始工作,來自任何源地址和端口通往外部地址和端口的入站數(shù)據(jù)包都將被轉(zhuǎn)換。

?受限 NAT

受限 NAT是指在 NAT 轉(zhuǎn)換表中存儲(chǔ)了內(nèi)部地址和端口號(hào)與外部地址和端口號(hào)之間的映射,無論是特定的源地址或者特定源地址與端口號(hào)。如果從某個(gè)未知外部地址或者端口到外部目標(biāo)地址和端口的入站數(shù)據(jù)包與 NAT 轉(zhuǎn)換表吻合,那么此數(shù)據(jù)流將被自動(dòng)放棄。

?對(duì)稱 NAT

對(duì)稱 NAT 是指根據(jù)外部目標(biāo)地址(適用于出站數(shù)據(jù)包)將相同的內(nèi)部地址和端口號(hào)映射到不同的外部地址和端口號(hào)的 NAT。

Teredo 只能工作于Cone和受限 NAT,不能工作于對(duì)稱 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é)助建立通信連接中的作用,請(qǐng)參閱本文" 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ā)起和開展通信方面所具有的作用,請(qǐng)參閱本文中"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 中繼。這對(duì)于連接到 IPv6 Internet 的 IPv6 主機(jī)而言是必需的。但是,當(dāng) IPv6 主機(jī)既支持 IPv6 又支持 IPv4,并且同時(shí)連接到 IPv4 Internet 和 IPv6 Internet, 那么,Teredo 客戶端與 IPv6 主機(jī)之間的通信就會(huì)通過 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ī)的中繼功能便會(huì)自動(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)號(hào)碼分配機(jī)構(gòu)(IANA)還沒有對(duì)該前綴進(jìn)行定義,盡管該前綴 3FFE:831F::/32 已經(jīng)運(yùn)用于初始配置。

?? ? ? ? Teredo 服務(wù)器 IPv4 地址

接下來的 32 位包含 Teredo 服務(wù)器的 IPv4 的公共地址以幫助設(shè)定 Teredo 地址。更多信息請(qǐng)參閱本文中的 " 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è)定。更多信息請(qǐng)參閱本文的 "Teredo 客戶初始設(shè)定" 章節(jié)。

?? ? ? ? 隱藏外部端口

接下來的 16 位儲(chǔ)存的是與該 Teredo 客戶端所有 Teredo 通信相對(duì)應(yīng)的外部 UDP 端口的隱藏模式。當(dāng) Teredo 客戶端向 Teredo 服務(wù)器發(fā)送初始數(shù)據(jù)包時(shí),NAT 會(huì)將源數(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í)對(duì)其進(jìn)行轉(zhuǎn)換。

?? ? ? ? 隱藏外部地址

最后32 位儲(chǔ)存與 Teredo 客戶端所有 Teredo 通信相對(duì)應(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)制的冒號(hào)格式為 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 地址示例

對(duì)于 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)制冒號(hào)形式

?? ? ? ? 8000 是完全標(biāo)記設(shè)為 1 時(shí)標(biāo)記域的值,表示 Teredo 客戶端 A 的 NAT 是一個(gè)Cone NAT 。

?? ? ? ? EFFF 是 4096 (0x1000) 的隱藏形式

?? ? ? ? C2C3:FFFE 是 157.60.0.1的隱藏形式

對(duì)于 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)制冒號(hào)形式

?? ? ? ? 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)隧道終端相對(duì)應(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)行路由器請(qǐng)求和路由器通告信息的可靠性。 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è)長(zhǎng)度為兩個(gè)字節(jié)的值指定了指示符的類型。對(duì)于驗(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)換域相對(duì)應(yīng)。

?? ? ? ? Client ID Length(客戶端 ID 長(zhǎng)度)

這個(gè)長(zhǎng)度為 1 個(gè)字節(jié)的值指定了“客戶端標(biāo)識(shí)”域的長(zhǎng)度。

?? ? ? ? Authentication Data Length(驗(yàn)證數(shù)據(jù)的長(zhǎng)度)

這個(gè)長(zhǎng)度為 1 字節(jié)的域指定了“驗(yàn)證值”域的長(zhǎng)度。

?? ? ? ? Client Identification(客戶端標(biāo)識(shí))

這個(gè)長(zhǎng)度不定的域包含一個(gè) Teredo 客戶端的標(biāo)識(shí)字符串。

?? ? ? ? Authentication Value(驗(yàn)證值)

這個(gè)長(zhǎng)度不定的域包含使用共享密鑰計(jì)算的此數(shù)據(jù)包的驗(yàn)證值。有關(guān)如何計(jì)算驗(yàn)證值的信息請(qǐng)參閱 Teredo Internet 草案的 5.2.2 章節(jié)。

?? ? ? ? Nonce(現(xiàn)在)

這個(gè)長(zhǎng)度為 8 字節(jié)的域包含了一個(gè)任意數(shù)字,用來證明數(shù)據(jù)交流還在進(jìn)行并且防止數(shù)據(jù)包重復(fù)傳送攻擊。

?? ? ? ? Confirmation(確認(rèn))

這個(gè)長(zhǎng)度為 1 字節(jié)的域包含一個(gè)用來表明客戶端是否在路由器的請(qǐng)求信息中使用了正確的密鑰值,這個(gè)確認(rèn)域設(shè)置為0。在路由器通告信息中,此確認(rèn)域設(shè)置為 0 或者密鑰錯(cuò)誤時(shí)為一個(gè)非 0 值。

雖然在路由器通告信息和路由器請(qǐng)求信息中也包含了驗(yàn)證指示符,但是在 采用了 The Advanced Networking Pack for Windows XP 的 Teredo 客戶端中并不使用客戶標(biāo)識(shí)符或者驗(yàn)證值。當(dāng)在沒有客戶端標(biāo)識(shí)符或者驗(yàn)證值的時(shí)候,驗(yàn)證指示符的格式如圖 8 所示。

圖8:沒有客戶端標(biāo)識(shí)符或者驗(yàn)證值時(shí),驗(yàn)證指示符的格式

原始指示符

原始指示符用來表示 Teredo 客戶端、 Teredo 中繼或者特定于 Teredo 主機(jī)的中繼的 IPv4 地址和 UDP 端口。它的用途的一個(gè)例子就是,當(dāng) Teredo 服務(wù)器回應(yīng) Teredo 客戶端的路由器請(qǐng)求信息而發(fā)出路由器通告信息。在這種情況下,原始指示數(shù)據(jù)包含了對(duì)應(yīng)于 Teredo 客戶端 Teredo 通信流的已經(jīng)映射的 IPv4 地址和 UDP 端口號(hào)。有關(guān)更多信息,請(qǐng)參閱本文"Teredo 客戶端初始配置"

如同驗(yàn)證指示符,原始指示符放在 UDP 標(biāo)頭與 IPv6 標(biāo)頭之間。它的結(jié)構(gòu)如圖 9 所示。

圖9:原始指示符的結(jié)構(gòu)

原始指示數(shù)據(jù)包含以下域:

?? ? ? ? 指示符類型

這個(gè)長(zhǎng)度為 2 字節(jié)的域說明了指示符的類型。對(duì)于原始指示符,其值為 0。 Teredo 客戶端可以根據(jù) IPv6 數(shù)據(jù)包的前兩個(gè)字節(jié)區(qū)分出原始指示符,因?yàn)?IPv6 數(shù)據(jù)包的前兩個(gè)高位字節(jié)設(shè)置為0110 (6), 與 IPv6 標(biāo)頭的轉(zhuǎn)換域相對(duì)應(yīng)。

?? ? ? ? 隱藏原始端口號(hào)

這個(gè)兩個(gè)字節(jié)的與包含一個(gè)與 Teredo 客戶端、 Teredo 中繼或者 特定于 Teredo 主機(jī)的中繼 Teredo 通信相對(duì)應(yīng)的隱藏外部端口(同 0xFFFF 異或)。 模糊原始端口的值與 0xFFFF 異或。

?? ? ? ? 隱藏原始地址

這個(gè)長(zhǎng)度為 4 字節(jié)的域包含與 Teredo 客戶端、 Teredo 中繼或者特定于 Teredo 主機(jī)的中繼 Teredo 通信相對(duì)應(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)

對(duì)于發(fā)往相同站點(diǎn)和鏈接中其它 Teredo 主機(jī)的數(shù)據(jù)包, Teredo 隧道接口通過交換氣泡數(shù)據(jù)包來代替 Neighbor Discovery 的地址解析進(jìn)程。交換氣泡數(shù)據(jù)包保證了每一個(gè) Teredo 客戶端之間能夠直接發(fā)送數(shù)據(jù)包。想要了解更多信息,請(qǐng)查閱本文 "相同鏈接上的 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)

對(duì)于發(fā)往不同節(jié)點(diǎn)上的另一臺(tái) Teredo 主機(jī)的數(shù)據(jù)包,如果兩個(gè) Teredo 主機(jī)都跨越 受限 NAT,Teredo 隧道接口使用氣泡數(shù)據(jù)包替代“鄰居發(fā)現(xiàn)”(Neighbor Discovery)地址解析過程。當(dāng)兩臺(tái) Teredo 主機(jī)都穿越受限網(wǎng)絡(luò)地址轉(zhuǎn)換時(shí), Teredo 隧道出口用氣泡數(shù)據(jù)包的交換代替發(fā)現(xiàn) Neighbor Discovery 協(xié)議的地址解析過程。氣泡數(shù)據(jù)包的交換在雙方的 NAT 上都會(huì)生成特定地址和端口的映射。這樣,兩個(gè)不同點(diǎn)的 Teredo 客戶端就可以直接發(fā)送數(shù)據(jù)包給對(duì)方。如果希望進(jìn)一步了解相關(guān)信息,請(qǐng)參閱本文的"在不同站點(diǎn)的 Teredo 客戶端中初始化通信"部分。

IPv6 網(wǎng)絡(luò)目標(biāo)

對(duì)于 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)一步了解,請(qǐng)查看本文的"從 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ā)送一系列路由請(qǐng)求消息給 Teredo 服務(wù)器確定一個(gè) Teredo 地址,并了解客戶端是通過一個(gè)Cone,受限還是在對(duì)稱的 NAT。圖12顯示了 Teredo 客戶端的初始化進(jìn)程。

圖12: Teredo 客戶端的初始化設(shè)置

Teredo 客戶端的初始化設(shè)置包括以下過程:

1.路由服務(wù)器請(qǐng)求信息 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會(huì)從一個(gè)動(dòng)態(tài)的 IPv4 地址發(fā)送出 RA。Teredo 客戶端收到 RA 后會(huì)得知那是一個(gè)“Cone”的網(wǎng)絡(luò)地址轉(zhuǎn)換。

3.如果沒有收到 RA, Teredo 客戶端就會(huì)從當(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 會(huì)發(fā)送一個(gè)與 RS 目標(biāo)地址通信的 IPv4 原地址。如果 Teredo 客戶端收到 RA,就得出那是受限的地址轉(zhuǎn)換。

5.為了確保 Teredo 客戶端不是一個(gè)對(duì)稱的網(wǎng)絡(luò)地址轉(zhuǎn)換,它就會(huì)發(fā)出另一個(gè) RA 到 Teredo 服務(wù)器( Teredo 服務(wù)器 2)。

6.Teredo 伺服器 2 回應(yīng)一個(gè) RA??蛻舳藢?duì)兩個(gè) Teredo 服務(wù)器的 RA 來源指示符中的映射地址和 UDP 端口進(jìn)行比較。如果他們不同,那么NAT就是在映射相同的內(nèi)部地址和端口號(hào)到不同的外部地址和端口號(hào)。 Teredo 客戶端確定這個(gè) NAT 是一個(gè)對(duì)稱的 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 位對(duì)從 RA 中 Origin (原始)指示符來的外部 UDP 端口號(hào)進(jìn)行賦值。

?? ? ? ? 最后 32 位放置從 RA 中 Origin 指示符來的外部 IP 地址。

實(shí)現(xiàn)了 The Advanced Networking Pack for Windows XP 的 Teredo 客戶端會(huì)自動(dòng)嘗試通過解析 name Teredo .IPv6.Microsoft.com 來測(cè)定 Teredo 服務(wù)器的 IPv4 地址。相應(yīng)地,你可以用netsh interface IPv6 set Teredo servername= 命令來設(shè)置 Teredo 服務(wù)器的 IPv4 地址。

維持 NAT 映射

圖13 顯示了 Teredo 客戶端是如何維持 Teredo 通信的 NAT 映射的。

圖 13:維持 NAT 映射

Teredo 客戶端會(huì)定期地(一般默認(rèn)每隔 30 秒鐘)發(fā)送單一的氣泡數(shù)據(jù)包到 Teredo 服務(wù)器。 Teredo 服務(wù)器會(huì)在不回復(fù)的情況下丟棄該數(shù)據(jù)包。這個(gè)周期性的數(shù)據(jù)包會(huì)重新刷新 NAT 的轉(zhuǎn)換表。否則,這個(gè)映射就無效并被刪除。如果映射不存在,對(duì)于Cone NAT 而言,所有接收的數(shù)據(jù)流;對(duì)于受限 NAT 而言,所有從 Teredo 服務(wù)器到 Teredo 主機(jī)的數(shù)據(jù)流會(huì)地被 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 端口號(hào)來的 Teredo 通信是不允許的,除非那是一個(gè)特定源的 NAT 轉(zhuǎn)換表?xiàng)l目。假如沒有,受限 NAT 丟棄此數(shù)據(jù)包。但是,當(dāng)受限 NAT 為 Teredo 客戶端 A 發(fā)送氣泡數(shù)據(jù)包時(shí),它會(huì)建立一個(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 塊識(shí)別。

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ù)包,對(duì)從 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 客戶端就會(huì)發(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 端口號(hào)。因?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ù)包對(duì)應(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ā)送對(duì)通信初始化數(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 端口號(hào)。因?yàn)橐粋€(gè)從 Teredo 服務(wù)器來的 Teredo 通信的特定源映射存在于 NAT,氣泡數(shù)據(jù)保被發(fā)送給 Teredo 客戶端。

3.Teredo 客戶端通過收到的氣泡數(shù)據(jù)中的來源指示符來確定特定于 Teredo 主機(jī)的中繼的 IPv4 地址和 UDP 端口號(hào)。為了建立一個(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ī)的中繼)對(duì)應(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ī)的中繼的通信初始化"(針對(duì)受限NAT)的步驟1至6,與 特定于 Teredo 主機(jī)的中繼執(zhí)行一個(gè) ICMPv6 Echo Request/Echo Reply的消息交換。當(dāng)消息交換執(zhí)行完畢, Teredo 客戶端對(duì)發(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 端口號(hào)。 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端口號(hào)確認(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將會(huì)丟棄它。這是因?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 端口號(hào)。因?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 客戶端,儲(chǔ)存對(duì)應(yīng)于 Teredo 中繼的 IPv4 地址和 UDP 端口號(hào),這樣,響應(yīng)數(shù)據(jù)包才能被發(fā)送給 Teredo 中繼。 Teredo 中繼接收到它們,除去 IPv4 和 UDP 標(biāo)志后,發(fā)送該 IPv6 數(shù)據(jù)包到 IPv6 主機(jī)。

為確保這個(gè)通信初始化數(shù)據(jù)包的 IPv6 地址真實(shí)有效,并且對(duì)應(yīng) IPv6 主機(jī), Teredo 客戶端按照本文關(guān)于" Teredo 客戶端到 IPv6 主機(jī)通信初始化"(針對(duì)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將會(huì)丟棄這個(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端口號(hào)。因?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)行通信。本文對(duì)獲得 Teredo 地址,維持 NAT 映射以及在兩個(gè) Teredo 客戶端、兩個(gè)特定于 Teredo 主機(jī)的中繼、和兩個(gè) IPv6 主機(jī)之間進(jìn)行通信的初始化流程都做了詳盡的說明。不管是基于Cone NAT 還是受限NAT,任何初始化通信過程都基于 Teredo 客戶端。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容