CN101171579B - 用于社区中继节点发现的装置和方法 - Google Patents
用于社区中继节点发现的装置和方法 Download PDFInfo
- Publication number
- CN101171579B CN101171579B CN2005800497009A CN200580049700A CN101171579B CN 101171579 B CN101171579 B CN 101171579B CN 2005800497009 A CN2005800497009 A CN 2005800497009A CN 200580049700 A CN200580049700 A CN 200580049700A CN 101171579 B CN101171579 B CN 101171579B
- Authority
- CN
- China
- Prior art keywords
- name
- community
- via node
- pnrp
- peer
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
-
- 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
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- 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/45—Network directories; Name-to-address mapping
- H04L61/4541—Directories for service discovery
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Small-Scale Networks (AREA)
Abstract
一种发现网络社区内的社区中继节点的方法,其中社区中继节点有效地耦合于受访问保护的客户机,并适合于使受访问保护的客户机与请求客户机之间的通信更容易,该方法包括从请求客户机接收涉及对社区中继节点的请求的请求消息、使该请求消息与无服务器名称解析协议名相关联、基于该无服务器名称解析协议名从社区中继节点的列表之中选择一社区中继节点,并向请求客户机返回所选社区中继节点的因特网协议地址,其中所述社区中继节点的列表包括与社区中继节点相关联的至少一个因特网协议地址。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及用于社区中继节点发现的装置和方法。
背景技术
网络通信技术允许具有共同兴趣的用户合作、共享文件、互相闲聊、多点传播用于演示和小组会议的音频和视频,并参与多玩家游戏。大多数网络通信和形成是在以服务器为中心的环境或对等环境中进行。在以服务器为中心的环境中,所有通信流向或流经个体可连接来加入或参与组中的大型中央服务器。对等技术允许用户在没有服务器的环境中彼此联系。然而,在众多情况中,客户机在防火墙(例如,个人、网络或企业)背后受到访问保护,这在发起传入连接时会产生问题。尽管如果仅一个客户机受到访问保护,防火墙可能是很容易被穿过,但即使在管理员控制下也难以穿过两个受访问保护客户端之间的防火墙。然而,该问题可通过使用社区中继节点(也被称为超节点)来解决。
社区中继节点可以是未受访问保护、且可容易地从发送客户机接收传入通信并将该通信路由给接收客户机的计算机或服务器。社区中继节点从而可在两个受访问保护的客户机之间中继通信。社区中继节点可以是在两个受访问保护的客户机之间具有中继通信用的足够资源(例如,服务质量)的任何计算机或服务器。想要与另一客户机通信的客户机可请求社区中继节点来协助通信。然而,请求客户机不总是了解哪些计算机/服务器是社区中继节点。已知的社区中继节点也可能已变为不可用,而这并不为请求客户机所了解。因此,请求客户机可能会遇到要去发现社区中继节点的问题。此外,请求客户机所请求的社区中继节点可取决于所请求的通信协议类型(例如,安全套接字层、用户数据报协议等),从而进一步造成难以找到合适的社区中继节点。
发明内容
公开了一种发现网络社区内的社区中继节点的方法,其中社区中继节点有效 地耦合于受访问保护的客户机,并适用于使受访问保护的客户机与请求客户机之间的通信更容易。该方法可包括从请求客户机接收涉及对社区中继节点的请求的请求消息、使该请求消息与无服务器名称解析协议名相关联、基于无服务器名称解析协议名从社区中继节点的列表之中选择一社区中继节点,并向请求客户机返回所选社区中继节点的因特网协议地址,其中所述社区中继节点的列表包括与社区中继节点相关联的至少一个因特网协议地址。
公开了一种含有计算机可执行指令的计算机可读介质,所述指令用于执行引导社区中继节点与请求客户机之间的通信的方法的各步骤。该计算机可读介质可包括各种计算机可执行指令,这些指令用于从请求客户机接收域名、使所述域名与对等名相关联、将对等名解析成一个或多个因特网协议地址、从所解析的一个或多个因特网协议地址中选择社区中继节点、以及向请求客户机返回所选社区中继节点的因特网协议地址,其中每一因特网协议地址涉及一个社区中继。
公开了一种计算机系统。计算机系统可包括处理装置、有效地耦合于处理装置的域名系统网络接口、有效地耦合于域名系统网络接口和处理装置的对等名称解析协议网络接口。域名系统网络接口有效地耦合于网络,对等名称解析协议网络接口有效地耦合于社区中继。该计算机系统还可包括有效地耦合于对等名称解析协议网络接口的第一和第二高速缓存。第一高速缓存可与第一对等名称解析协议名相关联,并适用于存储第一多个社区中继节点的因特网协议地址。第二高速缓存可与第二对等名称解析协议名相关联并适用于存储第二多个社区中继节点的因特网协议地址。该处理装置可包括处理器和耦合于处理器的存储器。处理装置可被编程来从客户机接收涉及对社区中继节点的请求的请求消息、将请求消息解析成第一对等名称解析协议名或第二对等名称解析协议名、如果该请求消息被解析成第一对等名称解析协议名则从第一高速缓存中选择社区中继节点、如果请求消息被解析成第二对等名称解析协议名则从第二高速缓存中选择社区中继节点、以及向客户机发送所选社区中继节点的因特网协议地址。
附图说明
图1是可根据权利要求书操作的计算系统的框图;
图2是根据权利要求书的网络系统的框图;
图3是根据权利要求书用于网络系统内在客户机与社区中继节点之间引导通信的计算系统的框图;
图4是根据权利要求书用于引导客户机与社区中继节点之间的通信的方法的流程图;
图5是根据权利要求书用于解析客户机对社区中继节点的请求的方法的流程图;
图6A-6F是根据权利要求书示出对社区中继节点管理的框图;
图7是根据权利要求书更新和维护社区中继节点列表的方法的流程图。
具体实施方式
尽管以下文字阐述了各个不同实施例的详细描述,但应理解,该描述的法律范围由本发明所附的权利要求书的文字来定义。该详细描述应被解释为仅是示例性的,且不描述每个可能的实施例,因为描述每个可能的实施例即使不是不可能也是不实际的。可使用当前的技术或在本专利的申请日之后开发的技术来实现众多替换实施例,它们仍落入权利要求书的范围之内。
应理解,除非使用语句“如此处所使用的,术语‘______’此处定义为指的是……”或类似语句在本发明中显式地定义一术语,否则不旨在显式或隐式地超出该术语普通或寻常意义而限制该术语的含义,且这样的术语不应被解释为限于基于本专利的任何部分中所作出的任何陈述(除权利要求书的语言以外)的范围。就本专利所附权利要求书中所述的任何术语在本专利中以与单数意义一致的方式引用而言,这仅是为了清楚起见以便不混淆读者,且这样的权利要求术语不旨在通过暗示等限于该单数意义。
图1示出了可在其上实现用于所要求保护的方法和装置的各步骤的系统的合适计算系统环境100的示例。计算系统环境100仅是合适的计算环境的一个示例,且不旨在对权利要求书的方法或装置的使用范围或功能提出任何限制。计算环境100也不应被解释为对示例性操作环境100中所示的任一部件或其组合有任何依赖或要求。
所要求保护的方法和装置的各步骤可用众多其它通用或专用计算系统环境或配置来操作。适合供权利要求书的方法或装置使用的公知的计算系统、环境和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。
所要求保护的方法和装置的各步骤可在诸如程序模块等由计算机执行的计算机可执行指令的通用语言环境中描述。一般而言,程序模块包括例程、程序、对象、 组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。该方法和装置也可以在分布式计算环境中实现,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
参考图1,用于实现所要求保护的方法和装置的一个示例性系统包括计算机110形式的通用计算设备。计算机110的部件可以包括,但不限于,处理单元120、系统存储器130和将包括系统存储器在内的各种系统部件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机110访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术;CD-ROM、数字多功能盘(DVD)或其它光盘存储;磁带盒、磁带、磁盘存储或其它磁性存储设备;或能用于存储所需信息且可以由计算机110访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括诸如有线网络或直接线连接的有线介质,以及诸如声学、RF、红外线和其它无线介质的无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
系统存储器130包括易失性或非易失性存储器形式的计算机存储介质,诸如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包含有助于诸如启动时在计算机110中元件之间传递信息的基本例程,它通常被存储在ROM 131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图1示出了操作系 统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器141,从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘156中读取或向其写入的光盘驱动器155。可以在示例性操作环境下使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由诸如接口140的不可移动存储器接口连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由诸如接口150的可移动存储器接口连接至系统总线121。
以上描述和在图1中示出的驱动器及其相关联的计算机存储介质为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘162和定点设备161(通常指鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备(未示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的用户输入接口160连接至处理单元120,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器191或其它类型的显示设备也经由接口,诸如视频接口190连接至系统总线121。除监视器以外,计算机也可以包括其它外围输出设备,诸如扬声器197和打印机196,它们可以通过输出外围接口190连接。
计算机110可使用至诸如远程计算机180的一个或多个远程计算机的逻辑连接,而在网络化环境下操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1中所示逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这样的连网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN连网环境中使用时,计算机110通过网络接口或适配器170连接至 LAN 171。当在WAN连网环境中使用时,计算机110通常包括调制解调器172或用于在诸如因特网等WAN 173上建立通信的其它装置。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图1示出了远程应用程序185驻留在存储器设备181上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
图2是联网系统200示例的图示。参考图2,联网系统200可包括促进器(promoter)210、有效地耦合于促进器210的第一客户机220以及也被称为超节点、有效地耦合于促进器210的社区中继节点240。联网系统200也可包括有效地耦合于社区中继节点240的第二客户机230。每一客户机220、230可在诸如网络防火墙或个人防火墙的安全系统背后受到访问保护。社区中继节点可用于方便于并路由第一与第二客户机220、230之间的通信。如将在以下说明,第一客户机220最终可在促进器210的协助下有效地耦合于社区中继节点240。
可在不同地理位置中提供第一和第二客户机220、230、社区中继节点240和促进器210,它们可经由网络彼此有效地耦合。例如,第一客户机220可经由因特网有效地耦合于促进器210,且可经由诸如IPv4或IPv6的因特网通信协议与促进器210通信。以类似方式,第二客户机230可经由因特网有效地耦合于社区中继节点240,且可经由因特网通信协议通信。促进器210也可由对等网络有效地耦合于社区中继240,且可经由诸如对等名字解析协议(PNRP)的无服务器解析协议来通信。在于2001年8月29日提交的美国专利公布第2002/0143989号以及于2003年6月13日提交的美国专利公布第2005/0004916号中公开了对等名字解析协议的示例。
促进器210可以是一个或多个服务器计算机,且可用作用于中继和/或解析域名字请求的域名服务的一部分。如将在以下讨论,促进器210也可用于对等名字解析以查询社区中继节点240以及引导客户机220与社区中继节点240之间的通信。例如,促进器210可从各个客户机连续接收域名服务请求。促进者210可解析域名服务请求并响应于该请求返回因特网协议(IP)地址。
社区中继节点240可以是决定参加或志愿作为社区中继节点的个人计算机、服务器计算机或一组计算机。在一个示例中,社区中继节点240可以是一个或一组客户机。一般而言,社区中继节点240提供可靠的服务质量(QOS),诸如足够的 速度、带宽等,且可提供特定的通信协议,诸如安全套接字层(SSL)协议或用户数据报协议(UDP)。社区中继节点240可用于协助受访问保护的客户机(例如,使用防火墙的客户机)来与也可能受访问保护的其它客户机通信。例如,客户机220、230各自可以受到防火墙的访问保护,这会阻止传入连接。社区节点240一般不受防火墙的访问保护,从而可从客户机接收传入连接。可对于客户机220、230认证社区中继节点240,使得客户机220、230通过防火墙接受来自社区中继节点350的传入连接。认证可由第三方认证或社区中继节点240与客户机之间的直接认证来建立。客户机220可请求社区中继节点240来协助与另一客户机230的通信。在两个客户机220、230之间建立了连接之后,社区中继节点240随后可在第一与第二客户机220、230之间中继通信。由于社区中继节点不受防火墙的访问保护,社区中继节点240可容易地接受来自发送客户机的传入通信,且因为社区中继节点240被认证,因此它可容易地将通信路由给接收客户机。应理解,尽管仅使用了一个社区中继节点来路由客户机220、230之间的通信,但可在多个社区中继节点之间路由通信。还应理解,社区中继节点可中继若干不同客户机之间的若干不同通信。
尽管联网系统200被示为包括一个促进器210、一个社区中继节点240和两个客户机220、230,但应理解可利用不同数目的促进器、社区中继节点和客户机。例如,客户机220、230各自可以是大型网络或一组客户机中的一部分。联网系统200也可包括有效地耦合于促进器210的多个社区中继节点240,且每一社区中继节点240有效地耦合于多个不同的客户机以方便于并路由客户机之间的通信。某些社区中继节点可用于特定的通信协议,诸如SSL或UDP。
图3是促进器210的示例的框图。一般而言,促进器包括用于诸如超文本传输协议(HTTP)通信信道的基于因特网通信的域名服务(DNS)前端300,以及用于基于对等通信的无服务器解析协议(例如,PNRP)后端310。在一个示例中,促进器210的DNS前端300可用作解析除对社区中继节点的请求以外的域名解析请求的标准DNS服务的一部分。DNS前端可经由HTTP与客户机通信来从客户机接收对社区中继节点的域名解析请求并向请求客户机返回社区中继节点的因特网协议(IP)地址(以及所需的端口号)。PNRP后端310可对社区中继节点进行PNRP解析查询,并响应于该查询存储关于社区中继节点的信息。PNRP后端310还可解析来自DNS前端对社区中继节点的请求,并向DNS前端300返回社区中继节点的IP地址。尽管被示为单个框,但如上所述促进器210可包括多个互连计算机。
如图3中所示,DNS前端300包括DNS网络接口320和有效地耦合于DNS 接口320的DNS插件330。DNS接口320有效地耦合于因特网,且能够与客户机220进行HTTP通信,包括对社区中继节点的DNS名解析请求。DNS接口320可包括用于将来自客户机220的域名解析请求分解成查询名和查询类型的DNS解码器。查询名可涉及用于标识促进器210的DNS名,查询类型可涉及客户机220所请求的通信协议类型(例如,SSL、UDP)。DNS接口320还可包括DNS编码器,它用于响应于该请求而以社区中继节点的IP地址来答复客户机220。DNS接口可通过经由预配置的映射将对社区中继节点的请求的DNS名与相关PNRP名匹配来进一步解析DNS名解析请求。作为替换,如下所述,可利用解码器来对DNS名解码以解析在DNS名内编码的PNRP名。
DNS插件330有效地耦合于PNRP后端310以便将对社区中继节点的请求传递给PNRP后端310,并对不支持的请求(诸如除对社区中继节点的请求以外的请求以及对不支持的查询类型的请求)返回错误。DNS插件330可向DNS接口320返回由PNRP后端解析的社区中继节点的IP地址以响应于客户机对社区中继节点的请求。DNS插件330还可被用于对促进器210的各层初始化和取消初始化设置。用于初始化各层的示例计算机代码实现可如下:
DWORD WINAPI DnsPluginInitialize(
PLUGIN_ALLOCATOR_FUNCTION pDnsAllocateFunction,
PLUGIN_FREE_FUNCTION pDnsFreeFunction)
用于对各层取消初始化设置的示例计算机代码实现可如下:
DWORD WINAPI DnsPluginCleanup()
PNRP后端310可包括PNRP管理器340和有效地耦合于PNRP管理器340的PNRP网络接口350。PNRP管理器340有效地耦合于DNS插件330来接收与DNS前端300解析的社区中继节点的解析请求相关的PNRP名。PNRP管理器可管理来自DNS前端300的PNRP解析请求,解析并管理社区中继节点的PNRP名,并响应于对社区中继节点的请求返回社区中继节点的IP地址。PNRP接口350有效地耦合于若干社区中继节点,包括将PNRP解析查询发送给社区中继节点,以及从社区中继节点接收响应。PNRP接口350可被提供作为PNRP应用程序编程接口,它在PNRP解析查询期间向促进器210上的PNRP服务进行远程过程调用(RPC)。然而,在另一示例中,PNRP接口350的性能可以被改善,即使用PNRP数据链路层(DLL)将PNRP服务从促进器210中移除,从而消除RPC处理。
若干高速缓存360、370、380、390有效地耦合于PNRP管理器340。高速缓 存可被设置为分区成不同高速缓存部分的单个存储器或数据库,或可被设置为不同的存储器或数据库,各自有效地耦合于PNRP管理器。高速缓存可包括解析高速缓存360、370,请求高速缓存380和PNRP高速缓存390。
可提供解析高速缓存360、370来排队和存储关于请求客户机可用的之前解析的社区中继节点的信息。可为不同的通信协议类型提供单独的高速缓存360、370,使得在一个高速缓存360中维护可用的SSL社区中继节点的列表,并在另一高速缓存370中维护可用的UDP社区中继节点的列表。解析高速缓存360、370各自可包括关于存储在高速缓存中的每一社区中继节点的服务质量、负载、位置、IP地址和PNRP名的信息。响应于来自DNS插件的请求,PNRP管理器340可从合适的解析高速缓存360、370中选择一个或多个社区中继节点,并向DNS插件返回社区中继节点的IP地址以便随后答复该请求客户机。如下所述,PNRP管理器340可考虑选择社区中继节点时的各种因素,诸如服务质量、与请求客户机是否接近以及负载平衡。
可提供请求高速缓存380来排队如从DNS插件330接收到的对社区中继节点的请求。请求可根据所请求的通信协议类型被存储在请求高速缓存380中。PNRP管理器340可在请求高速缓存380中存储从DNS插件330接收的请求,并按照请求排队的顺序答复请求。
可提供PNRP高速缓存390来维护已知社区中继节点的列表,包括之前解析的社区中继节点的PNRP名。每一PNRP名可对应于一个以上的社区中继节点。例如,所有已知的SSL社区中继节点可对应于一个PNRP名,而所有已知的UDP社区中继节点可对应于另一个PNRP名。PNRP高速缓存390可根据通信协议类型维护已知通信中继节点的单独列表。例如,可在一个列表中提供已知SSL社区中继节点并使之与相应的PNRP名相关联,而可将已知的UDP社区中继节点提供为另一列表,并使之与相应的PNRP名相关联。也可使用相同的PNRP名来对应于解析高速缓存360、370中所存储的可用社区中继节点的各列表。当答复来自DNS前端300的请求时,PNRP管理器340从而可使用PNRP名来标识适当的解析高速缓存360、370。社区中继节点可向促进器210注册或取消注册自己,以使其为人所知,这样做的结果可在PNRP高速缓存390中被维护。社区中继节点可在相应的PNRP名(例如,SSL或UDP)下注册,且可向促进器210告知其IP地址、通信类型和服务质量。如下所述,PNRP管理器340也可利用PNRP名来对社区中继节点进行PNRP查询作为维护解析高速缓存360、370的一部分。
图4是引导客户机220与社区中继节点240之间的通信的方法400的示例的流程图。当客户机210想要与受访问保护的客户机220通信且不知道路由客户机220、230之间的通信的社区中继节点240时,促进器210可利用方法400来引导客户机220与社区中继节点240之间的通信,然后将其自身从处理中移除。促进器210可从客户机210接收对社区中继节点的请求,然后向客户机220返回社区中继节点240的IP地址。当接收到社区中继节点240的IP地址之后,客户机220可经由HTTP与社区中继节点通信,从而与受访问保护的客户机230通信。
参考图4,在框405处,促进器210的DNS接口320可从请求客户机220接收并读取请求消息。促进器210可与客户机220的用户所知的公知DNS名相关联。客户机220可关于对社区中继节点的请求构造该请求消息使其能由促进器210识别。与标准域名服务一样,客户机请求在到达促进器210之前可能会通过若干不同的DNS服务器路由。促进器210的DNS名以及对社区中继节点的请求可基于以下格式:
xxxxxxxx.tunnel.version.surfix
其中:
suffix=定义促进器210的可配置参数(例如,promoter.Microsoft.com);
version=表示客户机版本且由促进器210使用以理解名字其余部分的常量,(例如,v1)
tunnel=所请求的通道类型(例如,SSL、UDP);以及
xxxxxxxx=阻止标准域名服务高速缓存的随机字母数字前缀。
促进器210的DNS名的示例可包括:
wfnoaycl.udp.v1.promoter.microsoft.com
krgdjfto.ssl.v1.promoter.microsoft.com
如上所述,促进器210可用作标准域名服务的名字服务器,并维护高速缓存的结果的数据库。因此,DNS接口320可接收标准DNS请求,并返回高速缓存在其数据库中的结果。在框405处读取DNS名之后,在框410处,DNS接口320可根据标准域名服务来检查其数据库以确定是否为该DNS名高速缓存了结果。如果是,则DNS接口可根据标准DNS解析返回高速缓存的结果。然而,因为前缀(wfnoaycl或krgdjfto)是随机生成的,DNS名是唯一且不会在DNS接口320的数据库中找到的,从而旁路了标准DNS服务,阻止域名服务草率地向请求客户机220返回结果。因为框405处所读取的域名中的后缀(promoter.microsodt.com)指 示接收方是促进器210,因此DNS接口320可分析DNS名,并将结果传递给DNS插件330。以类似方式,DNS名的结构阻止其它DNS服务器草率地答复请求客户机220,而是将DNS名路由给促进器210。此外,DNS名的生存期限(TTL)可置为0以避免对DNS名的高速缓存。
在框415处,DNS接口320的解码器可分析查询名和查询类型中的DNS名。查询名可涉及原始DNS名(例如,ssl.v1.promoter.microsoft.com或udp.v1.promoter.microsoft.com),查询类型可涉及通道类型(例如,SSL或UDP)。前缀一般可被忽略。查询名和查询类型随后可被传递给DNS插件330。
在框420处,DNS接口320可读取所请求的协议类型。在框425处,基于协议类型,DNS接口320可解析或使DNS名与相关PNRP名相关联以检索社区中继节点的相关列表的PNRP名。社区中继节点的PNRP名可基于以下格式:
0.QOS.tunnel.version.suffix
其中:
suffix=定义社区中继节点的列表的可配置参数(例如,
promoter.microsoft.com);
version=表示社区中继节点的版本且由促进器210使用以在客户机
版本与社区中继节点版本之间匹配的常量(例如,v1);
tunnel=所请求的通道类型(例如,SSL、UDP)以及
QOS=社区中继节点的服务质量(例如,0-高;1-中;2-低)。
社区中继节点列表的PNRP名的示例可包括:
0.udp.v1.promoter.microsoft.com
0.ssl.v1.promoter.microsoft.com
DNS名到社区中继节点的相关列表的映射可通过将PNRP名与DNS名的后缀进行比较来执行。例如,如果DNS名的后缀是“udp.v1.promoter.microsoft.com”,则DNS接口可使DNS名与对应于UDP高速缓存370中维护的UDP社区中继节点的列表的PNRP名“0.udp.v1.promoter.microsoft.com”相关联。如果后缀是“ssl.v1.promoter.microsoft.com”,则DNS名可与对应于SSL社区中继节点的SSL高速缓存360中所维护的SSL社区中继节点的列表的PNRP名“0.ssl.v1.promoter.microsoft.com”相关联。在一个示例中,DNS接口320可维护DNS名和PNRP名的映射。如果DNS名处于映射中,DNS接口可通过将DNS名的后缀与PNRP名进行比较来检索相应的PNRP名。否则,请求可被丢弃。或者, PNRP名可在DNS名内编码,后者将被解码并被传递给PNRP管理器340。在于2005年4月22日提交的题为“DNS Compatible PNRP Peer Name Encoding”、代理编号为30835/193621的美国专利申请中描述了在DNS名中编码PNRP的示例,其内容通过引用被明确包括在此。
在框430处,DNS插件330可基于查询名和查询类型来确定DNS名是否有效。如果查询类型不被支持(即,查询类型与UDP或SSL无关),则DNS插件330可向DNS接口320返回错误,使得该请求在框435处被丢弃。如果查询类型被支持,则在框440处,DNS插件330可将PNRP名传递给PNRP管理器340。PNRP后端310可进行解析器例程445以选择社区中继节点,并向DNS前端330返回社区中继节点的IP地址。无论何时当DNS接口320接收到在其自己的数据库中没有响应的DNS名时,可由DNS插件调用的示例计算机代码实现可如下:
DWORD WINAPI DnsPluginQuery(
PSTR pszQueryName,
WORD wQueryType,
PSTR pszRecordOwnerName,
PDB_RECORD* ppDnsRecordListHead
)
在框450处,DNS前端300可从PNRP后端310接收所选社区中继节点的IP地址。所选社区中继节点及相关联的IP地址与客户机220所请求的通信协议类型相关。对SSL请求而言,PNRP后端310可返回SSL社区中继节点的IPv4地址。对UDP请求而言,PNRP后端310可返回UDP社区中继节点的IPv6地址。IPv6地址可包括要连接至社区中继节点的端口号。在又一示例中,PNRP后端310可返回社区中继节点的IP地址以便网络地址转换器(NAT)穿越。供NAT穿越的IP地址可以是封装社区中继节点的外部IPv4地址、UDP端口号、NAT类型以及NAT穿越服务器的公共IPv4地址的IPv6地址。NAT穿越IP地址可用于社区中继节点240与请求客户机220之间随后的通信以允许IPv4客户机当处于网络地址转换器之后时通过IPv6网络来通信,在于2003年3月27日提交的、题为“Allowing IPv4Clients to Communicate Over an IPv6 Network When Behind a Network AddressTranslator With Reduced Server Workload”的美国专利申请第10/401,083号中公开了对此的示例,该申请的内容通过引用被明确地包含在此。
在框455处,响应于初始请求将IP地址发送给请求客户机210。随后,客户 机210可使用IP地址经由HTTP通信联系社区中继节点240,并经由社区中继节点所推动的路由过程来与受访问保护的客户机220通信。请求客户机220可高速缓存社区中继节点的IP地址以便将来使用,从而减少促进器210上的负载。如果客户机220基于其所高速缓存的IP地址未接收到响应,则客户机220可向促进器210发起对另一社区中继节点的IP地址的新请求。在另一示例中,可向客户机220提供一个或多个社区中继节点的PNRP地址,并进行PNRP查询,从而减少促进器210上的负载。如果PNRP查询没有返回任何响应,客户机220可向促进器210提交请求。
图5是将从DNS前端300接收到的PNRP地址解析成社区中继节点的IP地址的方法445的示例的流程图。响应于从DNS前端300接收到PNRP名,PNRP后端310可选择社区中继节点,并向DNS前端300返回IP地址。
参考图5,在框500处,PNRP管理器340可从DNS插件330接收PNRP名。如果有必要,PNRP名可在请求高速缓存380中排队。PNRP管理器340可按照PNRP名排队的顺序答复请求。PNRP管理器340可为并发请求的数目和解析速率建立预定阈值,并监控请求高速缓存380中排队的PNRP名的数目以及解析请求的平均时间量。请求高速缓存380中超出生存期限的PNRP名可被自动丢弃。可拒绝附加请求,直到并发请求的数目和解析速率回退到阈值之下。
当准备好答复请求时,在框505处,PNRP管理器340可检查要解析的PNRP名是否处于促进器210的管理员所允许的PNRP名列表中。换言之,PNRP管理器340可确定与PNRP名相关联的社区中继节点的列表是否由促进器210维护。如果相应的高速缓存为空或所有社区中继均满负载使用,则该PNRP名可能不能被支持。PNRP管理器340可维护并在答复每一请求之后更新所支持的PNRP名列表。如果未在所支持的PNRP名列表中找到PNRP名,则在框510处,PNRP管理器340可丢弃该请求,或向DNS前端告知该错误。基于对请求高速缓存380的监控,如果促进器210达到了请求数目或解析速率的阈值,则PNRP名管理器340也可拒绝支持请求。
如果PNRP名被支持,则在框515处PNRP管理器340可确定可从中选择社区中继节点的社区中继节点相关列表。因为特定通信协议类型的社区中继节点可被存储为可用于标识相关解析高速缓存360、370的单个PNRP名下的列表,因此PNRP管理器340可容易地确定包含可向请求客户机220提供的社区中继节点的IP地址的相关高速缓存或列表。例如,如果从DNS前端接收到的PNRP名为 “O.ssl.v1.promoter.microsoft.com”,则PNRP管理器340可访问SSL高速缓存370中维护的 SSL 社区中继节点的列表,而如果PNRP名为“O.udp.v1.promoter.microsoft.com”,则PNRP管理器340可访问UDP高速缓存360中维护的UDP社区中继节点的列表。
如果框515处的判断得到与SSL通信中继节点相关联的PNRP名,则在框520处,PNRP管理器340可访问SSL高速缓存360。尽管促进器210可能能够每当接收到客户机请求即进行对社区中继节点的PNRP查询,但这样的处理可能是缓慢的。因此,促进器210可预取可用社区中继节点的IP地址,并将结果存储在高速缓存360、370中。如果高速缓存360资源较少或为空,则PNRP管理器340可拒绝答复请求,并告知DNS前端300,后者又可在框560处告知客户机210。高速缓存因缺乏可用的社区中继节点而可能会资源较少或为空,这可因最大化负载容量、社区中继节点下线、之前承担的社区中继节点等而造成。在框565处,PNRP管理器340可更新高速缓存,这将在以下讨论。
如果在框525处确定SSL高速缓存360有可用的社区中继节点,则在框530处,PNRP管理器340可选择一社区中继节点。如上所述,社区中继节点的IP地址可与诸如服务质量、负载和位置的附加细节一起被存储。当PNRP管理器340选择社区中继节点时,它可考虑这些细节。例如,PNRP管理器340可维护可用社区中继节点的堆栈以及已使用和未被使用的社区中继节点的列表。可基于以下进一步讨论的PNRP解析来确定可用社区中继节点。最新的社区中继节点可被堆在顶部,这些节点还可进一步根据使用、服务质量来堆叠,最高服务质量的被堆在最顶部。正被使用但负载较低的社区中继节点可被堆在未被使用的社区中继节点的第一集团的下方,且也根据服务质量来安排。可按此堆叠随后的社区中继节点。
当选择社区中继节点时,PNRP管理器340可从堆栈的顶部开始,并返回列表中最新、未被使用、高QOS的社区中继节点。如果选择了一个以上的社区中继节点,则PNRP管理器340可选择最接近请求客户机220的社区中继节点。然而,如果不存在任何未被使用的社区中继节点,则PNRP管理器340可选择具有最低负载(即,最少使用)的社区中继节点。因此,即使所有的社区中继节点均正在被使用,PNRP管理器340也可在可用社区中继节点之间平衡负载。如果所有社区中继节点之间的负载相当,则PNRP管理器340可选择具有最高服务质量的社区中继节点。如果PNRP管理器340搜索了堆栈而没有确定社区中继节点,则PNRP管理器340可简单地选择堆栈中的第一社区中继节点。另一方面,如果选择了一个以上的社区 中继节点,则PNRP管理器340可选择最接近请求客户机220的社区中继节点。一旦PNRP管理器找到了合适的社区中继节点,即从SSL高速缓存360中选择该IP地址。作为结果,PNRP管理器可潜在地选择最新、未被使用的、具有最高可用服务质量的社区中继节点。如果没有任何新的、未被使用的社区中继节点可用,则PNRP管理器340可选择下一最合适的社区中继节点,从而向请求客户机220提供最佳可用的社区中继节点,同时在可用的社区中继节点之间平衡负载。应理解,堆叠以及为选择考虑的社区中继节点的顺序可不同于公开的顺序,且可根据包括在此公开的准则在内的各种准则来排序。
在选择了SSL社区中继节点之后,在框535处,PNRP管理器340可向DNS前端300返回IP地址,如参考图4所述,前端300又可向请求客户机220返回该IP地址。SSL社区中继节点的IP地址可以是IPv4地址(例如,200.1.2.3)。
如果框515处的判断得到与UDP通信中继节点相关联的PNRP名,则可执行类似的过程。在框540处,PNRP管理器可访问UDP高速缓存370。PNRP管理器340可访问UDP高速缓存370。如果高速缓存370资源较少或为空,则PNRP管理器340可拒绝答复该请求,并告知DNS前端300,后者又可在框560处告知客户机210,并在框565处更新该高速缓存。如果UDP高速缓存370具有可用的社区中继节点,则在框560处,PNRP管理器340可选择社区中继节点。选择UDP社区中继节点的过程可与上述的选择SSL社区中继节点的过程相同。当选择了UDP社区中继节点之后,在框555处,PNRP管理器340可向DNS前端300返回IP地址,如上参考图4所述,前端300又可向请求客户机220返回该IP地址。UDP社区中继节点的IP地址可以是带有UDP社区中继节点的通信端口号的IPv6地址(例如,200.1.2.4,端口1234)。
参考图6A-6F,PNRP管理器340可维护已使用和未被使用的社区中继节点的列表,以及可用社区中继节点的PNRP堆栈,以协助选择社区中继节点。可为每一PNRP名维护单独的PNRP堆栈(例如SSL的PNRP堆栈和UDP的PNRP堆栈)。在图6A中,可用社区中继节点(CNR1、CNR2、CNR3)保持未被使用,并被包括在未被使用的社区中继节点的列表中。CNR3可以是最新的社区中继节点,从而堆叠在顶部。随后,如图6B中所示,社区中继节点(CNR3)被使用,并被移入已使用列表,其余的未使用社区中继节点按顺序上移,这可由堆栈指针表示。在图6C中,将一新的可用社区中继节点(CNR4)添加到堆栈。因为新社区中继节点(CNR4)现在是最新的,所以堆栈指针可指示它是被首选的并将其移动至已 使用列表。在图6D中,堆栈指针指示将选择其余的两个未被使用的社区中继节点(CNR1和CNR2),而之前的社区中继节点(CNR3和CNR4)已被使用。在图6E中,所有可用的社区中继节点都已经被使用,PNRP管理器340可选择CNR3,因为它最早被使用,以努力维护负载平衡。其余的社区中继节点可从已使用列表中移除,并在缺少任何其它新的或未被使用的社区中继节点时,在未使用列表中被维护。在图6F中,将一新的可用社区中继节点(CNR 5)添加到未使用列表的顶部,而CNR3仍作为已使用列表中最常用的社区中继节点。
作为结果,PNRP管理器340可通过选择最新和最少被使用的社区中继节点同时平衡负载来管理可用的社区中继节点。已使用和未使用列表可添加新的社区中继节点并移除老的节点。PNRP管理器340首选返回最新的未被使用的社区中继节点。如果所有的社区中继节点均已被使用,则PNRP管理器340按照它们之前被使用的顺序返回社区中继节点。PNRP堆栈仍负责预取PNRP名,以继续使用新的可用社区中继节点来重新填充堆栈。PNRP堆栈还可将其大小维持在期望的水平。在下述的PNRP解析之后,如果堆栈大于预定大小,则可从堆栈中移除较老或已使用的社区中继节点,并从PNRP解析添加新的可用社区中继节点。
PNRP管理器340还可监控每秒所需的已解析的请求数,如由预定堆栈大小与请求过期之前的秒数的比率来计算。任何一次请求的数目可由每秒所需的已解析的请求和已使用的解析的总和来计算。对于任何一次(例如,每秒),PNRP管理器340不能发出多于堆栈和解析高速缓存360、370的配置中所指定的限制的PNRP请求。
图7是更新和维护解析高速缓存360、370的方法565的流程图。尽管被示为在图5的方法期间实现,但更新方法565可与PNRP管理器340的其它功能并行地连续执行,但如果请求超过了可用社区中继节点或要替换之前所选的社区中继节点时,可特别调用。实际上,PNRP管理器340可在请求之前而非响应于每一请求来预取社区中继节点。尽管PNRP管理器340可为每一请求进行对社区中继节点的PNRP查询,但预取可更快地返回结果。可为SSL高速缓存360和UDP高速缓存370分开执行方法565。一般而言,解析高速缓存360、370在大小和生存期限上可配置。
参考图7,在框600处,PNRP管理器340可确定高速缓存是否资源较少或为空。可基于预定阈值来确定高速缓存是否资源较少。当然,如果高速缓存为空,则高速缓存被认为资源较少。基于各种参数可认为高速缓存资源较少,诸如如果未被 使用的社区中继节点过少、如果已使用的负载较轻的社区中继节点过少、如果高服务质量的社区中继节点过少等。如果高速缓存被认为资源较少,控制可被传递给框610。如果高速缓存资源不少,则控制可被传递给框605。
在框605处,PNRP管理器340可确定高速缓存360、370中是否列出了比预定生存期限阈值更陈旧的任何社区中继节点。因为社区中继节点可能离线或以其它方式而不可使用,因此PNRP管理器340可在预定时间量之后从列表中移除社区中继节点以保持列表新鲜。所移除的社区中继节点可被存储在PNRP高速缓存390中。如果在框605处,达到或超过了生存期限阈值,则控制可传递给框610以使用较新的社区中继节点来替换较陈旧的社区中继节点。否则,控制可被传回框600以继续重复更新方法565。
在框610处,PNRP管理器340可检索与PNRP高速缓存390中所维护的已知社区中继节点的列表相关联的PNRP名。PNRP名可以与用于标识可用社区中继节点的列表的名字相同 (例如,0.ssl.v1.promoter.microsoft.com 或者0.udp.v1.promoter.microsoft.com)。例如,当更新SSL高速缓存360时,PNRP管理器340可使用PNRP名0.ssl.v1.promoter.microsoft.com来标识已知SSL社区中继节点的列表。当更新UDP高速缓存370时,PNRP管理器340可使用PNRP名0.udp.v1.promoter.microsoft.com来标识已知UDP社区中继节点的列表。PNRP高速缓存390所维护的PNRP名列表可与用于上述映射过程所使用的列表相同。尽管描述为仅维护两个PNRP名,但PNRP高速缓存390可基于通信协议类型、版本、服务质量等维护若干个PNRP名,每一个PNRP名与一个或多个相应的社区中继节点相关联。
在框615处,PNRP管理器340可使用PNRP名经由PNRP接口350进行PNRP解析。PNRP解析可包括查询已向促进器210注册的多个社区中继节点。作为结果,可同时查询多个社区中继节点。此外,PNRP管理器340可随机查询社区中继节点以返回同一PNRP名下的随机IP地址,并在社区中继节点之间维护平衡的负载。PNRP管理器340可对PNRP API使用随机提示数。当注册社区中继节点或当进行PNRP解析时,可提供该随机数。在2001年8月29日提交的美国专利申请公布第2002/0143989号以及于2003年6月13日提交的美国专利申请公布第2005/0004916号中公开了PNRP解析的示例,其内容通过引用被明确地包含在此。
如果在框620处,PNRP管理器340从一个或多个社区中继节点接收到响应,则PNRP管理器340可将该社区中继节点的IP地址添加到解析高速缓存360、370 中相应的列表中。同样地,PNRP管理器340可将新的、未被使用的社区中继节点添加到可用社区中继节点的堆栈的顶部。在一个示例中,PNRP管理器340可将最新的未被使用的社区中继节点移动到列表和堆栈的顶部。作为这种解析高速缓存360、370的连续预取和更新的结果,可将较新的社区中继节点添加到列表的顶部。如果PNRP管理器340未接收到对PNRP查询的响应,则控制可传回给框610,且PNRP管理器340可使用下一PNRP名用于PNRP查询。
基于前述公开内容,受访问保护的请求客户机可使用促进器的公知DNS名来发现社区中继节点。DNS名可被构造来指示通信协议类型,并由促进器210的DNS前端接收。基于DNS名的格式,DNS前端使DNS名与PNRP名相关联,并将PNRP名传递给促进器210的PNRP后端。PNRP后端维护社区中继节点的预取列表,并解析PNRP名来选择社区中继节点,并向DNS前端返回所选社区中继节点的IP地址。DNS前端然后向请求客户机返回IP地址,该请求客户机然后可经由HTTP联系社区中继节点,随后在社区中继节点穿越防火墙的情况下与另一受访问保护的客户机通信。可基于通信协议类信、服务质量、与所请求客户机的接近程度、负载等选择通信中继节点。社区中继节点可在预定PNRP名下向促进器210注册其IP地址。PNRP后端可使用PNRP解析连续更新可用社区中继节点的列表。
尽管前述文字描述了各个不同实施例的详细描述,但应理解,本发明的范围由本发明所附的权利要求书中的文字定义。该详细描述应被解释为仅是示例性的,且并不描述每个可能的实施例,因为描述每个可能的实施例即使不是不可能也是不实际的。可使用当前的技术或本发明申请日之后开发的技术来实现各种替换实施例,它们仍将落入权利要求书的范围内。
因此,对此处所述和所示的技术和结构可进行众多修改和变型,而不背离所提交的权利要求书的精神和范围。从而,应理解,此处所述的方法和装置仅是示例性的,且并不对权利要求书的范围作出限定。
Claims (20)
1.一种发现网络社区内的社区中继节点的方法,其中所述社区中继节点操作上耦合于受访问保护的客户机,并适用于使所述受访问保护的客户机与请求客户机之间的通信更容易,所述方法包括:
从请求客户机接收涉及对社区中继节点的请求的请求消息;
使所述请求消息与无服务器名称解析协议名相关联;
基于所述无服务器名称解析协议名从社区中继节点的列表之中选择一社区中继节点,其中所述社区中继节点的列表包括与社区中继节点相关联的至少一个因特网协议地址;以及
向所述请求客户机返回所选社区中继节点的因特网协议地址。
2.如权利要求1所述的方法,其特征在于,
其中所述请求消息包括所请求的通信协议类型;
其中使所述请求消息与无服务器名称解析协议名相关联包括:使所述请求消息与所请求的通信协议类型的无服务器名称解析协议名相关联;
其中基于所述无服务器名称解析协议名从社区中继节点的列表中选择社区中继节点包括:从支持所述通信协议类型的社区中继节点列表中选择社区中继节点;以及
其中返回社区中继节点的因特网协议地址包括:返回支持所请求的通信协议类型的社区中继节点的因特网协议地址。
3.如权利要求2所述的方法,其特征在于,所述通信协议类型涉及下组之一:安全套接字层协议和用户数据报协议。
4.如权利要求1所述的方法,其特征在于,使所述请求消息与无服务器名称解析协议名相关联的步骤包括:
将域名系统名映射到所述无服务器名称解析协议名;
其中所述请求消息包括所述域名系统名;以及
其中使所述请求消息与无服务器名称解析协议名相关联包括使所述域名系统名与无服务器名称解析协议名匹配。
5.如权利要求14所述的方法,其特征在于,所述请求的通信协议类型包括域名服务名和所述域名服务名中编码的无服务器名称解析协议名,所述基于所述无服务器名称解析协议名从社区中继节点的列表之中选择一社区中继节点的步骤包名称解析协议名从社区中继节点的列表之中选择一社区中继节点的步骤包括:
从所述域名系统名解码所述无服务器名称解析协议名;以及
将所述无服务器名称解析协议名解析成社区中继节点的因特网协议地址。
6.如权利要求1所述的方法,其特征在于,其中基于所述无服务器名称解析协议名从社区中继节点的列表中选择社区中继节点包括基于下组中的一个或多个从社区中继节点列表中选择社区中继节点:负载平衡、服务质量、所述社区中继节点与所述请求客户机的接近程度。
7.如权利要求1所述的方法,其特征在于,还包括:
从社区中继节点接收注册消息,所述注册消息包括无服务器名称解析协议名和所述社区中继节点的因特网协议地址;
对所注册的社区中继节点进行无服务器名称解析协议查询;
从所述社区中继节点接收查询响应;
存储对等名称解析协议名和所述社区中继节点的列表中所注册的社区中继节点的所述因特网协议地址。
8.一种用于执行引导社区中继节点与请求客户机之间的通信的系统,包括:
用于从请求客户机接收域名的装置;
用于使所述域名与对等名相关联的装置;
用于将所述对等名解析成一个或多个因特网协议地址的装置;其中每一因特网协议地址涉及一个社区中继;
用于从所解析的一个或多个因特网协议地址中选择社区中继节点的装置;以及
用于向所述请求客户机返回所选社区中继节点的所述因特网协议地址的装置。
9.如权利要求8所述的系统,其特征在于,所述域名包括查询名和查询类型,所述系统还包括:
用于将所述域名分析成所述查询名和所述查询类型的装置;
用于根据所述查询类型使所述查询名与一对等名相关联的装置;以及
用于根据所述查询类型选择社区中继节点的装置。
10.如权利要求9所述的系统,其特征在于,所述查询类型包括下组之一:安全套接字层协议和用户数据报协议。
11.如权利要求8所述的系统,其特征在于,所述用于使域名与对等名相关联的装置包括:用于基于域名和对等名的预定映射将所述域名与所述对等名匹配的装置。
12.如权利要求8所述的系统,其特征在于,所述用于使所述域名与对等名相关联的装置其中包括用于从所述域名解码所述对等名的装置。
13.如权利要求8所述的系统,其特征在于,所述用于从所解析的一个或多个因特网协议地址中选择社区中继节点的装置包括基于下组中的一个或多个来选择社区中继节点的装置:负载平衡、服务质量和所述社区中继节点与所述请求客户机的接近程度。
14.一种计算装置,包括:
包括处理器和操作上耦合到所述处理器的存储器的处理装置;
操作上耦合到网络和所述处理装置的域名系统网络接口;
操作上耦合到至少一个社区中继、所述域名系统网络接口和所述处理装置的对等名称解析协议网络接口;
与第一对等名称解析协议名相关联、并适用于存储第一多个社区中继节点的因特网协议地址的第一高速缓存,所述第一高速缓存操作上耦合到所述对等名称解析协议网络接口;
与第二对等名称解析协议名相关联、并适用于存储第二多个社区中继节点的因特网协议地址的第二高速缓存,所述第二高速缓存操作上耦合到所述对等名称解析协议网络接口;
所述处理装置被编程来从客户机接收涉及对社区中继节点的请求的请求消息;
所述处理装置被编程来将所述请求消息解析成所述第一对等名称解析协议名或所述第二对等名称解析协议名;
如果所述请求消息被解析成所述第一对等名称解析协议名,则所述处理装置被编程来从所述第一高速缓存中选择社区中继节点;
如果所述请求消息被解析成所述第二对等名称解析协议名,则所述处理装置被编程来从所述第二高速缓存中选择社区中继节点;以及
所述处理装置被编程来向所述客户机发送所选社区中继节点的所述因特网协议地址。
15.如权利要求14所述的计算装置,其特征在于,所述第一对等名称解析协议名涉及第一通信协议类型,所述第二对等名称解析协议类型涉及第二通信协议类型。
16.如权利要求15所述的计算装置,其特征在于,所述第一通信协议类型包括安全套接字层协议,所述第二通信协议类型包括用户数据报协议。
17.如权利要求14所述的计算装置,其特征在于,
所述请求消息包括所述计算装置的域名系统名;
所述处理装置被编程来将所述域名系统名解析成所述第一对等名称解析协议名或所述第二对等名称解析协议名之一。
18.如权利要求14所述的计算装置,其特征在于,所述处理装置被编程来基于下组中的一个或多个从所述第一高速缓存或所述第二高速缓存中选择社区中继节点:负载平衡、服务质量和所述社区中继节点与所述客户机的接近程度。
19.如权利要求14所述的计算装置,其特征在于,
所述处理装置被编程来查询多个社区中继节点;
所述处理装置被编程来接收关联于来自所述多个社区中继节点中一个或多个响应的数据;以及
所述处理装置被编程来使用所述一个或多个响应的社区中继节点来更新所述第一高速缓存或所述第二高速缓存。
20.如权利要求19所述的计算装置,其特征在于,所述处理装置被编程来对所述多个社区中继节点进行对等名解析。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/907,985 | 2005-04-22 | ||
US10/907,985 US7788378B2 (en) | 2005-04-22 | 2005-04-22 | Apparatus and method for community relay node discovery |
PCT/US2005/027580 WO2006115526A2 (en) | 2005-04-22 | 2005-08-01 | Apparatus and method for community relay node delivery |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101171579A CN101171579A (zh) | 2008-04-30 |
CN101171579B true CN101171579B (zh) | 2012-08-22 |
Family
ID=37188341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800497009A Active CN101171579B (zh) | 2005-04-22 | 2005-08-01 | 用于社区中继节点发现的装置和方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7788378B2 (zh) |
EP (1) | EP1872240A2 (zh) |
JP (1) | JP2008538630A (zh) |
KR (1) | KR20080005507A (zh) |
CN (1) | CN101171579B (zh) |
BR (1) | BRPI0520188A2 (zh) |
MX (1) | MX2007013119A (zh) |
RU (1) | RU2007138965A (zh) |
TW (1) | TW200638710A (zh) |
WO (1) | WO2006115526A2 (zh) |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7779073B2 (en) * | 2005-03-31 | 2010-08-17 | British Telecommunications Plc | Computer network |
US20070160069A1 (en) * | 2006-01-12 | 2007-07-12 | George David A | Method and apparatus for peer-to-peer connection assistance |
EP1814337A1 (en) * | 2006-01-27 | 2007-08-01 | Hewlett-Packard Development Company, L.P. | Improvements in or relating to group communications |
US20080104272A1 (en) * | 2006-10-31 | 2008-05-01 | Morris Robert P | Method and system for routing a message over a home network |
US20080147827A1 (en) * | 2006-12-14 | 2008-06-19 | Morris Robert P | Method And System For Synchronizing Operating Modes Of Networked Appliances |
US20080147880A1 (en) * | 2006-12-14 | 2008-06-19 | Morris Robert P | Methods And Systems For Routing A Message Over A Network |
US8782178B2 (en) * | 2007-06-14 | 2014-07-15 | Cisco Technology, Inc. | Distributed bootstrapping mechanism for peer-to-peer networks |
US7991910B2 (en) | 2008-11-17 | 2011-08-02 | Amazon Technologies, Inc. | Updating routing information based on client location |
US8028090B2 (en) | 2008-11-17 | 2011-09-27 | Amazon Technologies, Inc. | Request routing utilizing client location information |
US20100250737A1 (en) * | 2007-10-31 | 2010-09-30 | Interdisciplinary Center Herzliya | Detecting and controlling peer-to-peer traffic |
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) |
US20090161576A1 (en) * | 2007-12-21 | 2009-06-25 | Morris Robert P | Methods And Systems For Sending Information To A Zone Included In An Internet Network |
US8606996B2 (en) | 2008-03-31 | 2013-12-10 | Amazon Technologies, Inc. | Cache optimization |
US8321568B2 (en) | 2008-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Content management |
US7970820B1 (en) | 2008-03-31 | 2011-06-28 | Amazon Technologies, Inc. | Locality based content distribution |
US7962597B2 (en) | 2008-03-31 | 2011-06-14 | Amazon Technologies, Inc. | Request routing based on class |
US8447831B1 (en) | 2008-03-31 | 2013-05-21 | Amazon Technologies, Inc. | Incentive driven content delivery |
US20090252161A1 (en) * | 2008-04-03 | 2009-10-08 | Morris Robert P | Method And Systems For Routing A Data Packet Based On Geospatial Information |
CN101557388B (zh) * | 2008-04-11 | 2012-05-23 | 中国科学院声学研究所 | 一种基于UPnP和STUN技术相结合的NAT穿越方法 |
US9407681B1 (en) | 2010-09-28 | 2016-08-02 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US20100011048A1 (en) * | 2008-07-10 | 2010-01-14 | Morris Robert P | Methods And Systems For Resolving A Geospatial Query Region To A Network Identifier |
US20100010992A1 (en) * | 2008-07-10 | 2010-01-14 | Morris Robert P | Methods And Systems For Resolving A Location Information To A Network Identifier |
US20100010975A1 (en) * | 2008-07-10 | 2010-01-14 | Morris Robert P | Methods And Systems For Resolving A Query Region To A Network Identifier |
US20100124220A1 (en) * | 2008-11-18 | 2010-05-20 | Morris Robert P | Method And Systems For Incrementally Resolving A Host Name To A Network Address |
EP2395712A4 (en) * | 2009-02-03 | 2012-07-04 | Nec Corp | APPLICATION SWITCHING SYSTEM AND APPLICATION SWITCHING METHOD |
US8156249B2 (en) * | 2009-02-20 | 2012-04-10 | Microsoft Corporation | Using server type to obtain network address |
US7933272B2 (en) * | 2009-03-11 | 2011-04-26 | Deep River Systems, Llc | Methods and systems for resolving a first node identifier in a first identifier domain space to a second node identifier in a second identifier domain space |
US8135912B2 (en) | 2009-05-18 | 2012-03-13 | Hola Networks, Ltd. | System and method of increasing cache size |
US8782236B1 (en) | 2009-06-16 | 2014-07-15 | Amazon Technologies, Inc. | Managing resources using resource expiration data |
US8935428B2 (en) * | 2009-06-24 | 2015-01-13 | Broadcom Corporation | Fault tolerance approaches for DNS server failures |
US8397073B1 (en) | 2009-09-04 | 2013-03-12 | Amazon Technologies, Inc. | Managing secure content in a content delivery network |
US20110066924A1 (en) | 2009-09-06 | 2011-03-17 | Dorso Gregory | Communicating in a computer environment |
WO2011029080A2 (en) * | 2009-09-06 | 2011-03-10 | Sgiggle Incorporated | Communicating in a computer environment |
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US8832281B2 (en) * | 2010-01-08 | 2014-09-09 | Tangome, Inc. | Utilizing resources of a peer-to-peer computer environment |
US9094527B2 (en) * | 2010-01-11 | 2015-07-28 | Tangome, Inc. | Seamlessly transferring a communication |
US8560633B2 (en) * | 2010-01-11 | 2013-10-15 | Tangome, Inc. | Communicating in a peer-to-peer computer environment |
US9495338B1 (en) | 2010-01-28 | 2016-11-15 | Amazon Technologies, Inc. | Content distribution network |
US10958501B1 (en) | 2010-09-28 | 2021-03-23 | Amazon Technologies, Inc. | Request routing information based on client IP groupings |
US9003035B1 (en) | 2010-09-28 | 2015-04-07 | Amazon Technologies, Inc. | Point of presence management in request routing |
US8468247B1 (en) | 2010-09-28 | 2013-06-18 | Amazon Technologies, Inc. | Point of presence management in request routing |
US9712484B1 (en) | 2010-09-28 | 2017-07-18 | Amazon Technologies, Inc. | Managing request routing information utilizing client identifiers |
JP2012078902A (ja) * | 2010-09-30 | 2012-04-19 | Brother Ind Ltd | 情報処理装置、情報処理方法及び情報処理プログラム |
CN102447614B (zh) * | 2010-10-14 | 2016-03-30 | 中兴通讯股份有限公司 | 一种中继节点的选择方法、系统及中继控制节点 |
CN102469015B (zh) * | 2010-11-17 | 2016-04-13 | 中兴通讯股份有限公司 | 实现中继选择的方法及装置、系统 |
US8452874B2 (en) * | 2010-11-22 | 2013-05-28 | Amazon Technologies, Inc. | Request routing processing |
US10467042B1 (en) | 2011-04-27 | 2019-11-05 | Amazon Technologies, Inc. | Optimized deployment based upon customer locality |
US20120317153A1 (en) * | 2011-06-07 | 2012-12-13 | Apple Inc. | Caching responses for scoped and non-scoped domain name system queries |
US9001804B2 (en) * | 2011-06-16 | 2015-04-07 | Qualcomm Incorporated | Sharing multi description coded content utilizing proximate helpers |
US10623408B1 (en) | 2012-04-02 | 2020-04-14 | Amazon Technologies, Inc. | Context sensitive object management |
US9154551B1 (en) | 2012-06-11 | 2015-10-06 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US10205698B1 (en) | 2012-12-19 | 2019-02-12 | Amazon Technologies, Inc. | Source-dependent address resolution |
US9104241B2 (en) | 2013-07-17 | 2015-08-11 | Tangome, Inc. | Performing multiple functions by a mobile device during a video conference |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
US20150067033A1 (en) * | 2013-09-05 | 2015-03-05 | Cisco Technology, Inc | Relay Server Load Balancing and Placement using In-Band Signaling |
US10410244B2 (en) | 2013-11-13 | 2019-09-10 | Bi Science (2009) Ltd | Behavioral content discovery |
CN104331484B (zh) * | 2014-11-05 | 2017-10-17 | 北京航空航天大学 | 基于影响力最大化的节点查询方法和装置 |
US10097448B1 (en) | 2014-12-18 | 2018-10-09 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10225326B1 (en) | 2015-03-23 | 2019-03-05 | Amazon Technologies, Inc. | Point of presence based data uploading |
US9832141B1 (en) | 2015-05-13 | 2017-11-28 | Amazon Technologies, Inc. | Routing based request correlation |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
US10936674B2 (en) * | 2015-08-20 | 2021-03-02 | Airwatch Llc | Policy-based trusted peer-to-peer connections |
CN107615829B (zh) * | 2015-09-25 | 2020-06-26 | 华为技术有限公司 | 寻呼方法、同步方法与用户设备 |
US10270878B1 (en) | 2015-11-10 | 2019-04-23 | Amazon Technologies, Inc. | Routing for origin-facing points of presence |
US10075551B1 (en) | 2016-06-06 | 2018-09-11 | Amazon Technologies, Inc. | Request management for hierarchical cache |
US10110694B1 (en) | 2016-06-29 | 2018-10-23 | Amazon Technologies, Inc. | Adaptive transfer rate for retrieving content from a server |
US10616250B2 (en) | 2016-10-05 | 2020-04-07 | Amazon Technologies, Inc. | Network addresses with encoded DNS-level information |
US10831549B1 (en) | 2016-12-27 | 2020-11-10 | Amazon Technologies, Inc. | Multi-region request-driven code execution system |
US10938884B1 (en) | 2017-01-30 | 2021-03-02 | Amazon Technologies, Inc. | Origin server cloaking using virtual private cloud network environments |
US11075987B1 (en) | 2017-06-12 | 2021-07-27 | Amazon Technologies, Inc. | Load estimating content delivery network |
EP3805958B1 (en) | 2017-08-28 | 2023-12-20 | Bright Data Ltd. | Method for improving content fetching by selecting tunnel devices |
US11190374B2 (en) | 2017-08-28 | 2021-11-30 | Bright Data Ltd. | System and method for improving content fetching by selecting tunnel devices |
US10742593B1 (en) | 2017-09-25 | 2020-08-11 | Amazon Technologies, Inc. | Hybrid content request routing system |
US10592578B1 (en) | 2018-03-07 | 2020-03-17 | Amazon Technologies, Inc. | Predictive content push-enabled content delivery network |
US10862852B1 (en) | 2018-11-16 | 2020-12-08 | Amazon Technologies, Inc. | Resolution of domain name requests in heterogeneous network environments |
US11025747B1 (en) | 2018-12-12 | 2021-06-01 | Amazon Technologies, Inc. | Content request pattern-based routing system |
US20210067577A1 (en) | 2019-02-25 | 2021-03-04 | Luminati Networks Ltd. | System and method for url fetching retry mechanism |
EP4030318A1 (en) | 2019-04-02 | 2022-07-20 | Bright Data Ltd. | System and method for managing non-direct url fetching service |
CN110266828A (zh) * | 2019-06-11 | 2019-09-20 | 华为技术有限公司 | 一种建立端到端网络连接的方法、装置及网络系统 |
CN112437106A (zh) * | 2020-08-31 | 2021-03-02 | 上海哔哩哔哩科技有限公司 | 一种使用中继节点上传文件的方法及设备 |
CN113472668B (zh) * | 2021-07-26 | 2023-06-20 | 支付宝(杭州)信息技术有限公司 | 多方安全计算中的路由方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1248441A2 (en) * | 2001-04-02 | 2002-10-09 | Microsoft Corporation | Peer-to-peer name resolution protocol (PNRP) and multilevel cache for use therewith |
US20020152288A1 (en) * | 2000-11-06 | 2002-10-17 | Rajesh Hora | System and method for providing automated database assistance to financial service operators |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002057917A2 (en) * | 2001-01-22 | 2002-07-25 | Sun Microsystems, Inc. | Peer-to-peer network computing platform |
US7613812B2 (en) * | 2002-12-04 | 2009-11-03 | Microsoft Corporation | Peer-to-peer identity management interfaces and methods |
US7245622B2 (en) * | 2003-03-27 | 2007-07-17 | Microsoft Corporation | Allowing IPv4 clients to communicate over an IPv6 network when behind a network address translator with reduced server workload |
US7533184B2 (en) * | 2003-06-13 | 2009-05-12 | Microsoft Corporation | Peer-to-peer name resolution wire protocol and message format data structure for use therein |
US7496648B2 (en) * | 2003-10-23 | 2009-02-24 | Microsoft Corporation | Managed peer name resolution protocol (PNRP) interfaces for peer to peer networking |
US7949996B2 (en) * | 2003-10-23 | 2011-05-24 | Microsoft Corporation | Peer-to-peer identity management managed interfaces and methods |
US20050177715A1 (en) * | 2004-02-09 | 2005-08-11 | Microsoft Corporation | Method and system for managing identities in a peer-to-peer networking environment |
US20060053485A1 (en) * | 2004-09-08 | 2006-03-09 | Chia-Hsin Li | Network connection through NAT routers and firewall devices |
US7640329B2 (en) * | 2005-02-15 | 2009-12-29 | Microsoft Corporation | Scaling and extending UPnP v1.0 device discovery using peer groups |
-
2005
- 2005-04-22 US US10/907,985 patent/US7788378B2/en active Active
- 2005-08-01 CN CN2005800497009A patent/CN101171579B/zh active Active
- 2005-08-01 KR KR1020077024170A patent/KR20080005507A/ko not_active Application Discontinuation
- 2005-08-01 MX MX2007013119A patent/MX2007013119A/es not_active Application Discontinuation
- 2005-08-01 BR BRPI0520188-8A patent/BRPI0520188A2/pt not_active IP Right Cessation
- 2005-08-01 TW TW094126098A patent/TW200638710A/zh unknown
- 2005-08-01 RU RU2007138965/09A patent/RU2007138965A/ru not_active Application Discontinuation
- 2005-08-01 EP EP05779280A patent/EP1872240A2/en not_active Withdrawn
- 2005-08-01 JP JP2008507630A patent/JP2008538630A/ja active Pending
- 2005-08-01 WO PCT/US2005/027580 patent/WO2006115526A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020152288A1 (en) * | 2000-11-06 | 2002-10-17 | Rajesh Hora | System and method for providing automated database assistance to financial service operators |
EP1248441A2 (en) * | 2001-04-02 | 2002-10-09 | Microsoft Corporation | Peer-to-peer name resolution protocol (PNRP) and multilevel cache for use therewith |
Also Published As
Publication number | Publication date |
---|---|
CN101171579A (zh) | 2008-04-30 |
US7788378B2 (en) | 2010-08-31 |
KR20080005507A (ko) | 2008-01-14 |
RU2007138965A (ru) | 2009-04-27 |
BRPI0520188A2 (pt) | 2009-04-22 |
WO2006115526A3 (en) | 2007-01-25 |
EP1872240A2 (en) | 2008-01-02 |
MX2007013119A (es) | 2008-01-14 |
WO2006115526A2 (en) | 2006-11-02 |
TW200638710A (en) | 2006-11-01 |
US20060242227A1 (en) | 2006-10-26 |
JP2008538630A (ja) | 2008-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101171579B (zh) | 用于社区中继节点发现的装置和方法 | |
CN112839111B (zh) | 边缘位置处的可定制的事件触发计算的系统、方法和介质 | |
US10264062B2 (en) | Request routing using a popularity identifier to identify a cache component | |
US10574787B2 (en) | Translation of resource identifiers using popularity information upon client request | |
JP6146950B2 (ja) | ネットワークコンピューティングコンポーネントを使用してルーティングをリクエストする方法およびシステム | |
CN108886525A (zh) | 智能域名系统转发的方法和装置 | |
CN103947178B (zh) | 用于内容递送的方法和装置 | |
KR20040071203A (ko) | 프록시를 이용하여 데이터를 다운로딩하기 위한 시스템 및방법 | |
CN102571972B (zh) | 从外部企业网络进行站点知晓的分布式文件系统访问 | |
US11481825B1 (en) | Transaction processing at edge servers in a content distribution network | |
CN103262502B (zh) | 多核平台的dns代理服务 | |
US20130254425A1 (en) | Dns forwarder for multi-core platforms | |
US10536429B2 (en) | Conveying information in hostname in a content delivery network (CDN) | |
JP2008134914A (ja) | 複合サービス提供システムおよび方法 | |
KR20140007953A (ko) | 분석에 의한 라우팅 | |
US11546405B2 (en) | Methods for exposing mainframe data as a web service and devices thereof | |
JP2023522785A (ja) | 調和総合プロキシサービス | |
JP3968066B2 (ja) | 名前解決システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150429 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150429 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |