天天看點

p2p打洞技術文章

英文位址:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt

網際網路草案B.福特

檔案:草案 - 福特 - 中間盒通信的P2P-01.txt麻省理工學院

到期日:2004年4月27日,第Srisuresh

                                                          Caymas系統

                                                                D.凱格爾

                                                               kegel.com

                                                            2003年10月

              對等網絡(P2P)跨中間件通信

本備忘錄的狀态

   這個檔案是一個Internet草案,并須遵守所有規定

   的RFC2026的第10節。網際網路草案是文檔

   網際網路工程任務組(IETF),其領域及其

   工作組。請注意,其他團體也可以配置設定工作

   文檔作為Internet草案。

   Internet草案的有效期最長為六個月檔案草案

   并且可以更新,替換,或在任何其他檔案廢棄

   時間。這是不恰當的使用網際網路的草稿作為參考

   材料或舉他們比其它“進展中的工作。”

   目前Internet草案的清單可以在通路

   http://www.ietf.org/1id-abstracts.html

   Internet草案陰影目錄的清單可以在通路

   http://www.ietf.org/shadow.html

   本文檔的分發不受限制。

版權聲明

   版權所有(C)網際網路協會(2003年)。版權所有。

抽象

   本文定義由目前對等網絡使用的方法

   (P2P)應用到在中間盒的存在下進行通信

   如防火牆和網絡位址轉換(NAT)。在

   此外,備忘錄建議對應用程式設計指南

   他們可以采取的措施和中間盒實施者

   支援P2P應用,即時,廣泛部署或

   而不需要使用特殊的代理,中繼或中間盒通信

   協定。

福特,Srisuresh&凱格爾[第1頁]

跨中間件2003年10月網際網路草案P2P應用

目錄

   1.簡介............................................... ..

   2.術語............................................... ...

   3.技術已有的P2P通信............

       3.1。中繼...............................................

       3.2。逆向連接配接....................................

       3.3。打洞......................................

             3.3.1。不同的NAT後面的同行..................

             3.3.2。同樣的NAT之後....................

             3.3.3。通過多層NAT分隔同行...............

             3.3.4。一緻的端口綁定.......................

       3.4。 UDP端口号預測.............................

       3.5。同時TCP開放..................................

   4.應用程式設計指南................................

       4.1。什麼跟P2P中間件.........................工作

       4.2。相同的NAT後面的應用........................

       4.3。同伴發現..........................................

       4.4。 TCP的P2P應用....................................

       4.5。利用中間盒通信協定..................................

   5. NAT設計指南........................................

       5.1。棄用采用對稱NAT的.....................

       5.2。加入增量錐形NAT支援對稱NAT裝置

       5.3。維持UDP端口一緻的端口綁定.....

             5.3.1。保留端口号........................

       5.4。維持TCP端口一緻的端口綁定.....

       5.5。大逾時P2P應用......................

   6.安全注意事項......................................

1.簡介

   當今的網際網路已經看到了無處不在的部署

   “中間件”,如網絡位址轉換(NAT),驅動

   主要由IPv4位址空間的持續消耗。該

   這些建立不對稱尋址和​​連通性制度

   中間件,但是,已經創造了獨特的問題,為對等網絡

   (P2P)應用程式和協定,如電話會議和

   多人線上遊戲。這些問題可能​​會甚至持續

   到IPv6的世界裡,NAT通常用來作為IPv4相容

   機制[NAT-PT],并且防火牆将仍然是家常便飯,甚至

   後不再需要NAT。

   目前部署的中間件的設計主要是圍繞

   客戶機/伺服器的範例,其中,相對匿名的客戶機

   主動發起,以具有穩定良好連接配接的伺服器的連接配接

   IP位址和DNS名稱。大多數中間件實施非對稱

福特,Srisuresh&凱格爾[第2頁]

