專利名稱:穿透nat設(shè)備的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)通信技術(shù)領(lǐng)域,特別是涉及一種穿透NAT設(shè)備的方法。
背景技術(shù):
目前,隨著互聯(lián)網(wǎng)用戶的不斷增多,互聯(lián)網(wǎng)所使用的互聯(lián)網(wǎng)協(xié)議第四版(IPv4)地 址資源已經(jīng)非常緊張了,根本不能夠滿足讓每一位用戶都擁有一個(gè)能夠直接訪問因特網(wǎng)的 IPv4地址,即外網(wǎng)IP地址。大量的企業(yè)單位也只擁有少量的外網(wǎng)IP地址,因此企業(yè)內(nèi)部只 能使用大量不能直接訪問因特網(wǎng)的內(nèi)網(wǎng)(即本地)IP地址來(lái)滿足企業(yè)內(nèi)用戶的內(nèi)部網(wǎng)絡(luò)通 信需求,為了讓企業(yè)內(nèi)的用戶能夠使用互聯(lián)網(wǎng)資源,企業(yè)一般會(huì)采用NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)設(shè)備將企業(yè)內(nèi)部的內(nèi)網(wǎng)IP地址轉(zhuǎn)換成能夠直接訪問互聯(lián)網(wǎng) 的外網(wǎng)IP地址,使得企業(yè)內(nèi)的一個(gè)或多個(gè)用戶可以使用一個(gè)外網(wǎng)IP地址來(lái)訪問互聯(lián)網(wǎng)。NAT設(shè)備的使用雖然能暫時(shí)緩解IPv4地址資源的危機(jī),但是,由于NAT設(shè)備會(huì)限制 互聯(lián)網(wǎng)用戶對(duì)位于NAT設(shè)備后的企業(yè)內(nèi)部用戶的訪問,所以其會(huì)影響互聯(lián)網(wǎng)的互通性。為 了能夠讓位于互聯(lián)網(wǎng)中的用戶能夠訪問位于NAT設(shè)備后的企業(yè)內(nèi)部用戶,需要采用一些策 略來(lái)穿透NAT設(shè)備。根據(jù)互聯(lián)網(wǎng)工程任務(wù)組(IETF)制定的STUN (Simple Traversal ofUDP Through NATs,簡(jiǎn)單UDP報(bào)文穿透NAT)協(xié)議的檢測(cè)流程,能夠檢測(cè)出的NAT設(shè)備類型如表 1所示
類型名稱穿透屬性、外網(wǎng)IP和端口映射屬性NATO端口不規(guī)則型NAT只能被信任IP的信任端口穿透,每次向陌生IP或信 任IP的陌生端口發(fā)送數(shù)據(jù)時(shí)映射端口增量不規(guī)則。NATlSymmetric(對(duì)稱型)NAT只能被信任IP的信任端口穿透,每次向陌生IP或信 任IP的陌生端口發(fā)送數(shù)據(jù)時(shí)映射端口均增加1。NAT2Restricted-Cone(受限圓錐型) NAT能夠被信任IP的任何端口穿透,映射端口固定。Port-Restricted-Cone(端 口 受限圓 錐型)NAT只能被信任IP的信任端口穿透,映射端口固定。NAT3Full Cone(全圓錐型)NAT能夠被任何IP的任何端口穿透,映射端口固定。NAT4Open Net(開放網(wǎng)絡(luò)型)NAT能夠被任何IP的任何端口穿透,外網(wǎng)節(jié)點(diǎn),其內(nèi)網(wǎng) IP,端口與外網(wǎng)IP、端口一致,不需要映射。
5
表 1由于NATO映射端口增加規(guī)律不規(guī)則,只可能讓它主動(dòng)連接NAT3或NAT4,不可能向 它進(jìn)行穿透。NATl每次向陌生IP或信任IP的陌生端口發(fā)送數(shù)據(jù),其映射端口都增加1,做 到NATl與NAT2甚至NATl與NATl之間的穿透都是非常困難的。NAT2是映射端口固定的 NAT,業(yè)界很多P2P(peer-to-peer,端到端)軟件利用互相打洞的方法做到了如表2所示的 各種NAT類型之間的穿透。
權(quán)利要求
一種穿透網(wǎng)絡(luò)地址轉(zhuǎn)換NAT設(shè)備的方法,其特征在于,該方法包括步驟20、檢測(cè)NAT節(jié)點(diǎn)A的設(shè)備類型;步驟30、根據(jù)NAT節(jié)點(diǎn)A的設(shè)備類型進(jìn)行NAT設(shè)備穿透。
2.如權(quán)利要求1所述的方法,其特征在于,步驟20之前,該方法進(jìn)一步包括 步驟10、對(duì)NAT節(jié)點(diǎn)A的指定端口進(jìn)行通用即插即用UPNP操作。
3.如權(quán)利要求1所述的方法,其特征在于,步驟20所述的設(shè)備類型具體包括端口不 規(guī)則型NAT、對(duì)稱1型NAT、對(duì)稱2型NAT、受限圓錐型NAT、端口受限圓錐型NAT、全圓錐型 NAT和開放網(wǎng)絡(luò)型NAT ;其中,所述端口不規(guī)則型NAT只能被信任IP的信任端口穿透,每次向陌生IP或信任IP的陌 生端口發(fā)送數(shù)據(jù)時(shí)映射端口增量不規(guī)則;所述對(duì)稱1型NAT只能被信任IP的信任端口穿透,每次向陌生IP或信任IP的陌生端 口發(fā)送數(shù)據(jù)時(shí)映射端口增加1 ;所述對(duì)稱2型NAT只能被信任IP的信任端口穿透,每次向陌生IP發(fā)送數(shù)據(jù)時(shí)映射端 口增加1 ;所述受限圓錐型NAT能夠被信任IP的任何端口穿透,映射端口固定; 所述端口受限圓錐型NAT只能被信任IP的信任端口穿透,映射端口固定; 所述全圓錐型NAT能夠被任何IP的任何端口穿透,映射端口固定; 所述開放網(wǎng)絡(luò)型NAT能夠被任何IP的任何端口穿透,其內(nèi)網(wǎng)IP和端口與外網(wǎng)IP和端口 一致。
4.如權(quán)利要求3所述的方法,其特征在于,當(dāng)NAT節(jié)點(diǎn)A為對(duì)稱1型NAT或?qū)ΨQ2型 NAT, NAT節(jié)點(diǎn)B為受限圓錐型NAT或端口受限圓錐型NAT,且NAT節(jié)點(diǎn)A已知NAT節(jié)點(diǎn)B的 NAT信息時(shí),所述步驟30具體包括步驟SlOl =NAT節(jié)點(diǎn)A獲取本地最新外網(wǎng)端口,并向其連接的所有節(jié)點(diǎn)發(fā)送尋找NAT節(jié) 點(diǎn)B的指令,該指令攜帶NAT節(jié)點(diǎn)A的NAT信息;步驟S102 接收到所述指令的握手節(jié)點(diǎn)C,確定自身與NAT節(jié)點(diǎn)B相連接后,向NAT節(jié) 點(diǎn)B發(fā)送一個(gè)通知指令,該指令攜帶NAT節(jié)點(diǎn)A的NAT信息;步驟S103 收到所述通知指令后,NAT節(jié)點(diǎn)B向NAT節(jié)點(diǎn)A打洞,且打洞的目標(biāo)端口以 NAT節(jié)點(diǎn)A的最新外網(wǎng)端口為基準(zhǔn)連續(xù)增長(zhǎng),同時(shí),NAT節(jié)點(diǎn)A根據(jù)NAT節(jié)點(diǎn)B的NAT信息 向所述NAT節(jié)點(diǎn)B打洞,直到NAT節(jié)點(diǎn)A或NAT節(jié)點(diǎn)B中任意一方接收到對(duì)方的打洞數(shù)據(jù), 則實(shí)現(xiàn)了 NAT節(jié)點(diǎn)A到NAT節(jié)點(diǎn)B的穿透。
5.如權(quán)利要求3所述的方法,其特征在于,當(dāng)NAT節(jié)點(diǎn)A為對(duì)稱2型NAT,NAT節(jié)點(diǎn)B 為對(duì)稱1型NAT或?qū)ΨQ2型NAT,且NAT節(jié)點(diǎn)A已知NAT節(jié)點(diǎn)B的NAT信息時(shí),所述步驟30 具體包括步驟S201 =NAT節(jié)點(diǎn)A向其連接的所有節(jié)點(diǎn)發(fā)送尋找NAT節(jié)點(diǎn)B的指令,該指令攜帶 NAT節(jié)點(diǎn)A的NAT信息;步驟S202 接收到所述指令的握手節(jié)點(diǎn)C,確定自身與NAT節(jié)點(diǎn)B相連接后,向NAT節(jié) 點(diǎn)B發(fā)送一個(gè)通知指令,該指令攜帶NAT節(jié)點(diǎn)A的NAT信息,并同時(shí)向NAT節(jié)點(diǎn)A發(fā)送確認(rèn) 指令,將找到NAT節(jié)點(diǎn)B的消息通知NAT節(jié)點(diǎn)A ;步驟S203 收到所述通知指令后,NAT節(jié)點(diǎn)B獲取本地最新外網(wǎng)端口,并通過握手節(jié)點(diǎn)C將所述NAT節(jié)點(diǎn)B的最新外網(wǎng)端口發(fā)送給NAT節(jié)點(diǎn)A ;同時(shí),收到所述確認(rèn)指令后,NAT節(jié) 點(diǎn)A獲取本地最新外網(wǎng)端口,并通過握手節(jié)點(diǎn)C將所述NAT節(jié)點(diǎn)A的最新外網(wǎng)端口發(fā)送給 NAT節(jié)點(diǎn)B ;步驟S204 =NAT節(jié)點(diǎn)A和NAT節(jié)點(diǎn)B分別接收到對(duì)方的最新外網(wǎng)端口后同時(shí)向?qū)Ψ酱?洞,且打洞的目標(biāo)端口以對(duì)方的最新外網(wǎng)端口為基準(zhǔn)連續(xù)增長(zhǎng);步驟S205 =NAT節(jié)點(diǎn)A或NAT節(jié)點(diǎn)B接收到對(duì)方發(fā)送來(lái)的打洞數(shù)據(jù),則實(shí)現(xiàn)了 NAT節(jié)點(diǎn) A到NAT節(jié)點(diǎn)B的穿透。
6.如權(quán)利要求3所述的方法,其特征在于,當(dāng)NAT節(jié)點(diǎn)A和NAT節(jié)點(diǎn)B均為對(duì)稱1型 NAT,且NAT節(jié)點(diǎn)A已知NAT節(jié)點(diǎn)B的NAT信息時(shí),所述步驟30具體包括步驟S301 =NAT節(jié)點(diǎn)A向其連接的所有節(jié)點(diǎn)發(fā)送尋找NAT節(jié)點(diǎn)B的指令,該指令攜帶 NAT節(jié)點(diǎn)A的NAT信息;步驟S302 接收到所述指令的握手節(jié)點(diǎn)C,確定自身與NAT節(jié)點(diǎn)B相連接后,向NAT節(jié) 點(diǎn)B發(fā)送一個(gè)通知指令,該指令攜帶NAT節(jié)點(diǎn)A的NAT信息,并同時(shí)向NAT節(jié)點(diǎn)A發(fā)送確認(rèn) 指令,將找到NAT節(jié)點(diǎn)B的消息通知NAT節(jié)點(diǎn)A ;步驟S303 收到所述通知指令后,NAT節(jié)點(diǎn)B獲取本地最新外網(wǎng)端口,并通過握手節(jié)點(diǎn) C將所述NAT節(jié)點(diǎn)B的最新外網(wǎng)端口發(fā)送給NAT節(jié)點(diǎn)A ;同時(shí),收到所述確認(rèn)指令后,NAT節(jié) 點(diǎn)A獲取本地最新外網(wǎng)端口,并通過握手節(jié)點(diǎn)C將所述NAT節(jié)點(diǎn)A的最新外網(wǎng)端口發(fā)送給 NAT節(jié)點(diǎn)B ;步驟S304 =NAT節(jié)點(diǎn)A和NAT節(jié)點(diǎn)B分別接收到對(duì)方的最新外網(wǎng)端口后同時(shí)向?qū)Ψ酱?洞,且打洞的目標(biāo)端口以對(duì)方的最新外網(wǎng)端口為基準(zhǔn),由外界因素導(dǎo)致的最新外網(wǎng)端口增 加和累計(jì)到本次打洞導(dǎo)致的最新外網(wǎng)端口增加而決定;步驟S305 =NAT節(jié)點(diǎn)A或NAT節(jié)點(diǎn)B接收到對(duì)方發(fā)送來(lái)的打洞數(shù)據(jù),則實(shí)現(xiàn)了 NAT節(jié)點(diǎn) A到NAT節(jié)點(diǎn)B的穿透。
7.如權(quán)利要求6所述的方法,其特征在于,步驟S304之后,如果NAT節(jié)點(diǎn)A或NAT節(jié) 點(diǎn)B沒有接收到對(duì)方的打洞數(shù)據(jù),則所述方法進(jìn)一步包括NAT節(jié)點(diǎn)A通過握手節(jié)點(diǎn)C通知 NAT節(jié)點(diǎn)B獲取所述NAT節(jié)點(diǎn)B的最新外網(wǎng)端口并發(fā)送給所述NAT節(jié)點(diǎn)A,同時(shí),NAT節(jié)點(diǎn)B 通過握手節(jié)點(diǎn)C通知NAT節(jié)點(diǎn)A獲取所述NAT節(jié)點(diǎn)A的最新外網(wǎng)端口并發(fā)送給所述NAT節(jié) 點(diǎn)B,并再重復(fù)執(zhí)行一次步驟S304。
8.如權(quán)利要求4所述的方法,其特征在于,步驟S103中所述NAT節(jié)點(diǎn)B向NAT節(jié)點(diǎn)A 打洞包括所述NAT節(jié)點(diǎn)B依次向所述NAT節(jié)點(diǎn)A中,從NAT節(jié)點(diǎn)A的最新外網(wǎng)端口開始, 連續(xù)增長(zhǎng)的端口打洞;所述NAT節(jié)點(diǎn)A向NAT節(jié)點(diǎn)B打洞具體包括;所述NAT節(jié)點(diǎn)A向所述 NAT節(jié)點(diǎn)B的固定外網(wǎng)端口打洞。
9.如權(quán)利要求5所述的方法,其特征在于,步驟S204中所述NAT節(jié)點(diǎn)A和NAT節(jié)點(diǎn)B 同時(shí)向?qū)Ψ酱蚨窗ㄋ鯪AT節(jié)點(diǎn)A依次向所述NAT節(jié)點(diǎn)B中,從NAT節(jié)點(diǎn)B的最新外網(wǎng)端口開始,連續(xù)增 長(zhǎng)的端口打洞;同時(shí),所述NAT節(jié)點(diǎn)B依次向所述NAT節(jié)點(diǎn)A中,從NAT節(jié)點(diǎn)A的最新外網(wǎng)端口開始,連續(xù)增 長(zhǎng)的端口打洞。
10.如權(quán)利要求4-9中任一項(xiàng)所述的方法,其特征在于,所述握手節(jié)點(diǎn)C為分別與NAT節(jié)點(diǎn)A和NAT節(jié)點(diǎn)B已經(jīng)實(shí)現(xiàn)穿透的節(jié)點(diǎn);所述NAT信息包括NAT類型、本地IP和端口、 外網(wǎng)IP和端口。
全文摘要
本發(fā)明公開了一種穿透網(wǎng)絡(luò)地址轉(zhuǎn)換NAT設(shè)備的方法,該方法包括步驟20、檢測(cè)NAT節(jié)點(diǎn)A的設(shè)備類型;步驟30、根據(jù)NAT節(jié)點(diǎn)A的設(shè)備類型進(jìn)行NAT設(shè)備穿透。步驟20之前,該方法進(jìn)一步包括步驟10、對(duì)NAT節(jié)點(diǎn)A的指定端口進(jìn)行通用即插即用UPNP操作。本發(fā)明利用UPNP降低了穿透成本,通過劃分更細(xì)致全面的NAT類型,根據(jù)各個(gè)NAT類型的映射特性和穿透特性采用適當(dāng)?shù)拇┩阜椒?,從而能夠?qū)崿F(xiàn)NAT設(shè)備的穿透,滿足企業(yè)內(nèi)部用戶的實(shí)時(shí)網(wǎng)絡(luò)應(yīng)用需求,提高用戶的網(wǎng)絡(luò)體驗(yàn)。
文檔編號(hào)H04L29/12GK101977249SQ20101052766
公開日2011年2月16日 申請(qǐng)日期2010年10月27日 優(yōu)先權(quán)日2010年10月27日
發(fā)明者邵思瑤 申請(qǐng)人:北京易視騰科技有限公司