會話感知的網絡地址轉換穿透方法
【專利摘要】本發明提供一種會話感知的網絡地址轉換(NAT)穿透方法,應用于主機之間的網絡通信,第一、第二主機分別設于第一網絡地址轉換器和第二網絡地址轉換器之下,當第一、第二主機完成穿透后,第二主機向第一網絡地址轉換器發送注冊請求信息,第一網絡地址轉換器基于注冊請求信息產生會話記錄,并產生唯一的會話識別碼(session?ID),將包含會話識別碼的注冊回復信息發送給第二主機,當第二主機移動到第三網絡地址轉換器之下時,只要發送另一注冊請求信息給第一網絡地址轉換器,第一網絡地址轉換器便會回復包含第三映射地址的新注冊回復信息給第二主機,使第一、第二主機利用彼此的映射地址恢復通信,不需重新進行網絡地址轉換的穿透。
【專利說明】會話感知的網絡地址轉換穿透方法
【技術領域】
[0001] 本發明有關一種網絡傳輸技術,特別是指一種會話感知的網絡地址轉換穿透方 法。
【背景技術】
[0002] 在電腦網絡中,網絡地址轉換(Network Address Translation)是一種在IP封 包通過路由器或防火墻時重寫來源IP地址或/和目的地IP地址的技術,這種技術被普遍 使用在有多臺主機但只通過一個公有IP地址訪問網際網絡的私有網絡中,而具有網絡地 址轉換技術的路由器稱作網絡地址轉換器(Network Address Translation router,NAT router)〇
[0003] 在現有網際網絡環境中,當兩端點分別位于不同網絡地址轉換器的私有網域時, 兩端點欲進行通信之前,需先進行網絡地址轉換器的穿透,又稱NAT穿透;首先,端點各自 通過STUN服務器(Session Traversal Util ities for NAT Server)取得自己在網絡地址 轉換器上開啟的映射地址(mapped address);其次,兩端點通過一信令服務器(signaling server)交換彼此的映射地址;其三,兩端點分別使用前一個步驟取得的映射地址作為目 的地地址傳送封包給對方,當端點收到來自對方的封包之后,表示NAT穿透程序已完成,雙 方可順利進行通信。然而,假設第一主機12和第二主機14通信的過程中,第二主機14移 動到另一個網絡地址轉換器的私有網域,由于第二主機14的映射地址改變了,若第一主機 12所在的網絡地址轉換器不是完全圓錐形的網絡地址轉換器(full-cone NAT router),則 該網絡地址轉換器不會允許來自第二主機14的封包通過,因此兩端點欲恢復通信之前,必 須重做NAT穿透。
[0004] 由于現有的網絡地址轉換器的過濾行為是基于外部裝置的IP地址和連接端口, 導致移動端主機第二主機14在移動切換(handoff)和IP地址改變之后,就必須重做NAT 穿透。請參考圖1,假設端點第一主機12位于NAT X后方的私有網域10a,第二主機14位 于NAT Y后方的私有網域10b,STUN服務器16和信令服務器18位于公眾網域(即網際網 絡),第一主機12的IP為IPa并開啟連接端口 Pa,NAT X的公眾IP為IPx,第一主機12的 IPa. Pa相對應的映射地址為IPx. Px,第二主機14的IP為IPb并開啟連接端口 Pb,NAT Y 的公眾IP為IPy,第二主機14的IPb. Pb相對應的映射地址為IPy. Py。第一主機12和第 二主機14欲進行通信前需先進行NAT穿透,如上述三個步驟。若在通信過程中,第二主機 14移到了 NAT Z的私有網域10c中,第二主機14將使用新取得的IPb'與連接端口 Pb'與 第一主機12恢復通信。兩端點恢復通信之前,必須重做NAT穿透,假設NAT Z的IP為IPz, 第二主機14的IPb' . Pb'相對應的映射地址為IPz. Pz,首先第二主機14從IPb' . Pb'向 STUN服務器16送出一響應請求(echo request)封包,該響應請求封包通過NAT Z時,NAT Z會產生IPz. Pz的映射地址;接著STUN服務器16收到響應請求封包后會將NAT Z產生的 映射地址IPz. Pz放在響應回復(echo response)封包中并送回給第二主機14 ;第二主機 14會通過信令服務器18將映射地址IPz. Pz送至第一主機12,第一主機12亦將映射地址 IPx. Px通過信令服務器18送至第二主機14 ;最后,第一主機12通過映射地址IPz. Pz將封 包送至第二主機14 ;第二主機14通過映射地址IPx. Px將封包送至第一主機12。等于將上 述NAT穿透的三個步驟重做一遍,此舉造成較長的切換延遲(handoff latency)。
【發明內容】
[0005] 有鑒于此,本發明針對上述現有技術的缺失,提出一種會話感知的網絡地址轉換 穿透方法,以有效解決現有技術中當移動端主機移動到另一私有網域時,需要重新進行NAT 穿透,切換后恢復通信的延遲時間過長的問題。
[0006] 為達上述的目的,本發明提供一種會話感知的網絡地址轉換穿透方法,其應用于 一第一主機及一第二主機之間的網絡通信,第一主機及第二主機分別設于一第一網絡地址 轉換器和一第二網絡地址轉換器之下,穿透方法包括下列步驟:初次進行通信時,第一、第 二主機分別取得一第一映射地址及一第二映射地址,互相交換對方的第二映射地址及該第 一映射地址后,使第一、第二主機完成連線并可進行通信;第二主機向第一網絡地址轉換器 發送一注冊請求信息;以及第一網絡地址轉換器基于注冊請求信息產生一會話記錄,并產 生唯一的一會話識別碼(session ID),將包含會話識別碼與第二映射地址的一注冊回復信 息發送給第二主機。之后,第二主機移動至第三網絡地址轉換器之下,不需要重作NAT穿 透,只需要向第一網絡地址轉換器重新送出包含該會話識別碼的注冊請求信息,第一網絡 地址轉換器收到后會將第二主機的第三映射地址記錄在對應此會話識別碼的會話記錄中, 并將第三映射地址附加在注冊回復信息中傳給第二主機。完成上述步驟之后,第一與第二 主機便可利用彼此的映射地址恢復通信。
[0007] 本發明提供一種會話感知的網絡地址轉換穿透方法,當移動端主機移動到另一私 有網域時,可利用先前取得的會話識別碼重新向固定端的網絡地址轉換器注冊并且與固定 端主機恢復通信,不需重新進行NAT穿透,可降低切換后恢復通信的延遲時間。
[0008] 本發明提供一種會話感知的網絡地址轉換穿透方法,其讓固定端的網絡地址轉換 器替固定端主機與外部的移動端主機之間的通信建立會話記錄的方案,讓固定端的網絡地 址轉換器知道移動端主機移動前和移動后的兩次通信屬于同一個會話,便可允許封包通 過。
[0009] 本發明提供一種會話感知的網絡地址轉換穿透方法,其讓移動端主機向固定端的 網絡地址轉換器發出具有會話識別碼的注冊請求信息,固定端的網絡地址轉換器收到后會 將移動端主機的新映射地址記錄在對應此會話識別碼的會話記錄中,并將此新映射地址附 加在注冊回復信息中傳給移動端主機,使移動端主機不必通過STUN服務器便可得知切換 后的新映射地址,并同時與固定端主機恢復通信。
【專利附圖】
【附圖說明】
[0010] 圖1為網絡系統的架構示意圖。
[0011] 圖2為二主機通過STUN服務器取得映射地址的示意圖。
[0012] 圖3為二主機交換映射地址及打洞的示意圖。
[0013] 圖4為移動端移動到另一私有網域的不意圖。
[0014] 附圖符號說明:
[0015] 10a、10b、10c 私有網域
[0016] 12第一主機
[0017] 14第二主機
[0018] 16 STUN 服務器
[0019] 18信令服務器
【具體實施方式】
[0020] 本發明是一種會話感知的網絡地址轉換穿透方法,請參考圖1為網絡系統的架構 示意圖,包含一第一主機12、一第二主機14、一第一網絡地址轉換器X(NAT X)、一第二網絡 地址轉換器Y、一第三網絡地址轉換器Z、至少一 STUN服務器(Session Traversal Util ities for NAT Server) 16 及至少一信令服務器(signaling server) 18,其中第一主機 12 及第二主機14分別在第一網絡地址轉換器X及第二網絡地址轉換器Y后方的私有網域10a 和10b中,STUN服務器16及信令服務器18位于公眾網絡,也即網際網絡中。
[0021] 由于第一主機12及第二主機14位于不同的網絡地址轉換器后方,因此二者在進 行通信之前必須執行NAT穿透,若第二主機14 一開始在第二網絡地址轉換器Y的私有網域 l〇b,但一段時間后要移動到第三網絡地址轉換器Z的私有網域10c,則需要重新建立第一 主機12和第二主機14之間的通信。請同時參考圖2,第一主機12及第二主機14擁有在私 有網域10a、10b上的私有IP地址,但并沒有可對外的公眾IP地址,因此必須要先取得各自 在第一網絡地址轉換器X及第二網絡地址轉換器Y上開啟的映射地址,亦即IP地址及連接 端口。第一主機12從私有網域10a的地址IPa. Pa送出一響應請求信息,經過第一網絡地 址轉換器X到達STUN服務器16,第一網絡地址轉換器X會針對IPa. Pa產生對應的映射地 址IPx. Px,當STUN服務器16收到響應請求信息后,會將觀察到的第一主機12在第一網絡 地址轉換器X上的映射地址IPx. Px附加在響應回復信息中回傳給第一主機12,當第一主機 12收到響應回復信息后,即可得知自己在第一網絡地址轉換器X所產生的映射地址為IPx. Px。同理,第二主機14從私有網域10b的地址IPb. Pb送出一響應請求,經過第二網絡地址 轉換器Y到達STUN服務器16,將觀察到的IPy. Py附加在響應回復信息中回傳給第二主機 14,當第二主機14收到響應回復信息后,可得知自己在第二網絡地址轉換器Y所產生的映 射地址為IPy. Py。
[0022] 特別的是,第一主機12與第二主機14可以分別使用兩臺不同的STUN服務器16 取得自己的映射地址。STUN服務器16可為很多臺支持STUN協議的主機所構成的一群服務 器。
[0023] 上述僅為取得映射地址的一種作法,除此之外,若網絡地址轉換器支持I⑶協議 (Internet Gateway Device Protocol),第一、第二主機也可利用I⑶協議向網絡地址轉換 器取得映射地址,而不需通過STUN服務器取得。
[0024] 接著請參考圖3,第一主機12及第二主機14利用信令服務器18交換彼此的映射 地址,第一主機12及第二主機14分別將帶有第一映射地址IPx. Px及第二映射地址IPy. Py 的一邀請信息送至信令服務器18,信令服務器18收到該信息會分別轉送給第二主機14及 第一主機12 ;當第一主機12及第二主機14收到之后,同樣通過信令服務器18傳送一確認 信息至第二主機14及第一主機12。如此一來,第一主機12及第二主機14即可得知對方的 映射地址。
[0025] 其中,信令服務器18同樣可為一群主機。
[0026] 接著,第一主機12及第二主機14利用所取得的對方的映射地址進行打洞(hole punching),二者重復傳送封包到對方的映射地址IPy. Py及IPx. Px,直到接收到對方傳來 的封包即完成打洞流程。
[0027] 當NAT穿透完成后,于本發明中的第二主機14會傳送一注冊請求信息給第一網絡 地址轉換器X,第一網絡地址轉換器X會產生一會話記錄,并且替此會話產生唯一的會話識 別碼,會話記錄中還包括一傳輸層協議,最后傳送包含會話識別碼的注冊回復信息給第二 王機14。在此實施例中弟一王機12為固定端,弟_王機14為移動端,故由移動端向固定端 NAT路由器發出注冊請求的信息。
[0028] 若通信的過程中,移動端主機移動到不同NAT路由器的私有網域之后,移動端主 機會向固定端NAT路由器重新送出包含會話識別碼的注冊請求信息,固定端NAT路由器觀 察注冊請求信息的來源IP地址與連接端口即可得知移動端主機的新的映射地址,固定端 NAT路由器,即第一網絡地址轉換器X除了將新的映射地址加入該會話識別碼所對應的會 話記錄外,也傳送一注冊回復信息給移動端主機,使移動端主機得知其切換后的新映射地 址。請參考圖4,以圖4為例,假設通信過程中,第二主機14從第二網絡地址轉換器Y的私 有網域10b移動至第三網絡地址轉換器Z的私有網域10c,第二主機14取得一新的網絡地 址IPb'后,第二主機14會先對第一網絡地址轉換器X重新注冊切換后新的映射地址。首 先,第二主機14利用新的網絡地址IPb'與連接端口 Pb'傳送帶有會話識別碼的注冊請求信 息給固定端的第一網絡地址轉換器X,該信息經過第三網絡地址轉換器Z時,第三網絡地址 轉換器Z會替該會話連線產生一新的映射地址IPz. Pz ;第一網絡地址轉換器X收到后,會 利用會話識別碼找到之前注冊過的會話記錄,并且將第二主機14新的映射地址IPz. Pz加 入會話記錄中,表示第一網絡地址轉換器X將允許來自IPz. Pz的封包通過;最后,第一網絡 地址轉換器X將第二主機14的新映射地址IPz. Pz附加在注冊回復信息中傳送至第二主機 14,第二主機14收到后即可得知自己切換后在第三網絡地址轉換器Z上的映射地址為IPz. Pz。完成上述步驟之后,第一網絡地址轉換器X將允許來自IPz. Pz的封包經由IPx. Px傳 送給第一主機12,因此第一主機12和第二主機14即可恢復通信。
[0029] 本發明所提出的穿透并恢復連線的方法除了可適用于第二主機從一網絡地址轉 換器下的私有網域移動至另一個網絡地址轉換器下的私有網域的情況外,也適用于第二主 機從一公眾網域移動至一網絡地址轉換器下的私有網域的情況、第二主機從一網絡地址轉 換器下的私有網域移動至一公眾網域的情況、及第二主機從一公眾網域移動至另一公眾網 域的情況。不論第二主機的移動是上述哪一種情況,由于映射地址改變,故第二主機的IP 地址會隨之改變,而新的IP地址可能是公眾IP或私有IP地址,就看第二主機是移動到公 眾網域或私有網域。
[0030] 綜上所述,本發明提供的會話感知的網絡地址轉換穿透方法為一種會話感知 (session aware)的NAT穿透方法,使移動端主機移動切換至另一網域時,只需與固定端的 網絡地址轉換器交換信息,移動端主機就能利用切換后新的映射地址傳遞封包給固定端, 而不需重做NAT穿透。因此,本發明可避免因移動端主機的切換行為而導致的NAT穿透程 序,也可減少切換后恢復通信的延遲時間。
[0031] 唯以上所述者,僅為本發明的較佳實施例而已,并非用來限定本發明實施的范圍。 故即凡依本發明申請范圍所述的特征及精神所為的均等變化或修飾,均應包括于本發明的 申請專利范圍內。
【權利要求】
1. 一種會話感知的網絡地址轉換穿透方法,其特征在于,應用于一第一主機及一第二 主機之間的網絡通信,該第一主機位于一第一網絡地址轉換器所形成的私有網域,該第二 主機位于公眾網域或一第二網絡地址轉換器所形成的另一私有網域,該穿透方法包括下列 步驟: 初次進行通信時,該第一、第二主機各自取得一第一映射地址與一第二映射地址,互相 交換并取得對方的該第二映射地址及該第一映射地址后,使該第一、第二主機利用該第二、 第一映射地址交換信息并能進行通信; 該第二主機向該第一網絡地址轉換器發送一注冊請求信息;以及 該第一網絡地址轉換器基于該注冊請求信息產生一會話記錄,并產生唯一的一會話識 別碼,將包含該會話識別碼的一注冊回復信息發送給該第二主機。
2. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第一映射 地址包括該第一網絡地址轉換器的一 IP地址及一連接端口。
3. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第二主機 若位于公眾網域,則該第二映射地址為本地端IP地址及一連接端口;該第二主機若位于第 二網絡地址轉換器所形成的私有網域,則該第二映射地址包括該第二網絡地址轉換器的一 IP地址及一連接端口。
4. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第一映射 地址由該第一網絡地址轉換器所產生,若該第二主機位于公眾網域,則該第二映射地址由 第二主機所產生;若該第二主機位于第二網絡地址轉換器所形成的私有網域,則該第二映 射地址由該第二網絡地址轉換器所產生。
5. 如權利要求4所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第一主機 及該第二主機分別送出一響應請求信息至網際網絡中的第一類服務器,且該響應請求信息 中分別包括該第一、第二映射地址,該第一類服務器再將該第一、第二映射地址附加在一響 應回復信息中,分別傳送至該第一主機及該第二主機,使該第一、第二主機取得各自的該第 一、第二映射地址。
6. 如權利要求5所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第一類服 務器為至少一 STUN服務器。
7. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第一、第二 網絡地址轉換器支持網關設備I⑶協議,該第一、第二主機利用I⑶協議分別向第一、第二 網絡地址轉換器取得該第一、第二映射地址。
8. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第一、第二 主機通過網際網絡中的至少一第二類服務器交換該第一、第二主機的該第一、第二映射地 址。
9. 如權利要求8所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第二類服 務器為至少一信令服務器。
10. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第一網絡 地址轉換器所建立的該會話記錄包括該會話識別碼、該第一映射地址及該第二映射地址。
11. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第一網絡 地址轉換器所建立的該會話記錄還包括一傳輸層協議。
12. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該注冊回復 信息包括該會話識別碼及該第二主機的該第二映射地址。
13. 如權利要求1所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第二主機 重新取得一 IP地址與一連接端口為一第三映射地址后,該第一主機及該第二主機恢復通 信的方法包括下列步驟: 該第二主機發送包含該會話識別碼的一新注冊請求信息給該第一網絡地址轉換器; 該第一網絡地址轉換器將該新注冊請求信息的該第三映射地址加入該會話記錄中,并 將該會話識別碼及該第三映射地址附加至一新注冊回復信息并發送給該第二主機;以及 該第二主機取得該第三映射地址,并與該第一主機恢復通信。
14. 如權利要求13所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第二主 機重新取得一 IP地址與一連接端口為該第三映射地址后,若該第二主機位于公眾網域,則 該第三映射為本地端IP地址及一連接端口;若該第二主機位于第三網絡地址轉換器所形 成的私有網域,則該第三映射地址包括該第三網絡地址轉換器的該IP地址及該連接端口。
15. 如權利要求13所述的會話感知的網絡地址轉換穿透方法,其特征在于,該第二主 機若位于公眾網域則該第三映射地址由該第二主機所產生;若該第二主機位于該第三網絡 地址轉換器所形成的私有網域,該第三映射地址由第三網絡地址轉換器所產生。
【文檔編號】H04L29/12GK104092789SQ201410312253
【公開日】2014年10月8日 申請日期:2014年7月2日 優先權日:2014年3月18日
【發明者】曾建超, 王明宏, 林家梁 申請人:財團法人交大思源基金會