跨中間件2003年10月網際網路草案P2P應用

   其中通信模型承載專用内部網絡上

   可以啟動公共網絡上的主機傳出連接配接,但

   外部主機不能啟動,除了内部主機連接配接

   作為具體由中間盒的管理者配置。在裡面

   NAPT的常見情況下,内部網絡中的用戶端沒有

   在公共網際網路上唯一的IP位址,而是必須共享

   一個公網IP位址,由NAPT管理,與其他主機

   同一專用網絡上。匿名性和交通不便

   層NAT内部主機不是用戶端問題

   軟體如Web浏覽器,隻需要啟動傳出

   連接配接。這交通不便有時被視為隐私

   效益。

   在對等網絡模式,但是,網際網路的主機會

   通常被認為是“客戶”,需要建立通信

   彼此直接會話。在發起方和應答

   可能在于背後不同的中間件既沒有終點

   有公網任何永久的IP位址或其他形式

   存在。一個常見的​​線上遊戲架構,例如,

   為參與應用程式主機聯系一個著名的

   伺服器初始化和管理目的。随後

   對此,主機與對方建立直接連接配接

   對于遊戲中的更新快速,高效的傳播。

   同樣,檔案共享應用程式可能會聯系一家知名

   伺服器資源發現或搜尋,而是直接建立

   與資料傳輸等主機的連接配接。中間件建立

   ,因為後面的主機對等網絡連接配接問題

   中間盒通常對沒有固定的端口

   網際網路傳入TCP或從其他同行UDP連接配接

   可定向。 RFC 3235 [NAT-APPL]簡單地解決這個問題,

   但不提供任何的解決方案。

   在本文中,我們以兩種方式解決P2P /代理的問題。

   首先,我們總結了已知的方法由P2P應用程式可以

   變通中間件的存在。第二,我們提供了一套

   基于這些做法的應用程式設計指南,使

   P2P應用在目前部署的工作更有力

   中間件。此外,我們為未來設計指南

   中間件,讓他們支援P2P應用程式的更多

   有效。我們的重點是讓直接和廣泛部署

   P2P應用那些需要經過。

2.術語

在本節中,我們首先總結了一些術語。在這裡,我們重點

對兩種中間件的通常導緻的P2P問題

應用程式。

福特,Srisuresh&凱格爾[第3頁]

跨中間件2003年10月網際網路草案P2P應用

   火牆

      防火牆可以限制私人内部之間的溝通

      網絡和公共網際網路,通常由丢棄資料包

      這被認為是未經授權的。防火牆檢查,但确實

      不修改的IP位址和TCP / UDP的端口資訊

      包過關。

   網絡位址轉換(NAT)

      網絡位址轉換器不僅檢查同時也修改

      在跨越邊界流動的分組的标題資訊,

      允許多個主機上的NAT後面共享使用較小

      公有IP位址的數量(通常一個)。

   網絡位址轉換器有兩個主要品種:

   基本NAT

      一個基本的NAT内部主機的私有IP位址映射到一個

      在不改變TCP / UDP端口的公共IP位址

      号碼穿越邊界的資料包。基本NAT一般

      當NAT擁有公網IP位址池唯一有用

      這使代表内部主機的位址綁定。

   網絡位址/端口轉換(NAPT)

      到目前為止,最常見的,一個網絡位址/端口轉換檢

      和修改都IP位址和TCP / UDP端口号

      分組域穿越邊界,允許多個

      内部主機同時共享一個公用IP位址。

   請參閱[NAT-TRAD]和[NAT-TERM]更多一般資訊

   NAT分類和術語。進一步分類的附加條款

   NAPT在最近的工作[STUN]中定義。當内部主機

   打開通過網絡位址/端口傳出TCP或UDP會話

   翻譯時,NAPT配置設定會話的公網IP​​位址,

   端口号,使得從外部後續響應封包

   端點可以通過NAPT接收,翻譯,并轉發

   到内部主機。其效果是,在NAPT建立

   端口(私有IP位址,私有端口号)和之間的結合

   (公網IP位址,公網端口号)。端口綁定

   定義位址轉換的NAPT将為執行

   會議持續時間。相關性P2P的問題

   應用程式是NAT的行為當内部主機啟動

   從單一的(私有IP多個并發會話,私人

   口)對多個不同的終端在外部網絡上。

   錐形NAT

      建立一個端口(私有IP之間的綁定後,私人

      口)數組和一個(公共IP,公共端口)的元組,一個錐形NAT會

      再将此端口用于後續會話綁定

