UDP打洞技術2

來源:互聯網
上載者:User
這篇文章主要要研究的,就是非常有名的"UDP打洞技術",UDP打洞技術依賴於由公用防火牆和cone NAT,允許適當的有計劃的端對端應用程式通過NAT"打洞",即使當雙方的主機都處於NAT之後。這種技術在 RFC3027的5.1節[NAT PROT] 中進行了重點介紹,並且在Internet[KEGEL]中進行了非正式的描敘,還應用到了最新的一些協議,例如[TEREDO,ICE]協議中。不過,我們要注意的是,"術"如其名,UDP打洞技術的可靠性全都要依賴於UDP。 這裡將考慮兩種典型情境,來介紹串連的雙方應用程式如何按照計劃的進行通訊的,第一種情境,我們假設兩個用戶端都處於不同的NAT之後;第二種情境,我們假設兩個用戶端都處於同一個NAT之後,但是它們彼此都不知道(他們在同一個NAT中)。
 處於不同NAT之後的用戶端通訊 

我們假設 Client A 和 Client B 都擁有自己的私人IP地址,並且都處在不同的NAT之後,端對端的程式運行於 CLIENT A,CLIENT B,S之間,並且它們都開放了UDP連接埠1234。 CLIENT A和CLIENT B首先分別與S建立通訊會話,這時NAT A把它自己的UDP連接埠62000分配給CLIENT A與S的會話,NAT B也把自己的UDP連接埠31000分配給CLIENT B與S的會話。如所示:

 

 

假如這個時候 CLIENT A 想與 CLIENT B建立一條UDP通訊直連,如果 CLIENT A只是簡單的發送一個UDP資訊到CLIENT B的公網地址138.76.29.7:31000的話,NAT B會不加考慮的將這個資訊丟棄(除非NAT B是一個 full cone NAT),因為 這個UDP資訊中所包含的地址資訊,與CLIENT B和伺服器S建立串連時儲存在NAT B中的伺服器S的地址資訊不符。同樣的,CLIENT B如果做同樣的事情,發送的UDP資訊也會被 NAT A 丟棄。

 

假如 CLIENT A 開始發送一個 UDP 資訊到 CLIENT B 的公網地址上,與此同時,他又通過S中轉寄送了一個邀請資訊給CLIENT B,請求CLIENT B也給CLIENT A發送一個UDP資訊到 CLIENT A的公網地址上。這時CLIENT A向CLIENT B的公網IP(138.76.29.7:31000)發送的資訊導致 NAT A 開啟一個處於 CLIENT A的私人地址和CLIENT B的公網地址之間的新的通訊會話,與此同時,NAT B 也開啟了一個處於CLIENT B的私人地址和CLIENT A的公網地址(155.99.25.11:62000)之間的新的通訊會話。一旦這個新的UDP會話各自向對方開啟了,CLIENT A和CLIENT B之間就可以直接通訊,而無需S來牽線搭橋了。(這就是所謂的打洞技術)!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.