基於udp的穿越nat設備的方法及系統的製作方法
2023-08-02 14:30:36 2
專利名稱:基於udp的穿越nat設備的方法及系統的製作方法
技術領域:
本發明涉及計算機網絡通信技術領域,特別涉及一種基於UDP的穿越NAT設備的 方法及系統。
背景技術:
計算機網絡技術是通信技術與計算機技術相結合的產物。近年來,計算機網絡通 信在人們的日常生活中有著越來越重要的地位,用戶可以在計算機網絡上進行文字、聲音 和視頻的交流,共享文件、圖片和視頻信息等,從而方便用戶的生活、工作和學習。在使用計 算機網絡進行溝通交流的過程中,伺服器壓力非常巨大,為了降低伺服器的壓力,文件傳輸 及音視頻傳輸常採用端到端(peer to peer, P2P)的傳輸方式。如果兩個節點間存在NAT 設備,就會給傳輸造成很大障礙,因此需要在NAT設備之間建立通路,而ITEF RFC3489制定 了一些分類方法並對NAT進行了簡單分類,但是並未針對不同的NAT設備及其組合給出可 建立通路的方法。
發明內容
(一)要解決的技術問題本發明要解決的技術問題是如何穿越NAT設備,並在不同的NAT類型設備之間建 立通路。( 二 )技術方案為解決上述技術問題,本發明提供了一種基於UDP的穿越NAT設備的方法,其特徵 在於,包括以下步驟Sl 客戶端通過位於公網的探測伺服器獲取經過NAT映射後的IP位址和埠,並 探測自身的NAT類型;S2 發送方客戶端將經過NAT映射後的IP位址和埠及NAT類型通過位於公網的 SIP伺服器發送給接收方客戶端;S3 所述接收方客戶端根據雙方的NAT類型決策出雙方各自的穿越策略,並將穿 越策略通過所述SIP伺服器發送給發送方客戶端;S4 發送方客戶端和接收方客戶端根據穿越策略進行穿越,以建立發送方客戶端 和接收方客戶端的UDP連接。其中,所述步驟Sl中對NAT類型的探測在所述客戶端登錄服務端時進行,並將探 測到的NAT類型緩存到客戶端本地。其中,所述步驟Sl中獲取經過NAT映射後的IP位址和埠的步驟包括所述客戶端向所述探測伺服器發送數據包;所述探測伺服器收到所述數據包後將所述經過NAT映射後的IP位址和埠發送 給所述客戶端。其中,所述NAT類型包括開放型、防火牆型、堵塞型、對稱型、全錐型、IP限制錐型及埠限制錐型,所述步驟Sl中客戶端探測自身NAT類型的步驟包括SlOl 向所述探測伺服器發送探測請求,要求探測伺服器返回給客 戶端數據所使 用的IP和埠,與客戶端連接的探測伺服器的IP和埠都相同;S102:判斷是否收到探測伺服器的回應數據包,若未收到探測伺服器的回應數據 包,則NAT類型為堵塞類型,若收到探測伺服器的回應數據包,則執行步驟S103 ;S103 檢查所述回應數據包中的IP是否和客戶端本地IP相同,若相同,則執行步 驟S104,否則執行步驟S106 ;S104:再次向所述探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據 所使用的IP和埠,與客戶端連接的探測伺服器的IP和埠都不相同;S105:判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為 開放類型,否則為防火牆型;S106 記錄步驟S103的回應數據包中的埠,並檢測NAT屬性;S107:再次向所述探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據 所使用的IP和埠,與客戶端連接的探測伺服器的IP和埠都不相同;S108:判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為 全錐形,否則執行步驟S109 ;S109:向另一臺探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據所 使用的IP和埠,與客戶端連接的探測伺服器的IP和埠都相同;SllO 判斷埠是否和步驟S106記錄的埠相同,若埠和步驟S106記錄的埠 不相同,則NAT類型為對稱型,否則執行步驟Slll ;Slll 再次向所述另一臺探測伺服器發送探測請求,要求探測伺服器返回給客戶 端數據所使用的IP和埠,與客戶端連接的探測伺服器的IP相同但埠不相同;S112:判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為 IP限制錐型,否則為埠限制錐型。其中,所述步驟S4中根據穿越策略穿越過程中,當客戶端A的NAT為開放型,客戶 端B的NAT為除了防火牆型的其它類型時,包括以下步驟B端向A端發送探測包,等待探測回應;A端收到探測包後向B端發送探測回應;
B端收到探測回應後,探測結束。其中,所述步驟S4中根據穿越策略穿越過程中,當客戶端A的NAT為全錐型或IP 限制錐形,客戶端B的NAT為除了防火牆型的其它類型時,包括以下步驟A端向B端任一埠發送打洞包,以在NAT設備上建立A到B的路由表;B端向A端發送探測包,等待探測回應;A端收到探測包後向B端發送探測回應;B端收到探測回應後,探測結束。其中,所述步驟S4中根據穿越策略穿越過程中,當客戶端A和B的NAT都為埠 限制錐型或防火牆型時,包括以下步驟B端向A端對應的應用程式埠發送打洞包,以在NAT設備上建立B到A的路由 表;
A端向B端發送探測包,等待探測回應; B端收到探測包後向A端發送探測回應;
A端收到探測回應後,探測結束。其中,所述步驟S4中根據穿越策略穿越過程中,當客戶端A的NAT為埠限制錐 形或防火牆型,客戶端B的NAT為對稱型時,包括以下步驟A端向B端對應的應用程式埠及所述應用程式埠的臨近埠發送打洞包,以 在NAT設備上建立A到B的路由表,所述臨近埠為按埠號順序在所述應用程式埠的 前後各5個埠;B端向A端發送探測包,等待探測回應;A端收到探測包後向B端發送探測回應;B端收到探測回應後,探測結束。本發明還提供了一種基於UDP的穿越NAT設備的系統,包括探測模塊,用於客戶端通過位於公網的探測伺服器獲取經過NAT映射後的IP位址 和埠,並探測自身的NAT類型;地址及NAT類型傳輸模塊,用於發送方客戶端將經過NAT映射後的IP位址和埠 及NAT類型通過位於公網的SIP伺服器發送給接收方客戶端;穿越策略制定模塊,用於所述接收方客戶端根據雙方的NAT類型決策出雙方各自 的穿越策略,並將穿越策略通過所述SIP伺服器發送給發送方客戶端;穿越模塊,用於發送方客戶端和接收方客戶端根據穿越策略進行穿越,以建立發 送方客戶端和接收方客戶端的UDP連接。(三)有益效果本發明通過公網的探測伺服器和SIP伺服器獲得經過NAT轉換後的IP和埠,並 制定不同NAT類型之間了穿越策略,建立了不同NAT類型的通路,以該通路傳輸大文件(如 音視頻文件)時降低了伺服器的負荷,提高了傳輸效率。
圖1是本發明實施例的一種基於UDP的穿越NAT設備的方法流程圖;圖2是圖1方法中探測NAT類型的流程圖;圖3是圖1方法中穿越不同NAT類型設備建立通路的流程圖;圖4本發明實施例的一種基於UDP的穿越NAT設備的系統結構示意圖。
具體實施例方式下面結合附圖和實施例,對本發明的具體實施方式
作進一步詳細描述。以下實施 例用於說明本發明,但不用來限制本發明的範圍。如圖1所示,本發明實施例的基於用戶數據報協議(User DatagramProtocol, UDP)的跨網絡地址轉換(Network Address Translation, NAT)設備的文件傳輸方法流程 圖。包括步驟Si,客戶端通過位於公網的探測伺服器獲取經過NAT映射後的IP位址和端 口,並探測自身的NAT類型,NAT類型包括開放型(open)、防火牆型(firewall)、堵塞型(block)、對稱型(symmetrical)、全錐型(full cone)、IP 限制錐型(IP restrict cone) 及埠限制錐型(portrestrict cone)。其中,探測伺服器為 STUN (Simple Traversal of UDPover NATs)伺服器。獲取經過NAT映射後的IP位址和埠的步驟包括客戶端向STUN 伺服器發送stun格式數據包;STUN伺服器收到該數據包後將經過NAT映射後的IP位址和 埠發送給客戶端,具體地,發送一個stun格式數據包,其中包含經過NAT映射後的IP地 址和埠,客戶端收到該數據包後就可得到經過NAT映射後的IP位址和埠。探測NAT類 型時,客戶端通過與STUN伺服器的多次交互,獲得自己的NAT類型,具體步驟如圖2所示, 包括S201 向所述探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據所使 用的IP和埠,與客戶端連接的探測伺服器的IP和埠都相同(探測伺服器可以配置多 個IP和埠,客戶端也可以 要求探測伺服器將已配置的其他IP和埠返回數據給客戶 端)。S202:判斷是否收到探測伺服器的回應數據包,若未收到探測伺服器的回應數據 包,則NAT類型為堵塞類型,若收到探測伺服器的回應數據包,則執行步驟S203。S203 檢查所述回應數據包中的IP是否和客戶端本地IP相同,若相同,表明客戶 端沒有位於NAT設備之後,則檢查防火牆,即執行步驟S204,否則執行步驟S206。S204:再次向所述探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據 所使用的IP和埠,與客戶端連接的探測伺服器的IP和埠都不相同。S205:判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為 開放類型,否則為防火牆型。S206 記錄步驟S203的回應數據包中的埠,並檢測NAT屬性。S207:再次向所述探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據 所使用的IP和埠,與客戶端連接的探測伺服器的IP和埠都不相同。S208:判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為 全錐形,否則執行步驟S209。S209:向另一臺探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據所 使用的IP和埠,與客戶端連接的探測伺服器的IP和埠都相同。S210 判斷埠是否和步驟S206記錄的埠相同,若埠和步驟S206記錄的埠 不相同,則NAT類型為對稱型,否則執行步驟S211。S211 再次向所述另一臺探測伺服器發送探測請求,要求探測伺服器返回給客戶 端數據所使用的IP和埠,與客戶端連接的探測伺服器的IP相同但埠不相同。S212:判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為 IP限制錐型,否則為埠限制錐型。客戶端獲得自身的經過NAT映射後的IP位址和埠優選在登錄伺服器時進行,並 把NAT類型緩存在本地,避免重複探測。步驟S2,發送方客戶端將經過NAT映射後的IP位址和埠及NAT類型通過位於公 網的SIP伺服器發送給接收方客戶端。步驟S3,接收方客戶端根據雙方的NAT類型決策出雙方各自的穿越策略,並將穿 越策略通過SIP伺服器發送給發送方客戶端。
步驟S4,發送方客戶端和接收方客戶端根據穿越策略進行穿越。穿越步驟如圖3 所示。當客戶端A的NAT為開放型,客戶端B的NAT為除了堵塞型的其它類型時,如圖3 中(a)所示,包括步驟B端向A端發送探測包,等待探測回應;A端收到探測包後向B端發送探測回應; B端收到探測回應後,探測結束。當客戶端A的NAT為全錐型或IP限制錐形,客戶端B的NAT為除了堵塞型的其它 類型時,如圖3中(b)所示,包括步驟A端向B端任一埠發送打洞包,以在NAT設備上建立A到B的路由表,發送打洞 包是因為NAT下的客戶端A必須向客戶端B發送過數據或建立過連接,否則,NAT會過濾B 發給A的所有數據包;B端向A端發送探測包,等待探測回應;A端收到探測包後向B端發送探測回應;B端收到探測回應後,探測結束。當客戶端A和B的NAT都為埠限制錐型或防火牆型時,如圖3中(c)所示,包括 步驟B端向A端對應的應用程式埠發送打洞包,以在NAT設備上建立B到A的路由 表;A端向B端發送探測包,等待探測回應;B端收到探測包後向A端發送探測回應;A端收到探測回應後,探測結束。當客戶端A的NAT為埠限制錐形或防火牆型,客戶端B的NAT為對稱型時,如圖 3中⑷所示,包括步驟A端向B端對應的應用程式埠及對應的應用程式埠的臨近埠發送打洞包, 以在NAT設備上建立A到B的路由表,所述臨近埠為按埠號順序在對應的應用程式端 口的前後各5個埠,如:80埠的前後為:75、76、77、78、79和81、82、83、84、85埠 ;B端向A端發送探測包,等待探測回應;A端收到探測包後向B端發送探測回應;B端收到探測回應後,探測結束。其中,上述打洞包,探測包,探測回應都為stun格式數據包。上述探測結束後即建 立了客戶端A和B的跨NAT設備的UDP連接。本發明還公開了一種基於UDP的穿越NAT設備的系統,如圖4所示,包括探測模 塊,用於客戶端通過位於公網的探測伺服器獲取經過NAT映射後的IP位址和埠,並探測 自身的NAT類型;地址及NAT類型傳輸模塊,用於發送方客戶端將經過NAT映射後的IP地 址和埠及NAT類型通過位於公網的SIP伺服器發送給接收方客戶端;穿越策略制定模塊, 用於所述接收方客戶端根據雙方的NAT類型決策出雙方各自的穿越策略,並將穿越策略通 過所述SIP伺服器發送給發送方客戶端;穿越模塊,用於發送方客戶端和接收方客戶端根 據穿越策略進行穿越,以建立發送方客戶端和接收方客戶端的UDP連接。
本發明廣泛用在位於NAT設備後的計算機節點大量交互數據的情形,尤其用於即 時通信軟體的客戶端位於NAT設備之後,且要傳輸視頻、音頻等文件時能夠穿越NAT設備建 立UDP連接,以傳輸文件。
以上實施方式僅用於說明本發明,而並非對本發明的限制,有關技術領域的普通 技術人員,在不脫離本發明的精神和範圍的情況下,還可以做出各種變化和變型,因此所有 等同的技術方案也屬於本發明的範疇,本發明的專利保護範圍應由權利要求限定。
權利要求
一種基於UDP的穿越NAT設備的方法,其特徵在於,包括以下步驟S1客戶端通過位於公網的探測伺服器獲取經過NAT映射後的IP位址和埠,並探測自身的NAT類型;S2發送方客戶端將經過NAT映射後的IP位址和埠及NAT類型通過位於公網的SIP伺服器發送給接收方客戶端;S3所述接收方客戶端根據雙方的NAT類型決策出雙方各自的穿越策略,並將穿越策略通過所述SIP伺服器發送給發送方客戶端;S4發送方客戶端和接收方客戶端根據穿越策略進行穿越,以建立發送方客戶端和接收方客戶端的UDP連接。
2.如權利要求1所述的基於UDP的穿越NAT設備的方法,其特徵在於,所述步驟Sl中 對NAT類型的探測在所述客戶端登錄服務端時進行,並將探測到的NAT類型緩存到客戶端 本地。
3.如權利要求1或2所述的基於UDP的穿越NAT設備的方法,其特徵在於,所述步驟 Sl中獲取經過NAT映射後的IP位址和埠的步驟包括所述客戶端向所述探測伺服器發送數據包;所述探測伺服器收到所述數據包後將所述經過NAT映射後的IP位址和埠發送給所 述客戶端。
4.如權利要求1或2所述的基於UDP的穿越NAT設備的方法,其特徵在於,所述NAT類 型包括開放型、防火牆型、堵塞型、對稱型、全錐型、IP限制錐型及埠限制錐型,所述步 驟Sl中客戶端探測自身NAT類型的步驟包括SlOl 向所述探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據所使用的 IP和埠,與客戶端連接的探測伺服器的IP和埠都相同;S102:判斷是否收到探測伺服器的回應數據包,若未收到探測伺服器的回應數據包,則 NAT類型為堵塞類型,若收到探測伺服器的回應數據包,則執行步驟S103 ;5103檢查所述回應數據包中的IP是否和客戶端本地IP相同,若相同,則執行步驟 S104,否則執行步驟S106 ;5104再次向所述探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據所使 用的IP和埠,與客戶端連接的探測伺服器的IP和埠都不相同;S105:判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為開放 類型,否則為防火牆型;5106記錄步驟S103的回應數據包中的埠,並檢測NAT屬性;5107再次向所述探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據所使 用的IP和埠,與客戶端連接的探測伺服器的IP和埠都不相同;5108判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為全錐 形,否則執行步驟S109;S109:向另一臺探測伺服器發送探測請求,要求探測伺服器返回給客戶端數據所使用 的IP和埠,與客戶端連接的探測伺服器的IP和埠都相同;SllO 判斷埠是否和步驟S106記錄的埠相同,若埠和步驟S106記錄的埠不相 同,則NAT類型為對稱型,否則執行步驟Slll ;Slll 再次向所述另一臺探測伺服器發送探測請求,要求探測伺服器返回給客戶端數 據所使用的IP和埠,與客戶端連接的探測伺服器的IP相同但埠不相同;S112:判斷是否收到探測伺服器的回應數據包,若收到回應數據包,則NAT類型為IP限 制錐型,否則為埠限制錐型。
5.如權利要求4所述的基於UDP的穿越NAT設備的方法,其特徵在於,所述步驟S4中 根據穿越策略穿越過程中,當客戶端A的NAT為開放型,客戶端B的NAT為除了防火牆型的 其它類型時,包括以下步驟B端向A端發送探測包,等待探測回應; A端收到探測包後向B端發送探測回應; B端收到探測回應後,探測結束。
6.如權利要求4所述的基於UDP的穿越NAT設備的方法,其特徵在於,所述步驟S4中 根據穿越策略穿越過程中,當客戶端A的NAT為全錐型或IP限制錐形,客戶端B的NAT為 除了防火牆型的其它類型時,包括以下步驟A端向B端任一埠發送打洞包,以在NAT設備上建立A到B的路由表; B端向A端發送探測包,等待探測回應; A端收到探測包後向B端發送探測回應; B端收到探測回應後,探測結束。
7.如權利要求4所述的基於UDP的穿越NAT設備的方法,其特徵在於,所述步驟S4中 根據穿越策略穿越過程中,當客戶端A和B的NAT都為埠限制錐型或防火牆型時,包括以 下步驟B端向A端對應的應用程式埠發送打洞包,以在NAT設備上建立B到A的路由表; A端向B端發送探測包,等待探測回應; B端收到探測包後向A端發送探測回應; A端收到探測回應後,探測結束。
8.如權利要求4所述的基於UDP的穿越NAT設備的方法,其特徵在於,所述步驟S4中 根據穿越策略穿越過程中,當客戶端A的NAT為埠限制錐形或防火牆型,客戶端B的NAT 為對稱型時,包括以下步驟A端向B端對應的應用程式埠及所述應用程式埠的臨近埠發送打洞包,以在NAT 設備上建立A到B的路由表,所述臨近埠為按埠號順序在所述應用程式埠的前後各 5個埠 ;B端向A端發送探測包,等待探測回應; A端收到探測包後向B端發送探測回應; B端收到探測回應後,探測結束。
9.一種基於UDP的穿越NAT設備的系統,其特徵在於,包括探測模塊,用於客戶端通過位於公網的探測伺服器獲取經過NAT映射後的IP位址和端 口,並探測自身的NAT類型;地址及NAT類型傳輸模塊,用於發送方客戶端將經過NAT映射後的IP位址和埠及 NAT類型通過位於公網的SIP伺服器發送給接收方客戶端;穿越策略制定模塊,用於所述接收方客戶端根據雙方的NAT類型決策出雙方各自的穿越策略,並將穿越策略通過所述SIP伺服器發送給發送方客戶端;穿越模塊,用於發送方客戶端和接收方客戶端根據穿越策略進行穿越,以建立發送方 客戶端和接收方客戶端的UDP連接。
全文摘要
本發明公開了一種基於UDP的穿越NAT設備的方法,包括客戶端通過位於公網的探測伺服器獲取經過NAT映射後的IP位址和埠,並探測自身的NAT類型,NAT類型包括開放型、防火牆型、堵塞型、對稱型、全錐型、IP限制錐型及埠限制錐型;發送方客戶端將經過NAT映射後的IP位址和埠及NAT類型通過位於公網的SIP伺服器發送給接收方客戶端;接收方客戶端根據雙方的NAT類型決策出雙方各自的穿越策略,並將穿越策略通過所述SIP伺服器發送給發送方客戶端;發送方客戶端和接收方客戶端根據穿越策略進行穿越,以建立雙方客戶端的UDP連接。本發明還公開了一種基於UDP的穿越NAT設備的系統。本發明在不同類型NAT之間建立UDP通路,在傳輸大文件時減小伺服器的負荷。
文檔編號H04L29/12GK101938532SQ20101028413
公開日2011年1月5日 申請日期2010年9月17日 優先權日2010年9月17日
發明者崔曉宇, 馬昭 申請人:北京神州泰嶽軟體股份有限公司