福特,Srisuresh&凱格爾[第4頁]

跨中間件2003年10月網際網路草案P2P應用

      應用可以由相同的私有IP位址發起和

      端口号,如隻要至少一個會話使用的端口

      綁定保持活躍。

      例如,在圖中假設客戶A下面啟動兩個

      通過一個錐形NAT并發會話傳出,從相同的

      内部端點(10.0.0.1:1234)兩個不同的

      外部伺服器,S1和S2。該錐形NAT隻配置設定一個公

      端點元組,155.99.25.11:62000,為這兩個會議,

      確定用戶端的端口的“身份”維持

      跨越位址轉換。由于基本的NAT和防火牆做

      不要修改端口号為分組流跨越

      在中間盒,這些類型的中間件的可以被看作是一個

      錐形NAT的退化形式。

           伺服器S1 S2伺服器

        18.181.0.31:1235 138.76.29.7:1235

               | |

               | |

               + ---------------------- + ---------------------- +

                                      |

          ^會話1(A-S1)^ | ^ 2屆(A-S2)^

          | 18.181.0.31:1235 | | | 138.76.29.7:1235 |

          v 155.99.25.11:62000 V | v 155.99.25.11:62000 v

                                      |

                                   錐形NAT

                                 155.99.25.11

                                      |

          ^會話1(A-S1)^ | ^ 2屆(A-S2)^

          | 18.181.0.31:1235 | | | 138.76.29.7:1235 |

          v 10.0.0.1:1234 V | v 10.0.0.1:1234 v

                                      |

                                   客戶A

                                10.0.0.1:1234

福特,Srisuresh&凱格爾[第5頁]

跨中間件2003年10月網際網路草案P2P應用

   對稱NAT

      對稱NAT的,與此相反,不保持一緻的

      端口(私有IP,私有端口)和(公網IP之間的綁定,

      公共端口)的所有會話。相反,它配置設定一個新的

      公共端口,每一個新的會話。例如,假設用戶端A

      啟動兩個會議傳出來自同一個端口如上一

      與S1和S2。對稱NAT可能配置設定

      公共端點155.99.25.11:62000會話1,然後配置設定

      不同的公共端點155.99.25.11:62001,當

      應用程式啟動會話2. NAT是能夠區分

      翻譯的目的兩次會議之間,因為

      參與會議(S1那些外部端點

      和S2)不同,即使在用戶端的端點辨別

      應用程式通過位址轉換邊界丢失。

           伺服器S1 S2伺服器

        18.181.0.31:1235 138.76.29.7:1235

               | |

               | |

               + ---------------------- + ---------------------- +

                                      |

          ^會話1(A-S1)^ | ^ 2屆(A-S2)^

          | 18.181.0.31:1235 | | | 138.76.29.7:1235 |

          v 155.99.25.11:62000 V | v 155.99.25.11:62001 v

                                      |

                                 對稱NAT

                                 155.99.25.11

                                      |

          ^會話1(A-S1)^ | ^ 2屆(A-S2)^

          | 18.181.0.31:1235 | | | 138.76.29.7:1235 |

          v 10.0.0.1:1234 V | v 10.0.0.1:1234 v

                                      |

                                   客戶A

                                10.0.0.1:1234

   錐與對稱NAT行為的問題同樣适用

   TCP和UDP流量。

   錐型NAT是根據NAT如何寬松進一步分類

   接受定向到已經建立的(公共的傳入流量

   IP,公共端口)對。這種分類一般僅适用于

   UDP流量,因為NAT和防火牆拒絕傳入的TCP

   連接配接無條件嘗試,除非專門配置

   不這樣做。

   完全NAT

