CN1860768A - 客户请求的外部地址映射 - Google Patents
客户请求的外部地址映射 Download PDFInfo
- Publication number
- CN1860768A CN1860768A CNA2004800282892A CN200480028289A CN1860768A CN 1860768 A CN1860768 A CN 1860768A CN A2004800282892 A CNA2004800282892 A CN A2004800282892A CN 200480028289 A CN200480028289 A CN 200480028289A CN 1860768 A CN1860768 A CN 1860768A
- Authority
- CN
- China
- Prior art keywords
- address
- public
- local
- cream
- port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- 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
-
- 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/2521—Translation architectures other than single NAT servers
- H04L61/2525—Translation at a client
-
- 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/2564—NAT traversal for a higher-layer protocol, e.g. for session initiation protocol [SIP]
-
- 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/2585—NAT traversal through application level gateway [ALG]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/167—Adaptation for transition between two IP versions, e.g. between IPv4 and IPv6
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
由一个本地主机请求一个到公共网的访问。确定要被使用于访问该公共网的一个公共地址。相应于本地主机的一个本地地址被映射成所述公共地址。把该公共地址返回给本地主机。决定外出访问是到本地网络还是到公共网。当外出访问是到公共网时,则请求访问公共网。响应于该请求而接收公共信息。公共信息被放置在为所述外出访问创建的一个或多个分组的一个有效负荷部分。公共信息通常至少包括一个公共端口,但也可包括一个公共地址。请求可以提供一个本地端口,这样,公共信息中的一个公共端口通常与本地端口一致。
Description
本发明总的涉及通信系统,更具体地,涉及与通信系统中的消息传送有关的寻址。
被连接到网络的设备常常被分配以地址,诸如由互联网协议(IP)版本规定的地址。地址允许把网络中的信息路由到正确的目的设备。典型地,有“本地”地址和“公共”地址。这些地址例如被使用来把网络分成私有和公共的域。在私有域中的设备相对自由地与该域中的其它设备相互作用。无论何时私有域中的设备试图连接到公共域中的设备,或反之亦然,都通常对连接施加多种限制。例如,安全限制可能不允许在私有和公共域之间进行某些类型的发送或接收。
为了提供限制和允许分离开私有和公共域,典型地使用网关。由网关执行的一个分离功能是地址翻译。多个本地地址被留出用于私有域。网关通常把这些本地地址翻译成在公共域(例如,互联网)上有效的一个或几个公共地址。公共域中的目的地将使用由网关提供的公共地址,并且网关把从目的地接收的信息映射到私有域中适当的设备。这种地址翻译--通常被称为网络地址翻译(NAT)--的一个原因是因为只有有限数目的可用地址。
在IP版本中,互联网地址具有特定的格式。这种格式在理论上可被使用来寻址非常大量的设备。然而,由于各种原因不支持大的地址块。例如,一个公司可以具有被指配给它的一个地址块,即使它只使用相对较少的指配地址。也有地址块不被支持用于私有使用,诸如在家庭中使用。因此,对于互联网上的地址存在地址短缺。虽然NAT改善这个问题,但NAT在处理某些应用时也有问题。
所以,在技术上需要提供用于网络上通信的适当的地址映射技术。
给出了用于客户请求的外部地址映射技术。
本发明的第一方面,从本地主机接收一个用于访问公共网的请求。确定将被用于访问公共网的公共地址。相应于本地主机的本地地址被映射成公共地址。把公共地址返回给本地主机。
另外,可以从公共网访问本地主机或从本地主机访问公共网。可以创建具有一个或多个报头和一个或多个有效负荷区域的分组。公共地址可被放置在该一个或多个有效负荷区域中的给定的一个有效负荷区域内。而且,本地主机可以为该访问请求一个全局端口,以及该全局端口可为该访问被映射到本地主机。
本发明的第二方面,确定一个外出访问是到本地网还是到公共网。当该外出访问是到公共网时,则请求访问公共网。响应于该请求接收公共信息。公共信息被放置在为外出访问创建的一个或多个分组的有效负荷部分。所述公共信息通常包括至少一个公共端口,但也可包括一个公共地址。所述请求可以提供一个本地端口,这样,所述公共信息中的一个公共端口通常与所述本地端口相一致。
参照以下的详细说明和附图将更全面地了解本发明以及本发明的另外的特征和优势。
图1示例了按照本发明的一个有利的实施例通信的私有和公共域;
图2为按照本发明的一个有利的实施例的被用来描述在一个私有域的一个家庭主机与互联网上的一个主机之间的通信期间报头地址如何被改变的一个表;
图3示例了按照本发明的一个有利的实施例的用于登记客户请求外部地址映射(CREAM)本地主机的一个示例性对象相互作用图;
图4示例了按照本发明的一个有利的实施例的用于创建一个CREAM套接字的示例性对象相互作用图;
图5示例了按照本发明的一个有利的实施例的用于绑定一个CREAM套接字的示例性对象相互作用图;
图6示例了按照本发明的一个有利的实施例的用于连接一个CREAM套接字的示例性对象相互作用图;
图7示例了按照本发明的一个有利的实施例的用于接收数据的示例性对象相互作用图;
图8示例了按照本发明的一个有利的实施例的用于通过使用send()方法发送数据的示例性对象相互作用图;
图9示例了按照本发明的一个有利的实施例的用于通过使用sendto()方法发送数据的示例性对象相互作用图;
图10示例了按照本发明的一个有利的实施例的用于一个客户应用的一个使用情形的示例性对象相互作用图;以及
图11示例了按照本发明的一个有利的实施例的用于一个服务器应用的一个使用情形的示例性对象相互作用图。
详细说明
为了便于参考,把详细说明划分成题目为引言、示例性设备与方法、以及示例性方法定义三个部分。
引言
如上所述,互联网上存在地址短缺。具体地,互联网协议的第4版本(IPv4)由于其中所定义的IP地址而促使造成短缺。响应于所述地址短缺,已建立多个解决方案来克服这个短缺。在这些解决方案中,网络地址翻译(NAT)或网络地址端口翻译(NAPT)技术是最常使用的。
NAT和NAPT允许把私有域内如在家庭“私有”网内使用的地址翻译成公共域内如在公共互联网内使用的一个或多个地址。虽然被普遍使用,但NAT和NAPT具有多个缺点,至少有以下的几点缺点:(1)进入的访问仅仅基于在配置时间上确定的设置值才有可能;和(2)需要穿过私有网与公共互联网的边界的这些协议倘若包含寻址信息,那么这些协议需要一个应用层网关(ALG)。
对于NAT和NAPT的适当的替换例是具有解决IPv4地址短缺潜力的、域特定的互联网协议(RSIP)协议。RSIP的优点在于它以动态方式且缺少ALG地支持进入的访问,而无需改变应用。RSIP的主要缺点在于,它与当前安装的应用基础不兼容,并且缺乏主要联网有关的供应商的支持。
而且,存在某些协议允许应用去检测或控制一个地址翻译设备,由此克服对于ALG的需要或允许进入的访问或是二者。这样的协议的例子是允许应用来询问地址映射的通用即插即放(UPnP)网关技术规范。这个协议的缺点是所述应用应当知道所述地址翻译正在执行。所以,它适用于新的应用,但不适用于现有的应用。
本发明提供对于这些问题的其它的解决方案。具体地,本发明的使用可以不需要ALG。在一个示例性实施例中,本发明给请求访问一个公共网的本地主机提供一个公共地址和一个公共端口。访问可以从本地主机到公共网,从公共网到本地主机,或二者。本地主机然后在填充一个分组的有效负荷时使用公共地址和公共端口。
被用来填充有效负荷的信息来自本地主机上的一个应用。在使用ALG的传统系统中,本地主机将用本地地址和本地端口填充一个分组的有效负荷。一个ALG然后被用来用公共地址和公共端口来代替有效负荷中的本地地址和本地端口。在本发明的一个示例性方面中,因为本地主机已具有有效的公共地址和公共端口,通过使用本发明创建的一个分组的有效负荷将已经包含公共地址和公共端口,因此不需要ALG。
本发明至少提供以下的好处:(1)不用使用ALG而允许进入访问;(2)创建一个稳定的地址翻译设备,它可以由许多用户操作的消费电子(CE)操作系统来控制或维护;(3)无需配置;(4)去除对于ALG的需要;(5)现有的应用或协议无需修改也能够工作;(6)可以使用当前安装的基础;(7)与UPnP的合作是可能的;(8)安全性可以增加;以及(9)用于CE设备的示例性实现是轻便的。
现在转到图1,一个私有域与一个公共域正在按照本发明的一个示例性实施例进行通信。所述私有域包括通过本地网络165进行通信的两个主机105-1和105-2(也称作CREAM客户)以及网关系统135(也称作CREAM服务器)。在私有域中的每个设备具有一个本地地址170-1,170-2或170-3(也称作本地地址或地址170)。公共域包括远端主机150和网关系统135,它们通过公共网160进行通信。在公共域中的每个设备具有一个公共地址180-1,或180-2(也称作公共地址或地址180)。在本例中,网关系统135具有一个本地地址170-3和一个公共地址180-1。应当指出,网关系统135可以具有多个私有地址170和被指配给它的公共地址180。
本地主机105-1和105-2预期是相似的,为了简化起见,只具体示出本地主机105-1。本地主机105-1包括一个处理器106和一个存储器107。存储器107包括一个应用108、一个操作系统109、一个传输控制协议-互联网协议(TCP/IP)堆栈110、一个CREAM套接字111、一个本地子网列表112和一个端口113。通常,TCP/IP堆栈110和CREAM套接字111是操作系统109的一部分,但为了易于说明,它们被分开显示。CREAM套接字111被这样称呼,以便把它与传统的套接字区分开。在示例性实施例中,本发明的功能性可以在TCP/IP堆栈110的第三层和第四层(未示出)内操作。网关系统135包括被耦合到一个存储器137的一个处理器136。该存储器137包括一个CREAM网关138、一个子网列表139、一个地址映射信息140、示出了具有地址、端口、和标识的一个条目145(下面更详细地描述)、以及一个地址翻译器146。CREAM网关138被这样称呼,以便把它与传统的网关区分开。远端主机150包括一个端口155。
在图1的例子中,存在一个在本地主机105-1(例如)与网关系统135之间通信的分组120-1。分组120-1包括报头121-1和有效负荷122-1。报头121-1包括报头地址信息123-1,该地址信息可包括源地址125-1、源端口126-1、目的地地址127-1、和目的地端口128-1。有效负荷122-1包括有效负荷地址信息(包括地址129-1和端口130-1)以及数据131-1。分组120-2在通过网关系统135以后被示出。
本公开内容将描述两组地址信息。一组是报头地址信息123,另一组是有效负荷地址信息124。本发明的示例性方面处理这两组地址以便例如允许使用先存在的应用而无需使用ALG。然而,应当指出,如果需要的话本发明可以结合ALG使用。
本发明的一个实施例的一个示例性操作可以通过例子被最佳地描述。将描述用于处理报头地址信息123的示例性技术的概括说明。同样地,将描述用于处理有效负荷地址信息124的示例性技术的概括说明。然后,将描述它们的详细说明。
关于报头地址信息123,本地主机105-1要与处在私有或公共域中的一个目的地进行通信。例如,本地主机可以把由应用108创建的消息(未示出)传送到目的地。
所使用的报头121的类型由所使用的协议来确定。例如,当使用TCP时,一个分组120在报头121中将包括一个IP报头和一个TCP报头。作为另一个例子,当使用用户数据报协议(UDP)时,分组120在报头121中将包括一个IP报头和UDP报头。所述IP报头通常包含源IP地址125和目的地IP地址127。TCP和UDP报头包含源端口126和目的地端口128。作为另一个例子,在封装安全协议(ESP)的IP安全扩展(IPsec)的情形下,IP报头后面是一个IPsec报头。因此,报头121的精确配置可以根据所使用的协议而变化。为了简化起见,这里假设,报头地址信息123如图1所示,虽然本发明的技术适用于许多不同的报头类型和相应的协议。例如,在本地主机105与公共网165之间的访问可以使用以下的任一项协议:请求评注(RFC)959的文件传送协议(FTP);H.323国际电信联盟(ITU)标准;会话发起协议(SIP)RFC 2543;资源保留协议(RSIP)RFC 2205;互联网协议封装安全协议(Ipsec-ESP)RFC 2402;kerberos 4;kerberos 5;telnet(远程登录)RFC 854;和rlogin(远程登录命令)RFC 1282。
不管使用哪种协议,TCP/IP堆栈110通常是创建分组120及其报头121及用于有效负荷122的空间的处理过程。应用108通常是用信息填充有效负荷122-1或提供被用来填充有效负荷122-1的信息的实体。在后面的说明,将会看到,假设TCP/IP堆栈110创建报头地址信息123。例如,在下面显示的对象相互作用图上,为了清晰起见,不显示对于创建报头121的TCP/IP堆栈110的调用,但假设它是发生的。
假设应用108把一个消息(未示出)发送到远端主机150,所以将请求访问一个公共网160。该应用108用操作系统109、TCP/IP堆栈110和CREAM套接字111来操作,并且创建了分组120-1。应用108提供用来填充有效负荷125-1的信息。有效负荷122-1将在后面描述。分组120-1被传送到网关系统135。网关系统135接受分组120-1,并把分组120-1送给CREAM网关138。CREAM网关138通常以如下更详细地描述的且简单地参照图2的方式改变源地址125-1和源端口126-1。在本发明的一个实施例中,源地址125-1将是本地地址170-1并且源端口将是相应于端口113的一个号码,其中该号码通过与CREAM网关138协商而确定。在分组120-1中的目的地地址127-1将是公共地址180-2并且目的地端口通常将是相应于端口155的一个号码。
CREAM网关138用分组120-2中的源地址125-2代替源地址125-1。源地址125-2通常是公共地址180-1。源端口126-1通常不改变并且作为源端口126-2输出。同样地,标号126,127,128,129,130,131通常在分组120-1与分组120-2之间保持不变。CREAM网关138因此通过把“本地”源地址125-1(例如本地地址170-1)修改为一个“公共”源地址125-2(例如公共地址180-1)而用一个公共地址180代替一个本地地址170。
CREAM网关138保持被用来把本地源地址125-1映射为公共源地址125-2的一个地址映射140。该映射包括地址、端口、以及标识,如参考数字145所示,并将在下面进行详细说明。通常,本地源端口126-1和公共源端口126-2在本发明的示例性方面是一样的。
所述地址翻译器146由CREAM网关138使用以便将一个本地地址170翻译成一个公共地址180。所述子网列表139被用来决定是否有报头地址信息123应当被改变以及被用来定义哪些地址是本地地址和哪些是公共地址。例如,如果本地主机105-1正在把分组120-1发送给本地主机105-2,则网关系统135不需要执行地址映射,因为报头地址信息123将包含本地地址170。通常,在本地主机105-1与105-2之间一个分组120-1的通信中不涉及到网关系统135,但网关系统135可以具有一个路由器(未示出),如果本地主机105-1和本地主机105-2是在不同的子网络中的话。该路由器在子网络之间通信。应当指出,本地主机105通过各种方法调用来请求地址映射,正如下面详细地描述的。子网列表112可以被本地主机105-1使用来确定地址翻译是否必要。在本公开内容中,地址翻译被认为按照诸如地址映射140的地址映射来改变地址的处理。
关于有效负荷地址信息124,在传统的系统中,地址129与端口130可以是本地地址170与本地端口。如果是这种情形,则一个ALG典型地被用作为网关系统135的一部分,以便创建地址映射和用一个确定的地址与端口代替地址129和端口30。ALG工作的方式如下:(1)如果地址129-1是一个本地地址或者端口130-1是一个本地端口,则ALG创建映射,以用存在于公共域中的一个地址或端口代替地址129-1或端口130-1;以及(2)如果地址129-1是一个公共地址或者端口130-1是一个在公共域中有效的端口,则ALG什么也不做。ALG通常创建NAT规则,以便形成映射。这意味着,一个ALG(图1上未示出),作为一个传统的网关系统135的一部分,对于所使用的每个协议是必需的。如前所述,这是低效率的并且意味着无论何时一个新的协议被开发或一个老的协议被改变时,应当创建新的ALG。
相比,在本发明的示例性方面,CREAM网关138将确定在公共域中一个适当的公共地址180和一个适当的公共端口(例如端口155)。CREAM网关当被应用108请求时,将确定适当的公共地址180和适当的端口,并把这些给予应用108。所以该应用将创建用来用不必修改的地址129-1和端口130-1来填充(populate)有效负荷地址信息124的信息。CREAM网关138把适当的公共地址180与适当的公共端口的映射保存在地址映射140中。应用108的当前安装基础适合用于本发明,并且应用108不需要改变。
应当指出,网关系统135与本地主机105-1可以被组合到一个单个计算机系统中。事实上,本地主机105-1、网关系统135和远端主机150可被全部组合到一个单个计算机系统中。本地主机105-1和远端主机150可以宿有客户应用、服务器应用和点对点(p2p)应用。不管哪种应用,重要的是,本地主机与远端主机可以发起它们之间的通信。
还应当指出,可以有互相连接在一起和甚至联网的多个网络。例如,可以有通过一个CREAM网关2与一个私有网络1分开的一个私有网络2。CREAM网关1把诸如互联网的一个公共网与私有网络1分离开。通过使用这种特定的网络布局,如果在私有网络2中的一个主机想要与互联网中的一个主机通信,则在私有网络2内向CREAM网关2发出一个外出访问请求。通过查看目的地地址,CREAM网关2知道应当进行附加地址翻译,所以在私有网络1中在CREAM网关1处也执行一个外出访问请求。这样,可得到对于联网的“私有”网络的支持。应当指出,在一个CREAM使能的私有网络在非CREAM使能的私有网络内被联网的情形下,该非CREAM使能的私有网络保持对地址翻译功能性负责,例如,对于穿过在非CREAM使能的私有网络与公共网之间的边界的协议使用ALG。
应用108可以是创建被放置在一个有效负荷122-1中的具有地址129-1或端口130-1或二者的数据的任何应用。例如,应用108可以是一个或多个以下的应用:一个对等的应用;一个需要保留地址映射的应用;一个remote shell(远程外壳)(RSH)应用;一个X视窗系统应用;以及一个X-term应用。
这里描述的本发明可被实施为包括一个机器可读介质的产品的一部分,例如作为存储器107或137的一部分,包含在实施本发明的实施例时执行的一个或多个程序。例如,所述机器可读介质可以包含被配置来执行CREAM套接字111或CREAM网关138或二者的步骤的程序。机器可读介质例如可以是诸如硬盘驱动、光盘或磁盘、电子存储器或其它存储装置的可记录介质。
现在转到图2,图上一个表格被示出并将被使用来描述在私有域中的一个家庭主机与互联网上的一个主机之间通信期间报头地址信息123如何改变。在图2的例子中,本地主机105-1是一个家庭主机以及远端主机150是互联网上的一个主机。第二行显示了在家庭主机处发起的、并在互联网上的主机处结束的一个通信。在该通信中,家庭主机的本地IP地址(例如由图1的CREAM网关138)被改变成网关的一个公共IP地址。源端口保持不变,因为它在协商期间有利地一次被确定。源端口可以改变,如果需要的话。第三行显示在互联网上的主机处发起的并且在家庭主机处结束的通信。在该通信中,目的地IP地址(例如由图1的CREAM网关138)被改变成家庭主机的本地地址。目的地端口保持不变。
图3至11中的对象相互作用图描述示例性技术来提供适当的有效负荷地址信息124和用于提供和改变(当必要时)报头地址信息123。图3至11的对象相互作用图上许多方法调用在传统的系统中已经被定义,并且本公开内容指出对于被使用来实施本发明的示例性方面的调用的特定变化。从应用108的观点,应用108可以只执行它当前执行的方法调用,并且本发明的示例性方面将自动确定适当的公共地址和公共端口,这样应用108将已经具有公共地址和公共端口并且将不需要ALG。
在可以着手进行地址翻译使用之前,对于一个CREAM客户而言在CREAM网关138处登记是有利的。在一个示例性实施例中,一个CREAM客户105必须登记一次;然而,登记被绑定到一定的时间。这个登记时间被CREAM网关138监视并在CREAM客户105处成功轮询后由网关138延伸。最大登记时间的值在网关处被配置。
图3示出了用于通过CREAM使能的操作系统(OS)109的登记CREAM客户105的一个对象相互作用图。在CREAM客户105启动期间,OS 109在CREAM网关138处登记本身作为CREAM客户105(序列1)。CREAM网关138确认该登记(序列2)。在确认期间,CREAM网关138包括本地子网列表112。这个信息可被CREAM客户105使用来决定是否需要地址翻译。在成功登记后,CREAM客户105能够从网关138租用地址和端口映射。
在规则的时间间隔上,网关138经由OS 109轮询CREAM客户105以用于登记延长(序列3)。在这个延长登记期间,倘若在本地子网络中作出改变,则网关105通过它的OS 109可以包括一个新的本地子网列表112。倘若CREAM客户没有对该登记进行响应,则撤消用于该CREAM客户的租用的地址和端口映射。倘若CREAM客户105经由OS 109在需要的时间内响应(序列4)该登记,则延长租用的地址和端口映射。
当CREAM客户105的OS 109关闭时,CREAM客户105通过使用OS 109而在网关处撤消登记(序列5)。网关138确认撤消登记请求(序列6)。
图4示出了用于创建CREAM套接字111的示例性对象相互作用图。在登记的CREAM客户105处运行的应用108通过使用OS 109创建一个CREAM套接字111(序列1)。OS 109创建CREAM套接字111的一个新的实例(序列2)并把句柄(例如它指向CREAM套接字111)返回到应用109。应当指出,还没有执行通信。
图5示出了用于绑定一个CREAM套接字111的示例性对象相互作用图。为了把一个CREAM套接字111与某个接收机端口相联系,应用108执行在登记的CREAM客户105的CREAM套接字111(序列1)处的绑定。在绑定调用期间,CREAM套接字111将在CREAM网关138处执行一个INBOUND_ACCESS_REQUEST(进入访问请求)请求(序列2)。按照INBOUND_ACCESS_CONFIRM(进入访问确认)(序列3),绑定调用将失败或成功。
应当指出,INBOUND_ACCESS_CONFIRM返还在公共域中使用的公共地址和要由应用108使用的端口。所以,应用108具有一个适当的公共地址和端口,并将用有效的公共地址和端口填充它的将被转换成有效负荷122信息的消息。因此,不需要ALG来分析有效负荷122以用公共寻址信息来代替本地寻址信息。
在使用CREAM套接字111后,通过使用任选的关断调用(序列4)和通常强制性的关闭调用(序列5),CREAM套接字111的工作期限结束。在关闭调用期间,通过使用FREE_LEASE_REQUEST(释放租用请求),套接字将释放在CREAM网关138处的所有使用的资源(序列6)。CREAM网关138通过使用FREE_LEASE_CONFIRM(释放租用确认)进行响应(序列7)。
图6示例了用于连接到一个CREAM套接字111的示例性对象相互作用图。为了为CREAM套接字111定义一个端点,在登记的CREAM客户105处运行的应用108调用在CREAM套接字111处的连接功能(序列1)。在这个连接调用期间,CREAM套接字111通过使用以前从CREAM网关138接收的本地子网列表112,来检验目的地地址是在网关内(即,一个本地地址)还是在网关外(即,一个公共地址)。如果目的地地址是在网关外面(即,一个公共地址),则执行OUTBOUND_ACCESS_REQUEST(外出访问请求)(序列2)。这个请求的结果从CREAM网关138被接收(序列3)。如果所有的请求是成功的,则连接调用将成功返回。应当指出,倘若目的地地址是在网关内(即目的地地址为一个本地地址),或CREAM套接字111已被绑定,则不向CREAM网关138作出OUTBOUND_ACCESS_REQUEST。倘若CREAM套接字111已被绑定并且目的地地址是本地的,则请求的地址和端口映射可以被释放。
在CREAM套接字111关闭期间(序列5),CREAM网关138被请求释放租用的地址和端口映射(序列6);这将由CREAM网关138确认(序列7)。
当接收数据时,可以由应用作出已定义的多个调用。例如,一个应用可以作出listen(侦听)(),accept(接受)(),recv()和recvfrom()调用。对于listen()的执行,当前没有预见到改变。对于accept()的执行,当前没有预见到改变。虽然recv()只能被用在一个被连接的套接字上,但recv()和recvfrom()典型地只在套接字被连接,或被绑定,或实现二者时才能工作。所以,一个CREAM租用通常总是可得到的。
图7示例了用于接收数据的一个示例性对象相互作用图。在公共互联网内的一个发送者(本例中的一个远端主机150)发送数据到CREAM网关138的租用地址和端口(序列1)。该数据作为一个分组120-2被发送。CREAM网关138按照包括地址与端口映射的一个租约来执行地址映射或端口映射或二者(序列2)。如以上参照图1和2描述的地址与端口映射把公共地址与公共端口转换成在报头地址信息124中的本地地址与端口。这种映射的分组120-1通过私有网络165被发送(序列3)。CREAM套接字111接收分组120-1,并把接收的分组120-1加到它的缓冲器中(序列4)。应用108在某个时间点从该缓冲器读出这个分组120-1(序列5)。在读出后,分组120-1从缓冲器中被去除(序列6)。
通常,send()方法只能在一个被连接的CREAM套接字111处被使用。当把数据发送到一个公共IP地址和公共端口时,已执行需要的CREAM租约。CREAM租约包括在应用108与远端主机150之间的一个映射。这个映射通常被存储在图1的地址映射中。所以,CREAM客户105的OS 109只必须发送分组120-1到CREAM网关138。CREAM网关138用租用的地址与端口(即,公共地址与公共端口)来替代本地地址或本地端口或二者,并把包含修订的报头地址信息123的分组120-2发送到打算中的接收者。
图8示例了用于通过使用send()方法发送数据的一个示例性对象相互作用图。应用108发送数据到位于公共互联网内的接收者(例如,远端主机150)(序列1)。数据的TCP/UDP报头包含发送者(例如在源地址125-1处)的本地地址和接收者(例如在目的地地址127-1处)的公共地址。分组125-1通过使用缺省路由在本地网络165上被发送(序列2)。当CREAM网关138接收分组125-1时,本地寻址信息被替换为租用的地址或端口映射(序列3)并且剩余的分组125-2被通过互联网发送(序列4)。租用的地址或端口映射通常把源地址125-1转换为网关135的互联网地址(例如,公共地址180-1)并且端口通常保持相同,正如以上参照图2所描述的。
Sendto()只能在使用一个无连接协议(例如,UDP)时被使用。倘若数据要被发送到一个本地IP地址,通常不使用地址映射。倘若数据要被发送到一个公共IP地址,如果一个CREAM租约还没有得到的话,将得到一个CREAM租约。应当指出,这意味着当使用sendto()时,应当对IP地址的定位执行检验,且与对该套接字的地址映射的以前使用无关地,根据那个检验来使用或者不使用地址映射。
图9示例了用于通过使用sendto()方法发送数据的一个示例性对象相互作用图。应用108发送数据到一个特定的端口和IP地址(序列1)。首先按照本地子网列表112检验目的地地址127-1是本地的还是公共的。倘若目的地地址127-1是公共的并且还没有进行租用(例如,一个OUTBOUND_ACCESS_REQUEST或INBOUND_ACCESS_REQUEST),则从CREAM网关138得到一个租约(序列2和响应序列3)。用本地地址信息创建一个分组,并且把该分组发送到CREAM网关138(序列4)。CREAM网关138用租用的地址和端口组合替换本地地址信息或端口信息或二者(序列5),并且通过公共网发送分组120-2(序列6)。
在关闭套接字后(序列7),得到的CREAM租约被释放(序列8和确认序列9)。
本发明的一个优点在于,有可能把寻址信息包括在分组的有效负荷内。然而,有某些考虑。为了得到正确的寻址信息,应用108应当在正确的时间点上调用正确的功能。而且,对于这些功能的正确的行为应当由OS 109进行实施。
诸如getsockname(),gethostname(),getaddrinfo()的返回寻址信息的所有函数,应当返回用于本地CREAM客户105的IP地址和端口的以下值:
(1)倘若CREAM套接字111被连接到具有公共IP地址的对等体,则CREAM客户105的IP地址是租用的IP地址。端口号是租用的端口号。
(2)倘若CREAM套接字111被连接到具有私有IP地址的对等体,则CREAM客户105的IP地址是它本身的本地IP地址。端口号是本地端口号。
(3)倘若是一个未连接的套接字,则不应当返回有效的IP地址。(有效的IP地址是私有的或租用的IP地址,但取决于所述对等体。)在这种情形下,返回值零。
由于IP地址通常只能按照对等体的IP地址来确定,应用应当知道,当IP地址被包括在有效负荷内时,应当从被绑定到包含有效负荷的分组的接收者的一个CREAM套接字111来确定CREAM客户105的IP地址。
按照本发明的地址映射的用户是应用108。应用108例如可以是一个服务器应用或一个CREAM客户应用。由于家庭通信的性质,主要用户通常是其服务器应用位于互联网内的一个CREAM客户应用。除了CREAM客户应用以外,本发明还可被使用于其CREAM客户应用位于互联网内的服务器应用。然而,这最后一类用户可能受到某些限制。
图10示例了对于一个CREAM客户应用的一种使用情形的一个示例性对象相互作用图。在这个图上,给出当一个CREAM客户应用108通过使用这里给出的技术来穿过CREAM网关138(即,从私有域进到公共域)的边界从而连接到一个服务器应用(例如,在公共主机150)时的一个相互作用例子。在本例中,CREAM客户应用108位于一个私有网络165内,而服务器应用位于互联网内(例如,一个公共网160)。
在CREAM客户105的OS 109开始工作期间,CREAM客户105把自己登记在CREAM网关138(序列1和2)。
为了与公共主机150上的服务器应用进行通信,应用108创建一个CREAM套接字111(序列3)。在创建CREAM套接字111之后,应用108使用CREAM套接字111连接到服务器(序列4)。应用108不明显地绑定CREAM套接字111,因为它可以从任何端口到远端主机150处的服务器应用进行通信。在CREAM套接字111实际上可以连接到远端主机150之前,首先必须检验服务器应用位于私有网络165内还是位于互联网内(例如公共网160)。在本例中,这个检验是通过使用本地子网列表112执行的。对于本例,目的地IP地址是公共的,所以执行OUTBOUND_ACCESS_REQUEST(序列5和6)。在成功执行OUTBOUND_ACCESS_REQUEST之后,现在可以执行与connect()方法有关的缺省行为。倘若应用108请求IP地址和在源侧创建的CREAM套接字111的端口,则返回租用的IP地址和端口号。通常,租用的IP地址和端口号不同于本地IP地址,并且甚至可能不同于本地使用的端口。
在规则的时间间隔上,CREAM网关138可以通过执行EXTEND_REGISTRATION_INDICATION(延长登记指示)来延长租用时间(序列7),这触发了来自CREAM客户105的EXTEND_REGISTRATION_CONFIRM(延长登记确认)(序列8)。
当应用108发送数据到服务器时(序列9),CREAM套接字111通过使用在IP和TCP/UDP报头内的本地寻址信息把该数据发送到服务器应用(序列10)。CREAM网关138截取分组并且替换在IP与TCP/UDP报头内的本地寻址信息(例如报头地址信息123)(序列11)以及把它发送到公共远端主机150上的服务器应用(序列12)。
当应用108关闭CREAM套接字111时(序列13)或甚至当OS 109关闭CREAM套接字111时,CREAM套接字111释放租用的IP地址和端口的组合(序列14和15)。
当CREAM客户105的OS 109被关闭时,CREAM客户105在CREAM网关138处撤消登记(序列16和17)。
图11示例了对于一个服务器应用108的一种使用情形的一个示例性对象相互作用图。在这个图上,给出当服务器应用108打开侦听端口并且一个家庭客户应用105-2和一个公共客户应用150连接到服务器应用108时的一个相互作用例子。在本例中,服务器应用108位于私有网络165内,并且是本地主机105-1的一部分,而一个客户应用(作为公共主机150的一部分)位于互联网内(例如,公共网160)并且一个客户应用(作为本地主机105-2的一部分)位于私有网络165内。为了简化起见,作为公共主机150的一部分的客户应用将被称为“客户应用150”。同样地,作为本地主机105-2的一部分的客户应用将被称为“客户应用105-2”。服务器应用108使用这里给出的技术来与位于互联网内的客户应用150通信。
在OS 109开始工作时,CREAM客户105-1在CREAM网关138处登记(序列1和2)。
为了接收进入的通信,服务器应用108通常创建一个CREAM套接字111(序列3)。在创建CREAM套接字111之后,服务器应用108使用CREAM套接字111在特定的端口处侦听进入的消息,所以,服务器应用108把CREAM套接字111绑定到一个端口上(序列4)。由于CREAM套接字111可能不能确定这个绑定对于内部端口号、外部端口号或二者是否应当发生,所CREAM套接字111被绑定到内部和外部端口。为了把CREAM套接字111绑定到外部端口,由CREAM客户在CREAM网关138处租用一个端口与地址的组合(序列5和6)。用作端口租用的端口号与在绑定请求内使用的端口号相同,这样,已知的端口约定(convention)没有被打破。倘若没有定义端口号,CREAM网关138指配一个端口号。内部端口和外部端口的端口号通常保持相同,这样,潜在的端口映射冲突被排除。
在规则的时间间隔上,CREAM网关138可以通过执行EXTEND_REGISTRATION_INDICATION而延长租用时间(序列7)。这从CREAM客户105-1触发EXTEND_REGISTRATION_CONFIRM(序列8)。应用108在侦听状态下设置CREAM套接字111(序列9)。
本地家庭客户应用105-2发送数据到服务器应用108(序列10)。由于这个通信是本地的,不执行地址或端口映射。CREAM套接字111把分组加到它的缓冲器中(序列11)。服务器应用108使用accept()方法来从本地主机105-2接受与本地客户应用的连接(序列12)。服务器应用108通过使用recv()调用读出它的队列(序列13),并且CREAM套接字111从它的缓冲器中去除所述分组(序列14)并把分组给予服务器应用108。
在公共互联网内的一个客户应用150发送数据到服务器应用108(序列15)。被包括在IP和TCP/UDP报头内的租用的地址和端口组合通过CREAM网关138被映射成本地地址和端口组合(序列16),并且把分组传送到本地服务器应用108(序列17)。CREAM套接字111把重新映射的分组加到其缓冲器中(序列18)。服务器应用108使用accept()方法来从公共主机150接受与公共客户应用的连接(序列19)。服务器应用通过调用recv()从队列中读出数据(序列20),以及CREAM套接字111从它的缓冲器中去除分组(序列21),以便把它传送到服务器应用108。
当OS 109被关闭时,CREAM客户105-1在CREAM网关138处撤消登记(序列22和23)。
还有其它的其中本发明的技术是有利的示例性实例。下面描述几个实例。
本地主机登记可以如下地执行。在任何CREAM客户105的OS109开始工作期间,CREAM客户105通常在CREAM网关138处登记。CREAM网关138或者接受登记,或者表示CREAM客户105已登记。
在第一种情形下(例如,登记被接受),对于CREAM客户105还没有进行租用。在后一种情形下(例如,CREAM客户105已登记),对于与CREAM客户105有关的当前的租约没有加以改变。在这两种情形下,CREAM客户105被登记。一旦CREAM客户105的OS 109不知道任何已存在的租约,CREAM客户105将先撤消登记以便在CREAM客户105再次登记之前释放资源。
在本发明的一个示例性方面,在登记确认期间返回表示本地地址范围的一个表格。这个表格也被包括在已登记的指示期间。
本地主机撤消登记或关闭的例子如下。在OS 109关闭期间,CREAM客户105在CREAM网关138处撤消登记。CREAM网关138或者确认CREAM客户105被撤消登记或者表示CREAM客户105没有登记。在两种情形下,在CREAM网关138处该CREAM客户105不再使用资源。
一个侦听端口可被如下创建。CREAM客户105在CREAM网关138处执行INBOUND_ACCESS_REQUEST来租用一个地址与端口组合用于进入的访问。本地端口号与租用的端口号由CREAM网关138假定相等,虽然不一定是这种情形。
CREAM客户105可以指定要被租用的端口号(例如,用于http服务器的端口80),在这种情形下,CREAM网关138或者确认该租用或者拒绝该租用。
CREAM客户105也可以不指定端口号。在这种情形下,CREAM网关138将指定端口号并确认该租用。倘若不能得到相同的本地端口号,则CREAM客户105应当释放租用,并重新尝试租用一个进入的访问端口。
由于端口租用的性质,在TCP超时时间后用于租用的端口将再次可得,这有利于避免TCP连接的不想要的重新连接。
创建一个发送端口的例子如下。一个CREAM本地主机105在CREAM网关138处执行OUTBOUND_ACCESS_REQUEST,以便租用地址与端口组合用于外出访问。CREAM本地主机105可以指定要被租用的端口号,在这种情形下,CREAM网关138或者确认该租约或者拒绝该租约。
CREAM本地主机105也可以不指定端口号;在这种情形下,CREAM网关138将指定端口号并确认该租用。
由于端口租用的性质,在TCP超时时间后用于租用的端口将再次可得,并且这有利于避免TCP连接的不想要的重新连接。
接着是解析对等体的例子。CREAM本地主机105或者使用被包括在登记请求内的表格或者使用RESOLVE_PEER_REQUEST(解析对等体请求)函数或二者来决定对等体是位于互联网内还是位于本地网络内。
接着是释放选择的资源的例子。登记的CREAM本地主机105可请求CREAM网关138通过定义与映射有关的租用的地址或端口而释放一个或多个地址或端口映射。另外,在撤消登记确认后释放所有的资源。
示例性方法定义
下面使用的定义如下:
主机 具有IP地址的任何设备
CREAM本地主机 支持CREAM协议的主机
CREAM网关 支持CREAM协议的网关
远端主机 位于公共互联网中的主机
本地主机 位于私有网中的主机;具有一个私有域内
的IP地址
本地地址 在私有域内的一个IP地址
公共地址 在互联网的公共域内的一个IP地址
下面使用的字首组合词和缩略词如下:
CREAM 客户请求的外部地址映射
ALG 应用级别网关
NAT 网络地址翻译
NAPT 网络地址端口翻译
一般符号惯例如下。对于句法使用下面的符号惯例。每个参数按以下的方式被定义。
一般分组描述:
名称 | 值 | 字节数 |
Name1 Value1 length1Name2 <Value2> length2Name3 <Value3> <Value2><Parameter1>%Parameter2% |
通过使用符号惯例,分组部分a包含以下句法:
Length1是一个固定的预定义长度(例如,0x02)。Value1是一个固定的预定义值(例如,0x01)。名称Name1取决于分组内容(例如,My1stVariable)。通过使用这个信息,头两个字节字节0和1包含具有固定值(0x01)和固定长度(0x02)的变量My1stVariable。
第一个符号的例子:
名称 | 值 | 字节数 |
My1stVariable 0x0001 0x02Name2 <Value2> length2Name3 <Value3> <Value2><Parameter1>%Parameter2% |
Length2是一个固定的预定义长度(例如,0x04)。Value2是一个变量(例如,字符串中的字符数目),正如用括号表示的。然而,该值应当遵从它的句法和语义。名称Name2取决于分组的内容(例如,LengthOfName)。通过使用这个信息,字节2到5包含具有固定长度(0x04)的值为#CharsString的变量LengthOfName。
第二个符号的例子:
名称 | 值 | 字节数 |
My1stVariable 0x0001 0x02LengthOfName <#CharsString> 0x04Name3 <Value3> <Value2><Parameter1>%Parameter2% |
Value2是一个预定义变量的值,在这种情形下是变量Name2的值(定义以前被称为“LengthOfName”的字符串的长度),这由括号表示。Value3是值,并取决于长度(例如,具有Value2个字符的字符串)。Name3代表参数的名称。名称Name3取决于分组的内容(例如,Local hostName)。通过使用这个信息,字节6到#CharsString+5包含#CharsString字符长的代表变量LocalhostName的字符串。
第三个符号的例子:
名称 | 值 | 字节数 |
My1stVariable 0x0001 0x02LengthOfName <#CharsString> 0x04Local hostName <本地主机 <#CharsString>的名称><Parameter1>%Parameter2% |
Parameter1是一个预定义参数(例如,Version(版本))。这个参数具有它本身的句法和语义。在百分数符号之间的参数表示这个参数是强制的。通过使用这个信息,变量Local hostName后面跟随参数Version。
第四个符号的例子:
名称 | 值 | 字节数 |
My1stVariable 0x0001 0x02LengthOfName <#CharsString> 0x04Local hostName <本地主机 <#CharsString>的名称><Version>%Parameter2% |
Parameter2也是一个预定义参数(例如,Address(地址))。然而,这个括号表示这个参数是任选的。通过使用这个信息,Version参数后面跟随Address参数。
第五个符号的例子:
名称 | 值 | 字节数 |
My1stVariable 0x0001 0x02LengthOfName <#CharsString> 0x04Local hostName <本地主机 <#CharsString>的名称><Version>%Address% |
一般参数定义
在CREAM内的所有参数通过使用以下的惯例被定义:
名称 | 值 | 字节数 |
Type <类型> 0x01Length <长度> 0x02Value <值> <值的长度> |
Type:Type值定义了参数的类型。确切的值取决于参数的类型以及在参数定义期间被指配。
Length:定义了包含值的字节的数目。值包含实际的参数数据;长度取决于类型和内容。
Version(0x00):版本字段标识了CREAM协议的版本。
名称 | 值 | 字节数 |
Type 0x00 0x01Length 0x0001 0x02Version 0x01 0x01 |
Version:包含这个CREAM协议的版本。当前,仅仅描述了版本1。总的版本TLV的长度是固定的,并且应当对于CREAM协议的所有版本保持不变。
Address(0x01)
地址字段包含寻址信息。以下的地址类型得到支持:
IPv4:
名称 | 值 | 字节数 |
Type 0x01 0x01Length 0x0005 0x02Address_Type 0x01 0x01Address <IPv4地址> 0x04 |
IPv4 netmask(网络掩码):
名称 | 值 | 字节数 |
Type 0x01 0x01Length 0x0005 0x02Address_Type 0x02 0x01Address <IPv4网络掩码 0x04地址> |
IPv6:
名称 | 值 | 字节数 |
Type 0x01 0x01Length 0x0011 0x02Address_Type 0x03 0x01Address <IPv6地址> 0x10 |
FQDN:
名称 | 值 | 字节数 |
Type 0x01 0x01Length 0x0001+地址长度 0x02Address_Type 0x01 0x01Address <ASCII字符串> <地址长度> |
FQDN将被表示为ASCII字符串,不包括终结字符。
Port(0x02):端口字段包含零个或多个TCP或UDP端口。在端口参数内,Number_Of_Ports字段指定了所包括的端口数目。Number_Of_Ports值可以从Length字段获得。
IPv4:
名称 | 值 | 字节数 |
Type 0x02 0x01Length 0x0001+ 0x022*#端口Number_Of_Ports <#端口> 0x01{for(I=0;I<Number_Of_Ports;I++)Port I <端口号I> 0x02Protoco1 I <协议I> 0x02} |
用于协议的以下值得到支持:
值 | 含义 |
0x0000 | UDP协议 |
0x0001 | TCP协议 |
Port Mapping(端口映射)(0x03):
端口映射参数包含在一个本地端口与一个外部端口之间的映射。端口映射参数包含零个或多个TCP或UDP端口映射。在端口映射参数内,Number_Of_Port_Mappings字段指定所包括的端口映射的数目。Number_Of_Port_Mappings的值可以从长度字段获得。
IPv4:
名称 | 值 | 字节数 |
Type 0x03 0x01Length 0x0001+6*#端口 0x02映射Number_Of_Port_Mappings <#端口映射> 0x01{for(I=0;I<Number_Of_Port_Mappings;I++)Local Port <端口号> 0x02External Port <端口号> 0x02Protocol <协议> 0x02Status_Code <状态码> 0x02} |
以下的状态码得到支持:
值 | 含义 |
0x0000 | 创建的映射(成功) |
0x0001 | 映射已经可得(成功) |
0xl000 | 不能创建映射,访问限制(失败) |
0xl001 | 不能创建映射,端口已在使用(失败) |
对于协议字段支持的值在以上的关于在Port Mapping(0x03)中用于协议的值的表中被定义。
Local host ID(0x04):
Local host(本地主机)ID参数指定了一个CREAM本地主机ID。本地主机ID被CREAM网关使用来区分CREAM本地主机。
名称 | 值 | 字节数 |
Type 0x04 0x01Length 0x0004 0x02Local host_ID <本地主机ID> 0x04 |
Lease ID(0x05):
Lease(租约)ID参数指定了一个CREAM租约ID。租约ID被CREAM本地主机与CREAM网关使用来区分CREAM绑定。
名称 | 值 | 字节数 |
Type 0x05 0x01Length 0x0004 0x02Lease_ID <租约ID> 0x04 |
Local Subnet List(0x06):
本地子网列表包含一组本地子网列表的定义。
名称 | 值 | 字节数 |
Type 0x06 0x01Length <剩余长度> 0x02Number_Local_Subnets <#本地子网> 0x02for(I=0;I<Number_LocaL-Subnets;I++){option 1:<Address(IPv4)><Address(IPv4 netmask)>option 2:<Address(IPv6)>...CIDR_Routing_Bits <CIDR标记的 0x01路由比特>} |
Message Type(消息类型)(0x10)
消息类型指定了消息的类型。取决于该消息,这或者定义一个分组的内容和/或涉及到一个以前发送的分组。
名称 | 值 | 字节数 |
Type 0x10 0x01Length 0x0001 0x02Message_Type <消息类型> 0x01 |
定义了以下的消息类型:
值 | 含义 |
0x00 | REGISTRATION_REQUEST |
0x01 | REGISTRATION_CONFIRM |
0x02 | EXTEND_REGISTRATION_INDICATION |
0x03 | EXTEND_REGISTRATION_RESPONSE |
0x04 | DE-REGISTRATION_REQUEST |
0x05 | DE-REGISTRATION_CONFIRM |
0x06 | INBOUND_ACCESS_REQUEST |
0x07 | INBOUND_ACCESS_CONFIRM |
0x08 | OUTBOUND_ACCESS_REQUEST |
0x09 | OUTBOUND_ACCESS_CONFIRM |
0x0A | FREE_LEASE_REQUEST |
0x0B | FREE_LEASE_CONFIRM |
0xF0 | ERROR_INDICATION |
0xFF | 未知的消息类型 |
消息类型TLV的长度是固定的,并且应当在所有的CREAM版本上保持不变。
REGISTRATION_REQUEST
说明:
这个消息被使用来在CREAM网关处登记一个CREAM本地主机。
句法:
名称 | 值 | 字节数 |
<Version><Message_Type(REGISTRATION_REQUEST)>Length 0x00 0x02 |
语义如下:
Version:见以上的版本信息。
MessageType:消息类型应当表示REGISTRATION_REQUEST消息。
Length:分组的总的剩余长度对于这个版本等于0x00。
为了登记,CREAM网关应当知道所使用的CREAM协议的类型和消息的内容(REGISTRATION_REQUEST)。当本地主机未登记时,一个CREAM本地主机只被允许发送REGISTRATION_REQUEST。
Behavior:
CREAM网关应当用一个REGISTRATION_CONFIRM或一个ERROR_INDICATION消息进行响应。
REGISTRATION_CONFIRM
说明:
这个消息被使用来确认一个CREAM本地主机的登记。
句法:
名称 | 值 | 字节数 |
<Version><Message Type(REGISTRATION_CONFIRM)>Length <剩余长度> 0x02<Local host ID><Local Subnet List> |
语义:
Version:定义CREAM协议的版本。
MessageType:定义消息类型;指定的消息应当是REGISTRATION_CONFIRM。
Length:定义这个消息的总的剩余长度。
Local host ID:定义作为由CREAM网关指配的本地主机ID。这个值应当在CREAM本地主机与CREAM网关之间的进一步通信中使用。
Local Subnet List:定义不用地址翻译而可达到的本地子网络。对于示例的定义,参阅以上内容。
通过使用REGISTRATION_CONFIRM消息,CREAM网关确认CREAM本地主机的REGISTRATION_REQUEST。在该消息内,一个本地主机ID被指配为应当用于在CREAM网关与CREAM本地主机之间的进一步的通信中。
在所述消息内也定义了一个本地子网列表。CREAM本地主机应使用该列表来决定是否应当做出一个进入/外出访问请求用于通信。在该列表内至少包括CREAM本地主机的本地子网络。
Behavior:
通过接收这个消息,本地主机应当发送一个撤消登记请求,倘若它想要撤消作为CREAM本地主机的登记的话。而且,在接收这个消息后,可以预期有周期的轮询来检验CREAM本地主机的工作期限。
EXTEND_REGISTRATION_INDICATION
说明:
这个消息被使用来轮询登记的CREAM本地主机的工作期限。而且,本地子网列表的更新可被包括在该消息内。
句法:
名称 | 值 | 字节数 |
<Version><Message Type(EXTEND_REGISTRATION_INDICATION)>Length <剩余长度> 0x02<Local host ID>{Local Subnet List) |
语义:
Version:定义CREAM协议的版本。
MessageType:定义这个消息的消息类型,应当是EXTEND_REGISTRATION_INDICATION。
Length:这个消息的总的剩余长度,以字节计。
Local host ID:包含本地主机ID,应当把与以前指配的本地主机ID相同的值给这个CREAM本地主机。
Local Subnet List:任选的参数。如果被包括,则包含不需要地址翻译的新的本地子网列表。如果不包括,则保持老的表存在。
Behavior:
倘若本地主机ID与登记期间接收的相同并且本地主机仍旧被登记,则CREAM本地主机应当用一个EXTEND_REGISTRATION_RESPONSE消息来响应这个消息。
倘若一个本地子网列表参数被包括,这个新的列表在接收时刻变为活动。然而,与附加的本地子网络内的主机的已开始通信保持被翻译的地址。应当指出,由于存在竞态条件,在CREAM本地主机知道一个新的本地子网络之前可以发生在本地主机中的二个主机之间的通信。在这种情形下,通信可以有利地保持为地址翻译。这么做是为了防止打破Berkley套接字接口的语义。
EXTEND_REGISTRATION_RESPONSE
说明:
这个消息被使用来确认一个登记的本地主机的工作期限的成功轮询。通过发送这个消息,CREAM本地主机确认它被登记。
句法:
名称 | 值 | 字节数 |
<Version><Message Type(EXTEND_REGISTRATION_RESPONSE)>Length <剩余长度> 0x02<Local host ID> |
语义:
Version:CREAM协议的版本。
Message Type:标识消息的类型,应当是EXTEND_REGISTRATION_RESPONSE。
Length:这个消息的总的剩余长度,以字节计。
Local host ID:CREAM本地主机的ID,如在登记期间被指配的。
Behavior:
倘若接收到正确的EXTEND_REGISTRATION_INDICATION,本地主机应当发送EXTEND_REGISTRATION_RESPONSE。
DE-REGISTRATION_REQUEST
说明:
这个消息被CREAM本地主机用来在CREAM网关处撤消登记。
句法:
名称 | 值 | 字节数 |
<Version><Message Type(DE_REGISTRATION_REQUEST)>Length <剩余长度> 0x02<Local host ID> |
语义:
Version:CREAM协议的版本。
Message Type:标识消息的类型,应当是DE-REGISTRATION_REQUEST。
Length:这个消息的总的剩余长度,以字节计。
Local host ID:CREAM本地主机的ID在登记期间被指配。
CREAM本地主机应当被登记,以便发送这个消息。CREAM本地主机保持被登记直至收到相应的DE-REGISTRATION_CONFIRM或ERROR_INDICATION为止。
Behavior:
这个消息应当被DE-REGISTRATION_CONFIRM消息确认或由定义了拒绝原因的ERROR_INDICATION来拒绝。
DE-REGISTRATION_CONFIRM
说明:
这个消息确认DE-REGISTRATION_REQUEST。
句法:
名称 | 值 | 字节数 |
<Version><Message Type(DE_REGISTRATION_CONFIRM)>Length <剩余长度> 0x02<Local host ID> |
语义:
Version:CREAM协议的版本。
Message Type:标识消息的类型,应当是DE-REGISTRATION_CONFIRM。
Length:这个消息的总的剩余长度,以字节计。
Local host ID:CREAM本地主机的ID,如在登记期间被指配的。
在接收这个消息后,CREAM本地主机不再被登记,并且用于这个本地主机的所有的租约被去除(如果有的话),如果CREAM本地主机已发送一个DE-REGISTRATION_REQUEST的话。
Behavior:
倘若这个消息被接收而不发送DE-REGISTRATION_REQUEST,则本地主机应当发送一个ERROR_INDICATION。
INBOUND_ACCESS_REQUEST
说明:
一个登记的CREAM本地主机使用这个消息来请求一个进入访问端口映射。
句法:
名称 | 值 | 字节数 |
<Version><Message Type(INBOUND_ACCESS_REQUEST)>Length <剩余长度> 0x02<Local host ID>{Address(local)}{Port(local)} |
语义:
Version:CREAM协议的版本。
Message Type:标识消息的类型,应当是INBOUND_ACCESS_REQUEST。
Length:这个消息的剩余长度,以字节计。
Local host ID:CREAM本地主机的ID,如在登记期间被指配的。
Address(local):这是为其请求进入访问的、本地网络内的主机的本地地址。这个参数是任选的,如果没有被包括,则CREAM本地主机的本地地址由CREAM网关假定。应当指出:通过指定不同的本地地址,一个CREAM本地主机可以请求用于另一个本地主机的一个地址映射。然而,CREAM本地主机保持负责租约的工作期限。
Port(local):这是为其请求该映射的本地端口。这个参数是任选的。倘若这个参数不被包括,则由CREAM网关选择一个映射。
过请求一个进入端口映射,主机(或者CREAM本地主机或者在本地地址中指定的其它本地主机)保持负责对于在本地有效负荷内的地址信息的地址翻译,所以,当对于不同于CREAM本地主机的主机请求进入访问时,应当注意。在这种情形下,应当使用诸如NAT
ALG的技术或不用有效负荷中的IP地址信息的协议。
对于一个进入访问请求,CREAM网关总是指配1对1的映射,意思是从CREAM网关处的端口x到打算的主机的端口x的映射,其中x是相同的。
当端口参数被包括时,CREAM网关将它作为熟知的端口(例如,对于超文本传送协议的80)来穿过(thread),且将因此尝试指配在外面的相同的端口号。应当指出,这个端口只能被指配一次。
Behavior:
INBOUND_ACCESS_REQUEST应当用INBOUND_ACCESS_CONFIRM或ERROR_INDICATION响应。
INBOUND_ACCESS_CONFIRM
说明:
这是对于INBOUND_ACCESS_REQUEST的响应。
句法:
名称 | 值 | 字节数 |
<Version><Message Type(INBOUND_ACCESS_CONFIRM)>Length <剩余长度> 0x02<Local host ID><Lease ID><Address><Port Mapping> |
话义:
Version:CREAM协议的版本。
Message Type:标识消息的类型,应当是INBOUND_ACCESS_CONFIRM。
Length:这个消息的剩余长度,以字节计。
Local host ID:CREAM本地主机的ID,如在登记期间被指配的。
Lease ID:Lease ID被指配给这个特定组的端口映射。这个ID应当被使用于进一步参考。
Address:该地址被用于与外部网络进行通信。这是在互联网的
公共域内有效的地址。
Port Mapping:被创建的一组端口映射。
如果在所述一组端口映射内,至少包括一个有效的映射,则倘若不再需要映射的话,Lease ID应当被用来释放这个映射。倘若没有有效的映射被包括,则Lease ID可以被略去。一个有效的映射被定义为具有成功的状态代码的映射。倘若状态码定义了已得到的值映射,则通过使用不同于CREAM的另一个方法(例如,NAT ALG或UPnP)创建这个映射。
Behavior:
如用Lease ID标识的每组映射应当通过FREE_LEASE_REQUEST明显地被释放。
倘若接收到INBOUND_ACCESS_CONFIRM而没有首先由该CREAM本地主机发送相应的INBOUND_ACCESS_REQUEST,则应当发送相应的ERROR_INDICATION。
OUTBOUND_ACCESS_REQUEST
说明:
一个登记的CREAM本地主机使用这个消息来请求外出访问端口映射。
句法:
名称 | 值 | 字节数 |
<Version><Message_Type(OUTBOUND_ACCESS_REQUEST)>Length <剩余长度> 0x02<Local host ID>{Address(local)}<Port(local)>{Address(remote host)}{Port(remote host)} |
语义:
Version:CREAM协议的版本。
Message_Type:标识消息的类型,应当是OUTBOUND_ACCESS_REQUEST。
Message Length:这个消息的剩余长度,以字节计。
Local host ID:本地主机ID,如由CREAM网关在登记期间指配的。
Address(local):任选的,映射请求的主机的本地地址。倘若这个参数没有被包括,则为请求的CREAM本地主机创建映射。
Port(local):映射请求的一组本地端口号。
Address(remote host):任选的,远端主机的映射。倘若这个参数被包括,则一组被映射的端口的通信只能通过提供的地址被执行。
Port(remote host):任选的,通信所限于的一组远端端口号。倘若这个参数被包括,则通信被限制到所定义的端口号。
Behavior:
如果远端地址(IP地址或FQDN)被指定,则通信被限于与只有该远端地址的远端主机的通信。
如果远端端口(一组端口)被指定(例如,{80,80,80}),则通信被限于到指定组内的远端主机端口的通信。通过使用远端地址与远端端口的组合,对于一系列端口和特定的远端主机的通信的限制是可能的。
OUTBOUND_ACCESS_CONFIRM
说明:
这是对于OUTBOUND_ACCESS_REQUEST的响应。
句法:
名称 | 值 | 字节数 |
<Version><Message_Type(OUTBOUND_ACCESS_CONFIRM)>Length <剩余长度> 0x02<Local host ID><Lease ID><Address><Port Mapping> |
语义:
Version:CREAM协议的版本。
Message Type:标识消息的类型,应当是OUTBOUND_ACCESS_CONFIRM。
Length:这个消息的剩余长度,以字节计。
Local host ID:CREAM本地主机的ID,如在登记期间被指配的。
Lease ID:Lease ID被指配给这个特定组的端口映射。这个ID应当被使用于进一步参考。
Address:地址被用于与外部网络通信。这是在互联网的公共域内有效的地址。
Port Mapping:被创建的一组端口映射。
Behavior:
如用Lease ID标识的每组端口映射应当通过FREE_LEASE_REQUEST明显地被释放。
倘若接收到INBOUND_ACCESS_CONFIRM而没有首先由该CREAM本地主机发送相应的INBOUND_ACCESS_REQUEST,则应当发送相应的ERROR_INDICATION。
FREE_LEASE_REQUEST
说明:
一个登记的CREAM本地主机使用这个消息来释放由INBOUND_ACCESS_REQUEST或OUTBOUND_ACCESS_REQUEST创建的一组端口映射。
句法:
名称 | 值 | 字节数 |
<Version><Message_Type(FREE_LEASE_REQUEST)>Length <剩余长度> 0x02<Local host ID><Lease ID> |
语义:
Version:CREAM协议的版本。
MessageType:标识消息的类型,应当是FREE_LEASE_REQUEST。
Length:这个消息的剩余长度,以字节计。
Local host ID:CREAM本地主机的ID,如在登记期间被指配的。
Lease ID:Lease ID被指配给应当被释放的这个特定组的端口映射。
Behavior:
在发送FREE_LEASE_REQUEST后,一个CREAM本地主机不再被许可使用端口映射用于发送的目的。在接收相应的FREE_LEASE_CONFIRM后,保证不再通过使用与Lease ID有关的路径接收消息。
倘若CREAM网关接收来自未登记的CREAM本地主机的或包含一个未知的Lease ID的FREE_LEASE_REQUEST,则发送相应的ERROR_INDICATION。
FREE_LEASE_CONFIRM
说明:
这个消息是对于一个成功的FREE_LEASE_REQUEST的响应,并且确认所识别的一组端口映射被释放。
句法:
名称 | 值 | 字节数 |
<Version><Message_Type(FREE_LEASE_CONFIRM)>Length <剩余长度> 0x02<Local host ID><Lease ID> |
语义:
Version:CREAM协议的版本。
Message Type:标识消息的类型,应当是FREE_LEASE_CONFIRM。
Length:这个消息的剩余长度,以字节计。
Local host ID:CREAM本地主机的ID,如在登记期间被指配的。
Lease ID:已经被释放了的一组端口映射的Lease ID。
Behavior:
在接收FREE_LEASE_CONFIRM后,相关的端口映射不再存在,所以,没有分组通过与识别的端口映射有关的路径到达。倘若CREAM本地主机在没有发送相应的FREE_LEASE_REQUEST或包含未知的本地主机或Lease ID的条件下接收到FREE_LEASE_CONFIRM,则应当发送相应的ERROR_INDICATION。
ERROR_INDICATION
说明:
这个消息表示错误,它可以由CREAM本地主机和CREAM网关发送。
句法:
名称 | 值 | 字节数 |
<Version><Message_Type(ERROR_INDICATION)>Length <剩余长度> 0x02<Message_Type>Error_Response_Code <错误响应码> 0x04{Local host ID}{Parameter_Type} <类型> 0x01 |
推荐的错误代码的表:
值 | 含义 |
0x00000000 | 未知的本地主机ID |
0xOO000001 | 未知的消息ID |
0x00000002 | 未知的参数类型 |
0x00000003 | 不正确的长度值 |
Ox00000100 | 无效的参值 |
0x00000101 | 无效的CREAM版本 |
0x00010000 | 已登记的本地主机 |
0x00010001 | 未登记的本地主机 |
语义:
Version:CREAM协议的版本。
Message Type:标识消息的类型,应当是ERROR_INDICATION。
Length:这个消息的剩余长度,以字节计。
Message Type:标识引起错误的消息类型。
Error_Response_Code:错误响应码。其定义见上面的表。
Local host ID:任选的,CREAM本地主机的ID,如在登记期间被指配的。倘若这个消息由CREAM网关发送,这标识引起该行动的CREAM本地主机,如果已知的话。倘若这个消息由CREAM本地主机发送,这标识本地主机,如果被指配的话。
Parameter_Type:标识引起错误的参数的类型,任选的。
Behavior:
这个消息表示错误。
应当看到,这里示出的和描述的实施例和变例仅仅是本发明的原理的说明,以及可以由本领域技术人员在不背离本发明的范围和精神的条件下作出各种修正。
Claims (22)
1.一种用于客户请求的外部地址映射的方法,所述方法包括以下步骤:
从一个本地主机接收一个用于访问一个公共网的请求;
确定要被用于访问所述公共网的一个公共地址;
把相应于所述本地主机的一个本地地址映射成该公共地址;以及
把所述公共地址返回给所述本地主机。
2.权利要求1的方法,其中请求的所述访问是从公共网到本地主机。
3.权利要求1的方法,其中请求的所述访问是从本地主机到公共网。
4.权利要求1的方法,其中所述公共地址是相应于公共网上的一个远端主机的一个地址。
5.权利要求1的方法,还包括以下步骤:
创建具有一个或多个报头和一个或多个有效负荷区域的一个分组,该分组被用于所述访问;以及
把至少该公共地址放置在所述一个或多个有效负荷区域内的给定的一个有效负荷区域。
6.权利要求5的方法,其中以下的一项或多项被加密:所述一个或多个报头和所述一个或多个有效负荷区域。
7.权利要求1的方法,其中所述公共网由一组或多组地址来定义。
8.权利要求7的方法,其中所述一组或多组地址由一个或多个子网列表来定义。
9.权利要求1的方法,其中:
所述确定一个公共地址的步骤还包括确定一个公共端口的步骤;
所述映射的步骤还包括把所述公共端口映射到所述本地主机的步骤;以及
所述返回公共地址的步骤还包括返回所述公共端口给所述本地主机的步骤。
10.权利要求1的方法,其中:
所述请求访问一个公共网的步骤还包括请求在访问期间要使用的一个端口的步骤;
所述映射的步骤还包括把所述请求的端口映射到所述本地主机的步骤;以及
所述返回公共地址的步骤还包括返回所述请求的端口给所述本地主机的步骤。
11.权利要求1的方法,其中所述映射的步骤还包括为所述本地主机确定一个标识并且把该标识返回给所述本地主机的步骤。
12.权利要求1的方法,其中所述映射的步骤还包括为所述本地主机确定一个本地子网列表并且把该本地子网列表返回给所述本地主机的步骤。
13.权利要求12的方法,其中所述本地子网列表定义了一个本地网络,由此区分所述本地网络与所述公共网。
14.权利要求1的方法,其中:
所述访问是从所述本地主机到所述公共网;
所述访问包括所述本地地址和一个本地端口;以及
该方法还包括以下步骤:
把所述本地地址修改为所述公共地址;以及
如果必要,把所述本地端口修改为相应于一个公共主机的一个公共端口。
15.权利要求1的方法,其中:
所述访问是从所述公共网到所述本地主机;
所述访问包括一个第二公共地址和一个公共端口;以及
该方法还包括以下步骤:
把所述第二公共地址修改为所述本地地址;以及
如果必要,把所述公共端口修改为相应于所述本地主机的一个本地端口。
16.一种用于客户请求的外部地址映射的系统,包括:
一个存储器;以及
至少一个被耦合到所述存储器的处理器,用来:
从一个本地主机接收一个用于访问一个公共网的请求;
确定要被用于访问所述公共网的一个公共地址;
把相应于所述本地主机的一个本地地址映射成所述公共地址;以及
把所述公共地址返回给所述本地主机。
17.一种用于客户请求的外部地址映射的方法,所述方法包括以下步骤:
确定一个外出访问是到一个本地网络还是到一个公共网;以及
当所述外出访问是到一个公共网时,执行以下步骤:
请求一个到公共网的访问;
响应于该请求而接收公共信息;以及
把所述公共信息放置在为所述外出访问创建的一个或多个分组的一个或多个有效负荷部分。
18.权利要求17的方法,其中所述公共信息包括一个公共地址。
19.权利要求17的方法,其中所述公共信息包括一个公共端口。
20.权利要求17的方法,其中所述请求一个到所述公共网的访问的步骤还包括请求一个本地端口的步骤,以及其中把所述公共信息放置在一个有效负荷的步骤还包括把所述请求的本地端口放置在有效负荷的步骤。
21.权利要求17的方法,还包括执行所述到公共网的外出访问的步骤,其中该外出访问使用一个或多个以下的协议:请求评注(RFC)959的文件传送协议(FTP);H.323国际电信联盟(ITU)标准;会话发起协议(SIP)RFC 2543;资源保留协议(RSIP)RFC2205;互联网协议封装安全协议(IPsec-ESP)RFC 2402;kerberos4;kerberos 5;telnet RFC 854;和rlogin RFC 1282。
22.权利要求17的方法,其中一个应用执行确定、请求、接收、和放置步骤,并且其中所述应用是以下的一项或多项:一个对等应用;一个需要保留地址映射的应用;一个remote shell(RSH)应用;一个X视窗系统应用;以及一个X-term应用。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US50728603P | 2003-09-30 | 2003-09-30 | |
US60/507,286 | 2003-09-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1860768A true CN1860768A (zh) | 2006-11-08 |
Family
ID=34393229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004800282892A Pending CN1860768A (zh) | 2003-09-30 | 2004-09-27 | 客户请求的外部地址映射 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070058642A1 (zh) |
EP (1) | EP1671469A1 (zh) |
JP (1) | JP2007507962A (zh) |
KR (1) | KR20060093704A (zh) |
CN (1) | CN1860768A (zh) |
WO (1) | WO2005032106A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7535878B2 (en) | 2003-03-28 | 2009-05-19 | Intel Corporation | Method, apparatus and system for ensuring reliable access to a roaming mobile node |
US7580396B2 (en) | 2003-11-05 | 2009-08-25 | Intel Corporation | Method, apparatus and system for obtaining and retaining a mobile node home address |
US20050111454A1 (en) * | 2003-11-25 | 2005-05-26 | Narjala Ranjit S. | Method, apparatus and system for intelligently and dynamically routing mobile internet protocol packets |
US20050111380A1 (en) * | 2003-11-25 | 2005-05-26 | Farid Adrangi | Method, apparatus and system for mobile nodes to dynamically discover configuration information |
US20050113109A1 (en) * | 2003-11-25 | 2005-05-26 | Farid Adrangi | Method, apparatus and system for context-based registrations based on intelligent location detection |
US20050136924A1 (en) * | 2003-12-04 | 2005-06-23 | Farid Adrangi | Method, apparatus and system for enabling roaming mobile nodes to utilize private home IP addresses |
US7782902B2 (en) * | 2004-07-14 | 2010-08-24 | Audiocodes, Inc. | Apparatus and method for mapping overlapping internet protocol addresses in layer two tunneling protocols |
US7483393B2 (en) * | 2004-12-07 | 2009-01-27 | Cisco Technology, Inc. | Method and apparatus for discovering internet addresses |
JP4898168B2 (ja) * | 2005-03-18 | 2012-03-14 | キヤノン株式会社 | 通信システム、通信装置、通信方法、及びプログラム |
US8705550B2 (en) * | 2005-08-08 | 2014-04-22 | Qualcomm Incorporated | Device interface architecture and protocol |
US8381297B2 (en) | 2005-12-13 | 2013-02-19 | Yoggie Security Systems Ltd. | System and method for providing network security to mobile devices |
US8869270B2 (en) | 2008-03-26 | 2014-10-21 | Cupp Computing As | System and method for implementing content and network security inside a chip |
US20080276302A1 (en) | 2005-12-13 | 2008-11-06 | Yoggie Security Systems Ltd. | System and Method for Providing Data and Device Security Between External and Host Devices |
US8331263B2 (en) * | 2006-01-23 | 2012-12-11 | Microsoft Corporation | Discovery of network nodes and routable addresses |
US8365272B2 (en) | 2007-05-30 | 2013-01-29 | Yoggie Security Systems Ltd. | System and method for providing network and computer firewall protection with dynamic address isolation to a device |
US8458338B2 (en) * | 2007-06-15 | 2013-06-04 | Nec Corporation | Address translation device and address translation method |
JP5207270B2 (ja) * | 2007-07-12 | 2013-06-12 | Necインフロンティア株式会社 | 複数のネットワーク間の通信システム |
FR2925190B1 (fr) * | 2007-12-18 | 2009-11-20 | Alcatel Lucent | Procede et dispositif de communication entre plusieurs interfaces de connexion |
US8631488B2 (en) | 2008-08-04 | 2014-01-14 | Cupp Computing As | Systems and methods for providing security services during power management mode |
US20110209000A1 (en) * | 2008-10-07 | 2011-08-25 | Telefonaktiebolaget L M Ericsson (Publ) | Systems and Methods for Allocating Network Resources From One Address Realm to Clients in a Different Address Realm |
WO2010059864A1 (en) | 2008-11-19 | 2010-05-27 | Yoggie Security Systems Ltd. | Systems and methods for providing real time access monitoring of a removable media device |
US8750112B2 (en) * | 2009-03-16 | 2014-06-10 | Echostar Technologies L.L.C. | Method and node for employing network connections over a connectionless transport layer protocol |
JP5730914B2 (ja) * | 2010-03-05 | 2015-06-10 | ブラス・モンキー・インコーポレイテッドBrass Monkey,Inc. | Webブラウザにおける双方向通信および内容制御のシステムおよび方法 |
US8902743B2 (en) * | 2010-06-28 | 2014-12-02 | Microsoft Corporation | Distributed and scalable network address translation |
US9973501B2 (en) | 2012-10-09 | 2018-05-15 | Cupp Computing As | Transaction security systems and methods |
US11157976B2 (en) | 2013-07-08 | 2021-10-26 | Cupp Computing As | Systems and methods for providing digital content marketplace security |
US9762614B2 (en) | 2014-02-13 | 2017-09-12 | Cupp Computing As | Systems and methods for providing network security using a secure digital device |
US10594829B2 (en) * | 2017-05-24 | 2020-03-17 | At&T Intellectual Property I, L.P. | Cloud workload proxy as link-local service configured to access a service proxy gateway via a link-local IP address to communicate with an external target service via a private network |
CN110365560B (zh) * | 2019-07-15 | 2021-09-24 | 上海市共进通信技术有限公司 | 家庭网关中实现服务端口自适应的控制方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6618757B1 (en) * | 2000-05-17 | 2003-09-09 | Nortel Networks Limited | System and method for dynamic IP address management |
US6944167B1 (en) * | 2000-10-24 | 2005-09-13 | Sprint Communications Company L.P. | Method and apparatus for dynamic allocation of private address space based upon domain name service queries |
US7139841B1 (en) * | 2002-07-24 | 2006-11-21 | Cisco Technology, Inc. | Method and apparatus for handling embedded address in data sent through multiple network address translation (NAT) devices |
DE60202863T2 (de) * | 2002-08-30 | 2005-06-30 | Errikos Pitsos | Verfahren, Gateway und System zur Datenübertragung zwischen einer Netzwerkvorrichtung in einem öffentlichen Netzwerk und einer Netzwerkvorrichtung in einem privaten Netzwerk |
KR100886550B1 (ko) * | 2002-09-17 | 2009-03-02 | 삼성전자주식회사 | 아이피 어드레스 할당 장치 및 방법 |
JP2004186814A (ja) * | 2002-11-29 | 2004-07-02 | Fujitsu Ltd | 共通鍵暗号化通信システム |
-
2004
- 2004-09-27 US US10/573,749 patent/US20070058642A1/en not_active Abandoned
- 2004-09-27 WO PCT/IB2004/051877 patent/WO2005032106A1/en not_active Application Discontinuation
- 2004-09-27 EP EP04770096A patent/EP1671469A1/en not_active Withdrawn
- 2004-09-27 CN CNA2004800282892A patent/CN1860768A/zh active Pending
- 2004-09-27 KR KR1020067006250A patent/KR20060093704A/ko not_active Application Discontinuation
- 2004-09-27 JP JP2006530927A patent/JP2007507962A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2005032106A1 (en) | 2005-04-07 |
EP1671469A1 (en) | 2006-06-21 |
JP2007507962A (ja) | 2007-03-29 |
KR20060093704A (ko) | 2006-08-25 |
US20070058642A1 (en) | 2007-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1860768A (zh) | 客户请求的外部地址映射 | |
CN1206837C (zh) | 按规定的策略在多服务器实施ip数据报发送的方法和系统 | |
CN1286039C (zh) | 维护Internet域名数据的方法和装置 | |
CN1172506C (zh) | 通过互联网传送多媒体数据的管理方法及实施该方法所用的芯片卡 | |
CN1647489A (zh) | 能够连接到具有本地地址域的网络的方法及系统 | |
CN1764160A (zh) | 移动通信系统,路由器,移动节点和移动通信方法 | |
CN1774889A (zh) | 用于IPv6移动节点穿越IPv4网络的布置 | |
CN101053224A (zh) | 通信系统、信息处理设备、中介服务器、标识信息传送服务器及其通信方法和程序 | |
CN1269337C (zh) | 内容自适应服务控制方法 | |
CN1442984A (zh) | 通信设备和网络系统 | |
CN1890945A (zh) | 用于横越防火墙和网络地址转换(nat)设置的通信系统 | |
CN1481081A (zh) | 虚拟专用网络系统 | |
CN1302650C (zh) | 网络访问服务器及方法 | |
CN101060464A (zh) | 地址变换装置、消息处理方法及网络系统 | |
CN1682499A (zh) | 内容分发系统 | |
CN1756197A (zh) | 用于管理设备的系统、设备、方法和计算机程序产品 | |
CN1890944A (zh) | 用于web服务中介体的端口类型不可知的代理支持 | |
CN1708017A (zh) | 协议仿真器 | |
CN1703016A (zh) | 虚拟网络拓扑结构生成 | |
CN1592259A (zh) | 网络用交换装置、路径管理服务器、网络接口装置及其控制方法 | |
CN1121008C (zh) | 一种网络环境下的计算机远程启动方法 | |
CN1414751A (zh) | 服务控制网络,服务器,网络装置,服务信息分配方法以及服务信息分配程序 | |
CN1781087A (zh) | 安全访问带有客户端接收的专用网的方法和系统 | |
CN1525709A (zh) | 名称解析服务器和分组传送设备 | |
CN1969511A (zh) | 信息处理装置、端口检测装置、信息处理方法和端口检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |