CN105359487B - 通过网络浏览器中的uri去引用监控nat行为的方法 - Google Patents
通过网络浏览器中的uri去引用监控nat行为的方法 Download PDFInfo
- Publication number
- CN105359487B CN105359487B CN201480038203.8A CN201480038203A CN105359487B CN 105359487 B CN105359487 B CN 105359487B CN 201480038203 A CN201480038203 A CN 201480038203A CN 105359487 B CN105359487 B CN 105359487B
- Authority
- CN
- China
- Prior art keywords
- address
- port
- message
- request
- nat
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- 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/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
一种方法包括:在网络浏览器中去引用包括网络资源和反射标记的通用资源标识符(Uniform Resource Identifier,URI);创建请求消息,所述请求消息包括对所述网络资源的请求和对应于所述反射标记的反射请求,其中所述反射请求是包括所述网络资源的网络服务器对地址和端口信息的请求;将所述请求消息封装在传送消息中,所述传送消息包括所述网络浏览器的互联网协议(Internet Protocol,IP)地址和端口;向所述网络服务器传输所述传送消息;接收来自所述网络服务器的响应消息,其中所述响应消息包括如所述网络服务器所看到的所述浏览器的第二IP地址和第二端口号;基于所述第二IP地址和第二端口号确定在所述网络浏览器和所述网络服务器之间耦合的至少一个网络地址转换(Network Address Translation,NAT)设备的特性。
Description
相关申请案交叉申请
本发明要求2013年8月20日递交的发明名称为“通过网络浏览器中的URI去引用监控NAT行为(Monitoring NAT Behaviors Through URI Dereferences in Web Browsers)”的第13/970,882号美国非临时专利申请案的在先申请优先权,该在先申请的全部内容以引入的方式并入本文本中。
关于由联邦政府赞助研究或开发的声明
不适用。
参考缩微胶片附录
不适用。
背景技术
互联网协议(Internet Protocol,IP)网络允许一组计算机和其它设备通过私有地址空间以通信方式相互耦合。互联网协议网络利用互联网促进设备之间资源的共享。为了实现私有和公共网络中的设备之间的通信,网络地址转换(Network AddressTranslation,NAT)可以用来在私有地址空间中的地址与公共地址空间中的地址之间进行转换。
网页实时通信(Web Real-Time Communication,WebRTC)是IP应用的一个例子,包括实时通信特征,例如网络浏览器中的语音和视频聊天。为了发现并穿越NAT,目前的WebRTC架构要求网络浏览器实现某些交互式连接建立(Interactive ConnectivityEstablishment,ICE)网络协议和技术,例如NAT会话穿越工具(Session TraversalUtilities for NAT,STUN)和通过Relay方式穿越NAT(Traversal Using Relays aroundNAT,TURN)。STUN可以允许客户端确定它是否在NAT之后操作以及发现它的公共IP地址。分配该IP地址给到远程主机的用户数据报协议(User Datagram Protocol,UDP)连接。另外,TURN是STUN的扩展,并利用中间节点充当中继器以实现对端之间的通信。
然而,这些协议在适当监控NAT行为方面效率低下,因为它们不被一些网络支持,导致通信失败。例如,一些防火墙会阻塞Skype和Google Talk等客户端的STUN和UDP流量。另外,网络协议无法重用浏览器产生的用于NAT发现的网络流量,因而产生过量的网络开销。专用STUN/TURN服务器可以是单点故障,而且很难将它们扩展来支持其它NAT发现机制(例如,P2P集合点)。此外,各协议引进了不遵循网络架构的连接层,在该网络架构中,即使STUN和TURN服务器可以通过URI方案识别,但它们不返回超文本。因此,需要解决网络架构内一个或多个上述问题的NAT发现机制。
发明内容
在一项实施例中,本发明包括一种在网络浏览器中执行的方法,所述方法包括:去引用包括网络资源和反射标记的通用资源标识符(Uniform Resource Identifier,URI);创建请求消息,所述请求消息包括对所述网络资源的请求和对应于所述反射标记的反射请求,其中所述反射请求是包括所述网络资源的网络服务器对地址和端口信息的请求;将所述请求消息封装在传送消息中,所述传送消息包括所述网络浏览器的互联网协议(Internet Protocol,IP)地址和端口;向所述网络服务器传输所述传送消息;接收来自所述网络服务器的响应消息,其中所述响应消息包括如所述网络服务器所看到的所述浏览器的第二IP地址和第二端口号,所述第二IP地址和所述第二端口号是所述被请求的地址和端口信息,所述响应消息还包括至少一部分所述网络资源;基于所述第二IP地址和所述第二端口号确定在所述网络浏览器和所述网络服务器之间耦合的至少一个网络地址转换(Network Address Translation,NAT)设备的特性。
在另一项实施例中,本发明包括一种在网络服务器中执行的方法,所述方法包括:接收传送消息,其中所述传送消息是封装后的请求消息,所述请求消息包括来自网络浏览器的对网络资源的请求和对应于反射标记的反射请求,所述传送消息包括至少一个NAT设备为所述网络浏览器生成的IP地址和端口号;响应于接收对所述网络资源的所述请求,获取所述网络资源;响应于接收所述反射请求,将所述IP地址和所述端口号插入在响应消息中,其中所述响应消息还包括至少一部分所述网络资源;向所述网络浏览器传输所述响应消息。
在又一项实施例中,本发明包括一种计算机程序产品,所述计算机程序产品包括存储在非瞬时性计算机可读介质上的计算机可执行指令,使得当处理器执行所述计算机可执行指令时使网络浏览器执行以下操作:去引用标识网络资源和反射标记的超链接;创建请求消息,所述请求消息包括对所述网络资源的请求和对应于所述反射标记的反射请求,其中所述反射请求是包括所述网络资源的网络服务器对地址和端口信息的请求;将所述请求消息封装在传送消息中,所述传送消息包括所述网络浏览器的IP地址和端口;向所述网络服务器发送所述传送消息;从所述网络服务器获取响应消息,其中所述响应消息包括如所述网络服务器所看到的所述浏览器的第二IP地址和第二端口号,所述第二IP地址和所述第二端口号是所述被请求的地址和端口信息,所述响应消息还包括至少一部分所述网络资源;基于所述第二IP地址和所述第二端口号确定在所述网络浏览器和所述网络服务器之间耦合的至少一个NAT设备的存在和类型。
结合附图和权利要求书可以从以下的详细描述中更清楚地理解这些和其它特征。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1为网络地址转换(network address translation,NAT)监控架构的实施例的示意图。
图2为E-STUN协议消息格式的实施例。
图3示出了用于确定NAT映射行为的网络架构中通信的实施例。
图4示出了用于确定NAT过滤行为的网络架构中通信的实施例。
图5为图示确定NAT过滤和/或映射的方法的实施例的协议图。
图6示出了服务器的实施例。
具体实施方式
首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
去引用URI可以指获取通过特定URI标识的资源。URI去引用可以表示网络浏览器到网络服务器的请求,该请求可以通过鼠标点击或键击等来触发。去引用协议可包括这些协议的事务、加密(例如,传输层安全(Transport Layer Security,TLS)协议)、认证、授权、消息完整性以及重定向。
在会话期间,网络浏览器可以自动访问或响应于用户动作而访问超文本标记语言(Hypertext Markup Language,HTML)页面中的数十到数百个URI链接。HTML页面可包括若干不同的成分,例如一个或多个嵌入图像、嵌入JavaScript(JavaScript,JS)和HTML元素。网络浏览器可以提出接收和加载所有这些成分的多个请求,这些成分各自具有对应的URI。浏览器提出的连续超文本传输协议(Hypertext Transfer Protocol,HTTP)请求可以有关于显示图像和运行代码时的页面内容。这些请求还用于在网站上加载广告或向其它跟踪网站发送信息。
这个过程在每次加载新网页时重复。HTML页面中的链接可指向不同的IP地址,在其中可以使用传输控制协议(Transmission Control Protocol,TCP)或UDP传送。NAT行为对于TCP和UDP而言是相同的。TCP下的NAT映射和过滤在日期为2008年8月的请求注解(Request for Comment,RFC)备忘录5382的名称为“TCP下的NAT行为要求(NAT BehavioralRequirements for TCP)”中进行了归类,该文章的全部内容以引入的方式并入本文本中。类似地,UDP下的NAT行为在日期为2007年1月的RFC备忘录4787的名称为“单播UDP下的网络地址转换(Network Address Translation,NAT)行为要求(Network Address Translation(NAT)Behavioral Requirements for Unicast UDP)”中进行了说明,该文章的全部内容以引入的方式并入本文本中。由于网络浏览器通过UDP和TCP请求持续更新,所以利用浏览器的HTTP流量来发现和监控NAT行为可能是有利的。该方法利用传统STUN和TURN协议来规避潜在问题,例如不受支持的网络、防火墙以及开销挑战。
本文中公开的是通过基于网络浏览器的通信中的URI去引用来监控NAT行为的系统、方法、装置和计算机程序产品。可以重用URI去引用协议以在没有专用STUN或TURN服务器的情况下简化NAT发现过程,这允许NAT检测和监控在用户浏览网站时成为几乎免费的副产品。该方法可以通过实施新的NAT发现协议来实现。一种新的协议,本文有时称为嵌入STUN(embedded STUN,E-STUN),可以通过将协议集成在包括HTTP 1.1和可扩展的消息和呈现协议(Extensible Messaging and Presence Protocol,XMPP)等各种URI去引用协议中来简化NAT监控。可以将一种标记嵌入在URI中以触发将如接收方网络服务器所看到的IP地址和端口信息的请求嵌入在网络资源请求消息中的请求。该请求消息可以穿越网络地址转换设备,这影响到网络服务器所看到的IP地址和端口信息。通过重用现有HTTP和XMPP协议,E-STUN嵌入流量能够经过阻碍传统NAT穿越协议的防火墙。另外,可以监控NAT行为而没有对浏览器或服务器产生额外成本,以便检测因响应于负载增加或策略更新而发生的NAT映射或过滤变化。
通过使用各种HTML版本5(HTML version 5,HTML5)语义标记机制,包括微数据(例如,HTML5)、属性资源描述框架(Resource Description Framework in attribute,RDFa)、微格式和HTML5rel属性,E-STUN业务可以以页面和各个URI方案在针对URI权限的超文本中显式地公告。在另一实施例中,E-STUN业务可以通过在URI去引用期间自动返回地址来隐式地公告。此外,E-STUN业务可以结合服务器机制和/或客户端机制将E-STUN协议集成到URI去引用过程中并基于收集的数据来监控NAT行为。
图1为NAT监控架构100的实施例的示意图。架构100可包括网页或域(domain,DOM)110、网络浏览器120、网络地址转换(Network Address Translation,NAT)设备130(有时简称为NAT)、HTTP服务器140以及XMPP服务器150。尽管出于说明目的只示出了一个网络浏览器、一个网页和两个服务器,但是在网络系统中可使用任意数目的每个部件。NAT设备130可以存在,也可以不存在。“NAT”代表网络地址转换,是可以通过一个或多个设备实施的执行网络地址转换的过程。因此,尽管出于说明目的在图1示出了一个NAT设备130,但是NAT过程可以通过两个或更多设备的组合来执行。此外,NAT设备在一些实例中可以称为网络地址转换器。网页110可以是具有一个或多个URI,例如HTTP URI 112的常规HTML页面。网页110还可使用另一类型的URI,例如XMPP URI 114。
在一实施例中,用户可调用URI链接(例如,对应于HTTP URI 112或XMPP URI 114)或链接可以指向浏览器120自动下载的资源。该链接可经过URI去引用过程,浏览器通过该过程可向由URI标识的服务器(例如,服务器1 140或服务器2 150)发送一些消息,以便获取一些数据(例如,HTML、XML)。HTTP URI 112和XMPP URI 114可包括网络资源以及标记,本文有时称为反射标记,该标记用于调用E-STUN协议。本文公开了反射标记的潜在句法。嵌入在URI中的反射标记可指示获取NAT提供的转换后IP地址(若有)的请求以确定除常规去引用协议之外的如本文所公开的NAT行为。此外,网页110可包括NAT模块116,其可使用JavaScript应用编程接口(Application Programming Interface,API)来获取NAT信息。
网络浏览器120可显示网页110并可包括NAT监控器模块126和分别针对HTTP和XMPP的URI去引用模块122和124。本文中所使用的描述符前面的术语“模块”可指代用来执行描述符的计算机程序指令。例如,NAT监控器模块可指代用来执行NAT监控的计算机程序指令。这些计算机程序指令可以由通用处理器执行以执行所指示的描述符或功能。本文中公开了足够实施本文中引用的模块的步骤。
可以调用URI,例如HTTP URI 112或XMPP URI 114。调用后,URI去引用模块122可创建请求消息,表示为各种图中的Q。该请求消息可以是常规HTTP请求消息。如果调用的URI包括反射标记,则反射标记可向URI去引用模块122指示以将NAT行为请求消息或句法,表示为EQ,嵌入在请求消息Q中。该NAT行为请求消息有时可称为E-STUN请求消息。组合的请求消息,表示为Q’,可以使用TCP或UDP协议通过传送模块128传送。
传送模块128可接收来自网络浏览器120的传送(TCP或UDP)报文并通过NAT设备130向网络服务器发送报文。NAT设备130可对请求和响应消息Q’和R’执行地址和端口映射。在另一实施例中,NAT设备130可包括分层的多个模块并进行地址转换。NAT设备130无法修改Q’或R’消息,但是可以修改网络服务器140和150的私有浏览器IP地址和端口信息。(X0,Y0)可以是浏览器的私有IP地址和端口,这不为网络服务器所知。服务器1140和服务器2150可分别获取转换后的浏览器IP地址和端口号,例如(X1,Y1)和(X2,Y2)。HTTP和XMPP服务器140和150可以分别利用NAT设备130已经转换的地址和端口信息接收来自网络浏览器120的请求。
在URI去引用之后,Q’请求可到达如URI所指向的网络服务器。如果URI是HTTP链接,则该请求可去往HTTP服务器140。如果URI是XMPP链接,则该请求可去往XMPP服务器150。每个服务器可通过TCP或UDP报文在对应的传送模块141或151上接收该请求,并可由NAT设备130提供的地址和端口信息指示。该消息随后由反射代理146或156解码。Q’的EQ部分,是具有嵌入E-STUN的去引用消息,可以从消息中消除,如Q=Q’-EQ所表示。也就是说,可以提取嵌入消息以恢复常规消息Q。随后将常规消息Q发送给HTTP服务器148或XMPP服务器158。
在该任务期间,反射代理146或156可从NAT设备130记录公共IP地址中的反射IP地址。对于HTTP服务器140,NAT设备130可以将上述私有IP地址和端口(X0,Y0)映射到(X1,YI),对于XMPP服务器150,映射到(X2,Y2)。反射代理146或156可能不知道该映射并从NAT设备记录公共IP地址。当常规HTTP或XMPP处理已完成时,可以向反射代理146或156发回响应R。反射代理146或156随后将(X1,Y1)或(X2,Y2)IP地址和端口信息插入在表示为R’的响应消息中。该响应消息包括常规服务器响应消息(例如,包含服务器请求的数据),其中如服务器所看到的IP地址和端口信息被嵌入在常规响应中。常规服务器响应消息表示为R,IP地址和端口信息表示为ER。
然后通过NAT设备130将响应消息R’从网络服务器(140和/或150)发回网络浏览器120,其中响应消息包含(X1,Y1)或(X2,Y2)信息。可以将响应消息发送给URI去引用模块(122或124,取决于被去引用的URI是HTTP还是XMPP),该模块可以获取响应消息并从如图1中的R=R’–ER所表示的消息中提取IP地址和端口信息。ER信息可包含(X1,Y1)或(X2,Y2)IP地址。常规响应R随后被传递回网络浏览器120,例如以便显示。NAT监控器模块126可用于收集和分析从服务器140和150等各个服务器接收到的IP地址和端口信息。
通过将新的请求消息嵌入在常规URI请求消息中,网络浏览器120可获取用来确定NAT设备的存在和行为的信息。去引用模块122或124可向NAT监控器模块126发送(X1,Y1)或(X2,Y2)反射IP地址和端口信息,NAT监控器模块126同样可以从来自其它网络服务器的响应消息中收集多个IP地址。一旦网络浏览器120已经收集到足够的IP地址,那么可以确定NAT设备的存在和类型。
图2示出了E-STUN协议消息格式300的实施例,其在某些方面类似于STUN消息。STUN消息可以进行二进制编码并在日期为2008年10月的名称为“NAT会话穿越工具(Session Traversal Utilities for NAT(STUN))”的RFC备忘录5389以及日期为2010年5月的名称为“使用NAT会话穿越工具(Session Traversal Utilities for NAT,STUN)的NAT行为发现(NAT Behavior Discovery Using Session Traversal Utilities for NAT(STUN))”的RFC备忘录5780中进行了进一步描述,这两篇文章的全部内容以引入的方式并入本文本中。E-STUN格式300可包括E-STUN头部301和E-STUN属性312。E-STUN头部301可包括类型字段302、长度字段304、事务ID 306。类型字段302和长度字段304各自分别为14和16位。事务ID 306可以是随机选择进行标识的96位数。相比于常规STUN消息,魔法饼干(magiccookie)字段可以在E-STUN消息中消除。E-STUN消息可包括STUN消息字段的子集。对于每个字段,只包括含可能值的子集。例如,E-STUN不包括32位的MAGIC COOKIE字段。对于12位的方法字段,只包括BINDING值。
长度字段304还可包括方法字段308和类别字段310。表1示出了E-STUN头部中的方法和类别部分的二进制值的示例。该方法表示发生的事务的功能,其可以是绑定方法。该绑定方法可以在请求/响应或在指示事务中使用以确定NAT设备已经分配给E-STUN客户端的特定“绑定”或者保持其它“绑定”存在。
E-STUN中存在两种类型的事务:请求/响应事务和指示事务。指示事务可以是从客户端或服务器发出的消息且不产生响应。请求/响应事务可以是客户端向服务器发送请求的地方,而且服务器返回响应。响应类别可划分为错误和成功响应以协助快速处理E-STUN消息。不同消息类别和它们对应的二进制值在表1中示出。
方法 | 类别 |
000000000001:BINDING | 00:请求 |
01:指示 | |
10:成功响应 | |
11:错误响应 |
表1:E-STUN头部中的方法和类别值的示例
属性字段312可包括可选属性以包括在消息中,该消息可通过类型、长度和变量值定义。消息属性可以是CHANGE-REQUEST、MAPPED-ADDRESS和RESPONSE-ORIGIN。CHANGE-REQUEST属性可包含两个标志以控制用来发送响应的IP地址和端口。MAPPED-ADDRESS属性可指示客户端的反射性传送地址。该属性可包括8位地址族和16位端口,后面是表示IP地址的固定长度值。如果地址族是IP版本4(IP version 4,IPv4),则地址可以是32位。如果地址族是IP版本6(IP version 6,IPv6),则地址可以是128位。RESPONSE-ORIGIN地址可指示发出绑定响应的源IP地址和端口。
E-STUN协议可以作为二进制协议嵌入或转换为另一文本格式并嵌入在HTTP或XMPP中。例如,E-STUN请求和响应可嵌入在URI去引用协议(D)消息中。肯定的D响应可包含成功或错误E-STUN响应。否定的D响应可包含E-STUN错误响应。如果D无法根据CHANGE-REQUEST返回肯定响应,则D反而可发送相关的E-STUN指示。
为了使网络浏览器区分网页中的哪些链接支持E-STUN协议,可能需要对应的服务器公告它的E-STUN业务。服务器可以通过自动返回反射地址在在URI去引用期间公告它的E-STUN业务。例如,HTTP响应可包含反射地址。在另一实施例中,服务器可通过使用以下类型的语义标记来显式地公告它的E-STUN业务:反射、地址和端口。反射标记、地址标记和/或端口标记可以附着到不同链接,其中每个标记可指示链接将提供给客户端的业务类型。
关于反射标记,接收对应于反射标记的反射请求的服务器可在响应中返回IP地址和端口信息。关于地址标记,接收对应于地址标记的请求的服务器可从不同IP地址发送E-STUN指示,这有助于检测某些NAT过滤行为。通过端口标记,服务器可从相同IP地址但不同端口发送E-STUN指示。通过使用这些标记中的一个,服务器可与网络浏览器通信:在URI去引用期间支持哪些E-STUN业务。反射标记、地址标记和端口标记可在本文中统称为语义标记。
语义标记可通过多种方式,包括RDFa、微格式、HTML5rel属性和HTML5微数据,嵌入在HTML5中。RDFa可将一组属性级扩展添加到HTML以用于将元数据嵌入在网络文件内。微格式可重用现有HTML标记以传送网页中的元数据和其它属性。HTML5rel属性可以用于指示源和目的地链接之间的关系。微数据可允许网站将语义信息附着到常规超链接以向浏览器传送关于该链接的额外信息。出于说明目的,微数据可以在本文中公开的E-STUN业务描述中使用,同样由于微数据的简洁性、一致性和可扩展性。
语义标记可以在多个级别处实施以传送从服务器请求哪些业务。例如,标记可以应用于具有URI标记的各个URI,应用于具有HTML页面标记的页面中的多个链接,或应用于具有如下所示URI权限(域)的整个网站:
[URI tags]inherit[page tags]inherit[authority tags] |
这些标记通过使用微数据应用于不同级别。域级处的标记可以使整个网站中的所有链接被标记。可以使用下面表2中的HTTP和XMPP示例以标记URI权限,该URI权限的资源支持相同的E-STUN业务。在HTTP和XMPP下显示两行代码,其中反射标记在代码的第二行内显示。对于HTTP示例,每当去引用URI时将反射业务提供给浏览器。由于这是指向域的顶级链接,那么域中的所有链接同样被标记并将提供相同业务。对于XMPP示例,代码的第二行包括反射和端口标记。如果去引用URI,则服务器可从如标记所指示的不同端口返回反射地址和发送消息。
表2:HTTP和XMPP中的域级标记的示例
HTML5页面中支持相同E-STUN业务的资源可以在如下面表3所看到的页面级处进行类似地标记。可以将一个标记添加到如表3的第二行所看到的HTML页面中的<body>元素中,其中添加本体元素可以标记代码本体内的页面中的所有链接。因此,该标记随后在去引用URI时提供反射IP地址。
表3:HTML页面中的页面级标记的示例
E-STUN微数据标记还可应用于链接级,针对一组链接或各个链接。例如,多个URI可以分组在一起并进行标记。支持相同E-STUN业务的HTML5资源组可以如下面表4中的第二行代码所看到的进行标记。在组链接级处,所有URI可提供如标记所指示的反射和端口业务。
表4:HTML页面中的组级标记的示例
另外,各个HTML5和XMPP URI元素可以在如下面表5所看到的链接级处进行标记。
表5:HTTP和XMPP中的链接级标记的示例
通过使用微数据标记公告服务器的E-STUN业务,浏览器可认识到某些链接在网页中提供某些特征。为了使浏览器能够使用这些特定特征(例如,反射或端口业务),需要进一步的描述。HTTP 1.1协议在日期为1999年6月的名称为“超文本传输协议—HTTP/1.1(Hypertext Transfer Protocol–HTTP/1.1)”的RFC备忘录2616中进行了描述,该文章的全部内容以引入的方式并入本文本中,HTTP 1.1中的E-STUN的实施例可如下进行定义。
通过进一步的示例,存在指向图像的图像超链接,该链接可提供如下面代码所示的反射IP地址和端口指示。
由于该链接是HTTP超链接,所以客户端(例如,网络浏览器120)可使用HTTP协议去引用URI。为了获取反射地址,客户端可将反射标记附加为发送给如下面请求所看到的URI路径的参数:
可以附加反射标记以将E-STUN协议嵌入在HTTP协议中。除了二进制格式之外,还可以使用E-STUN协议的文本格式,因为该文本格式遵循二进制格式的语义定义。
在客户端发送HTTP请求之后,服务器可接收消息并利用反射代理经过上述流程,其中如服务器接收到的公共IP地址和端口可嵌入在如下面所看到的服务器字段中的HTTP响应中。在这种情况下,公共IP地址1.2.3.4和端口9999信息可由服务器向客户端返回。
在另一事务中,假设客户端想要通过要求服务器从不同端口返回具有相同反射地址的指示消息来使用端口特征。客户端随后创建以下请求并向服务器发送:
上述请求的“tid”部分可以是客户端创建的事务ID(例如,“1234”)并可用于将请求消息与来自服务器的指示消息关联,这两个消息异步发回。一旦服务器已经接收到消息,该服务器可使用来自不同客户端的事务ID发送具有被请求的反射IP地址的以下响应消息和来自不同端口的E-STUN指示。E-STUN指示消息的格式未在下文示出,因为该格式可通过不同方式(例如,二进制或文本格式)进行编码
上面所示的请求和响应消息(例如,EQ和ER消息)可以嵌入Q’和R’消息内以穿过代理。HTTP中的E-STUN协议嵌入还可适用于WebSocket和服务器推送事件,因为该技术使用HTTP 1.1进行握手。WebSocket协议在日期为2011年12月的名称为“WebSocket协议(TheWebSocket Protocol)”的RFC备忘录6455中进行了描述,该文章的全部内容以引入的方式并入本文本中。
另外,E-STUN协议可嵌入在XMPP中并可在客户端和服务器之间的单个事务中示出。XMPP协议在日期为2004年10月的名称为“可扩展的消息和呈现协议(ExtensibleMessaging and Presence Protocol,XMPP):核(Extensible Messaging and PresenceProtocol(XMPP):Core)”的RFC备忘录3920中进行了描述,该文章的全部内容以引入的方式并入本文本中。假设存在指向XMPP URI的超链接,从而指示URI可提供如下在代码中所示的反射和地址业务。
由于该链接是XMPP超链接,所以客户端可使用XMPP协议去引用URI。客户端可通过发送以下消息向服务器启动一个流:
服务器可通过以下消息进行响应以完成如RFC 3920中定义的握手:
客户端随后要求服务器返回响应中的反射地址,以及来自不同地址的E-STUN指示。因此,客户端可发送以下包括嵌入的地址请求的认证请求:
一旦服务器已经接收该请求,该服务器可使用被请求反射IP地址和来自不同地址的E-STUN指示进行响应,如以下消息中所看到:
上面所示的请求和响应消息(例如,EQ和ER消息)可以嵌入Q’和R’消息内以重用XMPP认证。类似于HTTP E-STUN嵌入,事务ID可以在分别来自客户端和服务器的请求和响应消息中使用以用于标识目的。E-STUN消息的格式还可根据需要以二进制或文本格式进行编码。
最后,XMPP E-STUN嵌入可以通过因协议差异而产生的微小修改对上述HTTP E-STUN嵌入进行类似地实施。然而,E-STUN功能可能仍然相同,其中URI可向客户端公告它的E-STUN业务,而且客户端可通过与服务器通信决定使用哪些业务。通过将E-STUN嵌入在XMPP或HTML中,在不需要E-STUN服务器的任何特殊登陆或其它方式的情况下可以重用XMPP或HTML认证。
为了使客户端能够与服务器通信,有必要确定两者之间使用的NAT类型。从不同服务器/端口获取E-STUN指示消息对于各种NAT映射和过滤行为之间的区分是很重要的。例如,一种类型的NAT只在内部客户端之前已经向服务器发送消息时才接收来自该服务器的消息。如果服务器从未联系,NAT可能不允许服务器从私有网络外面向客户端发送消息。为了揭露NAT是否具有该类型的行为,可以指示服务器向客户端发回消息以确定NAT是否允许服务器这样做。如果没有发送消息,NAT可以控制该行为,而如果发送了该消息,NAT允许该消息通过。这些是两种不同NAT过滤行为的示例,其中过滤行为可以确定NAT如何决定让外部流量进入包括感兴趣客户端的私有网络中。
为了在不同NAT映射和过滤行为之间区分,网络浏览器等客户端可从具有不同属性的不同服务器收集所有类型的数据。例如,浏览器可从一个服务器收集反射IP地址和其它指示消息,而该浏览器可能不从另一服务器接收指示消息。一旦该浏览器已经收集足够数据,该浏览器可确定是否存在NAT,如果存在,确定正在使用哪种类型的NAT。
存在两种类型的NAT行为,它们可以根据RFC备忘录4787和5382进行归类。第一种类型的行为可以通过NAT如何将内部IP地址映射到外部IP地址来识别。图3示出了确定NAT行为的网络架构400中通信的实施例。架构400可包括NAT监控器410、NAT 420、服务器1430、服务器2 440和多个反射代理431、432和441。NAT监控器410可以与如先前所述描述的NAT监控器模块126相同(例如,NAT监控器410可以是网络浏览器的一部分)。NAT 420与先前描述的NAT设备130相同。对于架构400,NAT监控系统中存在任意数目的部件。也就是说,存在n个IP地址和m个端口,其中m≥n≥1。端口可表示为Pij,其中i指定一个具体地址,i=1、2……n;j指定一个具体端口,j=1、2……m。出于说明目的,架构中有两个服务器(430和440),其中服务器1 430具有一个地址和两个端口,服务器2 440具有一个地址和一个端口。反射代理431可位于服务器1、端口1(S1,P11)处,反射代理432可位于服务器1、端口2(S1、P12)处,反射代理441可位于服务器2、端口1(S2、P21)处。这些反射代理可类似于图1示出的E-STUN代理146和156。
NAT监控器410可以是网络浏览器内部的模块,其中(X0,Y0)可以是浏览器的内部私有IP地址。NAT监控器410可从服务器1 430和服务器2440收集反射公共IP地址,其中一些IP地址可从P11、P12和P21等不同的端口收集。从每个服务器收集的信息可以表示为(X,Y)对,其中X是IP地址,Y是端口。例如,(X11,Y11)可以从服务器1、端口1(S1,P11)收集,(X12,Y12)可以从服务器1、端口2(S1,P12)收集,(X21,Y21)可以从服务器2、端口1(S2,P21)收集。(X11’,Y11’)是从(S1,P11)收集的反射地址和端口信息的另一实例。例如,该信息可能已经从同一服务器但是在可能在不同时间发生的不同事务中收集。
(X11,Y11)、(X11’,Y11’)、(X12,Y12)和(X21,Y21)可以是NAT监控器410从服务器收集的5个数据点(包括私有IP地址),(X0,Y0)是包括NAT监控器410的浏览器的私有IP地址和端口,因此为NAT监控器410所知。可以使用URI去引用中的反射标记收集来自不同服务器和端口的反射IP地址,其中每个服务器和所有端口(Pij)都不同(例如,服务器1≠服务器2)。这些数据点足以使NAT监控器410根据互联网工程任务组(Internet Engineering TaskForce,IETF)分类做出NAT行为预测。参考图3,如下为一种确定NAT 420等NAT行为的方法或过程。首先,NAT监控器410通过检查(X0,Y0)、(X11,Y11)和(X21,Y21)是否都彼此相等来确定NAT是否存在。如果内部和外部IP地址都相同,那么没有发生转换,例如,没有NAT。如果地址之间存在差别,那么可以确认NAT的存在,而且可以通过进一步分析发现NAT映射的类型。
NAT如何执行映射可能存在四种不同的分类,包括端点独立映射(endpoint-independent mapping,EIM)、地址依赖性映射(address-dependent mapping,ADM)、地址和端口依赖性映射(address and port dependent mapping,APDM)以及连接依赖性映射(connection dependent mapping,CDM)。为了确定分类,NAT监控器410可检查(X11,Y11)是否等于(X21,Y21)。如果是,NAT可使用EIM,其中NAT重用从相同内部IP地址和端口发送到任意外部IP地址和端口的后续报文的端口映射。在EIM中,NAT分配固定公共地址,其中服务器1和服务器2可具有相同的IP地址。如果(X11,Y11)不等于(X21,Y21),NAT要么使用ADM,要么使用APDM。为了在这些映射之间区分,NAT监控器410可检查(X11,Y11)是否等于(X12,Y12)。如果这两个数据点相同,那么NAT可使用ADM,其中NAT重用从相同内部IP地址和端口发送到相同外部IP地址的后续报文的端口映射,不管外部端口是什么。如果(X11,Y11)不等于(X12,Y12),那么NAT要么使用APDM,要么使用CDM。NAT监控器410可以通过检查(X11,Y11)是否等于(X11’,Y11’)在APDM和CDM两者之间做出最后区分。如果这两个数据点相同,那么NAT可使用APDM,其中NAT重用从相同内部IP地址和端口发送到相同外部IP地址和端口的后续报文的端口映射,同时该映射仍然是活动的。如果数据点不相等,那么NAT可展示CDM,其中新的映射由NAT分配用于每个连接。
根据这个方法,可以获取足够数据点以对NAT和其映射行为做出准确预测。如果没有两个服务器,则仍然可以确定NAT的存在。类似地,如果单个服务器不存在不同端口,则NAT监控器至少可以检测该映射是不是EIM。如先前所描述的确定NAT映射行为的方法在表6中总结。
表6:确定NAT映射行为方法的总结
第二种类型的NAT行为可以通过NAT如何允许外部流量进入以及执行哪种过滤来识别。NAT可随意地将一种类型的映射行为与任意类型的过滤行为组合。也就是说,两种类型的行为可以相互独立,两者之间不存在关联。因此,可以单独检测映射和过滤行为。
图4示出了确定NAT行为的网络架构500中通信的实施例。架构500可包括NAT监控器模块510、NAT 520、服务器1 530、服务器2 540和多个反射代理531、532和541。对于该架构,NAT监控系统中存在任意数目的部件。也就是说,存在n个IP地址和m个端口,其中m≥n≥1。端口可表示为Pij,其中i指定一个具体地址,i=1、2……n;j指定一个具体端口,j=1、2……m。出于说明目的,有两个服务器(530和540),其中服务器1 530具有一个地址和两个端口,服务器2 540具有一个地址和一个端口。反射代理531可位于服务器1、端口1(S1,P11)处,反射代理532可位于服务器1、端口2(S1、P12)处,反射代理541可位于服务器2、端口1(S2、P21)处。这些反射代理可类似于图1示出的反射代理146和156。
NAT监控器510可以是网络浏览器内的模块,其中(X0,Y0)可以是浏览器的私有IP地址和端口。参考图4,如下为一种确定NAT 520等NAT过滤行为的方法或过程。在该过滤方法中,NAT监控器510可确定哪个服务器可以或可以不通过NAT 520向网络浏览器发回消息。根据这种信息,NAT监控器510可对NAT 520使用哪种类型的过滤行为做出预测。存在如RFC4787和RFC 5382等中定义的三种类型的过滤行为。三种类型的过滤行为是端点独立的过滤(endpoint-independent filtering,EIF)、地址依赖性过滤(address-dependentfiltering,ADF)以及地址和端口依赖性过滤(address and port dependent filtering,APDF)。在过滤方法的第一步骤501中,网络浏览器,例如浏览器120,可向代理531发送URI去引用请求Q’(嵌入的E-STUN消息)并要求代理531返回地址/端口对(X1,Y1)。该浏览器还要求代理531促进第一指示(第一指示为一个消息)通过使用端口标记从不同端口(例如,P12)返回,其中第一指示包括地址/端口对(X1,Y1)。此外,浏览器还可要求反射代理531促进第二指示通过使用地址标记从如所指示的不同地址(例如,从服务器2)返回,其中第二指示包括地址/端口对(X1,Y1)。在第二步骤502中,反射代理531可从端口P11在URI去引用响应R’(嵌入的E-STUN消息)中返回地址/端口对(X1,Y1)。这些请求可以根据公告的E-STUN业务提出以确定它们是否成功完成。在第三步骤503中,反射代理532可从端口P12发送被请求的指示。该指示可包括地址/端口对(X1,Y1)。在第四步骤504中,服务器540可从端口P21返回第二指示。为了促进第二指示返回,使用地址标记会触发服务器530请求服务器540返回第二指示。具体而言,反射代理531可联系反射代理541以要求或请求反射代理541向包括NAT监控器510的网络浏览器发送第二指示。第二指示可包括地址/端口对(X1,Y1),如来自反射代理531的请求中所指示。
根据NAT类型,第一和/或第二指示在预定超时周期内不由NAT监控器510接收。如果第二指示由NAT监控器510在超时周期内从反射代理541接收,那么NAT行为可被归类为EIF,这指示NAT转发任意发往内部地址和端口的报文,不管外部IP地址和端口源是什么。也就是说,在EIF行为中,将报文从NAT 520的内侧发往任意外部IP地址可能足以允许任意报文返回内部端点。如果指示消息在超时周期内没有从反射代理541接收,那么NAT监控器510可检查该消息是否已经在超时周期内从反射代理532接收。如果是,NAT行为可被归类为ADF,这指示:如果报文先前(独立)还没有从内测发送到外部服务器使用的端口的外部IP地址,NAT可从服务器过滤出预期发往内部端点的报文。也就是说,在ADF行为中,内部端点有必要首先在接收外部端点的报文之前向特定外部端点的IP地址发送报文。如果消息仍然还没有在超时周期内从反射代理532接收,那么NAT行为可被归类为APDF,这类似于ADF,除了外部端口可能与过滤有关。也就是说,在APDF行为中,内部端点有必要首先在从外部端点接收报文之前向该特定外部端点的IP地址和端口发送报文。
下表7总结了上面描述的确定NAT过滤行为方法,如下。
表7:确定NAT过滤行为方法的总结
图5为图示NAT过滤和/或映射确定方法的实施例的协议图600。协议图600所示为网络浏览器630、NAT 640和网络服务器650之间通信的一系列步骤。网络浏览器630可包括网络应用632、NAT监控器634和去引用协议模块636。服务器650可包括反射代理652和资源654。网络浏览器630可以与先前描述的网络浏览器120相同,NAT 640可以与先前描述的NAT设备130相同,网络服务器650可与先前描述的HTTP服务器140或XMPP服务器150相同。协议图600中的一系列步骤可在步骤601处从网络应用632的初始请求开始。网络应用232可以是,例如视频会议或多人游戏应用。在步骤602处,NAT监控器634可获取网络浏览器630的私有IP地址(X0,Y0)。在步骤603中,IP地址可以在去引用协议模块636处注册。在步骤604中,执行URI去引用,其中可以使用反射代理。被去引用的URI可以是HTTP或XMPP,传送消息可使用TCP或UDP。接着,去引用模块636在步骤605处使用域名业务(Domain Name Service,DNS)查找来获取域的IP地址。由(S1,P1)指示的服务器和端口对可在去引用模块636处接收。在步骤606和607处,去引用模块636可创建请求Q,然后将E-STUN协议和反射标记一起嵌入在常规请求消息中,产生Q’。该Q’消息随后在步骤608中向NAT 640发送,然后在步骤609中转发给反射代理652。NAT 640可将私有IP地址信息(X0,Y0)映射到公共地址(X1,Y1),这会被服务器650看到。反射代理652可以被称为E-STUN代理,例如架构100中示出的部件146和156。
在步骤610处,反射代理652可从NAT 640获取公共IP地址(X1,Y1)。代理652随后在步骤611中通过将嵌入的E-STUN部分从消息中移除来解码Q’。在步骤612和613中,已解码消息Q发送给资源654,资源654可以是HTTP服务器,响应消息R可发回反射代理652。在步骤614处,反射代理652可将(X1,Y1)IP地址插入响应中,产生R’。R’响应随后在步骤615和616中通过NAT 640发回网络浏览器630。去引用协议模块636在步骤617和618中获取R’响应、提取(X1,Y1)信息并向NAT监控器634发送公共IP地址。在步骤618中,执行NAT映射和/或过滤测试,例如,如参照图3和图4先前所描述的确定NAT映射和/过滤行为测试,并且在表6和7中总结。接着,在步骤619中,包含IP地址和关于NAT的额外信息的NAT报告可发送给应用632。在步骤620中,应用632告知NAT监控器634中止测试或停止。在步骤621中,NAT监控器可以在去引用模块636处注销,这意味着NAT监控器634告知去引用引擎停止收集反射IP地址。
图6示出了计算机系统或服务器700的实施例,该计算机系统或服务器适用于实施本文公开的部件或模块的一个或多个实施例,例如上面描述的网络浏览器120。服务器700包括与存储器720、输入/输出(I/O)设备730和网络设备740通信的处理器710。尽管图示为单个处理器,但是处理器710没有这样的限制,可以包括多个处理器。处理器710可以作为一个或多个中央处理器(central processor unit,CPU)芯片、核(例如,多核处理器)、现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(applicationspecific integrated circuit,ASIC),和/或数字信号处理器(digital signalprocessor,DSP)来实现。处理器710可用于实现本文所描述的任意方案,包括确定NAT过滤和/或映射方法。处理器710可以使用硬件或硬件和软件的组合来实现。
存储器720包括辅助存储器、随机存取存储器(RAM)、只读存储器(ROM),或其任意组合。辅助存储器包括一个或多个磁盘驱动器或磁带驱动器,用于数据的非易失性存储,而且如果RAM的容量不足以存储所有工作数据,辅助存储器则用作溢流数据存储设备。辅助存储器可用于存储程序,当选择执行这些程序时,所述程序加载到RAM中。ROM用于存储在程序执行期间读取的指令以及可能读取的数据。ROM是非易失性存储器设备,其存储容量相对于辅助存储器的较大存储容量而言通常较小。RAM用于存储易失性数据,并且还可能用于存储指令。对ROM和RAM的存取通常比对辅助存储器的存取快。
网络设备740(有时称为收发器)可以充当网络节点的输出和/或输入设备。例如,如果网络设备740充当发射器,它将数据从网络节点传输出来。如果网络设备740充当接收器,它将数据接收到网络节点中。此外,网络设备740可包括一个或多个光发射器、一个或多个光接收器、一个或多个电发射器,和/或一个或多个电接收器。网络设备740可以是调制解调器、调制解调器组、以太网卡、通用串行总线(universal serial bus,USB)接口卡、串行接口、令牌环卡、光纤分布式数据接口(fiber distributed data interface,FDDI)卡,和/或其它众所周知的网络设备。网络设备740可使处理器710能够与互联网或一个或多个内网通信。本文所描述的消息可由网络设备740传输或接收。
I/O设备730是可选的,或者可以从其它服务器700分离出来。I/O设备730可包括视频监控器、液晶显示屏(liquid crystal display,LCD)、触屏显示器,或其它类型的显示器。I/O设备730还可包括一个或多个键盘、鼠标或跟踪球,或其它众所周知的输入设备。
应理解,通过将可执行指令编程和/或加载至服务器700上,处理器710或存储器720中的至少一个被改变,将服务器700的一部分转换成特定机器或装置,例如本发明宣扬的拥有功能的网络浏览器750,该网络浏览器包括NAT监控器模块756、HTTP URI去引用模块752、XMPP URI去引用模块754和传送模块758。网络浏览器750可以,例如,与网络浏览器120或630相同,可以执行图5示出的网络浏览器630的步骤。网络设备740接收的消息可以由网络浏览器750获取。此外,服务器700也可以是网络服务器,例如先前描述的网络服务器140、150或650,在此情况下存储器720可以存储先前描述的反射代理146、156或652等反射代理的指令。可执行指令可以存储在存储器720上执行。加载可执行软件至计算机所实现的功能可以通过现有技术中公知的设计规则转换成硬件实施,这在电力工程和软件工程领域是很基础的。决定使用软件还是硬件来实施一个概念通常取决于对设计稳定性及待生产的单元数量的考虑,而不是从软件领域转换至硬件领域中所涉及的任何问题。一般来说,经常变动的设计更适于在软件中实施,因为重新编写硬件实施比重新编写软件设计更为昂贵。通常,稳定及大规模生产的设计更适于在ASIC这样的硬件中实施,因为运行硬件实施的大规模生产比软件实施更为便宜。设计通常可以以软件形式进行开发和测试,之后通过众所周知的设计规则转变成专用集成电路中等同的硬件实施,该专用集成电路硬线软件指令。由新的ASIC控制的机器是一种特定的机器或装置,同样地,编程和/或加载有可执行指令的电脑可视为特定的机器或装置。
本发明的任意处理可通过使用处理器,例如处理器710执行计算机程序来实施。在这种情况下,计算机程序产品可以使用任意类型的非瞬时计算机可读介质,例如存储器720,提供给服务器,例如服务器700。计算机程序产品可以存储在计算机或网络设备中的非瞬时计算机可读介质中。非瞬时性计算机可读媒体包含任何类型的有形存储媒体。非瞬时计算机可读介质的示例包括磁存储介质(例如,软盘、磁带、硬盘驱动器等)、光磁存储介质(例如,磁光盘)、只读光盘(CD-ROM)、可录光盘(CD-R)、可重写光盘(CD-R/W)、数字多功能光盘(DVD)、蓝光(注册商标)光盘(BD)和半导体存储器备(例如,掩膜ROM、可编程ROM(PROM)、可擦除PROM、闪存ROM和RAM)。还可以向计算机或使用任何类型的瞬时性计算机可读媒体的网络设备提供计算机程序产品。瞬时性计算机可读媒体的实例包含电信号、光信号和电磁波。瞬时性计算机可读媒体可以经由有线通信线(例如,电线和光纤)或无线通信线向计算机提供程序。
本发明公开至少一项实施例,且所属领域的普通技术人员对所述实施例和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本发明的范围内。应当理解的是,本发明已明确阐明了数值范围或限制,此类明确的范围或限制可以应包括涵盖在上述范围或限制(例如,从约为1到约为10包括2、3、4等;大于0.10包括0.11、0.12、0.13等)内的类似数量级的迭代范围或限制。例如,每当公开具有下限Rl和上限Ru的数值范围时,具体是公开落入所述范围内的任何数字。具体而言,特别公开所述范围内的以下数字:R=Rl+k*(Ru–Rl),其中k为从1%到100%范围内以1%递增的变量,即,k为1%、2%、3%、4%、5%……50%、51%、52%……95%、96%、97%、98%、99%或100%。此外,还特此公开了,上文定义的两个R值所定义的任何数值范围。除非另有说明,否则使用术语“约”是指随后数字的±10%。相对于权利要求的某一要素,术语“可选择性地”的使用表示该要素可以是需要的,或者也可以是不需要的,二者均在所述权利要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如“由……组成”、“基本上由……组成”以及“大体上由……组成”等较窄术语的支持。因此,保护范围不受上文所述的限制,而是由所附权利要求书定义,所述范围包含所附权利要求书的标的物的所有等效物。每项和每条权利要求作为进一步公开的内容并入说明书中,且权利要求书是本发明的实施例。所述揭示内容中的参考的论述并不是承认其为现有技术,尤其是具有在本申请案的在先申请优先权日期之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其它细节。
虽然本发明中提供了多个具体实施例,但应当理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离此处公开的精神和范围。
Claims (20)
1.一种在网络浏览器中执行的方法,其特征在于,所述方法包括:
去引用包括网络资源和反射标记的通用资源标识符(Uniform Resource Identifier,URI);
创建请求消息,所述请求消息包括对所述网络资源的请求和对应于所述反射标记的反射请求,其中所述反射请求是包括所述网络资源的网络服务器对地址和端口信息的请求;
将所述请求消息封装在传送消息中,所述传送消息包括所述网络浏览器的互联网协议(Internet Protocol,IP)地址和端口;
向所述网络服务器传输所述传送消息;
接收来自所述网络服务器的响应消息,其中所述响应消息包括如所述网络服务器所看到的所述浏览器的第二IP地址和第二端口号,所述第二IP地址和所述第二端口号是所述被请求的地址和端口信息,以及所述响应消息还包括至少一部分所述网络资源;
基于所述第二IP地址和所述第二端口号确定在所述网络浏览器和所述网络服务器之间耦合的至少一个网络地址转换(Network Address Translation,NAT)设备的特性。
2.根据权利要求1所述的方法,其特征在于,所述至少一个NAT设备的所述特性是一种映射行为或过滤行为。
3.根据权利要求2所述的方法,其特征在于,还包括:
接收来自所述网络服务器的第二响应消息,其中所述第二响应消息包括如所述网络服务器所看到的所述浏览器的第三IP地址和第三端口号;
接收来自第二网络服务器的第三响应消息,其中所述第三响应消息包括如所述第二网络服务器所看到的所述浏览器的第四IP地址和第四端口号,其中所述至少一个NAT设备在所述网络浏览器和所述第二网络服务器之间耦合;
通过比较所述传送消息中的IP地址、所述第二IP地址和所述第四IP地址以及通过比较所述传送消息中的端口、所述第二端口和所述第四端口来确定所述至少一个NAT设备存在。
4.根据权利要求3所述的方法,其特征在于,还包括:
通过比较所述第二IP地址和所述第四IP地址以及通过比较所述第二端口和所述第四端口来确定所述至少一个NAT设备是端点独立映射(endpoint-independent mapping,EIM)NAT设备。
5.根据权利要求3所述的方法,其特征在于,还包括:
通过比较所述第二IP地址和所述第三IP地址以及通过比较所述第二端口和所述第三端口来确定所述至少一个NAT设备是地址依赖性映射(address-dependent mapping,ADM)NAT设备。
6.根据权利要求1所述的方法,其特征在于,所述URI还包括端口标记和地址标记,所述请求消息还包括对应于所述端口标记的端口请求和对应于所述地址标记的地址请求,所述方法还包括:
在超时周期内接收来自第二网络服务器的第二响应消息,其中所述第二响应消息包括所述第二IP地址和所述第二端口号;以及
基于所述第二响应消息确定所述至少一个NAT设备是地址依赖性过滤(address-dependent filtering,ADF)NAT设备。
7.根据权利要求1所述的方法,其特征在于,所述URI是超文本传输协议(HypertextTransfer Protocol,HTTP)或可扩展的信息和呈现协议(Extensible Messaging andPresence Protocol,XMPP)URI,所述传送消息是传输控制协议(Transmission ControlProtocol,TCP)消息或用户数据报协议(User Datagram Protocol,UDP)消息。
8.根据权利要求1所述的方法,其特征在于,所述反射标记使用以下之一嵌入在所述URI中:超文本标记语言版本5(Hypertext Markup Language version 5,HTML5)微数据、属性资源描述框架(Resource Description Framework in attribute,RDFa)、微格式和HTML5rel属性。
9.根据权利要求8所述的方法,其特征在于,所述反射标记表示为所述网络浏览器中的多级之一处的HTML5或可扩展的消息和呈现协议(Extensible Messaging and PresenceProtocol,XMPP)微数据,所述多级包括域级、页面级、组级和链接级。
10.一种在网络服务器中执行的方法,其特征在于,所述方法包括:
接收传送消息,其中所述传送消息是封装后的请求消息,所述请求消息包括来自网络浏览器的对网络资源的请求和对应于反射标记的反射请求,所述传送消息包括至少一个网络地址转换(Network Address Translation,NAT)设备为所述网络浏览器生成的互联网协议(Internet Protocol,IP)地址和端口号;
响应于接收对所述网络资源的所述请求而获取所述网络资源;
响应于接收所述反射请求而将所述IP地址和所述端口号插入在响应消息中,其中所述响应消息还包括至少一部分所述网络资源;以及
向所述网络浏览器传输所述响应消息。
11.根据权利要求10所述的方法,其特征在于,所述响应消息用于确定在所述网络服务器和所述网络浏览器之间耦合的所述至少一个NAT设备的映射行为或过滤行为。
12.根据权利要求10所述的方法,其特征在于,所述请求消息还包括对应于端口标记的端口请求;所述传送消息由第一反射代理接收;响应于接收所述端口请求,所述第一反射代理要求所述网络服务器中第二端口处的第二反射代理将指示从所述第二端口发送给所述网络浏览器,其中所述指示包括所述IP地址和所述端口号。
13.根据权利要求12所述的方法,其特征在于,所述指示促进所述至少一个NAT设备的过滤行为的确定。
14.根据权利要求10所述的方法,其特征在于,所述请求消息还包括对应于地址标记的地址请求;所述传送消息由第一反射代理接收;响应于接收端口请求,所述第一反射代理要求第二服务器中的第二反射代理向所述网络浏览器发送指示,其中所述指示包括所述IP地址和所述端口号。
15.根据权利要求10所述的方法,其特征在于,所述传送消息是传输控制协议(Transmission Control Protocol,TCP)消息或用户数据报协议(User DatagramProtocol,UDP)消息,以及所述网络服务器是超文本传输协议(Hypertext TransferProtocol,HTTP)服务器或可扩展的信息和呈现协议(Extensible Messaging andPresence Protocol,XMPP)服务器。
16.根据权利要求10所述的方法,其特征在于,所述方法还包括:
接收第二传送消息,其中所述第二传送消息是封装后的第二请求消息,所述第二请求消息包括第二网络浏览器对第二网络资源的请求,所述第二请求消息不包括任何反射请求;
响应于接收对所述第二网络资源的所述请求:
获取所述第二网络资源;
将所述IP地址和所述端口号插入在第二响应消息中以公告响应反射请求的能力,其中所述第二响应消息还包括至少一部分所述第二网络资源;以及
向所述第二网络浏览器传输所述第二响应消息。
17.一种网络浏览器中的处理器执行的计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可执行指令,所述指令当由所述处理器执行时使得所述网络浏览器执行以下操作:
去引用标识网络资源和反射标记的超链接;
创建请求消息,所述请求消息包括对所述网络资源的请求和对应于所述反射标记的反射请求,其中所述反射请求是包括所述网络资源的网络服务器对地址和端口信息的请求;以及
将所述请求消息封装在传送消息中,所述传送消息包括所述网络浏览器的互联网协议(Internet Protocol,IP)地址和端口;
向所述网络服务器发送所述传送消息;
从所述网络服务器获取响应消息,其中所述响应消息包括如所述网络服务器所看到的所述浏览器的第二IP地址和第二端口号,所述第二IP地址和所述第二端口号是所述被请求的地址和端口信息,所述响应消息还包括至少一部分所述网络资源;
基于所述第二IP地址和所述第二端口号确定在所述网络浏览器和所述网络服务器之间耦合的至少一个网络地址转换(Network Address Translation,NAT)设备的存在和类型。
18.根据权利要求17所述的计算机可读存储介质,其特征在于,还包括使所述网络浏览器执行以下操作的指令:
从所述网络服务器获取第二响应消息,其中所述第二响应消息包括如所述网络服务器所看到的所述浏览器的第三IP地址和第三端口号;
从第二网络服务器获取第三响应消息,其中所述第三响应消息包括如所述第二网络服务器所看到的所述浏览器的第四IP地址和第四端口号,所述至少一个NAT设备在所述网络浏览器和所述第二网络服务器之间耦合;
通过比较所述传送消息中的IP地址、所述第二IP地址和所述第四IP地址以及通过比较所述传送消息中的端口、所述第二端口和所述第四端口来确定所述至少一个NAT设备存在。
19.根据权利要求18所述的计算机可读存储介质,其特征在于,还包括使所述网络浏览器执行以下操作的指令:
通过比较所述第二IP地址和所述第四IP地址以及通过比较所述第二端口和所述第四端口来确定所述至少一个NAT设备是端点独立映射(endpoint-independent mapping,EIM)NAT设备;
否则,通过比较所述第二IP地址和所述第三IP地址以及通过比较所述第二端口和所述第三端口来确定所述至少一个NAT设备是地址依赖性映射(address-dependent mapping,ADM)NAT设备。
20.根据权利要求17所述的计算机可读存储介质,其特征在于,URI还包括端口标记和地址标记,所述请求消息还包括对应于所述端口标记的端口请求和对应于所述地址标记的地址请求,所述计算机可读存储介质还包括使所述网络浏览器执行以下操作的指令:
在超时周期内接收来自第二网络服务器的第二响应消息,其中所述第二响应消息包括所述第二IP地址和所述第二端口号;
基于所述第二响应消息确定所述至少一个NAT设备是地址依赖性过滤(address-dependent filtering,ADF)NAT设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/970,882 US9379952B2 (en) | 2013-08-20 | 2013-08-20 | Monitoring NAT behaviors through URI dereferences in web browsers |
US13/970,882 | 2013-08-20 | ||
PCT/CN2014/084602 WO2015024490A1 (en) | 2013-08-20 | 2014-08-18 | Monitoring nat behaviors through uri dereferences in web browsers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105359487A CN105359487A (zh) | 2016-02-24 |
CN105359487B true CN105359487B (zh) | 2019-06-11 |
Family
ID=52481397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480038203.8A Active CN105359487B (zh) | 2013-08-20 | 2014-08-18 | 通过网络浏览器中的uri去引用监控nat行为的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9379952B2 (zh) |
CN (1) | CN105359487B (zh) |
WO (1) | WO2015024490A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9680772B2 (en) * | 2013-09-09 | 2017-06-13 | Vmware, Inc. | System and method for managing configuration of virtual switches in a virtual machine network |
US9641389B2 (en) | 2013-09-09 | 2017-05-02 | Vmware, Inc. | Method and system for recovering from network disconnects by cloning a virtual port |
US9357076B2 (en) * | 2014-06-06 | 2016-05-31 | Cisco Technology, Inc. | Load balancing of distributed media agents in a conference system |
US20160226898A1 (en) * | 2015-01-30 | 2016-08-04 | Comcast Cable Communications, Llc | Process For Identifying A Compromised Device |
US10965725B1 (en) | 2017-07-12 | 2021-03-30 | Cisco Technology, Inc. | Conference session access using reachability information for distributed clusters of media nodes |
US10931534B2 (en) * | 2017-10-31 | 2021-02-23 | Cisco Technology, Inc. | Auto discovery of network proxies |
CN108289131A (zh) * | 2017-12-12 | 2018-07-17 | 北京知道未来信息技术有限公司 | 一种获取用户客户端内网和公网ip地址的方法 |
US11336668B2 (en) * | 2019-01-14 | 2022-05-17 | Penta Security Systems Inc. | Method and apparatus for detecting abnormal behavior of groupware user |
CN109787848A (zh) * | 2019-04-02 | 2019-05-21 | 浙江数值跳跃网络科技有限公司 | 一种通过内网穿透技术组建去中心化网络架构技术 |
CN110099122B (zh) * | 2019-05-07 | 2020-05-15 | 北京字节跳动网络技术有限公司 | 用于发送网络请求的方法和装置 |
CN110830777B (zh) * | 2019-11-29 | 2020-11-17 | 公安部第一研究所 | 基于WebRTC协议的跨浏览器预览GB/T28181标准监控视频的方法 |
US11277379B2 (en) * | 2020-05-12 | 2022-03-15 | Citrix Systems, Inc. | Modification of application-provided turn servers |
CN112073548B (zh) * | 2020-08-12 | 2022-07-12 | 北京天融信网络安全技术有限公司 | 解决天窗问题的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101352021A (zh) * | 2005-12-29 | 2009-01-21 | 诺基亚公司 | 移动设备上的网络服务的动态发现 |
CN101809951A (zh) * | 2007-07-27 | 2010-08-18 | 索尼电脑娱乐公司 | 协同nat行为发现 |
CN101860536A (zh) * | 2010-05-31 | 2010-10-13 | 北京邮电大学 | 一种基于sip软终端的私网穿越系统和方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8224985B2 (en) * | 2005-10-04 | 2012-07-17 | Sony Computer Entertainment Inc. | Peer-to-peer communication traversing symmetric network address translators |
US7899932B2 (en) * | 2003-01-15 | 2011-03-01 | Panasonic Corporation | Relayed network address translator (NAT) traversal |
US20050066335A1 (en) * | 2003-09-23 | 2005-03-24 | Robert Aarts | System and method for exposing local clipboard functionality towards external applications |
US7716350B2 (en) * | 2003-10-23 | 2010-05-11 | Cisco Technology, Inc. | Methods and devices for sharing content on a network |
US7610400B2 (en) * | 2004-11-23 | 2009-10-27 | Juniper Networks, Inc. | Rule-based networking device |
CN1893391A (zh) | 2005-07-05 | 2007-01-10 | 华为技术有限公司 | 一种支持网络层安全穿越网络地址转换的方法 |
CN100464540C (zh) | 2005-09-09 | 2009-02-25 | 北京中星微电子有限公司 | 一种跨网关通信的方法 |
US7975058B2 (en) * | 2006-01-31 | 2011-07-05 | Cisco Technology, Inc. | Systems and methods for remote access of network devices having private addresses |
US7706367B2 (en) * | 2006-10-03 | 2010-04-27 | International Business Machines Corporation | Integrated tunneling and network address translation: performance improvement for an interception proxy server |
WO2008085201A2 (en) * | 2006-12-29 | 2008-07-17 | Prodea Systems, Inc. | Managed file backup and restore at remote storage locations through multi-services gateway device at user premises |
US20090113460A1 (en) * | 2007-10-25 | 2009-04-30 | D2 Technologies, Inc. | Systems and methods for providing a generic interface in a communications environment |
EP2071809A1 (en) * | 2007-12-13 | 2009-06-17 | Alcatel Lucent | Method of establishing a connection in a peer-to-peer network with network address translation (NAT) |
US8606884B2 (en) * | 2010-09-21 | 2013-12-10 | Taesung Kim | System and method for web hosting behind NATs |
US9503529B2 (en) * | 2011-04-04 | 2016-11-22 | Avaya Inc. | System and method to transport HTTP over XMPP |
US20130250037A1 (en) * | 2011-09-20 | 2013-09-26 | Vidyo, Inc. | System and Method for the Control and Management of Multipoint Conferences |
KR101758681B1 (ko) * | 2012-03-27 | 2017-07-14 | 한화테크윈 주식회사 | 통신 시스템 및 통신 시스템에서의 데이터 송수신 방법 |
US8978126B2 (en) * | 2012-10-29 | 2015-03-10 | Blackberry Limited | Method and system for TCP turn operation behind a restrictive firewall |
US9473581B2 (en) * | 2013-02-04 | 2016-10-18 | Oracle International Corporation | Integrated web-enabled session border controller |
US10263952B2 (en) * | 2013-10-31 | 2019-04-16 | Avaya Inc. | Providing origin insight for web applications via session traversal utilities for network address translation (STUN) messages, and related methods, systems, and computer-readable media |
-
2013
- 2013-08-20 US US13/970,882 patent/US9379952B2/en active Active
-
2014
- 2014-08-18 CN CN201480038203.8A patent/CN105359487B/zh active Active
- 2014-08-18 WO PCT/CN2014/084602 patent/WO2015024490A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101352021A (zh) * | 2005-12-29 | 2009-01-21 | 诺基亚公司 | 移动设备上的网络服务的动态发现 |
CN101809951A (zh) * | 2007-07-27 | 2010-08-18 | 索尼电脑娱乐公司 | 协同nat行为发现 |
CN101860536A (zh) * | 2010-05-31 | 2010-10-13 | 北京邮电大学 | 一种基于sip软终端的私网穿越系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015024490A1 (en) | 2015-02-26 |
CN105359487A (zh) | 2016-02-24 |
US9379952B2 (en) | 2016-06-28 |
US20150058469A1 (en) | 2015-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105359487B (zh) | 通过网络浏览器中的uri去引用监控nat行为的方法 | |
Glaroudis et al. | Survey, comparison and research challenges of IoT application protocols for smart farming | |
US10027564B2 (en) | Unobtrusive methods and systems for collecting information transmitted over a network | |
US11182720B2 (en) | Relationships among technology assets and services and the entities responsible for them | |
US9154942B2 (en) | Zero configuration communication between a browser and a networked media device | |
US9154388B2 (en) | Data delivery | |
US20200382392A1 (en) | Method and server for monitoring users during their browsing within a communications network | |
US20130212159A1 (en) | Method, Apparatus and System for Intercepted Triggering of Execution of Internet Services | |
CN104022945B (zh) | 在客户端中实现即时通讯的方法和装置 | |
CN102035696A (zh) | 一种网站访问性能监测方法、装置及系统 | |
CN102624918A (zh) | 一种基于url重写技术的代理访问方法 | |
US20090259666A1 (en) | Unobtrusive methods and systems for collecting information transmitted over a network | |
Chen et al. | Ensuring interoperability for the Internet of Things: Experience with CoAP protocol testing | |
US20130132508A1 (en) | Low latency referrer free requests | |
von der Assen | DDoSGrid 2.0: Integrating and Providing Visualizations for the European DDoS Clearing House | |
Shinavier | Optimizing real-time RDF data streams | |
Menday | The web services architecture and the unicore gateway | |
CN104268070A (zh) | 基于语义的Web服务自动调用及QoS信息监测方法 | |
Sharma et al. | A Comprehensive Survey on Application Layer Protocols in the Internet of Things | |
CN109150726A (zh) | 一种报文处理方法和装置 | |
Pujol Gil | Web content delivery, monetization, and search | |
KR100766779B1 (ko) | 확장성 있는 프레전스 기능을 가진 무선 인스턴트 메시징시스템 및 서비스 방법 | |
Levy | CDNs and Privacy Threats: A Measurement Study | |
Pujol Gil | Web content delivery, monetization, and search: back-office and advertisement traffic on the Internet | |
Iben | Rapid prototyping infrastructure for wearable computing applications |
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 |