福特,Srisuresh&凱格爾[第6頁]

跨中間件2003年10月網際網路草案P2P應用

      建立公共/私有端口,一個新的綁定後,

      即将離任的會議,一個完整的錐形NAT将随後接受

      傳入流量從任何相應的公開端口

      在公共網絡上的外部端點。完全錐形NAT

      有時也被稱為“混雜”NAT。

   受限錐形NAT

      受限錐形NAT隻轉發傳入資料包定向到

      公共端口,如果它的外部(源)IP位址相比對的

      到内部主機先前發送節點的位址

      一個或多個傳出的資料包。受限錐形NAT有效

      提煉拒絕未經請求的傳入的防火牆原則

      交通,通過限制入站流量,以一套“已知”的

      外部IP位址。

   端口受限錐形NAT

      端口受限錐形NAT,反過來,隻有轉發傳入

      包,如果它的外部IP位址和端口号相比對的那些

      到内部主機之前有一個外部端點

      發送傳出的資料包。端口受限錐形NAT提供

      内部節點的相同水準反對不請自來的保護

      傳入通信,一個對稱NAT确實,同時保持了

      跨翻譯私有端口的身份。

   最後,本文中我們定義為分類新名詞

   中間件的P2P相關的行為:

   P2P的應用

      如本文檔中使用的P2P應用是在一個應用程式

      每個參與者的P2P與公共注冊

      注冊伺服器,并分别利用其

      私有位址或公共端點,或同時,要建立

      對等會話。

   P2P-中間盒

      一個P2P的中間盒是一個允許周遊

      P2P應用。

   P2P防火牆

      一個P2P防火牆是一個P2P的中間盒,可提供防火牆

      功能,但不進行位址轉換。

   P2P-NAT

      一個P2P-NAT是一個P2P的,提供了NAT功能和

      也可以提供防火牆功能。在最低限度,一個

      P2P的中間盒必須實作UDP流量錐形NAT的行為,

      允許應用程式使用,以建立強大的P2P連接配接

      在UDP打洞技術。

福特,Srisuresh&凱格爾[第7頁]

跨中間件2003年10月網際網路草案P2P應用

   回環翻譯

      當在NAT裝置的私有域主機嘗試

      連接配接使用相同的NAT裝置後面的另一台主機

      主機的公共位址,NAT裝置執行

      一個“兩次的NAT”翻譯等同于包作為

      如下。源主機的私有位址翻譯

      到配置設定給它的公共端點,并且目标主機的公共

      端點被翻譯成自己的私有位址,前

      該分組被轉發到目标主機。我們稱上述

      通過NAT裝置為“環回譯”進行翻譯。

3.在中間件技術的P2P通信

   本節将詳細回顧了目前已知的技術

   實施在現有中間件的對等通信,

   從應用程式或協定設計者的角度。

3.1。中繼

   實作同行的最可靠的,但效率最低的方法

   在一個中間盒的存在等通信是使

   對等網絡通信的樣子的網絡類似的客戶機/伺服器

   通過中繼通信。例如,假設兩個客戶

   主機A和B,各有發起TCP或UDP的一個連接配接

   著名的有一個永久的IP位址伺服器秒。用戶端

   駐留在單獨的專用網絡,但是,它們各自的

   中間件妨礙任何用戶端直接發起

   連接配接到其他。

                                服務者S

                                   |

                                   |

            + ---------------------- + ---------------------- +

            | |

          NAT通過NAT乙

            | |

            | |

         用戶端A用戶端B

   相反,在嘗試直接連接配接,兩個用戶端可以簡單地

   使用伺服器S在它們之間傳遞消息。例如,要

   發送消息給客戶B,用戶端A隻是将消息發送到

   沿着已經建立的客戶機/伺服器連接配接伺服器S,和

   服務者S然後使用其現有的将消息發送到客戶機B

   與B的客戶機/伺服器連接配接

   這種方法的優點在于,它将始終隻要工作

福特,Srisuresh&凱格爾[第8頁]

跨中間件2003年10月網際網路草案P2P應用

   兩個用戶端都連接配接到該伺服器。很明顯

   缺點是,它消耗的伺服器的處理能力和

   網絡帶寬不必要,和之間的通信延遲

   兩個用戶端可能是伺服器是否良好進行甚至增加

   連接配接的。轉協定[TURN]定義了實作的方法

   中繼在一個相對安全的方式。

福特,Srisuresh&凱格爾[第9頁]

跨中間件2003年10月網際網路草案P2P應用

3.2。連接配接逆轉

   第二種技術工作,如果僅在用戶端中的一個是後面的

   中間盒。例如,假設客戶A是NAT但客戶背後

   B具有全局路由的IP位址,如下面的圖中:

                                服務者S

                            18.181.0.31:1235

                                   |

                                   |

            + ---------------------- + ---------------------- +

            | |

          NAT A |

    155.99.25.11:62000 |

            | |

            | |

         用戶端A用戶端B

      10.0.0.1:1234 138.76.29.7:1234

   客戶A擁有私有IP位址為10.0.0.1,并且應用程式

   使用TCP端口1234。此用戶端已經建立了一個連接配接

   在公網IP位址18.181.0.31和端口NAT 1235的伺服器S有

   配置設定的TCP端口62000,在自己的公網IP​​位址155.99.25.11,

   擔任臨時公共端點位址為A的會話

   以S:是以,服務者S認為,客戶A在IP位址

   使用端口62000.用戶端B 155.99.25.11,但是,有它自己的

   永久的IP位址,138.76.29.7,和對等體的對等應用

   在B是在端口1234上接受的TCP連接配接。

   現在假設委托人B希望發起對等網絡

   與用戶端,A,B通信會話可能首先嘗試

   聯系客戶機A的位址,用戶端A認為自己

   有,即10.0.0.1:1234,或在位址通過觀察

   伺服器S,即155.99.25.11:62000。在這兩種情況下,但是,

   連接配接将失敗。在第一種情況下,交通定向到的IP

   位址為10.0.0.1将僅僅通過網絡,因為被丢棄

   10.0.0.1不是公共可路由的IP位址。在第二種情況下,

   從B TCP SYN請求将到達NAT一個指向端口

   62000,但NAT A将拒絕連接配接請求,因為隻有

   傳出連接配接是允許的。

   嘗試和失敗建立到直接連接配接後,

   客戶B可以使用伺服器S鍵轉發到用戶端A請求啟動

   一個“倒”連接配接到用戶端B.用戶端A,在接收到該

   到S中繼的要求,開放時間為B的TCP連接配接到客戶B

   公共IP位址和端口号。 NAT A允許的連接配接

   繼續,因為它是在防火牆内部始發,與客戶B

   因為它不是一個中間盒後面可以接收該連接配接。

福特,Srisuresh&凱格爾[第10頁]

跨中間件2003年10月網際網路草案P2P應用

   各種電流對等網絡系統,實作這種技術。

   其主要的限制,當然,是它隻隻要可以作為唯一的

   通信對等體之一是NAT後面:在日益

   其中兩個同齡人NAT後面通常情況下,該方法失敗。

   由于連接配接逆轉是不是解決問​​題的通用解決方案,

   它是不推薦作為首要戰略。應用程式可以選擇

   嘗試連接配接逆轉,但應能回落

   自動上的另一機構,例如,如果沒有一個中繼

   “前進”,也不是“逆向”可以建立連接配接。

