TWI612789B - 網路通訊系統及網路穿透方法 - Google Patents
網路通訊系統及網路穿透方法 Download PDFInfo
- Publication number
- TWI612789B TWI612789B TW105110969A TW105110969A TWI612789B TW I612789 B TWI612789 B TW I612789B TW 105110969 A TW105110969 A TW 105110969A TW 105110969 A TW105110969 A TW 105110969A TW I612789 B TWI612789 B TW I612789B
- Authority
- TW
- Taiwan
- Prior art keywords
- external
- apostrophe
- network
- sequence
- nickname
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2521—Translation architectures other than single NAT servers
- H04L61/2532—Clique of NAT servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2582—NAT traversal through control of the NAT server, e.g. using universal plug and play [UPnP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2514—Translation of Internet protocol [IP] addresses between local and global IP addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2567—NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
一種網路穿透方法,其包括:從一連線伺服器取得一網路裝置的位置資訊;根據位置資訊中的一對外埠號產生由複數個埠號數值所組成的一埠號數列;以及依據埠號數列中複數個埠號數值的順序對位置資訊中的對外位址發送一連線封包,直至接收到來自網路裝置的確認封包為止。其中,埠號數列中的一個埠號數值為對外埠號、剩餘埠號數值的一部分是基於對外埠號層遞生成,以及剩餘埠號數值的另一部分埠號數值為亂數生成。
Description
本發明是關於網路位址轉換器的穿透(Traversal )技術,特別是關於一種網路通訊系統及網路穿透方法。
隨著網際網路(Internet)快速發展,使用網際網路協定(Internet Protocol,IP)位址(Address)的網路裝置大量增加,因此透過設置網路位址轉換器(Network Address Translation,NAT)來減緩IPv4位址空間(address space)不足的問題。
網路位址轉換器基本上是進行一個轉換IP標頭(header)的動作,以致使其服務的多個網路裝置能共用一個IP位址連上網際網路。網路位址轉換器對外只使用一個IP位址(即,公開IP位址),而對內則是使用內部IP位址(private IP address)。因此,只要少數公開IP位址就能讓本地的(local)所有網路裝置都可以連上網際網路。
現今,點對點(peer-to-peer,P2P)連線技術為目前網路裝置互連時普遍使用的技術之一。然而,當二網路裝置分別位在不同的NAT後方之本地網路中時,由於NAT的特質是用以屏蔽本地網路使得位在NAT後方的網路裝置對於網際網路來說皆是不可見,因此二網路裝置會無法穿透NAT以建立點對點連線。
在一實施例中,一種網路通訊系統,其包括一第一網路裝置、一第二網路裝置、一連線伺服器、一第一位址轉換器以及一第二位址轉換器。第一位址轉換器用以形成第一本地網路,且第一網路裝置位於第一本地網路中。第二位址轉換器用於形成第二本地網路,且第二網路裝置位於第二本地網路中。連線伺服器位於一網際網路中。
第一位址轉換器包括一第一內部連接埠以及至少一個第一外部連接埠,並且第一內部連接埠透過其中一個第一外部連接埠連通至網際網路。其中,第一位址轉換器具有一第一對外位址,以及各第一外部連接埠具有一第一對外埠號。
第二位址轉換器包括一第二內部連接埠以及複數個第二外部連接埠,並且第二內部連接埠透過其中一個第二外部連接埠連通至網際網路。其中,第二位址轉換器具有一第二對外位址,以及各第二外部連接埠具有一第二對外埠號。
第一網路裝置耦接第一內部連接埠,並第二網路裝置耦接第二內部連接埠。第一網路裝置透過第一內部連接埠連通其中一個第一外部連接埠,並經由第一外部連接埠連結連線伺服器。第二網路裝置透過第二內部連接埠連通其中一個第二外部連接埠,並經由第二外部連接埠連結連線伺服器。
當第一網路裝置經由第一外部連接埠連結連線伺服器時,連線伺服器儲存對應第一網路裝置的第一對外位址與第一對外埠號。當第二網路裝置經由第二外部連接埠連結連線伺服器時,連線伺服器儲存對應第二網路裝置的第二對外位址與第二對外埠號。
當第一網路裝置自連線伺服器取得第二對外位址與第二對外埠號後,第一網路裝置根據第二對外埠號產生具有複數個埠號數值的一埠號數列,並透過第一位址轉換器依據埠號數列中複數個埠號數值的順序向第二對外位址發送第一連線封包,使得第二位址轉換器對應各埠號數值的第二外部連接埠接收到第一連線封包,直至自第二網路裝置接收到第一確認封包為止。
其中,位於埠號數列中其中一個埠號數值為第二對外埠號、剩餘埠號數值中的一部分是基於第二對外埠號層遞生成、以及剩餘埠號數值中的另一部分為亂數生成。
在一實施例中,一種網路穿透方法,其包括:從一連線伺服器取得一網路裝置的位置資訊;根據位置資訊中的一對外埠號產生由複數個埠號數值所組成的一埠號數列;以及依據埠號數列中複數個埠號數值的順序對位置資訊中的一對外位址發送一連線封包,直至接收到來自網路裝置的確認封包為止。其中,埠號數列包括對外埠號、剩餘埠號數值中的一部分是基於對外埠號層遞生成,以及剩餘埠號數值中的另一部分為亂數生成。
綜上,根據本發明之網路通訊系統及網路穿透方法,依據取得的初始對外埠號,採用層遞生成方式及亂數生成方式來產生一串埠號數列,並依序對埠號數列中每一埠號數值所對應的外部連接埠發送連線封包,藉以加快對目的端成功連線的速度。
第1圖是根據本發明一實施例之網路通訊系統的第一運作狀態的示意圖。參照第1圖,網路通訊系統包括二網路裝置(以下分別稱之為第一網路裝置110與第二網路裝置120)、二位址轉換器(以下分別稱之為第一位址轉換器130與第二位址轉換器140)以及一連線伺服器150。
第一位址轉換器130是用以形成一本地網路(以下稱之為第一本地網路20),而第二位址轉換器140是用以形成另一本地網路(以下稱之為第二本地網路30)。連線伺服器150則位在網際網路40中。第一網路裝置110與第一位址轉換器130位在第一本地網路20中,並且第一網路裝置110位在第一位址轉換器130的後方(相對於網際網路40)。換言之,第一網路裝置110耦接第一位址轉換器130,並經由第一位址轉換器130連接網際網路40。第二網路裝置120與第二位址轉換器140位在第二本地網路30中,並且第二網路裝置120位在第二位址轉換器140的後方(相對於網際網路40)。換言之,第二網路裝置120耦接第二位址轉換器140,並經由第二位址轉換器140連接網際網路40。
第2圖為第1圖中之第一位址轉換器130的概要示意圖。在一些實施例中,參照第1及2圖,第一位址轉換器130包括二網路介面單元(以下分別稱之為第一網路介面單元131與第二網路介面單元133)以及一控制單元135。控制單元135耦接在第一網路介面單元131與第二網路介面單元133之間。第一網路介面單元131連接第一本地網路20,而第二網路介面單元133連接網際網路40。第一網路介面單元131具有一個或多個內部連接埠(以下分別稱之為第一內部連接埠Pi1,如第1圖所示),並且第一網路介面單元131的一個第一內部連接埠Pi1耦接位於第一本地網路20中的第一網路裝置110(如第1圖所示)。第二網路介面單元133具有一個或多個外部連接埠(以下分別稱之為第一外部連接埠Po1,如第1圖所示)。其中,第一內部連接埠Pi1連通一個第一外部連接埠Po1,並透過第一外部連接埠Po1連通至網際網路40,以供第一網路裝置110經由第一位址轉換器130連線至網際網路40。第一位址轉換器130具有一對外位址(以下稱之為第一對外位址P1),而各第一外部連接埠Po1分別具有一對外埠號(以下稱之為第一對外埠號)。
在一些實施例中,控制單元135具有轉址能力。在上行傳輸時,控制單元135將第一內部連接埠Pi1的位置資訊轉為對應之第一外部連接埠Po1的位置資訊(即,將第一內部連接埠Pi1的對內埠號轉為連通此第一內部連接埠Pi1之第一外部連接埠Po1的第一對外埠號),進而將從位於第一本地網路20中的裝置接收到的封包轉發至網際網路40。在下行傳輸時,控制單元135將第一外部連接埠Po1的位置資訊轉為對應之第一內部連接埠Pi1的位置資訊(即,將第一外部連接埠Po1的第一對外埠號轉為連通此第一外部連接埠Po1之第一內部連接埠Pi1的對內埠號),進而將從網際網路40接收到的封包轉發給位於第一本地網路20中的裝置。換言之,控制單元135能將每一個第一內部連接埠Pi1連通對應的一個第一外部連接埠Po1。
第3圖為第1圖中之第二位址轉換器140的概要示意圖。在一些實施例中,參照第1及3圖,第二位址轉換器140包括二網路介面單元(以下分別稱之為第一網路介面單元141與第二網路介面單元143)以及一控制單元145。控制單元145耦接在第一網路介面單元141與第二網路介面單元143之間。第一網路介面單元141連接第二本地網路30,而第二網路介面單元143連接網際網路40。第一網路介面單元141具有一個或多個內部連接埠(以下稱之為第二內部連接埠Pi2,如第1圖所示),並且第一網路介面單元141的一個第二內部連接埠Pi2耦接位於第二本地網路30中的第二網路裝置120(如第1圖所示)。第二網路介面單元143具有一個或多個外部連接埠(以下稱之為第二外部連接埠Po21~Po2n,如第1及6圖所示)。其中,第二內部連接埠Pi2連通一個第二外部連接埠Po2c,並透過第二外部連接埠Po2c連通至網際網路40,以供第二網路裝置120經由第二位址轉換器140連線至網際網路40。第二位址轉換器140具有一對外位址(以下稱之為第二對外位址P2),而各第二外部連接埠Po21~Po2n分別具有一對外埠號(以下稱之為第二對外埠號)。
在一些實施例中,控制單元145具有轉址能力。在上行傳輸時,控制單元145將第二內部連接埠Pi2的位置資訊轉為對應之第二外部連接埠Po2c的位置資訊(即,將第二內部連接埠Pi2的對內埠號轉為連通此第二內部連接埠Pi2之第二外部連接埠Po2c的第二對外埠號),進而將從位於第一本地網路20中的裝置接收到的封包轉發至網際網路40。在下行傳輸時,控制單元145將第二外部連接埠Po2c的位置資訊轉為對應之第二內部連接埠Pi2的位置資訊(即,將第二外部連接埠Po2的第二對外埠號轉為連通此第二外部連接埠Po2之第二內部連接埠Pi2的對內埠號),進而將從網際網路40接收到的封包轉發給位於第二本地網路30中的裝置。換言之,控制單元135能將每一個第二內部連接埠Pi2連通對應的一個第二外部連接埠Po2c。
在一些實施例中,二位址轉換器(第一位址轉換器130與第二位址轉換器140)其中至少一者為對稱式網路位址轉換器(symmetric NAT)。當目的端為對稱式網路位址轉換器時,來源端之位址轉換器則可採用根據本發明任一實施例的網路穿透方法進行網路連線。舉例來說,以下以第一位址轉換器130為第二型網路位址轉換器(例如:受限圓錐型網路位址轉換器(port restricted cone NAT)),且第二位址轉換器140為對稱式網路位址轉換器為例,但本發明不限於此。實際運用上,二位址轉換器亦可皆為對稱式網路位址轉換器。
在一些實施例中,連線伺服器150儲存第一網路裝置110的位置資訊(以下稱第一位置資訊AD1)以及第二網路裝置120的位置資訊(以下稱第二位置資訊AD2)。在一些實施例中,各網路裝置的位置資訊能藉由一連線封包提供給連線伺服器150,並且儲存在連線伺服器150中。舉例來說,當第一網路裝置110經由第一位址轉換器130發送連線封包給連線伺服器150時,連線伺服器150能從連線封包中取得第一網路裝置110的第一位置資訊AD1並將其儲存在連線伺服器150的儲存單元中。當第二網路裝置120經由第二位址轉換器140發送連線封包給連線伺服器150時,連線伺服器150能從連線封包中取得第二網路裝置120的第二位置資訊AD2並將其儲存在連線伺服器150的儲存單元中。在一些實施例中,第一網路裝置110的第一位置資訊AD1與第二網路裝置120的第二位置資訊AD2能在同一程序或不同程序提供給連線伺服器150。於此,程序可為網路裝置對連線伺服器的註冊程序、網路裝置對連線伺服器的位置資訊更新程序(註冊後周期性執行)、或二網路裝置之間的連線建立程序。
其中,第一位置資訊AD1為第一網路裝置110所耦接之第一內部連接埠Pi1對應的第一外部連接埠Po1的位置資訊,並且第一位置資訊AD1包括第一位址轉換器130的第一對外位址P1與連通第一內部連接埠Pi1之第一外部連接埠Po1的一第一對外埠號。第二位置資訊AD2為第二網路裝置120所耦接之第二內部連接埠Pi2對應的第二外部連接埠Po2c的位置資訊,並且第二位置資訊AD2包括第二位址轉換器140的第二對外位址P2與連通第二內部連接埠Pi2之第二外部連接埠Po2c的一第二對外埠號。換言之,連線伺服器150所儲存到的對外埠號僅為位址轉換器傳送連線封包給連線伺服器150當時所使用的埠號。其中,對外位址(即,第一對外位址P1和第二對外位址P2)可是例如但不限於網際網路協定(Internet Protocol,IP)位址。
第4圖為根據本發明一實施例之網路穿透方法的流程圖。第5圖為根據本發明另一實施例之網路穿透方法的流程圖。
參照第2至5圖,當第一網路裝置110與第二網路裝置120要相互連線時,網路通訊系統會進行連線建立程序。
第一網路裝置110經由第一位址轉換器130通訊連接連線伺服器150,並且從連線伺服器150取得第二網路裝置120的第二位置資訊AD2(步驟510),如第6圖所示。第二網路裝置120亦經由第二位址轉換器140通訊連接連線伺服器150,並且從連線伺服器150取得第一網路裝置110的第一位置資訊AD1(步驟610),如第6圖所示。於取得第一位置資訊AD1後,第二網路裝置120會控制第二位址轉換器140的控制單元145開啟第二網路介面單元143的多個第二外部連接埠Po21~Po2n(開啟的數量非本發明之限制,可為全部或僅部分)(步驟620)。
在一些實施例中,於取得第二位置資訊AD2後,第一網路裝置110根據第二位置資訊AD2中的第二對外埠號(c)產生一埠號數列(步驟520)。假設第二位置資訊AD2中的第二對外埠號為c。於此,此埠號數列包括有具有順序性的複數個埠號數值(V1~Vm)。埠號數值V1~Vm中之一為第二對外埠號c,並且剩餘埠號數值中的一部分是基於第二對外埠號c層遞生成,而另一部分則亂數生成。
在一些實施例中,層遞生成的埠號數值與亂數生成的埠號數值的順序是有規則的配置,例如:一層遞一亂數交錯配置、二層遞二亂數交錯配置、一層遞二亂數交錯配置、或二層遞一亂數交錯配置等。
在一些實施例中,此些埠號數值V1~Vm中位於埠號數列的第一個的第一埠號數值V1為第二對外埠號c。除第一埠號數值V1外,埠號數列的剩餘埠號數值V2~Vm中有一部分的埠號數值是基於第一埠號數值V1層遞生成,而另一部分的埠號數值則是亂數生成。在一些實施例中,m(即,埠號數值的總數量)小於將要求連線行為判定為攻擊行為的要求次數(例如:大於2048)。較佳地,m介於912到1024之間。於此,c和m均為正整數。
在一些實施例中,第一網路裝置110亂數生成的埠號數值的總數大於或等於全部埠號數值的總數量(m)的四分之一。舉例來說,在埠號數列中,第4k+3個埠號數值V4k+3及第4k+4個埠號數值V4k+4為亂數生成。其中,k為小於m/4但不小於0的整數。為方便說明,以下簡單以m=16為例,則埠號數列中至少有埠號數值V3、V4、V7、V8、V11、V12、V15、V16為亂數生成。
在一些實施例中,層遞生成的方式可為遞增生成、遞減生成。舉例來說,在埠號數列中,第4k+5個埠號數值V4k+5為遞增生成,並且第4k+2個埠號數值V4k+2為遞減生成,同樣的,k為小於m/4但不小於0的整數。為方便說明,以下簡單以m=16為例,則埠號數列中至少有埠號數值V5、V9、V13為遞增生成,而至少有埠號數值V2、V6、V10、V14為遞減生成。或者,也可以是相反過來,第4k+5個埠號數值V4k+5為遞減生成,並且第4k+2個埠號數值V4k+2為遞增生成。為方便說明,以下簡單以m=16為例,埠號數列中至少有埠號數值V5、V9、V13為遞減生成,而至少有埠號數值V2、V6、V10、V14為遞增生成。
在一些實施例中,層遞數值可為1、2、3或任意正整數。舉例來說,假設層遞數值為1、第4k+5個埠號數值V4k+5為遞增生成,並且第4k+2個埠號數值V4k+2為遞減生成。為方便說明,以下簡單以m=16為例,第一網路裝置110生成之埠號數值V1、V2、V5、V6、V9、V10、V13、V14分別為c、c-1、c+1、c-2、c+2、c-3、c+3、c-4。
在一些實施例中,在埠號數列中的每一個埠號數值是介於1024到65535之間。換言之,於亂數生成一埠號數值時,第一網路裝置110是在1024到65535之間未指定為已生成之埠號數值的剩餘數值中亂數取一數值。
在一些實施例中,當層遞生成的埠號數值(如,Vi)小於1024或大於65535時,第一網路裝置110會重新以亂數生成此埠號數值Vi。其中,i為正整數。
在一些實施例中,當層遞生成的埠號數值(如,Vi)與以亂數生成之埠號數值(如,V2~Vi-1)重複(相同數值)時,第一網路裝置110會重新以亂數生成此埠號數值Vi,或者再層遞一階(即,原生成的埠號數值Vi的數值再加或減一個層遞數值)來重新生成此埠號數值Vi。
在一些實施例中,第一網路裝置110能依序生成埠號數列中的每一個埠號數值。在另一些實施例中,第一網路裝置110亦可先指定(生成)於埠號數列中所有層遞生成的埠號數值,然後再指定(生成)於埠號數列中所有亂數生成的埠號數值。
於生成埠號數列(即,埠號數值V1~Vm)後,第一網路裝置110根據第二位置資訊AD2中的第二對外位址P2透過第一位址轉換器130依據埠號數列中埠號數值V1~Vm的順序對第二位址轉換器140的對應各埠號數值V1~Vm之第二外部連接埠Po21~Po2n發送一連線封包(以下稱第一連線封包pk1)(如第7圖所示)直至自第二網路裝置120接收到從連線位址與對應的埠號數值回傳的確認封包(以下稱第一確認封包ACK1)為止。
舉例來說,第一網路裝置110根據第二對外位址P2透過第一位址轉換器130先對埠號數值V1(代表第二外部連接埠Po21的位置)所對應的第二外部連接埠Po21發送第一連線封包pk1(即,發送至第二外部連接埠Po21)(步驟S530),並且於發送後,偵測是否接收到從第二外部連接埠Po21回傳的第一確認封包ACK1(即,來自第二網路裝置120的第一確認封包ACK1)(步驟S540)。當在接收到第一連線封包pk1的當下第二網路裝置120所連接的第一網路介面單元141的第二內部連接埠Pi2並非映射至第二外部連接埠Po21時,第二網路裝置120不會接收到第一連線封包pk1因此部會產生對應的第一連線封包pk1,進而第二外部連接埠Po21不會回傳第一連線封包pk1至第一外部連接埠Po1(即,第一網路裝置110不會接收到來自第二網路裝置120的第一確認封包ACK1)。若第一網路裝置110在發送後的既定時間內未接收到回傳的第一確認封包ACK1時,第一網路裝置110則選擇下一埠號數值V2並再根據第二對外位址P2透過第一位址轉換器130對埠號數值V2(代表第二外部連接埠Po22的位置)所對應的第二外部連接埠Po22發送第一連線封包pk1(即,發送至第二外部連接埠Po22)(步驟S530),並且於發送後,偵測是否接收到從第二外部連接埠Po22回傳的第一確認封包ACK1(步驟S540)。同樣地,若在發送後的既定時間內未接收到回傳的第一確認封包ACK1時,第一網路裝置110則再選擇下一埠號數值V3、接續進行發送步驟(步驟S530)並進行偵測步驟(步驟S540)。依此類推,直到第一網路裝置110接收到來自第二網路裝置120之第一確認封包ACK1為止。
舉例來說,當輪到採用埠號數值Vq時,第一網路裝置110根據第二對外位址P2透過第一位址轉換器130對埠號數值Vq(代表第二外部連接埠Po2q的位置)所對應的第二外部連接埠Po2q發送第一連線封包pk1(即,發送至第二外部連接埠Po2q)(如第8圖所示)(步驟S530),並且於發送後,偵測是否接收到從第二外部連接埠Po2q回傳的第一確認封包ACK1(步驟S540)。當於第二位址轉換器140接收到第一連線封包pk1的當下第二網路裝置120所連接的第一網路介面單元141的對內連接埠Pi2是映射至第二外部連接埠Po2q時,第二網路裝置120可接收到第一連線封包pk1並根據第一連線封包pk1產生第一確認封包ACK1,進而透過第二位址轉換器140回傳第一確認封包ACK1至第一外部連接埠Po1,如第8圖所示。第一位址轉換器130的控制單元135再將接收到的第一確認封包ACK1經由第一外部連接埠Po1所對應的第一內部連接埠Pi1轉發給第一網路裝置110。因此,第一網路裝置110於發送後的既定時間內接收到第一確認封包ACK1表示位址轉換器穿透成功,即,停止再選擇下一埠號數值(V(q+1))及其後續步驟。
在一些實施例中,於開啟多個第二外部連接埠Po21~Po2n後,第二網路裝置120根據第一位置資訊AD1中的第一對外位址P1逐一透過第二位址轉換器140開啟的第二外部連接埠Po21~Po2n對第一位置資訊AD1中的第一對外埠號(代表第一外部連接埠Po1的位置)所對應的第一外部連接埠Po1發送一連線封包(以下稱第二連線封包pk2)(如第9圖所示),直至接收到從第一位置資訊AD1回傳的一確認封包(以下稱第二確認封包ACK2)為止。
舉例來說,第二網路裝置120根據第一對外位址P1透過第二位址轉換器140開啟的第二外部連接埠Po21對第一對外埠號所對應的第一外部連接埠Po1發送第二連線封包pk2(即,發送至第一外部連接埠Po1)(步驟S630),並且於發送後的既定期間內(例如:在第二網路裝置120所映射到的第二外部連接埠Po21改變之前),偵測是否接收到從第一外部連接埠Po1回傳的第二確認封包ACK2(即,來自第一網路裝置110的第二確認封包ACK2)(步驟S640)。若於既定期間內未接收到第二確認封包ACK2,第二網路裝置120再根據第一對外位址P1透過第二位址轉換器140所開啟的下一第二外部連接埠Po22對第一對外埠號所對應的第一外部連接埠Po1發送第二連線封包pk2(步驟S630),並偵測是否接收到來自第一網路裝置110的第二確認封包ACK2(步驟S640)。若於既定期間內未接收到第二確認封包ACK2,第二網路裝置120再根據第一對外位址P1透過第二位址轉換器140所開啟的下一第二對外連接埠Po23對第一對外埠號所對應的第一外部連接埠Po1發送第二連線封包pk2(步驟S630)並進行偵測步驟(步驟S640)。依此類推,直到第二網路裝置120接收到來自第一網路裝置110之第二確認封包ACK2為止。
舉例來說,於輪到採用第二外部連接埠Po2q時,第二網路裝置120根據第一對外位址P1透過第二位址轉換器140所開啟的第二外部連接埠Po2q對第一對外埠號所對應的第一外部連接埠Po1發送第二連線封包pk2(即,發送至第一外部連接埠Po1)(如第10圖所示)(步驟S630),並且偵測於既定期間內是否接收到從第一外部連接埠Po1回傳的第二確認封包ACK2(步驟S640)。當第二位址轉換器140的第二外部連接埠Po2q接收到來自第一外部連接埠Po1的第二確認封包ACK2(如第10圖所示)時,第二位址轉換器140的控制單元145將接收到的第二確認封包ACK2經由第二外部連接埠Po2q所對應的第二內部連接埠Pi2將第二確認封包ACK2轉發給第二網路裝置120,以致第二網路裝置120於既定期間內接收到來自第一網路裝置110的第二確認封包ACK2,即,表示位址轉換器穿透成功並且停止再次採用下一第二外部連接埠(Po2(q+1))發送第二連線封包pk2及後續步驟。
在另一例子中,於開啟多個第二外部連接埠Po21~Po2n後,第二網路裝置120不受限於前一第二外部連接埠所發出的第二連線封包pk2未有對應之第二確認封包ACK2回傳,逐一地透過開啟的第二外部連接埠Po21~Po2n對第一對外埠號所對應的第一外部連接埠Po1發送第二連線封包pk2,直至第二網路裝置120接收到來自第一網路裝置110之第二確認封包ACK2。換言之,第二網路裝置120會在透過其他第二外部連接埠發送第二連線封包pk2的過程中同時偵測先前使用的第二外部連接埠是否接收到來自第一網路裝置110的第二確認封包ACK2(即,與任一發送動作同時進行偵測、在二次發送動作之間進行偵測或其組合)。
在又一例子中,於開啟多個第二外部連接埠Po21~Po2n後,第二網路裝置120可先逐一地透過所有開啟的第二外部連接埠Po21~Po2n發送第二連線封包pk2之後再進行偵測步驟。
當第一網路裝置110接收到第一確認封包ACK1且第二網路裝置120接收到第二確認封包ACK2時,第一網路裝置110與第二網路裝置120之間的連線則成功建立。在一些實施例中,第一網路裝置110與第二網路裝置120之間的連線可為一點對點連線。
在一些實施例中,前述之各種封包可為一UDP(使用者資料封包通訊協定)封包。
在一些實施例中,前述之各網路裝置可為具有連網能力之電子裝置,例如:智慧型手機(smart phone)、導航機(PND)、桌上型電腦、膝上型電腦(notebook)、平板電腦(Tablet or Pad)、網路攝影機(IP cam)、智慧型家電等。
在一些實施例中,各儲存單元用以儲存相關之軟體/韌體程式、資料、數據及其組合等。各儲存單元可由一個或多個儲存元件(例如記憶體或暫存器等)實現。
換言之,根據本發明之網路穿透方法可由一電腦程式產品實現,以致於當網路裝置寫入此程式並執行後即可完成根據本發明任一實施例之網路穿透方法。在一些實施例中,電腦程式產品可為一可讀取記錄媒體,而上述程式則儲存在可讀取記錄媒體中供一電腦載入並寫入至網路裝置中。在一些實施例中,上述程式本身即可為電腦程式產品,並且經由有線或無線的方式傳輸至電腦或網路裝置中。
綜上,根據本發明之網路通訊系統及網路穿透方法,依據取得的初始對外埠號,採用層遞生成方式及亂數生成方式來產生一串埠號數列,並依序對埠號數列中每一埠號數值所對應的外部連接埠發送連線封包,藉以加快對目的端成功連線的速度。
110‧‧‧第一網路裝置
120‧‧‧第二網路裝置
130‧‧‧第一位址轉換器
131‧‧‧第一網路介面單元
133‧‧‧第二網路介面單元
135‧‧‧控制單元
140‧‧‧第二位址轉換器
141‧‧‧第一網路介面單元
143‧‧‧第二網路介面單元
145‧‧‧控制單元
150‧‧‧連線伺服器
20‧‧‧第一本地網路
30‧‧‧第二本地網路
40‧‧‧網際網路
Pi1‧‧‧第一內部連接埠
Po1‧‧‧第一外部連接埠
P1‧‧‧第一對外位址
Pi2‧‧‧第二內部連接埠
Po21~Po2n‧‧‧第二外部連接埠
P2‧‧‧第二對外位址
AD1‧‧‧第一位置資訊
AD2‧‧‧第二位置資訊
pk1‧‧‧第一連線封包
pk2‧‧‧第二連線封包
ACK1‧‧‧第一確認封包
ACK2‧‧‧第二確認封包
S510‧‧‧從連線伺服器取得第二網路裝置的第二位置資訊
S520‧‧‧根據第二位置資訊中的連線埠號產生一組埠號數列
S530‧‧‧根據第二對外位址依據埠號數列中埠號數值的順序對埠號數列中之一埠號數值所對應的第二外部連接埠發送第一連線封包
S540‧‧‧是否收到第一確認封包?
S610‧‧‧從連線伺服器取得第一網路裝置的第一位置資訊
S620‧‧‧開啟第二位址轉換器的多個第二連接埠
S630‧‧‧根據第一對外位址透過開啟的多個第二外部連接埠中之一對第一對外埠號所對應的第一外部連接埠發送第二連線封包
S640‧‧‧是否收到第二確認封包?
120‧‧‧第二網路裝置
130‧‧‧第一位址轉換器
131‧‧‧第一網路介面單元
133‧‧‧第二網路介面單元
135‧‧‧控制單元
140‧‧‧第二位址轉換器
141‧‧‧第一網路介面單元
143‧‧‧第二網路介面單元
145‧‧‧控制單元
150‧‧‧連線伺服器
20‧‧‧第一本地網路
30‧‧‧第二本地網路
40‧‧‧網際網路
Pi1‧‧‧第一內部連接埠
Po1‧‧‧第一外部連接埠
P1‧‧‧第一對外位址
Pi2‧‧‧第二內部連接埠
Po21~Po2n‧‧‧第二外部連接埠
P2‧‧‧第二對外位址
AD1‧‧‧第一位置資訊
AD2‧‧‧第二位置資訊
pk1‧‧‧第一連線封包
pk2‧‧‧第二連線封包
ACK1‧‧‧第一確認封包
ACK2‧‧‧第二確認封包
S510‧‧‧從連線伺服器取得第二網路裝置的第二位置資訊
S520‧‧‧根據第二位置資訊中的連線埠號產生一組埠號數列
S530‧‧‧根據第二對外位址依據埠號數列中埠號數值的順序對埠號數列中之一埠號數值所對應的第二外部連接埠發送第一連線封包
S540‧‧‧是否收到第一確認封包?
S610‧‧‧從連線伺服器取得第一網路裝置的第一位置資訊
S620‧‧‧開啟第二位址轉換器的多個第二連接埠
S630‧‧‧根據第一對外位址透過開啟的多個第二外部連接埠中之一對第一對外埠號所對應的第一外部連接埠發送第二連線封包
S640‧‧‧是否收到第二確認封包?
[第1圖]是根據本發明一實施例之網路通訊系統的第一運作狀態的示意圖。 [第2圖]為第1圖中之第一位址轉換器的概要示意圖。 [第3圖]為第1圖中之第二位址轉換器的概要示意圖。 [第4圖]為根據本發明一實施例之網路穿透方法的流程圖。 [第5圖]為根據本發明另一實施例之網路穿透方法的流程圖。 [第6圖]是第1圖之網路通訊系統的第二運作狀態的示意圖。 [第7圖]是第1圖之網路通訊系統的第三運作狀態的示意圖。 [第8圖]是第1圖之網路通訊系統的第四運作狀態的示意圖。 [第9圖]是第1圖之網路通訊系統的第五運作狀態的示意圖。 [第10圖]是第1圖之網路通訊系統的第六運作狀態的示意圖。
S510‧‧‧從連線伺服器取得第二網路裝置的第二位置資訊
S520‧‧‧根據第二位置資訊中的連線埠號產生一組埠號數列
S530‧‧‧根據第二對外位址依據埠號數列中埠號數值的順序對埠號數列中之一埠號數值所對應的第二外部連接埠發送第一連線封包
S540‧‧‧是否收到第一確認封包?
Claims (20)
- 一種網路通訊系統,包括:一連線伺服器,位於一網際網路中;一第一位址轉換器,用以形成一第一本地網路,具有一第一對外位址,該第一位址轉換器包括一第一內部連接埠以及至少一個第一外部連接埠,且該第一內部連接埠透過該至少一個第一外部連接埠中之一連通至該網際網路,該至少一第一外部連接埠各具有一第一對外埠號;一第二位址轉換器,用於形成一第二本地網路,具有一第二對外位址,該第二位址轉換器包括一第二內部連接埠以及複數個第二外部連接埠,且該第二內部連接埠透過該複數個第二外部連接埠中之一連通至該網際網路,該複數個第二外部連接埠各具有一第二對外埠號;一第一網路裝置,位於該第一本地網路中,耦接該第一內部連接埠,以透過該第一內部連接埠連通其中一個該第一外部連接埠,並經由該第一外部連接埠連結該連線伺服器;以及一第二網路裝置,位於該第二本地網路中,耦接該第二內部連接埠,以透過該第二內部連接埠連通其中一個該第二外部連接埠,並經由該第二外部連接埠連結該連線伺服器;其中,當該第一網路裝置經由該第一外部連接埠連結該連線伺服器時,該連線伺服器儲存對應該第一網路裝置的該第一對外位址與對應該第一外部連接埠的該第一對外埠號,以及當該第二網路裝置經由該第二外部連接埠連結該連線伺服器時,該連線伺服器儲存對應該第二網路裝置的該第二對外位址與對應該第二外部連接埠的該第二對外埠號; 其中,當該第一網路裝置自該連線伺服器取得該第二對外位址與該第二對外埠號後,該第一網路裝置根據該第二對外埠號產生具有複數個埠號數值的一埠號數列,並透過該第一位址轉換器,依據該埠號數列中的該複數個埠號數值的順序向該第二對外位址發送一第一連線封包,使得該第二位址轉換器對應各該埠號數值的該複數個第二外部連接埠接收到該第一連線封包,直至自該第二網路裝置接收到一第一確認封包為止;以及其中,該埠號數列中的其中一個埠號數值是對應於該第二對外埠號,該埠號數列中的一部分埠號數值是基於該第二對外埠號層遞生成,該埠號數列中的另一部分埠號數值為亂數生成。
- 如請求項1所述之網路通訊系統,其中當該第二網路裝置自該連線伺服器取得該第一對外位址與該第一對外埠號後,該第二網路裝置令該第二位址轉換器開啟該複數個第二外部連接埠中之複數個,以及該第二網路裝置逐一透過開啟的該複數個第二外部連接埠,向該第一對外位址與該第一對外埠號發送一第二連線封包,使得該第一位址轉換器對應該第一對外埠號的該第一外部連接埠接收到該第二連線封包,直至透過該複數個第二外部連接埠中的其中一個,接收到來自該第一網路裝置的一第二確認封包為止。
- 如請求項1所述之網路通訊系統,其中當該第一網路裝置接收到該第一確認封包且該第二網路裝置接收到該第二確認封包時,該第一網路裝置與該第二網路裝置之間的連線建立。
- 如請求項1所述之網路通訊系統,其中該埠號數列中該複數個埠號數值的總數量小於判定為攻擊行為的次數。
- 如請求項4所述之網路通訊系統,其中該總數量介於912到1024之間。
- 如請求項1所述之網路通訊系統,其中該埠號數列中亂數生成的該複數個埠號數值至少占該埠號數列的四分之一。
- 如請求項6所述之網路通訊系統,其中該埠號數列中的第4k+3個及第4k+4個為亂數生成,且k為小於該埠號數列中該複數個埠號數值的總數量的四分之一但不小於0的整數。
- 如請求項1所述之網路通訊系統,其中該埠號數列中的第4k+5個為遞增生成,該埠號數列的第4k+2個為遞減生成,且k為小於該埠號數列中該複數個埠號數值的總數量的四分之一但不小於0的整數。
- 如請求項1所述之網路通訊系統,其中該埠號數列中的第4k+5個為遞減生成,該埠號數列的第4k+2個為遞增生成,且k為小於該埠號數列中該複數個埠號數值的總數量的四分之一但不小於0的整數。
- 如請求項1至9中之任一項所述之網路通訊系統,其中當該埠號數列中基於該第二對外埠號層遞生成的該埠號數值小於1024或大於65535時,該埠號數值會以亂數重新生成。
- 如請求項1至9中之任一項所述之網路通訊系統,其中該第一位址轉換器為一第二型網路位址轉換器,且該第二位址轉換器為一對稱式網路位址轉換器。
- 一種網路穿透方法,適用於一第一網路裝置,該第一網路裝置位於一第一位址轉換器形成的一第一本地網路,該網路穿透方法包括: 從一連線伺服器取得一第二網路裝置的一位置資訊,其中該位置資訊包括一第二位址轉換器的一對外位址與一對外埠號,其中該連線伺服器位於一網際網路,該第二網路裝置位於該第二位址轉換器形成的一第二本地網路,且該第二網路裝置相對於該網際網路與該第一本地網路位於該第二位址轉換器的後方;根據該對外埠號產生一埠號數列,其中該埠號數列是由複數個埠號數值所組成,該埠號數列包括該對外埠號,且除該對外埠號外的其餘埠號數值中的一部分是基於該對外埠號層遞生成,而另一部分為亂數生成;以及依據該埠號數列中該複數個埠號數值的順序,對該對外位址發送一連線封包,直至接收到來自該第二網路裝置的一確認封包為止。
- 如請求項12所述之網路穿透方法,其中該埠號數列中該複數個埠號數值的總數量小於判定為攻擊行為的次數。
- 如請求項13所述之網路穿透方法,其中該總數量介於912到1024之間。
- 如請求項12所述之網路穿透方法,其中該埠號數列中亂數生成的該複數個埠號數值至少占該埠號數列的四分之一。
- 如請求項15所述之網路穿透方法,其中該埠號數列中的第4k+3個及第4k+4個為亂數生成,且k為小於該埠號數列中該複數個埠號數值的總數量的四分之一但不小於0的整數。
- 如請求項12所述之網路穿透方法,其中該埠號數列中的第4k+5個為遞增生成,該埠號數列的第4k+2個為遞減生成,且k為小於該埠號數列中該複數個埠號數值的總數量的四分之一但不小於0的整數。
- 如請求項12所述之網路穿透方法,其中該埠號數列中的第4k+5個為遞減生成,該埠號數列的第4k+3個為遞增生成,且k為小於該埠號數列中該複數個埠號數值的總數量的四分之一但不小於0的整數。
- 如請求項12至18中任一項所述之網路穿透方法,其中當該埠號數列中基於該第二對外埠號層遞生成的該埠號數值小於1024或大於65535時,該埠號數值會以亂數重新生成。
- 如請求項12至18中任一項所述之網路穿透方法,其中該第二位址轉換器為一對稱式網路位址轉換器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105110969A TWI612789B (zh) | 2016-04-07 | 2016-04-07 | 網路通訊系統及網路穿透方法 |
CN201610368105.1A CN107277185B (zh) | 2016-04-07 | 2016-05-27 | 网络通讯系统及网络穿透方法 |
US15/482,414 US10333892B2 (en) | 2016-04-07 | 2017-04-07 | Network communication system and network-traversal method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105110969A TWI612789B (zh) | 2016-04-07 | 2016-04-07 | 網路通訊系統及網路穿透方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201737677A TW201737677A (zh) | 2017-10-16 |
TWI612789B true TWI612789B (zh) | 2018-01-21 |
Family
ID=59998451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105110969A TWI612789B (zh) | 2016-04-07 | 2016-04-07 | 網路通訊系統及網路穿透方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10333892B2 (zh) |
CN (1) | CN107277185B (zh) |
TW (1) | TWI612789B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109962987A (zh) * | 2017-12-22 | 2019-07-02 | 杭州萤石软件有限公司 | 一种通信连接的建立方法、装置及系统 |
JP7080096B2 (ja) * | 2018-04-12 | 2022-06-03 | 株式会社アイ・エル・シー | 機器制御装置、機器制御システム、機器制御方法および機器制御プログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139228A1 (en) * | 2003-01-15 | 2004-07-15 | Yutaka Takeda | Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends |
US20090147795A1 (en) * | 2006-05-16 | 2009-06-11 | Microsoft Corporation | TCP Traversal Through Network Address Translators (NATS) |
TW201002018A (en) * | 2008-06-26 | 2010-01-01 | D Link Corp | Method for predicting port number of NAT apparatus based on two STUN server inquiry results |
CN104994184A (zh) * | 2015-06-25 | 2015-10-21 | 北京广密华安科技有限公司 | 一种nat穿透方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7912046B2 (en) * | 2005-02-11 | 2011-03-22 | Microsoft Corporation | Automated NAT traversal for peer-to-peer networks |
US20060291452A1 (en) * | 2005-06-24 | 2006-12-28 | Motorola, Inc. | Method and apparatus for providing reliable communications over an unreliable communications channel |
CN101478505B (zh) * | 2009-01-23 | 2011-09-07 | 建汉科技股份有限公司 | 不同私有网络的网络装置间建立网络系统及网络联机方法 |
CN103795819B (zh) * | 2014-01-27 | 2017-02-01 | 宁波键一生物科技有限公司 | P2p应用中基于nat的终端间的数据传输方法 |
TWI564745B (zh) * | 2015-03-27 | 2017-01-01 | 物聯智慧科技(深圳)有限公司 | 點對點連線及建立方法及其通訊系統 |
CN105049543B (zh) * | 2015-06-02 | 2018-06-19 | 上海斐讯数据通信技术有限公司 | 智能路由器间穿越非对称nat进行p2p通信的系统及方法 |
-
2016
- 2016-04-07 TW TW105110969A patent/TWI612789B/zh active
- 2016-05-27 CN CN201610368105.1A patent/CN107277185B/zh active Active
-
2017
- 2017-04-07 US US15/482,414 patent/US10333892B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139228A1 (en) * | 2003-01-15 | 2004-07-15 | Yutaka Takeda | Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends |
US20090147795A1 (en) * | 2006-05-16 | 2009-06-11 | Microsoft Corporation | TCP Traversal Through Network Address Translators (NATS) |
TW201002018A (en) * | 2008-06-26 | 2010-01-01 | D Link Corp | Method for predicting port number of NAT apparatus based on two STUN server inquiry results |
CN104994184A (zh) * | 2015-06-25 | 2015-10-21 | 北京广密华安科技有限公司 | 一种nat穿透方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20170295135A1 (en) | 2017-10-12 |
CN107277185A (zh) | 2017-10-20 |
CN107277185B (zh) | 2021-01-15 |
TW201737677A (zh) | 2017-10-16 |
US10333892B2 (en) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113014562B (zh) | 用于建立媒体会话的方法和装置 | |
USRE47566E1 (en) | NAT traversal for mobile network devices | |
US8462800B2 (en) | Gateway device and port number assignment method | |
US10630730B2 (en) | NAT traversal for media conferencing | |
JP4327142B2 (ja) | 情報処理システム、トンネル通信装置、トンネル通信方法、代理応答装置、及び代理応答方法 | |
TWI441493B (zh) | 網路位址轉換的系統與方法 | |
JP4961368B2 (ja) | 端末装置、nat越え方法、及びプログラム | |
JP2018528679A (ja) | 負荷平衡システムにおいて接続を確立するデバイス及び方法 | |
TW201110645A (en) | Network traversal method and network communication system | |
TWI599201B (zh) | 網路系統及建立資料連線的方法 | |
TWI612789B (zh) | 網路通訊系統及網路穿透方法 | |
CN112073540B (zh) | 数据处理方法、装置、相关设备及存储介质 | |
TWI527414B (zh) | 資料交互的方法、裝置及系統 | |
TWI448129B (zh) | According to the behavior of the network address translator to establish a transmission control protocol connection method | |
CN111711705B (zh) | 基于代理节点作双向nat实现网络连接的方法和装置 | |
TWI558149B (zh) | 用於多層網路位址轉譯器結構之網路傳輸方法及網路傳輸系統 | |
CN103379182A (zh) | 数据传输方法和客户端 | |
WO2022231779A1 (en) | Session establishment in remote desktop infrastructure environments | |
CN108337331B (zh) | 网络穿透方法、装置、系统及网络连通性检查方法 | |
WO2017161876A1 (zh) | 一种实现网络访问的方法和装置 | |
CN103281318A (zh) | 一种针对软件定义网络的攻击测试装置 | |
WO2024021714A1 (zh) | 一种网络地址转换nat穿越的方法、设备和系统 | |
JP2014089600A (ja) | 情報処理装置及びプログラム | |
JP5815838B2 (ja) | ルータにおいて通信を管理するための技法 | |
JP5570392B2 (ja) | 再送要求送信プロトコル変換装置 |