CN104756462A - 用于在限制性防火墙后进行tcp turn操作的方法和系统 - Google Patents

用于在限制性防火墙后进行tcp turn操作的方法和系统 Download PDF

Info

Publication number
CN104756462A
CN104756462A CN201380056208.9A CN201380056208A CN104756462A CN 104756462 A CN104756462 A CN 104756462A CN 201380056208 A CN201380056208 A CN 201380056208A CN 104756462 A CN104756462 A CN 104756462A
Authority
CN
China
Prior art keywords
client
tcp
peers include
turn server
service identity
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.)
Granted
Application number
CN201380056208.9A
Other languages
English (en)
Other versions
CN104756462B (zh
Inventor
谢凯端
布鲁诺·理查德·普瑞斯
乔纳森·洪曼·萨乌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maliki Innovation Co ltd
Original Assignee
BlackBerry Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BlackBerry Ltd filed Critical BlackBerry Ltd
Publication of CN104756462A publication Critical patent/CN104756462A/zh
Application granted granted Critical
Publication of CN104756462B publication Critical patent/CN104756462B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2589NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2514Translation of Internet protocol [IP] addresses between local and global IP addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种在位于NAT和限制访问防火墙后面的客户端处的方法,包括:使用能够穿越限制访问防火墙的端口来建立与TCP TURN服务器的控制连接;向所述TCP TURN服务器请求分配客户端服务身份;从TCP TURN服务器接收包含客户端服务身份在内的响应,所述客户端服务身份独立于用于与TCP TURN服务器通信的任何端口。此外,一种在TCP TURN服务器处的方法,包括:在第一端口上监听来自客户端的通信,所述客户端位于限制访问防火墙后面并且所述第一端口能够穿越所述限制访问防火墙;在第一端口上建立与客户端的控制连接;从计算客户端接收针对分配客户端服务身份的请求;以及发送包含客户端服务身份在内的响应。

Description

用于在限制性防火墙后进行TCP TURN操作的方法和系统
技术领域
本公开涉及客户端与对等端之间的传输控制协议(TCP)连接,且具体地涉及在客户端位于网络地址转换器(NAT)和限制性防火墙后的情况下客户端与对等端之间的TCP连接。
背景技术
网络地址转换器(NAT)通过隐藏网络上节点的网际协议(IP)地址来提高网络的安全性,从而防止从网络外部直接可达节点。然而,NAT也可以导致实时通信方面的问题,因为网络中的节点可能不能从网络外部直接接收呼入呼叫、会话、通信、对话或交易。
NAT也可以与防火墙处在同一位置。为了克服NAT/防火墙造成的障碍,存在各种解决方案。NAT会话传输应用程序(Session TraversalUtilities for NAT,STUN)(由互联网工程任务组(IETF)请求注解(RFC)5389“NAT会话传输应用程序(STUN)”来定义,其内容以引用方式并入本文)为IP节点上的客户端软件提供了用于获知从其网络之外的其他网络(例如在NAT另一侧的IP节点)观察到的其在NAT上被指派的地址和端口的方法。由于NAT/防火墙功能的多样性和复杂性,STUN本身不足以允许呼入业务穿越NAT。
使用NAT周围中继的穿越(TURN)(在IETF RFC 5766“使用NAT周围中继的穿越(TURN):针对NAT会话传输应用程序(STUN)的中继扩展”中定义,其内容以引用方式并入本文中)引入了“中间人”类型服务器,该服务器代表NAT后面的客户端来中继、代理或传输IP数据业务,从而允许该客户端可从NAT的另一侧到达。TURN服务器在两个通信点之间中继业务。TURN协议允许NAT后面的主机(本文中称为TURN客户端)请求被称为TURN服务器的另一主机充当中继。TURN是STUN的扩展,并且大多数TURN消息与它们的STUN等同物具有相同的格式。
TURN不提供将客户端的中继传输地址传送给它的对等端的方法,也不提供让客户端获知每个对等端的面向外部的IP地址和端口的方法,如果对等端也在NAT后,该面向外部的IP地址和端口将是“服务器自反传输地址”。针对这种通信,存在其它协议和解决方案,包括会话发起协议(SIP)和交互式连接建立(ICE),ICE是在IETF RFC 5245“交互式连接建立(ICE):针对要约/应答协议的网络地址转换器(NAT)的协议”,其内容以引用方式并入本文中。
然而,在一些网络中,防火墙可以限制TCP连接仅使用某些端口。这可能出于例如安全或隐私的原因。例如,在一些网络中,只有TCP端口80和443可能为TCP开启。TCP端口80通常用于超文本传输协议(HTTP),以及端口443通常用于具有传输层安全(TLS)的HTTP,其也被称为HTTPS。为了使用户能够访问万维网但不能访问其它内容,仅针对出站的TCP连接可以允许这种端口。除上述端口之外,或者作为上述端口的备选,可以允许其它端口。对端口的限制在很多公司或企业的网络环境中是常见的,它们在这里被称为“限制访问的网络环境”。
在限制访问的网络环境中,由于TCP TURN服务器向客户端指派唯一的端口以唯一标识客户端,并且通过防火墙可以限制这种端口访问,因此TCP TURN服务器解决方案可能无法工作。
发明内容
附图说明
参照附图将更好地理解本公开,其中:
图1是示出了用于使用TURN服务器在客户端与对等端之间通信的示例网络结构的框图;
图2是示出了客户端到TURN服务器的初始化的示例数据流程图;
图3是示出了通过TCP TURN服务器来建立从客户端到对等端的连接的示例数据流程图;
图4是示出了通过TCP TURN服务器来建立从对等端到客户端的连接的示例数据流程图;
图5是示出了通过限制访问防火墙的客户端到TURN服务器的初始化的示例数据流程图;
图6是示出了通过TCP TURN服务器通过限制访问防火墙来建立从客户端到对等端的连接的示例数据流程图;
图7是示出了通过TCP TURN服务器通过限制访问防火墙来建立从对等端到客户端的连接的示例数据流程图;
图8是示出了通过一对TCP TURN服务器来建立从对等端到客户端的连接的示例数据流程图;以及
图9是示例计算设备的简化框图。
具体实施方式
本公开提供了一种在位于网络地址转换器(NAT)和限制访问防火墙后面的计算客户端处的方法,该方法包括:使用能够穿越限制访问防火墙的端口来建立与传输控制协议(TCP)使用NAT周围中继的穿越(TURN)服务器的控制连接;向TCP TURN服务器请求分配客户端服务身份;以及从TCP TURN服务器接收包含客户端服务身份在内的响应,其中,客户端服务身份独立于用于与TCP TURN服务器通信的任何端口。
本公开还提供了一种计算设备,包括:处理器;以及通信子系统,其中,该计算设备位于网络地址转换器(NAT)和限制访问防火墙的后面,并且被配置为:使用能够穿越限制访问防火墙的端口来建立与传输控制协议(TCP)使用NAT周围中继的穿越(TURN)服务器的控制连接;向TCP TURN服务器请求分配客户端服务身份;以及从TCP TURN服务器接收包含客户端服务身份在内的响应,其中,客户端服务身份独立于用于与TCP TURN服务器通信的任何端口。
本公开还提供了一种在TCP使用网络地址转换器周围中继的穿越(TURN)服务器处的方法,该方法包括:在第一端口上监听来自计算客户端的通信,计算客户端位于限制访问防火墙后面并且第一端口能够穿越限制访问防火墙;在第一端口上接受与通信客户端的控制连接;从计算客户端接收针对分配客户端服务身份的请求;以及发送包含客户端服务身份在内的响应,其中,客户端服务身份独立于用于与TCP TURN服务器通信的任何端口。
本公开还提供了一种TCP使用网络地址转换器周围中继的穿越(TURN)服务器,包括:处理器;通信子系统,其中,TCP TURN服务器被配置为:在第一端口上监听来自计算客户端的通信,计算客户端位于限制访问防火墙后面并且第一端口能够穿越限制访问防火墙;在第一端口上接受与通信客户端的控制连接;从计算客户端接收针对分配客户端服务身份的请求;以及发送包含客户端服务身份在内的响应,其中,客户端服务身份独立于用于与TCP TURN服务器通信的任何端口。
现在参考图1,其符合IETF RFC 5766的第2节。如图1中可见,TURN客户端110是NAT/防火墙112后面的主机。如IETF RFC 5766中所示,TURN客户端110通常与IETF RFC 1918定义的私有网络连接,并且穿过一个或多个NAT 112连接到公共互联网。
TURN客户端110与TURN服务器114通过NAT/防火墙112进行通信。如图1所示,TURN客户端110位于私有侧并且TURN服务器114位于公共侧。如IETF 5766的第2节进一步所示,TURN客户端110从被称为客户端的主机传输地址的IP地址和端口的组合与TURN服务器114通信。IP地址和传输层协议端口(下文中就称为“端口”)的组合被称为传输地址。
因此,TURN客户端110从其主机传输地址向被称为TURN服务器传输地址的TURN服务器114上的传输地址发送TURN消息。在一些实施例中,可以在TURN客户端110上配置TURN服务器传输地址。在其它实施例中,该地址可以通过其他技术来发现。
此外,如IETF RFC 5766的第2节所示,由于TURN客户端110在NAT的后面,TURN服务器114可以将来自客户端110的分组视为来自NAT上的传输地址本身。该地址可以被称为TURN客户端的“服务器自反传输地址”。由TURN服务器向TURN客户端的服务器自反传输地址发送的分组可以被NAT转发至TURN客户端的主机传输地址。
TURN客户端110使用TURN命令在TURN服务器114上对分配进行创建和操作。分配是TURN服务器114上的数据结构,并且可以包含针对TURN客户端110分配的中继传输地址等。中继传输地址是TURN服务器114上的传输地址,该传输地址可供对等端用来让TURN服务器114将数据中继至TURN客户端110。分配由它的中继传输地址来唯一标识。上述内容在IETF RFC 5766中规定。
一旦创建了分配,TURN客户端110能够将应用数据连同对要向哪个对等端发送该数据的指示一起向TURN服务器114发送。然后,TURN服务器114可以向合适的对等端中继该数据。向TURN服务器114传输应用数据的通信可以在TURN消息内部,并且在TURN服务器114处从TURN消息中提取该数据,并在用户数据报协议(UDP)数据报中向对等端发送该数据。从而,在图1的示例中,可以由TURN客户端110来选择对等端120和对等端130之一。在图1的示例中,对等端120位于NAT/防火墙122的后面。
在相反的方向上,诸如对等端130之类的对等端可以在UDP数据报中向TURN服务器114发送应用数据。该应用数据将会被发送至分配给TURN客户端110的中继传输地址,然后TURN服务器114能够将该数据封装在TURN消息中,并将其与对哪个对等端发送该数据的指示一起向TURN客户端110发送。
由于TURN消息包含对客户端正与哪个对等端进行通信的指示,TURN客户端110能够使用TURN服务器114上的单一分配与多个对等端通信。
当诸如对等端120之类的对等端位于NAT/防火墙122的后面时,客户端可以使用服务器自反传输地址而不是其主机传输地址来标识对等端。因此,如图1中可见的,NAT/防火墙122具有服务器自反传输地址:192.0.2.150:32102,并且这将是TURN客户端110使用的地址,而不是对等端主机的实际主机传输地址:192.168.100.2:49582。
在TURN服务器114上的每个分配与正好一个TURN客户端110关联,并且从而当分组到达TURN服务器114上的中继传输地址时,TURN服务器114知晓数据是针对哪个客户端的。然而,TURN客户端110可以同时具有它本身与TURN服务器114之间的多个分配。
IETF RFC 5766定义了在TURN客户端110与TURN服务器114之间对UDP、TCP以及基于TCP的传输层安全(TLS)的使用。然而,仅UDP被定义为在TURN服务器114与诸如对等端120之类的对等端之间使用。IETF RFC 6062,“使用NAT周围中继的穿越(TURN)针对TCP分配的扩展”(其内容以引用方式并入本文中)介绍了用于在TURN服务器114与诸如对等端120之类的对等端之间通信的TCP。
在TURN服务器与对等端之间使用TCP连接的能力允许TURN客户端之后将TURN客户端与对等端之间的端到端TCP连接用于服务。这种服务可以包括(但不限于):使用例如HTTP的网页浏览;使用例如文件传输协议(FTP)的文件传输;使用例如消息会话中继协议(MSRP)的即时通信等等。
此外,在TURN客户端110与TURN服务器114之间,RFC 6062使用TCP连接来替换TURN消息。通过中继传输地址来标识作为应用数据的目的地的对等端,该中继传输地址是TURN服务器114上的IP地址和端口,其由TURN服务器114分配并发送至TURN客户端110。
如本文所使用的,具有根据IETF RFC 6062的针对TCP的扩展的TURN服务器被称为“TCP TURN服务器”。
为了在客户端与TCP TURN服务器之间建立分配,可以提供各种消息传递。现在参考图2。
TURN客户端220首先与TCP TURN服务器214建立控制连接,如图2的220所示。控制连接是针对TCP TURN服务器的传输地址来进行的,该传输地址可以包括公知的TURN TCP端口,例如端口3478。
接下来,如箭头230所示,TURN客户端210向NAT/防火墙212发送TURN ALLOCATE(分配)请求消息。然后,向TCP TURN服务器214转发TURN ALLOCATE请求消息,如箭头232所示。
TCP TURN服务器214基于箭头232处的消息来认证TURN客户端210。可以存在各种认证协议,并且认证协议例如可以基于MD5散列函数。然而,其他认证方法对于本领域技术人员是已知的。
假设认证成功,然后TCP TURN服务器214为TURN客户端210分配被称作“中继传输地址”的IP地址和端口,并且向客户端210发回ALLOCATE响应消息,该响应消息指示成功的分配并且包含所分配的中继传输地址。由TCP TURN服务器214与NAT/防火墙212之间的箭头240、以及NAT/防火墙212与TURN客户端210之间的箭头242示出了ALLOCATE响应消息。
一旦在TCP TURN服务器214上完成分配,两种操作是可能的。这些操作可以在分配期间发生任意次数和以任意顺序发生。
第一操作涉及从TURN客户端到在TURN客户端的网络之外的对等端建立出站TCP连接。现在参考图3。
为了建立出站连接,TURN客户端310通过在控制连接上发送CONNECT(连接)请求消息来使用TCP TURN服务器314。该CONNECT请求消息包含对等端的面向外部的IP地址。参看图1,面向外部的IP地址可以是诸如对等端130的主机传输地址之类的对等端的主机传输地址,或者可以是诸如由NAT/防火墙112提供的服务器自反传输地址之类的服务器自反传输地址,这取决与对等端是否位于NAT的后面。
因此,如图3中可见的,TURN客户端310通过NAT/防火墙312与TCP TURN服务器314通信。TURN客户端310希望与对等端316建立通信。
上文中描述的CONNECT请求消息在图3中分别由客户端310与NAT/防火墙312之间以及NAT/防火墙312与TCP TURN服务器314之间的箭头320和322示出。
在接收到箭头322处的CONNECT请求消息时,TCP TURN服务器314建立与对等端316的TCP连接,如框334所示。该连接在下文中被称为对等端连接。
在成功的建立对等端连接之后,TCP TURN服务器314向对等端连接指派连接ID(连接标识符),并且向TURN客户端310发回响应于CONNECT请求的连接ID。在图3的实施例中,用箭头330和332示出了具有连接ID的CONNECT响应。
然后,在接收到箭头332处的响应时,TURN客户端310使用不同的源地址(差别可以仅在于源TCP端口)来建立针对TCP TURN服务器314的传输地址(该传输地址与在控制连接中使用的传输地址相同)的另一出站TCP连接(该连接被称为“数据连接”)。这在图3的实施例中使用框340来示出。
然后,TURN客户端310通过数据连接向TCP TURN服务器314发送CONNECTION_BIND(连接绑定)请求消息,该请求消息包含之前接收的CONNECT响应消息中的连接ID。这在图3的实施例中使用箭头342和344来示出。
然后,TCP TURN服务器314通过NAT/防火墙312向TURN客户端310发回具有连接ID的CONNECTION_BIND响应消息,如图3的实施例中的箭头346和348所示。
然后,TCP TURN服务器314在内部将在框340处建立的数据连接和在框334处建立的对等端连接绑定在一起。该绑定由图3的实施例中的框350示出。
在绑定之后,在数据连接上不发送其它TURN消息,并且仅提供应用数据分组。在数据连接上从TURN客户端310接收的分组由TCPTURN服务器314“照原样”通过对等端连接向对等端316中继。类似地,在对等端连接上从远程对等端接收的分组由TCP TURN服务器314照原样通过数据连接向TURN客户端310中继。
基于图2的分配而可以发生的第二操作涉及建立从TURN客户端网络之外的对等端到TURN客户端的TCP入站连接。换句话说,对等端希望产生针对TURN客户端的出站TCP连接。现在参考图4。
在图4的实施例中,TURN客户端410已经与TURN服务器414建立了控制连接并且TURN服务器414为TURN客户端410分配了中继传输地址。此外,在图4的实施例中,对等端416希望与TURN客户端410建立TCP连接。
为了建立TCP连接,对等端416建立针对TCP TURN服务器414上的TURN客户端410的中继传输地址的TCP连接。首先,TCP TURN服务器414接受来自对等端416的该TCP连接,该TCP连接在本文中被称为“对等端连接”并且由图4的框420示出。然后,TCP TURN服务器414检查许可,以查看是否允许远程对等端416与TURN客户端410进行连接。换句话说,进行检查以确定是否允许对等端向TCPTURN服务器414上的TURN客户端的被分配的中继传输地址发送数据。
如果许可批准,TCP TURN服务器向连接指派连接ID并且在CONNECTION_ATTEMPT(连接尝试)请求消息中向TURN客户端410发送连接ID。这种消息经过NAT/防火墙414,并且由图4的实施例中的箭头430和432示出。
然后,如图4的实施例中的箭头434和436所示,TURN客户端410发送针对CONNECTION_ATTEMPT请求消息的CONNECTION_ATTEMPT响应消息。
如果接受了连接尝试,TURN客户端410使用不同的源地址(差别可以仅在于源TCP端口)来建立针对TCP TURN服务器414的传输地址(该传输地址与控制连接中使用的传输地址相同)的出站TCP连接,该连接被称为“数据连接”。这在图4的实施例中由框440示出。
然后,TURN客户端410通过数据连接向TCP TURN服务器414发送CONNECTION_BIND请求消息,该请求消息包含之前CONNECT请求消息中接收到的连接ID。包含连接ID在内的CONNECTION_BIND请求消息经过NAT/防火墙412并且由图4的实施例中的箭头442和444示出。
然后,TCP TURN服务器414通过NAT/防火墙412向TURN客户端410发送具有连接ID的CONNECTION_BIND响应消息,由图4的实施例中的箭头446和448示出。
然后,TCP TURN服务器414在内部将在框440处建立的数据连接和在框420处建立的对等端连接绑定在一起。该绑定由图4的实施例中的框450示出。
在绑定之后,在数据连接上不发送其它TURN消息,并且仅提供应用数据分组。在对等端连接上从远程对等端接收的分组由TCPTURN服务器414照原样在数据连接上向客户端中继。类似地,在数据连接上从客户端410接收的分组之后照原样在对等端连接上向对等端416转发。
在上面的图3和图4的实施例中,出于安全原因或隐私原因等,防火墙可以限制仅针对某些端口进行TCP连接。例如,为了使用户能够访问万维网但不能访问其它任何内容,针对出站TCP连接,可以仅允许TCP端口80(例如,用于HTTP)以及端口443(例如,用于HTTPS)。然而端口80和端口443仅作为示例提供,并且也可以使用除这两个示例端口以外的端口或作为这两个示例端口的备选的端口。
因此,如果诸如客户端210、310或410之类的客户端处于限制访问的网络环境中,以及如果防火墙阻止针对在TCP TURN服务器的传输地址中使用的端口的访问,则图2、图3和图4的实施例将无法工作。在一些示例中,端口3478是在TCP TURN服务器的传输地址中使用的端口,即,由TURN客户端用来访问TCP TURN服务器。如果防火墙阻止该端口,则TCP连接建立将会失败/将不会发生。
此外,在图3和图4的实施例中,由于TCP TURN服务器将为TURN客户端分配不同的端口,限制访问的网络环境中的对等端可能不能访问TCP TURN服务器,然后在对等端的本地网络上防火墙可以阻止针对TCP TURN服务器上的TURN客户端被分配的端口(即,在中继传输地址中)的访问。
在以上两种情况下,在本地网络上被防火墙阻止的向该端口发送的任何IP分组或数据将会无限期的失败。例如,如果TCP TURN服务器为客户端A分配地址/端口(以下称为“Aa/Pp”),且对等端B驻留在限制访问网络上,则如果防火墙限制Pp,对等端B将无法建立针对“Aa/Pp”的任何TCP连接。本文中不对防火墙限制Aa的场景进行处理。
提供了用于克服不能通过限制访问的网络环境来使用TCP TURN服务器的问题的两个备选实施例。在第一实施例中,使用单一的TCPTURN服务器。在备选实施例中,使用两个TCP TURN服务器并且这两个TCP TURN服务器链接/连接在一起。下文中讨论每个实施例。
一个TCP TURN服务器
根据本公开的一个实施例,TCP TURN服务器可以监听所有可能的TCP端口中的仅一个TCP端口或子集,其中,TCP TURN服务器可以知晓上述端口将被防火墙允许/不禁止/不限制。如果使用多个端口,则TCP TURN服务器可以在第一端口上监听来自客户端的控制连接和数据连接,并且在第二端口上监听来自对等端的对等端连接。所有控制连接、对等端连接以及数据连接是在该端口或这些端口上建立的。在TCP TURN服务器处的所有/任何TCP连接上接收的第一消息确定连接类型。此外,向客户端分配客户端服务身份或标识符(下文中称为“TAG”)而不是IP地址和端口(即中继传输地址)。TAG与TCP TURN服务器上的中继传输地址以相同方式使用,即实现客户端和一个或多个对等端之间的通信/IP分组流。与使用中继传输地址的情况一样,TCP TURN服务器可以向客户端分配多个TAG,例如以实现去往和来自客户端上多个目的TCP端口的通信/IP业务/分组。
在下文描述的实施例中,术语“在端口上监听”和“监视定向至端口号的业务”视为等价术语。
初始化
与上文中图2的实施例一样,TCP TURN服务器需要与客户端进行初始化。在这一点上,参考图5。
在图5的示例实施例中,客户端510通过NAT/防火墙512与TCPTURN服务器514进行通信。
TCP TURN服务器514在(例如通过配置)被知晓允许通过客户端的本地防火墙的一个或多个端口上监听,而不是仅在通常的STUN/TURN端口上监听。例如,TCP TURN服务器514可以在端口80、433等上监听。在一些实施例中,也可以在端口3478的常见STUN/TURN端口上监听。然而,这是可选的,并且在其它实施例中不需要在STUN/TURN端口上监听。
与图2的实施例类似,并且如IETF RFC 6062中定义的,客户端510建立针对TCP TURN服务器的控制连接,如图5的实施例中的框520所示。然而,在图5的实施例中,客户端510使用底层TCP连接的端口号,已知该底层TCP连接被允许通过NAT/防火墙512实体并且已知该底层TCP连接由目的TCP TURN服务器514来服务。
然后,客户端510通过NAT/防火墙512向TCP TURN服务器514发送ALLOCATE请求消息,如箭头530和532所示。
在从客户端接收箭头532处的ALLOCATE请求消息时,TCPTURN服务器514随后分配至少一个且可能是多于一个的标识符、身份、假名、化名、或其它标识标签(下文中称为TAG),而不是按照IETF RFC 6062将向客户端分配不同地址和端口以用作中继传输地址。然后,由TCP TURN服务器514在“ALLOCATE响应”消息中向客户端510发送所分配的TAG,如箭头540和542所示。下文提供了TAG标识符的示例。
在一个可选实施例中,客户端510可以在从TCP TURN服务器514接收的ALLOCATE响应中检查TAG的存在性。如果TAG存在于该消息中,则客户端确定其被TCP TURN服务器指派了TAG而不是特定端口。否则,如果消息中缺少或不存在TAG,则客户端确定其被TCP TURN服务器依照IETF RFC 6062分配了一个或多个端口。这可以提供后向兼容性,其中,TCP TURN服务器可能未被配置为提供TAG而被配置为提供端口。图5的实施例中的虚线550示出了可选检查。
在另一可选实施例中,客户端510可以在ALLOCATE请求消息530中向TCP TURN服务器514指示它优先使用TAG而不是端口。这可以通过例如在ALLOCATE响应消息中存在或缺少例如标志、属性或比特字段中的比特或指示符之类的值来实现。例如,ALLOCATE请求消息530可以包括设定为诸如1或0之类的值的TAG属性。在接收具有该指示的ALLOCATE请求消息530时,TCP TURN服务器514可以确定是否允许客户端使用该特征,并且如果允许,TCP TURN服务器514可以向客户端510分配或指派TAG,并且将所分配的TAG包括在关联的ALLOCATE响应消息中。这假定TCP TURN服务器514支持TAG特征,而不是支持将端口用于区分客户端。如果TCP TURN服务器514不支持TAG特征,则在TCP TURN服务器514处可以忽略该比特或指示符。
图5的实施例是IETF RFC 6062中规定的完全过程的简化。上文中没有提到的附加特征和功能也可以在客户端和TCP TURN服务器上实现并出现。这些特征和功能包括(但不限于):失败或错误处理、许可设置或检查、认证等等。
一旦向TCP TURN服务器认证了客户端,为了接收来自对等端实体的呼入连接,客户端需要向对等端实体通告某些连接信息。在IETFRFC 6062的当前实施例下,该连接信息包括TCP TURN服务器上被分配给客户端的至少一个端口以及该TCP TURN服务器的标识符。该标识符可以是IP地址、主机名称、或者是主机名称和域名,例如完全合格域名(FQDN)等等。
相反的,在本公开的一些实施例中,连接信息代之以包括以下至少一项:向客户端分配的TAG、TCP TURN服务器愿意从对等端实体接受呼入连接所用的TCP TURN服务器上的端口、以及TCP TURN服务器的标识符。同样,该标识符可以是TCP TURN服务器的IP地址、主机名称、或者是诸如FQDN之类的主机名称与域名。下文中描述了用于通告连接信息的各种方法。然而下面的实施例并不是限制性的,并且也可以应用其它技术以确保对等端实体获得用于建立与客户端的连接的连接信息。
TCP TURN服务器514不仅在该传输层端口中监听客户端通信,它也监听已知被允许通过一个或多个对等端实体的防火墙的一个或多个传输层端口,例如TCP端口,以允许来自对等端实体的呼入对等端通信。传输层端口在不同的连接类型之间可以(但不必须)不同,该不同的连接类型包括控制连接、数据连接以及对等端连接。在IETFRFC 6062中,TCP TURN服务器514根据在TCP TURN服务器上请求的传输层端口来区分控制连接、数据连接以及对等端连接。然而,根据图5的实施例,一个或多个相同端口可以用于控制连接、数据连接以及对等端连接中的两项或更多项,并且因此由针对TCP TURN服务器的呼入IP连接所请求的传输层端口本身可能无法区分这些不同的连接类型。为了支持对不同连接类型的区分,TCP TURN服务器可以根据以下方式进行区分。
如果由TCP TURN服务器接收的第一消息是有效的ALLOCATE请求消息,并且分配成功,则连接可以被标记为来自客户端的控制连接。
如果由TCP TURN服务器接收的第一消息是CONNECTION_BIND请求消息,并且通过了消息完整性检查,并且该CONNECTION_BIND请求消息中包含的连接ID是有效的,则该连接可以被标记为来自客户端的数据连接。
如果由TCP TURN服务器接收的第一消息不是上述任何一种,则消息可以被标记为来自对等端的对等端连接,并且TCP TURN服务器尝试根据接收的数据或消息传递来标识有效的TAG。在这种情况下,如果标识或提取了有效的TAG,则TCP TURN服务器可以使用TAG而不是端口号,以标识关联客户端并发起根据IETF RFC 6062的正常程序,该正常程序用于触发客户端建立针对TCP TURN服务器的数据连接并且将数据连接与对等端连接相关联。
客户端发起的通信
现在参考图6。在图6的实施例中,为了发起与对等端616的通信,客户端610与TCP TURN服务器614通过NAT/防火墙612进行通信。
无论何时当客户端610希望发起与对等端616的通信时,客户端在控制连接(该控制连接是如上文关于图5所述方式来建立的)上通过NAT/防火墙612向TCP TURN服务器614发送CONNECT请求。在这种情况下,CONNECT请求包括XOR-PEER-ADDRESS(异或对等端地址)属性/字段/信息单元或参数,其包含需要连接的对等端的传输地址。箭头620和622示出了该CONNECT请求消息。
在接收箭头622处的CONNECT请求消息时,因为没有向客户端610分配特定的端口,TCP TURN服务器614使用非特定源TCP端口来建立针对对等端616的TCP连接。由TCP TURN服务器或者通过其它手段来随机或顺序指派源TCP端口。如何指派源TCP端口对于本实施例是多余的,然而,所使用的源TCP端口需要当前不被指派给与其它对等端或相同对等端一起使用。然后,TCP TURN服务器614向该对等端连接指派连接ID。
然后,TCP TURN服务器向客户端发回包括连接ID在内的CONNECT响应消息,如箭头632和634所示。
然后,客户端610使用与建立控制连接所针对的目的端口号相同的目的端口号,但是使用与建立控制连接所针对的源/本地端口号不同的源/本地端口号,来建立与TCP TURN服务器的新的TCP连接,其被称为“数据连接”。这在框640示出。
如果成功建立数据连接,则客户端610通过数据连接向TCPTURN服务器614发送包含连接ID在内的CONNECTION_BIND请求消息,该连接ID是在箭头634的CONNECT响应消息中接收的,如图6的实施例中的箭头660和662所示。
在从客户端610接收到CONNECTION_BIND请求消息时,TCPTURN服务器614将框630处示出的对等端连接与框640处示出的数据连接加以绑定或关联,如框670所示。TCP TURN服务器614还向客户端610发送具有连接ID的CONNECTION_BIND响应消息,如箭头672和674所示。
因此,当成功建立框670处的绑定时,将通过数据连接从客户端接收的任何数据、IP分组和/或数据报通过针对对等端实体的对等端连接照原样向TCP TURN服务器中继/转发/代理。此外,通过对等端连接从对等端实体接收的所有分组由TCP TURN服务器通过数据连接照原样向客户端中继、转发或代理。
还可以实现没有提到的其它特征或功能。这些特征或功能包括(但不限于):由客户端或对等端发起的通信端接、失败或错误处理、许可设置或检查、认证等等。
对等端发起的通信
对等端可以希望发起与客户端的通信,而不是上文中参考图6描述的客户端发起的通信。现在参考图7。
在图7的实施例中,为了使对等端716能够与客户端710通信,客户端710与TCP TURN服务器714通过NAT/防火墙712通信。
当对等端希望发起与客户端710的通信时,对等端716发起针对TCP TURN服务器714上的IP地址和端口的连接。该连接在图7的实施例中的框720示出。在一个实施例中,由客户端710使用带外机制向对等端716通告TCP TURN服务器的地址和端口。下文中提出的带外机制的示例预期是非限制性的并且其它机制将在本公开的范围之内。一旦建立了TCP连接,它变为对等端连接。
然后,对等端通过对等端连接向TCP TURN服务器714传达分配给客户端710的TAG。该TAG可以在TCP连接成功建立之后(换言之,与TCP连接有关的所有TCP相关信令都已经完成/结束)立即传达,例如在发送任何协议消息之前;或者TAG作为第一应用层(层7)协议消息传递的一部分来传达。如果使用第一应用层协议消息传递,则TCP TURN服务器可能需要是能够意识到应用协议的,以从应用协议中识别并提取TAG。
在接收到和/或提取出来自对等端716的TAG时,则TCP TURN服务器714使用TAG的值来标识并寻找预期目的客户端710,并且找到对应的控制连接(按照图5的实施例的事先建立的控制连接)。
如果TCP TURN服务器714标识出控制连接,则TCP TURN服务器714向来自对等端实体的呼入连接(下文中称作“对等端连接”)指派连接ID。因此,在接收到和/或提取出来自对等端的TAG时,TCPTURN服务器通过关联的控制连接向客户端710发送包含连接ID在内的CONNECTION_ATTEMPT请求消息,如箭头730和732所示。
在从TCP TURN服务器714接收到CONNECTION_ATTEMPT请求消息时,客户端710向TCP TURN服务器714发回CONNECTION_ATTEMPT响应消息,如箭头734和736所示。
然后,客户端建立与TCP TURN服务器714的新的TCP连接,该连接被称为“数据连接”并由图7的实施例中的框740示出。该连接是使用与建立控制连接所针对的目的端口号相同的目的端口号,但是使用与建立控制连接所针对的源/本地端口号不同的源/本地端口号来建立的。
如果数据连接成功建立,则客户端710通过框740的数据连接来发送包含连接ID在内的CONNECTION_BIND请求消息,该连接ID是在箭头732处的CONNECTION_ATTEMPT请求消息中接收的。该CONNECTION_BIND请求在图7的实施例中的箭头750和752示出。
然后,在接收到箭头752处的CONNECTION_BIND请求时,TCPTURN服务器714发送具有连接ID的CONNECTION_BIND响应,如图7的实施例中的箭头760和762所示。
然后,TCP TURN服务器714将框720的对等端连接和框740的数据连接绑定,如图7的实施例中的框770所示。
在绑定成功完成时,TCP TURN服务器714可以通过对等端连接向对等端实体716照原样中继、转发或代理通过数据连接从客户端710接收的任何数据、IP分组和/或数据报。同样地,TCP TURN服务器714可以通过数据连接向客户端710照原样中继、转发或代理通过对等端连接从对等端716接收的任何分组。
还可以实现附加的特征或功能。该附加特征或功能包括(但不限于):由客户端或对等端发起的通信端接、失败或错误处理、许可设置或检查、认证等等。
TAG定义
可以为TAG定义新的STUN/TURN消息属性或信息单元,这样的示例如下:
0x002b:TAG
根据上面的实施例,可以使用任何未使用的STUN/TURN属性值。
指派给TAG的值可以唯一标识TCP TURN服务器上的每个客户端,或者唯一标识每个客户端连接。如果与TCP TURN服务器连接的客户端仅希望使用一个服务(换句话说,将仅使用客户端上的一个TCP端口),则TAG可以是客户端标识符。
否则,如果允许每个客户端的多个服务(换句话说,将使用客户端上的多个TCP端口),则TAG不是客户端标识符。在这种情况下,为了有效地使用带宽和存储空间并且帮助TCP TURN服务器内部查找,TAG可以是具有固定长度的串,例如4个字节/4个八位字节(octets)。TAG也可以与TCP端口号具有相同格式(即纯数字值)。TAG可以使用例如UTF-8、ASCII、UTF-16等字符编码。
根据上文中的部分实施例,数据连接、对等端连接和控制连接全都共享TCP TURN服务器上的一个端口,并且为区分接收到的TAG值和STUN.TURN消息,可以使用各方法。例如,根据IETF RFC 5766和IETF RFC 5389,任何STUN/TURN消息的前两个比特始终是“00”。因此,为了区分接收到的TAG值和STUN/TURN消息,TAG值的第一个数字或字符可以具有前两比特不是“00”的值。
在一个示例实施例中,TAG可以具有代表字母A到Z(假设是ASCII兼容编码)的第一值。这些字母在二进制下将是01000001至01011010。
剩下的3个字符可以是任何字符,并且可以是例如A到Z的任意字母或0到9的任意数字。因此,使用上述示例的可用TAG值的总数是:26*36*36*36=1213056个不同值或排列。
当向客户端分配TAG值时,TCP TURN服务器可以确保TAG对于其所有客户端连接是随机且唯一的。这确保了TAG对于其它TCP节点/主机来说是无法预测的,并且可以预防诸如拒绝服务攻击或TCP连接劫持之类的安全漏洞。
传达TAG
如上文中参照图7的框720提供的,在能够接受任何消息之前,TCP TURN服务器714需要协商并接受呼入TCP连接。一旦建立了呼入TCP连接,就可以从对等端716向TCP TURN服务器714传达TAG。TAG的传达可以用各种方式来完成,不限于以下实施例。
在一个实施例中,可以使用简单的TAG传达/传输过程(例如层4(传输)协议)。一旦在对等端和TCP TURN服务器之间成功建立TCP连接,这种过程就会发生,并且在TCP连接(被称为“对等端连接”)上发送的第一消息可以是有效TAG。有效TAG可以独立发送。换言之,可以通过对等端连接就发送TAG的值。备选地,TAG可以具有在它前面或在它后面的标识符,例如TAG的属性值,如可以使用0x002b来提供TAG属性值。可以使用新的标识符,该标识符是数字、字母或字母数字值或字符串的合成。作为TAG属性值的备选或附加,在一些实施例中,可以使用新的或现有的STUN/TURN消息从对等端向TCP TURN服务器传达TAG,也可能在其它信息或数据中传达。
作为上述简单的TAG传输过程的备选或附加,可以使用层5(会话)协议或更上层协议。
具体地,对于某些应用或服务,不影响对等端可能是有好处的。例如,不影响对等端中的网页浏览器应用可能是有好处的。克服该障碍的一种方式是:以与对等端上运行的应用相兼容的方式客户端的TAG嵌入地址、标识符、统一资源标识符(URI)或统一资源定位符(URL)中。
例如,对客户端的TAG的传达可以用如下方式进行:让对等端上运行的应用不执行针对客户端的TAG的任何具体处理。则这确保了从对等端到TCP TURN服务器的第一层5(或层5之上)消息包括TAG。如将意识到的:在这种情况下,为了从第一消息中提取TAG,TCPTURN服务器需要理解层5协议或层5之上的协议。
在一个使用HTTP的实施例中,TAG可以被嵌入HTTP URL/URI中,这可以确保TAG被携带在消息中的HTTP请求行中,例如但不限于:HTTP GET、HTTP POST、HTTP PUT等等。TAG可以作为客户端的HTTP服务器软件的路径/目录结构的一部分出现,或者可以作为URI/URL查询串的一部分被包括,例如IETF RFC 1738的“搜索部分”或IETF RFC 3986的“查询组件”。在这种情况下,特定字段可以用来表示TAG,并且可以包括TAG的值作为该字段的值。例如,如果TCP TURN服务器为已经分配有IPv4地址10.1.22.22并且正在运行HTTP服务器软件的客户端分配TAG“KKDQ”,则HTTP URL可被设置为“http://10.1.22.22/KKDQ/image1.jpg”或“http://10.1.22.22/image1.jpg?TAG=KKDQ”。上述实施例也可以在开头部分使用串“FILE:”来替代字符串“HTTP:”。
在另一实施例中,可以利用HTTP请求消息中的主机请求报头字段。IETF RFC 2616在第14.23节中定义了主机请求报头字段。为了使用主机请求报头字段,TAG可以具有有效FQDN的形式,其随后由例如DNS解析来解析成IP地址。例如,TCP TURN服务器可以为客户端指派“shareservice.example.com”作为TAG,并且对等端使用URL/URI″http://shareservice.example.com″以到达该客户端。从而,对等端发起针对客户端的TCP TURN服务器的对等端连接,并且在HTTP方法中的主机请求报头字段中包括TAG,该HTTP方法是例如GET、PUT、POST等。
在通过对等端连接接收到HTTP方法时,TCP TURN服务器从HTTP方法中提取主机请求报头字段的值,并且使用该提取出的值作为TAG。可以利用上文中参考图5、6和7来描述的其余操作或过程。
在针对SIP的另一实施例中,TAG可以被嵌入在SIP/SIPSURI/URL或Tel URI/URL中,确保其在诸如REGISTER、INVITE、INFO、MESSAGE、OPTIONS之类的SIP方法中被携带。这可以通过使用“SIP参数”而不是使用“查询串”来实现,但是遵循上文描述的用于插入HTTP查询串的实施例。SIP URI的一个示例将是:“SIP:foo.bar10.1.22.22;TAG=KKDQ”。Tel URI的示例将是:“TEL:+1-912-555-1234;TAG=KKDQ”。
在针对FTP的另一实施例中,可以遵循上文描述的插入HTTP路径/目录的实施例,将TAG嵌入FTP URL/URI。在这种情况下,该插入将被视为根据IETF RFC 1738的FTP URL路径。针对FTP的插入的一个示例将是:“FTP://10.1.22.22/KKDQ/image1.jpg”。
在针对TELNET的另一实施例中,可以就在建立TCP连接之后由用户输入TAG并且从对等端向TCP TURN服务器传达。
上述内容并非是无遗漏的并且嵌入TAG的其它示例是可能的。针对上述情况,TCP TURN服务器对嵌入有TAG的消息进行缓冲,并且在绑定数据连接和对等端连接时向客户端发送所缓冲的消息。
用于通告连接信息的带外解决方案
为了通过TCP TURN服务器连接到客户端,对等端需要知道包括TCP TURN服务器的IP地址和TCP端口在内的某些连接信息。此外,根据上文描述的实施例,对等端也需要知道与它希望通信的客户端相关联的TAG。
在IETF RFC 6062中定义的TCP TURN服务器解决方案中,被称为中继服务器地址的IP地址和端口用于标识对等端实体希望通信的客户端。然而,在上文提供的解决方案中,仅使用TAG来标识客户端,反之所使用的IP地址和端口并不标识客户端(尽管需要它们以连接到TCP TURN服务器)。因此,如本文使用的,“连接信息”用于指代诸如与TCP TURN服务器相关联的IP地址和端口之类的信息,并且在一些实施例中“连接信息”包括与客户端相关联的TAG。
为了使对等端得到连接信息,在一个实施例中,可以扩展STUN/TURN消息传递以使对等端能够查询实体或节点,例如TCPTURN服务器、针对TCP TURN服务器组的代理节点等。
例如,新的STUN方法可以定义为:“QUERY_CONNECTION_INFO(查询连接信息)”,并且可以例如具有ID 0x00a。备选地,可以扩展现有方法,例如BIND方法。备选地,可以使用另一协议和消息,例如RADIUS、DIAMETER、SIP等。使用这些消息,对等端可以向TCP TURN服务器查询连接信息。
在备选解决方案中,简单的基于文本的消息方法可以用于使对等端能够向实体(例如,TCP TURN服务器、针对TCP TURN服务器组的代理节点等)查询特定客户端的连接信息。这种文本查询的非限制性示例可以如下:
·对等端到TCP TURN服务器:GET_CONNECTION_INFO[Client ID]\r\n(其中“[Client ID]”是客户端在TCP TURN服务器中正在使用的用户名);或
·TCP TURN服务器到对等端:[IP address,port,TAG]\r\n(其中“[TAG]”是指派给所请求的客户端的TAG)
因此,可以使用任何协议中的任何消息,并且对等端能够在实体或节点上查询其希望通信的客户端的连接信息。此外,供对等端发现实体以查询连接信息的机制可以使用已制定的方法。在一个实施例中,由对等端用来查询TAG的目的IP地址和目的端口可以是对等端的本地网络上的防火墙策略允许的目的IP地址和端口。
在另一备选解决方案中,连接信息可以被包括在由客户端、TCPTURN服务器或其它代表客户端或TCP TURN服务器的另一实体中的任意一个向对等端发送的电子邮件、短信息服务(SMS)消息、即时消息等等中。
可选地,为了使接收节点能够与具有连接信息的客户端相关联,也可以将客户端的标识符信息、IP地址、主机名称、包括FQDN在内的具有域名的主机名称等其它信息包括在内。备选地,电子邮件、SMS消息、即时消息等等的源地址、标识符或身份可以由接收方用来与具有连接信息的客户端相关联。
两个TCP TURN服务器的解决方案
在作为上文的备选方案中,可以启用两个TCP TURN服务器。每个TCP TURN服务器可以在启用的端口上监听并且针对不同客户端来分配不同的地址或端口。
现在参考图8,图8示出了客户端810希望建立与客户端820的通信。在图8的实施例中,客户端810与TCP TURN服务器814通过NAT/防火墙812进行通信。类似地,客户端820与TCP TURN服务器824通过NAT/防火墙822进行通信。
在图8的实施例中,根据上面图2,客户端810使用能够穿过NAT/防火墙812的端口与TCP TURN服务器814初始化。类似地,客户端820使用能够穿过NAT/防火墙822的端口与TCP TURN服务器824初始化。
为了让客户端810建立通信,TCP TURN服务器814为客户端810分配地址和端口,如框830所示。类似地,TCP TURN服务器824为客户端820分配地址和端口,如框832所示。
然后,客户端810通过控制连接向TCP TURN服务器814发送CONNECT请求消息,如箭头840和842所示。
在TCP TURN服务器814处接收到CONNECT请求消息时,该TCP TURN服务器建立从地址/端口Aa:Pa到在TCP TURN服务器824上的地址/端口Ab:Pb的TCP连接。这在图8的实施例中的框844示出。
一旦TCP TURN服务器824接受了TCP连接,该连接变为“对等端连接”,并且TCP TURN服务器824向该连接指派连接标识符。然后,TCP TURN服务器824通过NAT/防火墙822向客户端820发送包括连接标识符在内的CONNECTION_ATTEMPT请求,如图8的实施例中的箭头846和848所示。
在接收箭头848的CONNECTION_ATTEMPT请求消息时,客户端820建立针对TCP TURN服务器824的新的TCP连接,并且该新的连接被称为数据连接并由图8的实施例中的框850示出。
如果成功建立框850处的数据连接,则客户端820向TCP TURN服务器824发送CONNECTION_BIND请求消息,如图8的实施例中的箭头852和854所示,其中,CONNECTION_BIND请求包含来自箭头848的消息的连接标识符。
在从客户端820接收到CONNECTION_BIND请求消息时,TCPTURN服务器824将对等端连接和来自客户端的数据连接绑定在一起,并且提供CONNECTION_BIND响应,如箭头856和858所示。
类似地,在从TCP TURN服务器824接收到指示建立了对等端连接的指示时,TCP TURN服务器814向对等端连接指派连接标识符,并且通过控制连接向客户端810发送具有连接标识符的CONNECT响应消息。这由图8的实施例中的箭头860和862示出。
然后,如框864所示,客户端810建立与TCP TURN服务器814的数据连接。
如果成功建立框864处的数据连接,则客户端810通过箭头864处的数据连接向TCP TURN服务器814发送CONNECTION_BIND请求,其中CONNECTION_BIND请求包括箭头862处提供的连接标识符。该CONNECTION_BIND消息由图8的实施例中的箭头870和872示出。
在从客户端810接收到CONNECTION_BIND请求时,TCP TURN服务器814将框844处的对等端连接和框864处的数据连接绑定在一起,并且发送CONNECTION_BIND响应消息,如箭头880和882所示。
基于上述内容,对等端连接绑定到客户端810与TCP TURN服务器814之间的数据连接上,并且绑定到客户端820与TCP TURN服务器824之间的数据连接上。该绑定由图8的实施例中的框890示出。
一旦完成了针对数据连接和对等端连接的绑定,由TCP TURN服务器814通过数据连接从客户端810接收的所有IP分组将通过对等端连接上向TCP TURN服务器824传输,然后TCP TURN服务器824在接收到IP分组时将该分组通过TCP TURN服务器824和客户端820之间的数据连接照原样中继、转发或代理。类似地,来自客户端820的分组通过数据连接向TCP TURN服务器824传输,然后TCP TURN服务器824通过对等端连接将分组照原样向TCP TURN服务器814中继。然后,TCP TURN服务器814将分组通过数据连接照原样向客户端810中继。
如果TCP TURN服务器814检测到来自客户端810的数据连接关闭,则TCP TURN服务器814断开或终止TCP TURN服务器814与TCP TURN服务器824之间的对等端连接。类似地,在检测到对等端连接的断开或终止时,则TCP TURN服务器824断开或终止与客户端820的数据连接。
如果TCP TURN服务器824检测到其自身与客户端820之间的数据连接关闭,则TCP TURN服务器824断开或终止其自身与TCPTURN服务器814之间的对等端连接。在检测到对等端连接的断开时,则TCP TURN服务器814断开或终止针对客户端810的数据连接。
在图8的实施例中,由箭头846、848、850、852、854、856和858示出的消息可以与箭头860、862、864、870、872、880和882示出的消息并行运行。
因此,根据上述内容,对两个TCP TURN服务器的使用允许客户端之间通过诸如企业网络之类的受限网络进行通信。
在上面图1至图8的实施例中的客户端、对等端、TURN服务器以及NAT可以是任何网络元件或者是任何网络元件的一部分,包括各种网络服务器。现在参考图9,图9示出了普遍的计算设备,其可以包括计算客户端、TURN服务器、对等端计算设备、NAT等。
在图9中,计算设备910包括处理器920以及通信子系统930,其中,处理器920以及通信子系统930相互配合以执行上文描述的实施例的方法。
具体地,计算设备910可以是任何计算机或服务器,并且可以包括例如:基于网络的服务器、个人计算机、服务器的组合、移动设备、平板计算机、膝上型计算机等等。
处理器920被配置为执行可编程逻辑,该可编程逻辑可以连同数据一起被存储在计算设备910上,并且在图9的示例中示出为存储器940。存储器940可以是任何有形存储介质。
作为存储器940的备选或附加,计算设备910可以访问来自外部存储介质的数据或可编程逻辑,例如通过通信子系统930。
取决于计算设备910的功能,通信子系统930允许计算设备910通过NAT、对等端或TCP TURN服务器与诸如客户端计算机之类的其它网络元件通信。用于通信子系统930的协议的示例包括以太网、WiFi、蜂窝、WiLAN等等。
在一个实施例中,计算设备910的各个元件之间的通信可以通过内部总线950。然而,其它通信形式也是可能的。
本文描述的实施例是具有与本申请的技术要素相对应的要素的结构、系统或方法的示例。该书面描述可使得本领域的技术人员能够构成和使用具有同样与本申请的技术要素相对应的备选要素的实施例。因此本申请的技术的预期范围包括与本文所描述的本申请的技术并无差别的其它结构、系统或方法,并且还包括与本文描述的本申请的技术具有非实质性差别的其它结构、系统或方法。

Claims (58)

1.一种在位于“网络地址转换器”NAT和限制访问防火墙后面的计算客户端处的方法,所述方法包括:
使用能够穿越所述限制访问防火墙的端口来建立与“传输控制协议”TCP“使用NAT周围中继的穿越”TURN服务器的控制连接;
向所述TCP TURN服务器请求分配客户端服务身份;
从所述TCP TURN服务器接收包含所述客户端服务身份在内的响应,
其中,所述客户端服务身份独立于用于与所述TCP TURN服务器通信的任何端口。
2.根据权利要求1所述的方法,其中,所述请求包括:针对所述TCP TURN服务器的对所述计算客户端偏好被分配所述客户端服务身份而不是端口号的指示。
3.根据权利要求1所述的方法,其中,所述客户端服务身份唯一标识以下各项之一:
在所述TCP TURN服务器处的所述计算客户端;以及
所述计算客户端上的服务。
4.根据权利要求1所述的方法,其中,所述接收包括:确定所述响应是否包括所述客户端服务身份。
5.根据权利要求1所述的方法,还包括:向至少一个对等端计算设备通告所述客户端服务身份。
6.一种计算设备,包括:
处理器;以及
通信子系统,
其中,所述计算设备位于“网络地址转换器”NAT和限制访问防火墙的后面,并且被配置为:
使用能够穿越所述限制访问防火墙的端口来建立与“传输控制协议”TCP“使用NAT周围中继的穿越”TURN服务器的控制连接;
向所述TCP TURN服务器请求分配客户端服务身份;以及
从所述TCP TURN服务器接收包含所述客户端服务身份在内的响应,
其中,所述客户端服务身份独立于用于与所述TCP TURN服务器通信的任何端口。
7.根据权利要求6所述的计算设备,其中,所述计算设备被配置为通过以下方式来进行请求:包括针对所述TCP TURN服务器的对所述计算设备偏好被分配所述客户端服务身份而不是端口号的指示。
8.根据权利要求6所述的计算设备,其中,所述客户端服务身份唯一标识以下各项之一:
在所述TCP TURN服务器处的所述计算客户端;以及
所述计算设备上的服务。
9.根据权利要求6所述的计算设备,还被配置为:确定所述响应是否包括所述客户端服务身份。
10.根据权利要求6所述的计算设备,还被配置为:向至少一个对等端计算设备通告所述客户端服务身份。
11.一种在TCP“使用网络地址转换器周围中继的穿越”TURN服务器处的方法,所述方法包括:
在第一端口上监听来自计算客户端的通信,所述计算客户端位于限制访问防火墙后面并且所述第一端口能够穿越所述限制访问防火墙;
在所述第一端口上接受与通信客户端的控制连接;
从所述计算客户端接收针对分配客户端服务身份的请求;以及
发送包含所述客户端服务身份在内的响应,
其中,所述客户端服务身份独立于用于与所述TCP TURN服务器通信的任何端口。
12.根据权利要求11所述的方法,其中,所述计算客户端与所述TURN服务器之间的所述控制连接与数据连接和对等端连接使用所述TURN服务器上的相同端口。
13.根据权利要求12所述的方法,其中,在所述TCP TURN服务器处建立连接之后的第一消息确定连接类型。
14.根据权利要求12所述的方法,其中,如果所述第一消息是分配请求,则所述连接类型是控制连接。
15.根据权利要求12所述的方法,其中,如果所述第一消息是连接绑定请求,则所述连接类型是数据连接。
16.根据权利要求12所述的方法,其中,如果所述第一消息不是以下各项之一,则所述连接类型是对等端连接:
分配请求;以及
连接绑定请求。
17.根据权利要求16所述的方法,其中,如果所述第一消息标识对等端连接,则所述第一消息包含所述客户端服务身份。
18.根据权利要求17所述的方法,其中,所述第一消息是所述客户端服务身份。
19.根据权利要求18所述的方法,其中,所述客户端服务身份与属性值相关联。
20.根据权利要求17所述的方法,其中,所述第一消息将所述客户端服务身份包含在会话协议层或其上协议层中,所述方法还包括:在所述会话协议层或其上协议层中提取所述客户端服务身份。
21.根据权利要求20所述的方法,其中,所述客户端服务身份被嵌入在以下各项之一中:
统一资源标识符;以及
统一资源定位符。
22.根据权利要求20所述的方法,其中,所述客户端服务身份被嵌入在HTTP消息的主机请求报头中。
23.根据权利要求22所述的方法,其中,所述客户端服务身份是“完全合格域名”FQDN,并且对所述客户端服务身份的DNS解析返回所述TCP TURN服务器的IP地址。
24.根据权利要求20所述的方法,其中,所述TCP TURN服务器对嵌入有所述客户端服务身份的消息进行缓冲,并且在绑定所述数据连接和所述对等端连接时向计算客户端发送所缓冲的消息。
25.根据权利要求11所述的方法,其中,在所述TURN服务器处接收的请求包括:对所述计算客户端偏好被分配所述客户端服务身份而不是端口号的指示。
26.根据权利要求11所述的方法,其中,所述客户端服务身份唯一标识以下至少一项:
所述计算客户端;以及
所述计算客户端上的服务。
27.根据权利要求11所述的方法,还包括:向至少一个对等端计算设备通告所述客户端服务身份。
28.根据权利要求27所述的方法,其中,所述通告包括:从所述至少一个对等端计算设备接收查询,以及向所述至少一个对等端计算设备提供所述客户端服务身份。
29.根据权利要求11所述的方法,还包括:接受与对等端计算设备的对等端连接,从所述对等端计算设备接收具有所述客户端服务身份的第一消息,以及向由所述客户端服务身份标识的计算客户端发送连接尝试请求。
30.根据权利要求29所述的方法,其中,在所述第一端口上接受所述对等端连接。
31.根据权利要求29所述的方法,其中,在第二端口上接受所述对等端连接,其中,所述第二端口能够穿越所述TURN服务器与所述对等端计算设备之间的限制访问防火墙。
32.根据权利要求11所述的方法,还包括:在所述TCP TURN服务器处从计算客户端接收连接请求,所述连接请求包含对等端计算设备的地址,以及所述TCP TURN服务器使用未指定的源端口来建立针对所述对等端的TCP连接。
33.根据权利要求11所述的方法,所述对等端所处的网络是限制访问IP网络。
34.根据权利要求11所述的方法,所述TCP TURN服务器能够使用以下各项之一来服务多个客户端和多个对等端:
一个端口;以及
两个端口。
35.一种TCP“使用网络地址转换器周围中继的穿越”TURN服务器,包括:
处理器;
通信子系统,
其中,所述TCP TURN服务器被配置为:
在第一端口上监听来自计算客户端的通信,所述计算客户端位于限制访问防火墙后面并且所述第一端口能够穿越所述限制访问防火墙;
在所述第一端口上接受与通信客户端的控制连接;
从所述计算客户端接收针对分配客户端服务身份的请求;以及
发送包含所述客户端服务身份在内的响应,
其中,所述客户端服务身份独立于用于与所述TCP TURN服务器通信的任何端口。
36.根据权利要求35所述的TCP TURN服务器,其中,所述计算客户端与所述TURN服务器之间的所述控制连接与数据连接和对等端连接使用所述TURN服务器上的相同端口。
37.根据权利要求36所述的TCP TURN服务器,其中,在所述TCP TURN服务器处建立连接之后的第一消息确定连接类型。
38.根据权利要求37所述的TCP TURN服务器,其中,如果所述第一消息是分配请求,则所述连接类型是控制连接。
39.根据权利要求37所述的TCP TURN服务器,其中,如果所述第一消息是连接绑定请求,则所述连接类型是数据连接。
40.根据权利要求37所述的TCP TURN服务器,其中,如果所述第一消息不是分配请求和连接绑定请求之一,则所述连接类型是对等端连接。
41.根据权利要求40所述的TCP TURN服务器,其中,如果所述第一消息标识对等端连接,则所述第一消息包含所述客户端服务身份。
42.根据权利要求41所述的TCP TURN服务器,其中,所述第一消息是所述客户端服务身份。
43.根据权利要求42所述的TCP TURN服务器,其中,所述客户端服务身份与属性值相关联。
44.根据权利要求41所述的TCP TURN服务器,其中,所述第一消息将所述客户端服务身份包含在会话协议层或其上协议层中,所述方法还包括:在所述会话协议层或其上协议层中提取所述客户端服务身份。
45.根据权利要求44所述的TCP TURN服务器,其中,所述客户端服务身份被嵌入在以下各项之一中:
统一资源标识符;以及
统一资源定位符。
46.根据权利要求44所述的TCP TURN服务器,其中,所述客户端服务身份被嵌入在HTTP消息的主机请求报头中。
47.根据权利要求46所述的TCP TURN服务器,其中,所述客户端服务身份是“完全合格域名”FQDN,并且对所述客户端服务身份的DNS解析返回所述TCP TURN服务器的IP地址。
48.根据权利要求44所述的TCP TURN服务器,其中,所述TCPTURN服务器对嵌入有所述客户端服务身份的消息进行缓冲,并且在绑定所述数据连接和所述对等端连接时向计算客户端发送所缓冲的消息。
49.根据权利要求35所述的TCP TURN服务器,其中,在所述TURN服务器处接收的请求包括:对所述计算客户端偏好被分配所述客户端服务身份而不是端口号的指示。
50.根据权利要求35所述的TCP TURN服务器,其中,所述客户端服务身份唯一标识以下至少一项:
所述计算客户端;以及
所述计算客户端上的服务。
51.根据权利要求35所述的TCP TURN服务器,还被配置为:向至少一个对等端计算设备通告所述客户端服务身份。
52.根据权利要求51所述的TCP TURN服务器,还被配置为:从所述至少一个对等端计算设备接收查询,以及向所述至少一个对等端计算设备提供所述客户端服务身份。
53.根据权利要求35所述的TCP TURN服务器,还被配置为:接受与对等端计算设备的对等端连接,从所述对等端计算设备接收具有所述客户端服务身份的第一消息,以及向由所述客户端服务身份标识的计算客户端发送连接尝试请求。
54.根据权利要求53所述的TCP TURN服务器,其中,在所述第一端口上接受所述对等端连接。
55.根据权利要求53所述的TCP TURN服务器,其中,在第二端口上接受所述对等端连接,其中,所述第二端口能够穿越所述TURN服务器与所述对等端计算设备之间的限制访问防火墙。
56.根据权利要求35所述的TCP TURN服务器,还被配置为:在所述TCP TURN服务器处从计算客户端接收连接请求,所述连接请求包含对等端计算设备的地址,以及所述TCP TURN服务器使用未指定的源端口来建立针对所述对等端的TCP连接。
57.根据权利要求35所述的TCP TURN服务器,所述对等端所处的网络是限制访问IP网络。
58.根据权利要求35所述的TCP TURN服务器,所述TCP TURN服务器能够使用以下各项之一来服务多个客户端和多个对等端:
一个端口;以及
两个端口。
CN201380056208.9A 2012-10-29 2013-10-28 用于在限制性防火墙后进行tcp turn操作的方法和系统 Active CN104756462B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP12190462.7A EP2725765B1 (en) 2012-10-29 2012-10-29 Method and system for TCP turn operation behind a restrictive firewall
EP12190462.7 2012-10-29
PCT/CA2013/000913 WO2014066979A1 (en) 2012-10-29 2013-10-28 Method and system for tcp turn operation behind a restrictive firewall

Publications (2)

Publication Number Publication Date
CN104756462A true CN104756462A (zh) 2015-07-01
CN104756462B CN104756462B (zh) 2019-03-29

Family

ID=47189730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380056208.9A Active CN104756462B (zh) 2012-10-29 2013-10-28 用于在限制性防火墙后进行tcp turn操作的方法和系统

Country Status (4)

Country Link
EP (1) EP2725765B1 (zh)
CN (1) CN104756462B (zh)
CA (1) CA2884382C (zh)
WO (1) WO2014066979A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210007160A1 (en) * 2018-02-28 2021-01-07 Nokia Technologies Oy Transparent integration of 3gpp network into tsn based industrial network

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9356915B2 (en) * 2014-01-27 2016-05-31 Avaya Inc. Enhancing privacy by obscuring traversal using relays around network address translator (TURN) connections, and related methods, systems, and computer-readable media
CN104506666A (zh) * 2014-12-18 2015-04-08 北京邮电大学 一种大量tcp穿越对称型nat的代理方法和系统
CN113037890A (zh) * 2021-03-20 2021-06-25 张晋 一种能够确保穿透对称型nat设备的方法及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1606304A (zh) * 2003-10-10 2005-04-13 华为技术有限公司 下一代网络业务穿越网络地址转换设备/防火墙的方法
US20060215685A1 (en) * 2005-03-08 2006-09-28 Capone Jeffrey M Method and system for out-of-band signaling for TCP connection setup
CN101374141A (zh) * 2007-08-23 2009-02-25 浙江省电信有限公司 一种基于pcp协议的tcp nat穿越方法
CN101437036A (zh) * 2008-12-22 2009-05-20 北京中企开源信息技术有限公司 支持nat/防火墙穿越的文件传输方法和系统
EP2222054A1 (en) * 2009-02-23 2010-08-25 Research In Motion Limited Method, system and apparatus for connecting a plurality of client machines to a plurality of servers
EP2239923A1 (en) * 2009-04-09 2010-10-13 Research In Motion Limited Relay access node with separate control and transport signaling for session-based communications
EP2445239A1 (en) * 2010-10-22 2012-04-25 Research in Motion Limited Method and system for identifying an entity in a mobile telecommunications system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7646775B2 (en) * 2005-03-08 2010-01-12 Leaf Networks, Llc Protocol and system for firewall and NAT traversal for TCP connections

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1606304A (zh) * 2003-10-10 2005-04-13 华为技术有限公司 下一代网络业务穿越网络地址转换设备/防火墙的方法
US20060215685A1 (en) * 2005-03-08 2006-09-28 Capone Jeffrey M Method and system for out-of-band signaling for TCP connection setup
CN101374141A (zh) * 2007-08-23 2009-02-25 浙江省电信有限公司 一种基于pcp协议的tcp nat穿越方法
CN101437036A (zh) * 2008-12-22 2009-05-20 北京中企开源信息技术有限公司 支持nat/防火墙穿越的文件传输方法和系统
EP2222054A1 (en) * 2009-02-23 2010-08-25 Research In Motion Limited Method, system and apparatus for connecting a plurality of client machines to a plurality of servers
EP2239923A1 (en) * 2009-04-09 2010-10-13 Research In Motion Limited Relay access node with separate control and transport signaling for session-based communications
EP2445239A1 (en) * 2010-10-22 2012-04-25 Research in Motion Limited Method and system for identifying an entity in a mobile telecommunications system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
R.MAHY UNAFFILIATED ET.AL: "Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)", 《INTERNET ENGINEERING TASK FORCE, IETF》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210007160A1 (en) * 2018-02-28 2021-01-07 Nokia Technologies Oy Transparent integration of 3gpp network into tsn based industrial network
US11632810B2 (en) * 2018-02-28 2023-04-18 Nokia Technologies Oy Transparent integration of 3GPP network into TSN based industrial network

Also Published As

Publication number Publication date
EP2725765B1 (en) 2016-04-06
CA2884382A1 (en) 2014-05-08
CN104756462B (zh) 2019-03-29
EP2725765A1 (en) 2014-04-30
WO2014066979A1 (en) 2014-05-08
CA2884382C (en) 2019-05-28

Similar Documents

Publication Publication Date Title
EP2253123B1 (en) Method and apparatus for communication of data packets between local networks
US7328280B2 (en) Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends
US9137196B2 (en) Peer-to-peer connection establishment using TURN
US7590758B2 (en) Peer-to-peer (P2P) connection despite network address translators (NATs) at both ends
EP2449749B1 (en) Method and apparatus for relaying packets
US8868757B1 (en) Two-way web service router gateway
CN101572643B (zh) 实现私网之间转发数据的方法和系统
US20170034174A1 (en) Method for providing access to a web server
US20050229243A1 (en) Method and system for providing Web browsing through a firewall in a peer to peer network
EP1694034B1 (en) Method to establish a peer-to-peer connection between two user agents located behind symmetric NATs
CN101557337B (zh) 网络隧道建立方法、数据传输方法、通讯系统及相关设备
US8978126B2 (en) Method and system for TCP turn operation behind a restrictive firewall
EP1356386A1 (en) System and method for out-sourcing the functionality of session initiation protocol (sip) user agents to proxies
CN106604119B (zh) 一种用于智能电视私有云设备的网络穿透方法及系统
CA2527550A1 (en) Method for securely associating data with https sessions
US8873569B2 (en) User centric virtual network and method of establishing the same
CN104756462A (zh) 用于在限制性防火墙后进行tcp turn操作的方法和系统
CN102035655A (zh) 端到端即时通讯的实现方法、端到端即时通讯终端及系统
CN101572729B (zh) 一种虚拟专用网节点信息的处理方法及相关设备、系统
CN102377834B (zh) 网络地址转换设备及通信方法
CN101557336B (zh) 一种建立网络隧道的方法,数据处理方法及相关设备
CN117439815B (zh) 一种基于反向透明桥接的内网穿透系统及方法
Hata A bridging VPN for connecting wireless sensor networks to data centers
CN104518937B (zh) 虚拟局域网vlan多设备间通信的方法及装置
CN102480425A (zh) 点对点p2p网络中的消息路由的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240529

Address after: Illinois

Patentee after: Ot patent trusteeship Co.,Ltd.

Country or region after: U.S.A.

Address before: Voight, Ontario, Canada

Patentee before: BlackBerry Ltd.

Country or region before: Canada

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240703

Address after: Ai Erlandubailin

Patentee after: Maliki Innovation Co.,Ltd.

Country or region after: Ireland

Address before: Illinois

Patentee before: Ot patent trusteeship Co.,Ltd.

Country or region before: U.S.A.