3.3。 UDP打孔

   第三種技術,并且在此主要感興趣的所述一個

   檔案,被廣泛地稱為“UDP打孔”。 UDP打孔

   依靠共同防火牆和錐形NAT的允許的屬性

   設計合理的對等網絡應用程式“打孔”

   通過中間盒,并與每個直接連接配接

   另外,即使在雙方溝通的主機可能在于中間件後面。

   在RFC 3027 [NAT- 5.1節簡要地提及這一技術

   PROT],并已非正式地在網際網路上别處描述

   [KEGEL]在最近的一些協定[TEREDO,ICE]使用。作為名稱

   意味着,不幸的是,這種技術可以可靠地工作隻與UDP。

   我們将考慮兩個具體方案,以及如何應用程式可以是

   設計優雅地處理他們兩個。在第一種情況下,

   較常見的情況,兩個用戶端渴望直接對于─

   點對點通信駐留後面兩個不同的NAT。在第二,

   這兩個用戶端都處于相同的NAT後面,但不要

   一定知道,他們這樣做。

3.3.1。不同的NAT後面同行

   假設客戶A和B都具有私有IP位址和謊言的背後

   不同的網絡位址轉換。在對等網絡應用程式

   對客戶A和B的服務者S運作的每個使用UDP端口1234一

   和B具有與伺服器s各自發起的UDP通信會話,

   導緻NAT A到配置設定它自己的公共UDP端口62000為A的會話

   與S,并導緻NAT B到其端口31000配置設定給B的會話

   與S,分别。

                                服務者S

                            18.181.0.31:1234

                                   |

                                   |

            + ---------------------- + ---------------------- +

            | |

          NAT通過NAT乙

福特,Srisuresh&凱格爾[第11頁]

跨中間件2003年10月網際網路草案P2P應用

    155.99.25.11:62000 138.76.29.7:31000

            | |

            | |

         用戶端A用戶端B

      10.0.0.1:1234 10.1.1.3:1234

   現在假設用戶端A希望建立一個UDP通訊

   會議直接與用戶端B.如果隻是簡單的發送UDP

   消息B的公網位址,138.76.29.7:31000,那麼NAT B就

   通常這些丢棄收到的消息(除非它是一個完整的錐形

   NAT),由于源位址和端口号不比對的那些

   的S,與原來的傳出會議正式成立。

   同樣,在B隻需發送一個UDP資訊給A的公鑰

   位址,NAT A将通常丢棄這些消息。

   假設不過,一個發送一個UDP資訊到B的公網位址,

   同時通過S中轉請求給B,問乙

   開始發送UDP消息到A的公共位址。 A的離任

   針對B的公網位址(138.76.29.7:31000)引起NAT消息

   一個開拓A的私有位址之間的新的通信會話

   與B的公網位址。同時,B的消息A的公用

   位址(155.99.25.11:62000)導緻NAT B到開辟新

   B的私有位址和A的公衆之間的通信會話

   位址。一旦新的UDP會話中的每個被打通

   方向,用戶端A和B可直接互相通信

   沒有“引進”伺服器S上進一步負擔

   在UDP打洞技術有幾個有用的屬性。一旦

   一個直接對等網絡的UDP連接配接已經兩者之間建立

   客戶背後中間件,要麼連接配接上一方可以在

   轉接管的“介紹人”角色,幫助對方

   建立更多的同行對等網絡連接配接,最大限度地減少

   初步引入伺服器S的應用程式做的負載

   不必試圖明确檢測到它是什麼樣的中間盒的

   後面,如果有[STUN],因為上面的程式将建立同行

   對等通信信道同樣,如果一種或兩種的客戶

   不正好是一個中間盒的後面。該打孔技術

   即使使用多個NAT的,其中的一個或兩個自動工作

   用戶端從公共網際網路經由兩個或更多的水準除去

   的位址轉換。

3.3.2。同樣的NAT之後

   現在考慮的場景,其中兩個用戶端(可能

   不知不覺)恰好位于同一NAT後面,是以

   位于同一專用IP位址空間。用戶端A

   建立了與服務者S UDP會話,到常見的NAT有

   配置設定公共端口号62000.用戶端B也同樣

福特,Srisuresh&凱格爾[第12頁]

跨中間件2003年10月網際網路草案P2P應用

   建立了個會議,并在NAT已指派公

   端口号62001。

                                服務者S

                            18.181.0.31:1234

                                   |

                                   |

                                  NAT

                         一個-S 155.99.25.11:62000

                         B-S 155.99.25.11:62001

                                   |

            + ---------------------- + ---------------------- +

            | |

         用戶端A用戶端B

      10.0.0.1:1234 10.1.1.3:1234

   假設A和B使用UDP打洞技術所概述

   如上所述使用服務者S建立通信信道作為

   介紹人。然後,A和B将學習對方的公網IP​​位址,

   和端口号由服務者S觀察,并開始發送各

   在這些公共位址的其他消息。兩個用戶端會

   能夠互相這種方式,隻要在NAT進行通信

   允許内部網絡打開翻譯UDP會話主機上

   與其他内部主機,而不僅僅是與外部主機。我們指

   這種情況稱為“環回譯”,因為資料包到達

   從專用網絡的NAT被轉換,然後“循環

   回“到專​​用網絡而不是通過被傳遞到

   公共網絡。例如,當A發送一個UDP資料包到B的公共

   位址,分組最初具有源IP位址和端口号

   的10.0.0.1:124和155.99.25.11:62001的目的地。該NAT

   收到此資料包,翻譯它有源

   155.99.25.11:62000(A的公網位址)和目的地

   10.1.1.3:1234,然後将其轉發到B.即使回環

   翻譯是由NAT,這個翻譯和轉發支援

   步驟是在這種情況下顯然不必要,并有可能增加

   潛伏期A和B之間的對話,以及負擔的NAT。

   這個問題的解決方案是簡單的,但是。當A和

   最初通過伺服器S交換彼此的位址資訊,他們

   應包括其自己的IP位址和端口号為“觀察到”

   本身,以及它們的位址由S的所觀察到的

   客戶然後同時開始在發送資料包到對方

   每個他們了解替代的位址,并使用第一

   位址通向成功的溝通。如果兩個用戶端

   處于同一NAT後面,然後引導到他們的私人包

   位址是可能首先到達,産生一個直接

   溝通管道不涉及NAT。如果兩個用戶端

   不同的NAT後面,然後引導到他們的私人包

福特,Srisuresh&凱格爾[第13頁]

跨中間件2003年10月網際網路草案P2P應用

   位址将無法到達對方所有,但用戶端将

   希望通過各自的公建立連接配接

   位址。重要的是,這些資料包在被認證

   一些方法,然而,由于在不同的NAT的情況下,這是完全

   可能直指B的私有位址A的郵件到達

   A的專用網絡,或者反之亦然一些其他無關的節點。

3.3.3。通過多層NAT分隔同行

   在涉及多個NAT裝置某些拓撲,這是不

   可能的兩個用戶端之間建立一個“最優”P2P路線

   它們而不拓撲的具體知識。考慮

   比如下面的情況。

                                服務者S

                            18.181.0.31:1234

                                   |

                                   |

                                 NAT點¯x

                         一個-S 155.99.25.11:62000

                         B-S 155.99.25.11:62001

                                   |

                                   |

            + ---------------------- + ---------------------- +

            | |

          NAT通過NAT乙

    192.168.1.1:30000 192.168.1.2:31000

            | |

            | |

         用戶端A用戶端B

      10.0.0.1:1234 10.1.1.3:1234

   假如NAT X是一個大型工業NAT通過網際網路部署

   服務提供商(ISP),很多客戶複用到一個很少公開

   IP位址和NAT A和B是小額消費NAT網關

   由兩個ISP的客戶複的獨立部署

   他們的私人家庭網絡到各自的ISP提供的IP

   位址。隻有Server S和NAT X擁有公網IP路由

   位址;而NAT A和NAT B所擁有的“公網”IP位址

   實際上民營ISP的尋址區域,而客戶​​A和

   B的依次位址是私有的NAT A的尋址領域

   和B,分别為。每個用戶端發起的出站連接配接

   伺服器之前為S,導緻NATA和NAT B分别建立一個單一的

   公共/私人翻譯,并導緻NAT X要建立

   公共/私有轉換為每個會話。

   現在,假設客戶A和B試圖建立一個直接的對于─

福特,Srisuresh&凱格爾[第14頁]

跨中間件2003年10月網際網路草案P2P應用

   同行UDP連接配接。最佳的方法是用戶端A

   在NAT B分别發送消息給客戶B的公網位址,

   192.168.1.2:31000在ISP的尋址區域,并為客戶B以

   在NAT B分别發送消息給A的公網位址,即

   192.168.1.1:30000。不幸的是,A和B都沒有辦法來學習這些

   位址,因為伺服器僅S看到“全球”公網位址

   的客戶,155.99.25.11:62000和155.99.25.11:62001。即使

   和B有一些方式來學習這些位址,仍然沒有

   保證他們會使用,因為位址配置設定

   在ISP的私有尋址區域可能與沖突無關

   在客戶的私人領域位址配置設定。用戶端

   是以别無選擇,隻能利用自己的全球公共位址作為

   用S看到了自己的P2P通信,并依靠NAT X來提供

   回送的翻譯。

3.3.4。一緻的端口綁定

   該打洞技術有一個主要的警告:它隻能當

   兩者的NAT是錐形的NAT(或非NAT防火牆),其保持

   一緻的端口給定之間的結合(私有IP,UDP私人)

   對和(公網IP,UDP公衆)對,隻要UDP端口

   正在使用中。配置設定為每個新會話的新的公共端口,作為

   對稱NAT呢,就不可能對一個UDP應用程式

   再利用已經建立的翻譯與通信

   不同的外部目的地。由于錐體的NAT是最

   廣泛,UDP打洞技術是相當廣泛

   适用;盡管如此部署NAT的一個相當大的部分是

   對稱和不支援的技術。

3.4。 UDP端口号預測

                                     |

                                     |

              | |

              | |

              | |

                                     |

                                     |

              | |

              | |

              | |

   失敗。

3.5。

   包。

   如果

   為了這

   理由;應用

4.1。

4.2。

  在這些情況下,

4.3。

4.4。

  在其

  端口。

  協定。

4.5。

5.1。

5.2。

   會話。

5.3。

5.3.1。

5.4。

5.5。

5.6。

   支援

6.1。

   域。

   好。

   顯然,

   消息。

6.2。

6.3。

   例如,假設

   請求。

   這個

   位置。

6.4。

   例如,一個

   這個

   第一名。

   在這

8.參考

8.1。規範性引用檔案

8.2。

           2002年9月。

9.作者位址

   麻省理工學院

   馬薩諸塞州劍橋02139

   版權所有。

   其他人,中方對此有何評論或以其他方式解釋衍生作品

   或在其實施協助可制備,複制,出版

   和分布,在全部或部分,沒有任何限制地

   包含在所有的拷貝和派生作品。但是,此

   文檔本身可以不以任何方式被修飾,例如通過除去

   版權聲明或引用網際網路協會或其他

   開發Internet标準在這種情況下的程式

   其次,或根據客戶要求把它翻譯成比其他語言

   英語。

   上述有限許可是永久性的,不會

   本文檔及其包含的資訊提供上

   “原樣”基礎上,網際網路協會和網際網路工程

   IETF拒絕所有明示或默示的擔保,包括

   在本文中将不侵犯任何權利或任何暗示的保證

   适銷性或适用于特定用途。