CN102823196A - 管理网络节点之间的网络通信以及流传输协议 - Google Patents
管理网络节点之间的网络通信以及流传输协议 Download PDFInfo
- Publication number
- CN102823196A CN102823196A CN2011800159065A CN201180015906A CN102823196A CN 102823196 A CN102823196 A CN 102823196A CN 2011800159065 A CN2011800159065 A CN 2011800159065A CN 201180015906 A CN201180015906 A CN 201180015906A CN 102823196 A CN102823196 A CN 102823196A
- Authority
- CN
- China
- Prior art keywords
- network node
- session
- client network
- separately
- channel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000006854 communication Effects 0.000 title abstract description 101
- 238000004891 communication Methods 0.000 title abstract description 99
- 230000005540 biological transmission Effects 0.000 claims description 195
- 238000000034 method Methods 0.000 claims description 169
- 230000004044 response Effects 0.000 claims description 81
- 230000008569 process Effects 0.000 claims description 57
- GUGNSJAORJLKGP-UHFFFAOYSA-K sodium 8-methoxypyrene-1,3,6-trisulfonate Chemical compound [Na+].[Na+].[Na+].C1=C2C(OC)=CC(S([O-])(=O)=O)=C(C=C3)C2=C2C3=C(S([O-])(=O)=O)C=C(S([O-])(=O)=O)C2=C1 GUGNSJAORJLKGP-UHFFFAOYSA-K 0.000 claims description 34
- 230000015572 biosynthetic process Effects 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 22
- 230000000295 complement effect Effects 0.000 claims description 19
- 238000007906 compression Methods 0.000 claims description 14
- 239000000284 extract Substances 0.000 claims description 13
- 230000006835 compression Effects 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 7
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 230000006855 networking Effects 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 235000017060 Arachis glabrata Nutrition 0.000 claims 8
- 241001553178 Arachis glabrata Species 0.000 claims 8
- 235000010777 Arachis hypogaea Nutrition 0.000 claims 8
- 235000018262 Arachis monticola Nutrition 0.000 claims 8
- 235000020232 peanut Nutrition 0.000 claims 8
- 230000000717 retained effect Effects 0.000 claims 2
- 239000000470 constituent Substances 0.000 abstract 1
- 239000010902 straw Substances 0.000 description 55
- 239000003795 chemical substances by application Substances 0.000 description 53
- 235000014510 cooky Nutrition 0.000 description 22
- 238000007726 management method Methods 0.000 description 14
- 239000008186 active pharmaceutical agent Substances 0.000 description 12
- 230000000007 visual effect Effects 0.000 description 12
- 238000012800 visualization Methods 0.000 description 12
- 230000002452 interceptive effect Effects 0.000 description 11
- 238000013316 zoning Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 238000012795 verification Methods 0.000 description 8
- 206010062575 Muscle contracture Diseases 0.000 description 7
- 208000006111 contracture Diseases 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000009826 distribution Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- CDBYLPFSWZWCQE-UHFFFAOYSA-L Sodium Carbonate Chemical compound [Na+].[Na+].[O-]C([O-])=O CDBYLPFSWZWCQE-UHFFFAOYSA-L 0.000 description 3
- 238000012550 audit Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 239000003638 chemical reducing agent Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007654 immersion Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 239000000344 soap Substances 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000005068 transpiration Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 244000188472 Ilex paraguariensis Species 0.000 description 1
- 102400001284 Vessel dilator Human genes 0.000 description 1
- 101800001899 Vessel dilator Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000008921 facial expression Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
-
- 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/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- 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/14—Session management
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
-
- 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/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
流传输协议支持在各自的客户端网络节点(12、14)上操作的通信者之间的实时网络通信。该流传输协议支持对客户端通信会话的远程管理,包括为每一对客户端网络节点(12、14)置备各自的会话定义,其定义在该对的组成客户端网络节点(12、14)之间的网络连接之上的相应对等会话。该流传输协议具有相对低的计算资源要求,从而实时通信性能可使用当前可用的广大范围的计算设备和网络连接来达成。
Description
背景
当面对面通信不切实际时,人们往往依赖于一种或更多种技术性解决方案来满足其通信需求。这些解决方案一般设计为模拟面对面通信的一个或更多个方面。传统电话系统使得能在呼叫者之间进行语音通信。即时消息接发(也称为“聊天”)通信系统使用户能够通过由即时消息服务器互连的即时消息计算机客户端来实时地传达文本消息。一些即时消息接发系统另外允许用户在虚拟环境中由用户可控的图形对象(称为“头像”)来表示。交互式虚拟现实通信系统使得在远程位置上的各用户能够在多个实时信道上进行通信并能通过在虚拟空间中操控其各自的头像来彼此交互。
成功的通信系统通常应具有相对低的计算资源要求,以便实时通信性能可使用当前可用的计算设备和网络带宽限制来达成。另外,此类系统通常应以在跨多样的网络拓扑的各种不同设备之间达成高可连通性、并提供对向这些通信设备的流传输的恰适控制以使得合意的通信体验能被达成的方式来实现。
附图描述
图1是包括第一客户端网络节点、第二客户端网络节点、以及服务器节点的网络通信环境的示例性实施例的图解视图。
图2是图1的网络通信环境的示例性实施例的图解视图,其示出各网络节点之间的一组示例性的网络连接和会话。
图3是客户端网络节点的示例性实施例的图解视图。
图4示出根据发布订阅数据共享模型在网络节点之间共享数据的方法的示例性实施例。
图5示出流传输协议记录的示例性实施例。
图6示出封装在以太网帧中的流传输协议记录的示例性实施例。
图7示出图1的网络通信环境的示例性实施例的在其中客户端和服务器网络节点在建立于这些网络节点之间的各个会话中的各种信道上通信的示例性实施例。
图8示出响应于来自客户端节点的登录消息的方法的示例性实施例。
图9示出响应于收到来自账户服务的站定义的方法的示例性实施例。
图10示出置备客户端节点以彼此通信的方法的示例性实施例。
图11示出在客户端网络节点之间协商链路的方法的示例性实施例。
图12示出包含在图11的方法的示例性实施例中在客户端网络节点之间传送的一组示例性消息的示例性交互图。
图13示出在客户端网络节点之间在传输流之上建立会话的方法的示例性实施例。
图14示出包含在图13的方法的示例性实施例中在客户端网络节点之间传送的一组示例性消息的示例性交互图。
图15示出保活(Keepalive)定义记录的示例性实施例。
图16示出保活(Keepalive)确收定义记录的示例性实施例。
图17示出控制确收消息的流动的方法的示例性实施例。
图18A示出根据本发明实施例的在会话伙伴节点之间的示例性的保活消息互换。
图18B示出根据本发明实施例的来自会话伙伴节点的分组的示例性流动。
图18C示出确认收到来自会话伙伴节点的分组的方法的示例性实施例。
图19示出在会话中在可靠信道上发送分组的方法的示例性实施例。
图20示出根据本发明的实施例的由发送方节点发送分组并由接收方节点确认收到的分组的方法的示例性实施例。
图21示出在会话中在可靠信道上接收分组的方法的示例性实施例。
图22示出网络通信环境的示例性实施例。
图23示出客户端网络节点的示例性实施例。
详细描述
在以下描述中,相同参考标号用于标识相同元素。此外,附图旨在以图解方式说明示例性实施例的主要特征。附图并非旨在描绘实际实施例的每个特征,也非旨在描绘所描绘的元素的相对尺寸,并且所描绘的元素不是按比例绘制的。
I.术语的定义
“通信者”是在一个或更多个网络连接之上与其他人通信或以其他方式交互的人,其中该通信或交互可以在或可以不在虚拟区域的上下文中发生。“用户”是正在操作特定网络节点的通信者,其出于描述性目的定义特定视角。
“计算机”是根据临时或永久地存储在计算机可读介质上的计算机可读指令来处理数据的任何机器、设备或装置。“计算机操作系统”是计算机系统的管理和协调任务执行以及计算和硬件资源共享的软件组件。“软件应用”(也被称为软件、应用、计算机软件、计算机应用、程序、以及计算机程序)是计算机能解读和执行以行使一个或更多个具体任务的指令集。“计算机数据文件”是耐久地存储数据以供软件应用使用的信息块。
“数据库”是以可由计算机搜索的标准化格式呈现的有组织的记录集合。数据库可被存储在单台计算机上的单个计算机可读数据存储介质上,或者其可跨一台或更多台计算机上的多个计算机可读数据存储介质分布。
“数据阱”(在本文中简称为“阱”)是接收数据的设备(例如,计算机)、设备的一部分、或软件中的任一者。
“数据源”(在本文中简称为“源”)是始发数据的设备(例如,计算机)、设备的一部分、或软件中的任一者。
“网络节点”(也简称为“节点”)是通信网络中的联结或连接点。示例性网络节点包括,但不限于,终端、计算机和网络交换机。“服务器”网络节点是网络上的对信息或服务请求作出响应的主机计算机。“客户端网络节点”是网络上的向服务器请求信息或服务的计算机。术语“本地网络节点”是指当前为首要讨论主体的网络节点。术语“远程网络节点”是指由网络通信链路连接到本地网络节点的网络节点。
“网络地址”是消息源或目的地的因协议而异的经编码表示,并被用于唯一性地标识网络上的网络节点。
“套接字”是网络通信端点。应用程序通常通过调用托管该应用程序的操作系统的网络服务应用编程接口(API)来创建用于在网络之上通信的套接字。
“协议端口”(或简称“端口”)是在网络节点内起到通信端点作用的因应用而异的或因进程而异的软件构造。传输协议向各端口指派唯一性的号码以在网络节点内的不同端点间加以区分。
“网络连接”(或简称“连接”)是两个网络节点之间的数据通信路径。从给定网络节点的视角来看,“传输流”(或简称“流”)是该给定网络节点与另一网络节点之间的直接连接。
“会话”是两个端点网络节点(本文中称为“会话伙伴”)之间的逻辑连接,其提供用于从该会话被建立的时间到其被拆卸的时间在这两个网络节点之间互换消息的上下文。从给定网络节点的视角来看,会话是在传输流上被传输的,其中该传输流可以被定址到或可以不被定址到会话伙伴。例如,传输流可以被定址到代理服务器,由该代理服务器将该会话桥接到会话伙伴。“对等”(P2P)会话是各自均能发起该P2P会话且在该P2P会话期间扮演客户端和服务器角色的两个网络节点之间的会话。
“普遍唯一性标识符”(也称为“全局唯一性标识符”、或GUID)是用来唯一性地标识计算机系统中或网络(例如,因特网)上的对象的号码。普遍唯一性标识符是在不需要中央服务或权威机构来管辖的情况下生成的。普遍唯一性标识符通常是16个八位位组(128比特)的八位位组串。取决于用来生成普遍唯一性标识符的具体机制,普遍唯一性标识符或者被担保不同于、或者至少及其可能不同于任何其他普遍唯一性标识符。“公知UUID”是用来跨网络可靠地标识持久性对象的UUID。
同步会议是指各通信者同时参与的通信。同步会议涵盖了所有类型的联网协作技术,包括即时消息接发(例如,文本聊天)、音频会议、视频会议、应用共享、以及文件共享技术。
“实时数据流”是在连续流动中被结构化和处理、且被设计成无延迟地或仅以觉察不到的延迟被接收的数据。实时数据流包括语音、视频、用户移动、面部表情以及其他物理现象的数字表示,以及计算环境内的可受益于快速传输、快速执行、或快速传输和快速执行两者的数据,包括例如头像移动指令、文本聊天、实时数据馈送(例如,传感器数据、机器控制指令、交易流和股价信息馈送)、以及文件传输。
“虚拟区域”(也称为“区域”或“场所”)是计算机管理的空间或场景的表示。虚拟区域通常是一维、二维、或三维表示;尽管在一些实施例中虚拟区域可对应于单个点。虚拟区域时常被设计为模拟物理的现实世界空间。例如,使用传统的计算机监视器,虚拟区域可被视觉化为计算机生成的三维空间的二维图形。但是,虚拟区域不需要相关联的视觉化来实现交换规则。虚拟区域通常是指虚拟区域大纲的实例,其中大纲以变量的形式来定义虚拟区域的结构和内容,而实例以已从特定上下文解析出的值的形式来定义虚拟区域的结构和内容。
“虚拟区域应用”(也称为“虚拟区域规范”)是在创建虚拟环境时使用的对虚拟区域的描述。虚拟区域应用通常包括对与虚拟区域的一个或更多个区划相关联的几何、物理、和实时交换规则的定义。
“虚拟区域通信应用”是将实时音频通信(以及潜在可能将其他实时通信,例如视频、聊天、以及其他实时数据流)与虚拟区域中的交互的视觉呈现相集成的客户端通信应用。
“虚拟环境”是包括至少一个虚拟区域且支持通信者之间的实时通信的由计算机管理的空间的表示。
“区划”是虚拟区域中与至少一个交换规则或支配规则相关联的界域。“交换规则”是规定一个或更多个实时数据源以及一个或更多个实时数据阱的受制于一个或更多个先决条件的连接或断开的指令。交换规则控制实时数据流在虚拟区域的上下文中通信的网络节点之间的交换(例如,路由、连接、以及断开)。支配规则控制通信者对资源(例如,区域、区域的界域、或该区域或界域的内容)的访问、该访问的范围、以及该访问的后继结果(例如,必须记录与该访问有关的审计记录的要求)。“可呈现区划”是与相应的视觉化相关联的区划。
虚拟区域中的“位置”是指该虚拟区域中的点或面积或体积的位置。点通常是由单组定义虚拟区域中的位点的一维、二维、或三维坐标(例如,x、y、z)来表示的。面积通常由定义虚拟区域中闭合的二维形状的边界的三个或更多个共面顶点的三维坐标来表示。体积通常由定义虚拟区域中的三维形状的闭合边界的四个或更多个非共面顶点的三维坐标来表示。
在虚拟区域的上下文中,“对象”(有时也称作“道具(prop)”)是虚拟区域中可有用地与该虚拟区域的几何分开对待的任何类型的分立元素。示例性的对象包括门、入口、窗、视图屏幕、以及扬声器电话。对象通常具有与虚拟区域的属性和特性分离且相异的属性和特性。“头像”(本文中也称作“精灵贴图”)是在虚拟区域中表示通信者的对象。
如本文中所使用的,术语“包括”意味着包括但不限于,术语“包含”意味着包含但不限于。术语“基于”意味着至少部分地基于。
II.引言
本文中描述的实施例提供支持在各自网络节点上操作的通信者之间的实时网络通信的流传输协议。该流传输协议具有相对低的计算资源要求,从而实时通信性能可使用当前可用的广大范围的计算设备和网络连接来达成。
在一些实施例中,该流传输协议不但支持对客户端通信会话的远程管理及对音频和图形呈现引擎的远程配置和执行,还支持响应于从远程托管的服务器应用接收的指令(也称为定义)对数据流的交换。以此方式,该流传输协议使得应用开发者能维持其通信环境在远程客户端网络节点上的呈现的控制,由此鼓励开发各种各样不同类型的虚拟区域并增加将想要采用该通信系统的用户的数目。
该流传输协议不但在连接和断开上、而且在传输上是高效率的。在一些实施例中,该流传输协议提供在传输协议(例如,UDP、TCP、HTTP、以及PPP)之上的面向连接的经加密连接。该流传输协议另外在客户端应用与传输层之间提供重连机制,该重连机制在无需客户端应用的干预的情况下自动尝试重新建立失效的连接,由此在固有不可靠的通信协议的上面增加了可靠性。
III.综览
图1示出示例性网络通信环境10的实施例,其包括由网络20互连的第一客户端网络节点12(客户端节点A)、第二客户端网络节点14(客户端网络节点B)、服务器节点16、以及任选的代理节点18。第一客户端网络节点12包括有形计算机可读存储器22、处理器24、以及输入/输出(I/O)硬件26(包括显示器)。处理器24执行存储于存储器22中的至少一个通信应用28。第二客户端网络节点14通常以与第一客户端网络节点12基本上相同的一般方式来配置成具有存储至少一个通信应用32的有形计算机可读存储器30、处理器34、以及输入/输出(I/O)硬件36(包括显示器)。服务器节点16通常是支持客户端节点12、14之间的一种或更多种类型的通信(例如,即时消息接发(例如,文本聊天)、音频会议、视频会议、应用共享、以及文件共享)的同步会议服务器节点。
通信应用28、32与服务器节点16一起提供用于如由服务器节点16托管的服务器应用38所规定的那样来管理根据流传输协议在网络节点12、14上操作的通信者之间的通信的平台(本文中称为“平台”),该流传输协议支持对客户端通信会话的远程管理、对流处理引擎的远程配置和执行、以及对实时数据流的远程控制的交换。网络20可包括局域网(LAN)、城域网(MAN)和广域网(WAN)(例如,因特网)中的任一者。网络20通常包括广为支持网络节点之间各种各样不同的媒体类型(例如,文本、语音、音频、以及视频)的传输的数个不同的计算平台和传输设施。
图2示出可在客户端节点12、14与服务器节点16之间建立的一组示例性的会话。在此示例中,客户端节点12、14各自与服务器节点16建立相应的服务器会话40、42。服务器会话40、42各自是在客户端节点12、14中相应的一个与服务器节点16之间的相应网络连接之上建立的。另外,客户端节点12、14各自还在客户端节点12、14之间的网络连接之上建立对等(P2P)会话44。客户端节点12、14还可建立并保活一个或更多个替换(或备份)连接46、48、50,其可被用作用于在发生原始P2P会话失效的情况下在客户端节点12、14之间重新建立P2P会话的故障转移连接。在所解说的示例中,替换网络连接50是通过代理节点18来建立的,该代理节点18仅单纯地在客户端节点12、14之间中继消息(包括会话协商消息)。
网络节点12、14各自具有相应的一组一个或更多个源52、54以及示例性的一组一个或更多个阱56、58。每个源是始发特定数据流内容类型的数据的设备或组件,并且每个阱是接收特定数据流内容类型的数据的设备或组件。相同数据流内容类型的源和阱在本文中被称为是“互补的”。示例性的源包括音频源(例如,诸如话筒之类的音频捕捉设备)、视频源(例如,诸如摄像机之类的视频捕捉设备)、聊天源(例如,诸如键盘之类的文本捕捉设备)、运动数据源(例如,诸如计算机鼠标之类的定点设备);以及其他源(例如,文件共享源或定制实时数据流源)。示例性的阱包括音频阱(例如,诸如扬声器或听筒之类的音频呈现设备)、视频阱(例如,诸如显示器监视器之类的视频呈现设备)、聊天阱(例如,诸如显示器监视器之类的文本呈现设备)、运动数据阱(例如,诸如显示器监视器之类的运动呈现设备)、以及其他阱(例如,用于打印共享文件的打印机、用于呈现不同于已描述的那些的实时数据流的设备、或处理实时流供分析或定制显示的软件)。
每个源具有活跃状态和不活跃状态,在活跃状态中该源对始发数据可用,并且在不活跃状态中该源对始发数据不可用。类似地,每个阱具有活跃状态和不活跃状态,在活跃状态中该阱对接收数据可用,并且在不活跃状态中该阱对接收数据不可用。源和阱的状态通常可由操作客户端节点12、14的通信者经由通信应用28、32提供的控件来控制。例如,在一些实施例中,通信应用28、32提供用于开/关客户端网络节点12、14上的本地话筒和本地扬声器(例如,头戴式送受话器)的用户控件。
如在下面详细解释的,在服务器会话40、42中,服务器节点16根据服务器应用38中规定的交换规则来向客户端节点12、14中的每一者发送置备消息60、62,置备消息60、62将客户端节点12、14配置成把其互补的源和阱中活跃的那些互补的源和阱之间相应的数据流互连起来。通过使服务器应用开发者能够控制如何在处于不同客户端节点上的源与阱之间建立连接,该平台就使应用开发者能够控制通信者当在网络通信环境10中彼此通信及以其他方式交互时的体验。以此方式,服务器应用开发者就能够使通信者之间的通信针对特定通信目的或针对特定通信环境(例如,虚拟聊天室、虚拟艺廊、虚拟礼堂、虚拟会议室、以及虚拟俱乐部会所)来最优化。
IV.实施该流传输通信协议的示例性系统和方法
A.引言
图3示出客户端节点12、14中的一者或其两者的示例性实施例70,其包括流传输服务72以及其他客户端进程74,它们合而构成用于根据接收自服务器节点16的指令来呈现通信环境的轻型客户端通信应用。流传输服务72以及其他客户端进程74在不同级别工作——从网络特征一直到音频和图形呈现配置。流传输服务72管理客户端网络节点70与其他网络节点之间的会话。在此过程中,流传输服务72通常提供向应用层中的客户端进程74导出信道和会话的本地API、以及用于在服务器会话中与工作在服务器网络节点16上的通信服务通信的远程API。
在一些实施例中,客户端节点12、14上的通信应用28、32通常包括各自的图形用户界面(GUI)应用,其提供用于对通信者交互进行视觉化和控制的视觉界面。这些GUI应用被配置成通过本地流传输服务API来与服务器应用38通信。在一些实施例中,GUI应用是远程控制的终端应用,其被配置成将用户输入(例如,计算机鼠标输入)传递给实现本地API的相应各个客户端进程74,并呈现从这些客户端进程74接收到的图形数据(例如,聊天数据和图形内容,诸如屏幕共享数据之类)。实现本地API的这些客户端进程74与流传输服务72通信以在恰适会话和信道上公布包含用户输入的定义的消息,并订阅在恰适会话和信道上接收自远程网络节点的数据。另外,其中一个或更多个客户端进程74由接收自服务器网络节点16上的通信服务的指令远程配置成创建(和拆卸)用于处理接收自其他客户端网络节点的入站数据的数据处理组件图。例如,一些实施例包括实时内核的可远程配置的音频处理服务,其响应于接收自服务器网络节点16上的通信服务的定义来创建和拆卸音频处理组件图。关于包括可远程配置的处理组件的示例性实时内核的更多详情在2009年12月4日提交的美国申请No.12/630,973中提供。
在会话期间,数据作为传输协议套接字之上的定义记录在客户端网络节点70与其他网络节点之间共享。此轻型客户端架构通过在服务器会话之上接收的定义记录来接收来自服务器节点16的配置指令。此轻型客户端架构还通过在与其他客户端网络节点的相应各个会话上的因内容而异的信道上接收的定义记录来接收来自其他客户端网络节点的内容。数据根据公布/订阅模型被共享。流传输服务72仅订阅客户端网络节点70所需要的那些数据。为了订阅,流传输服务72在与另一网络节点建立的会话上协商信道。该信道是通过用于该特定服务器应用38的公知GUID来协商的。定义记录仅在订户存在于传输协议套接字的另一端上时才被传送。由流传输服务72接收的定义记录一旦到达即被递送给这些客户端进程74中进行了订阅的那些进程。
如图3中所示,流传输服务72管理传输流78上的会话76。在一些实施例中,流传输协议会话的上下文中的传输流由{IP,端口}地址对以及标识用于创建该流的传输协议(例如,UDP)的传输GUID来定义。会话76包括零个或更多个逻辑信道,其中信道是对特定客户端进程74(例如,图形引擎、音频管理器、以及流交换管理器)而言恰适的定义记录的序列。由此,单个套接字上的相同传输流78可传输不同信道上的定义记录,其各自由客户端进程74中的零个、一个、或多个进程所订阅。在所解说的实施例中,流传输服务72管理两种信道:包含流送媒体记录86(例如,音频分组)的媒体信道80;以及包含定义记录88的定义记录信道82。媒体记录86的示例包括音频编解码器和文本。定义记录88的示例包括会话维护定义(例如,保活/确收定义记录)、客户端置备定义(例如,诸如音频处理元素之类的处理图元素的定义)、3D呈现资产(例如,纹理和网格)的定义、以及RDS(例如,头像运动检查点)的定义。
定义记录88和媒体记录86被封装在流传输协议记录中。流传输协议记录由加密进程84加密,用分组号来贯序,并包括消息完好性字段。流传输协议记录的贯序独立于记录源或目的——其是用于检测脱序或丢失记录的链路级别特征。流传输协议记录由信道来标识。GUID被用作信道标识符。定义记录88和媒体记录86可以信道级别使用相应各个因信道而异的压缩器90、92独立于流传输协议记录封装地来压缩。每个流传输协议记录通常包含一个或更多个定义记录88或一个媒体分组96。流传输协议记录在传输流78之上作为根据传输协议(例如,UDP、TCP、HTTP、以及PPP)格式化的分组的载荷来递送。
在图3中所示的实施例中,流传输服务72是四层协议套件的组件,该四层协议套件包括应用层91、传输层93、网络层95、以及链路层96。应用层91包含使通信者与网络接口的用户级别进程。传输层91包括流传输服务72和传输协议99(例如,用户数据报协议(UDP)),并使应用层93与网络层95接口。网络层95根据一个或更多个协议(例如,网际协议(IP)、网际控制消息协议(ICMP)、以及网际组管理协议(IGMP))来管理数据通过网络的移动。链路层97管理物理地与网络介质(例如,以太网电缆等)接口的详情,并且通常包括操作系统的设备驱动程序组件以及客户端节点70的物理网络硬件组件(例如,网络接口卡(NIC))。
B公布和订阅数据共享模型
在一些实施例中,数据由网络节点根据公布/订阅模型来共享,该模型通常是无连接的。在这些实施例中,客户端节点12、14仅订阅它们需要的数据。服务器节点16基于客户端节点12、14的源和阱各自相应的状态(即,活跃或不活跃)来确定每个客户端节点需要什么信道。服务器应用38向每个客户端节点12、14发送各自相应的发布消息,发布消息指示有什么信息流对该客户端可用,并用GUID句柄来对每个流加标签。在每个客户端节点上操作的每个客户端进程74可订阅这些信道中的零个或更多个信道。订阅信道的客户端进程74向本地流传输服务72注册以在信道状态改变和信道记录到来时接收其通知。每个客户端节点然后使用由服务器应用38规定的公知信道GUID来订阅来自其他客户端节点的合意信道。对特定信道的服务器数据的任何改变均将作为定义记录向已订阅该信道的所有客户端发送。
图4示出客户端网络节点12、14藉以根据公布和订阅数据共享模型来彼此共享数据的方法的实施例。在此方法中,本地客户端网络节点从服务器网络节点接收可从该本地客户端网络节点公布的本地公布信道的标识(图4,框101)。这些公布信道对应于能从本地客户端网络节点起源的内容。本地客户端网络节点存储标识能从该本地客户端网络节点公布的本地公布信道、以及与该本地客户端网络节点上的一个或更多个本地软件实体相关联的本地订阅信道的寄存器(图4,框103)。本地客户端网络节点与远程客户端网络节点建立对等会话(图4,框105)。本地客户端网络节点在该对等会话上公布这些本地公布信道和本地订阅信道(图4,框107)。响应于在该对等会话上收到一个或更多个远程公布信道的公布,本地客户端网络节点向该远程客户端网络节点发送对匹配于这些远程公布信道中的相应一个远程公布信道的每个本地订阅信道的订阅请求(图4,框109)。响应于在对等会话上在匹配于这些本地订阅信道中的相应一个本地订阅信道的内容信道中收到数据,本地客户端网络节点将接收到的数据传递给与匹配的本地订阅信道相关联的每个本地软件实体(图4,框111)。响应于在该会话上收到订阅这些本地公布信道中的相应一个本地公布信道的请求,本地客户端网络节点向远程客户端网络节点发送与相应的本地公布信道相关联的数据(图4,框113)。
回到图3,流传输服务72维护本地公布和订阅实体的寄存器94(例如,表)。该列表中的每个条目包含:
·由该实体创建的本地客户端进程74的标识符
·服务器标识符
·信道标识符
·该条目是公布条目还是订阅条目的指示
·(对于订阅)一个或更多个传输参数
本地公布和订阅实体的寄存器94用以下内容来初始化
{StreamTransportServiceID,GUID_NULL,SessionChannelID,Subscribe,Reliable,Uncompressed}({流传输服务ID,GUID_空,会话信道ID,订阅,可靠,未压缩})
以此方式,流传输服务72(其由StreamTransportServiceID标识)订阅任何会话信道上正到达的所有正到达定义记录88,包括公布和订阅定义记录。GUID_NULL信道从不被公布,并且每一服务器假定GUID_NULL信道在每个传输流上是用公知信道ID来订阅的。
流传输服务72还维护所有已到达的公布定义的寄存器96,以供在本地列表中注册后来订阅被的情形中使用。
{IDClient,IDServer,IDChannel}({ID客户端,ID服务器,ID信道})
其中IDClient是该信道旨在去往的特定客户端进程74的GUID(可能为空),IDServer是信道记录的远程源,并且IDChannel是信道的公知GUID。
当流传输服务72接收针对去往另一个站的连接的会话定义时,该流传输服务72建立该流,发送该会话定义,并且然后在会话信道上发送定义记录中的所有存储着的本地公布条目。当公布定义到达流传输服务72处时,流传输服务72将该定义输入到公布定义表中,并随后在该会话信道上为本地列表中在公布记录中具有匹配信道ID的每个订阅条目发送订阅定义。当订阅定义到达时,流传输服务72开始在给定的定义记录信道上发送包含针对该定义的定义记录的定义更新(从公布服务器应用38以管道输送)。这些记录可在不止一个信道上被发送。
当客户端进程74想要与服务器一起参与信道时,该客户端进程74定义订阅请求,无论是否存在去往任何服务器的任何传输流。如果服务器应用38以后才公布(即,在流被建立之后),则本地表中的改变触发远程公布定义表中的公布条目的重新发送,这自动触发在该传输流的另一端上的任何潜在订阅。如果客户端进程74以后才订阅且公布表96中有条目,则流传输服务72自动发送订阅请求。该过程确保信道数据仅在被接收方需要时才在传输流之上被发送。
C SODA定义记录
在一些实施例中,由网络节点传送的定义记录是SODA(Sococo定义架构)记录。每个SODA记录包含一个或更多个SODA定义。SODA定义的示例有会话维护定义(例如,保活/确收定义记录)、客户端置备定义(例如,诸如音频处理元素之类的处理图元素的定义)、3D呈现资产(例如,纹理和网格)的定义、以及RDS(例如,头像运动检查点)的定义。
SODA记录是具有初始GUID ID及一个或更多个SODA定义的嵌套结构。SODA定义具有定义类型、定义长度以及零个或更多个字段。定义类型是公知的GUID(例如,guidAsset和guidAudioMix)。长度指示该SODA定义的包括所有字段的总大小。字段是因类型而异的固定字段和嵌套SODA定义的组合。即,
例如,
D.STRAW信道和STRAW分组
在不同网络节点上工作的流传输服务的实例在各信道之上通信,这些信道为会话话务的逻辑细分。在一些实施例中,这些信道由STRAW(Sococo WAN传输)信道,其各自由信道ID标识,并被定义为内容ID、压缩ID、标志集、以及压缩预载数据串。在这些实施例中,信道是在会话中的两个网络节点之间传递SODA或媒体记录的逻辑构造。信道可以是可靠的或不可靠的,经压缩的或非压缩的。
信道的内容由内容内容ID来标识。内容ID是公知的UUID——它们被置于报头文件中,并在数据库中公布,由此应用开发者能编写服务来使它们上场。服务器节点16上的通信服务被配置成在恰适的信道上发送消息,以使得这些消息的内容类型匹配于这些信道的内容ID(例如,聊天消息在聊天信道上发送,并且RDS消息在RDS信道上发送)。服务将忽略在错误的信道上发送的消息。
每个会话上的每个信道具有不同的信道ID。服务(例如,客户端进程74)使用内容ID来绑定到信道数据。信道定义的所有其他字段均供流传输服务72在传输信道数据以及区分信道数据的优先级时使用。
标志包括:
Reliable(可靠的) 递送所有数据分组
KeyFrameUser(关键帧用户) 可使用KeyFrame(关键帧)标志的数据分组
Compressed(压缩的) 数据分组必须被原封不动地处理(例如不是
象流那样被切成小块)
OrderIndependent(次序独立的) 分组可在收到之际按任何次序处理
服务信道内容类型的示例有:
AUDIOMONO 具有标志{KeyFrameUser}的音频内容。没有Reliable标志暗示该流应被不可靠地递送(丢失的分组不被重传)。没有OrderIndependent标志暗示流数据在收到之际必须按次序来处理。没有Compressed标志暗示数据没有被STRAW所压缩(音频编解码器已压缩该数据)。
KVMMEDIA具有标志{Reliable,KeyFrameUser}的屏幕共享内容。Reliable标志暗示所有分组必须被重传直至收到。没有OrderIndependent标志暗示流数据在收到之际必须按次序来处理。没有Compressed标志暗示该数据没有被STRAW所压缩(音频编解码器已压缩该数据)。
SESSION(会话)具有标志{Reliable}的会话内容。此信道上的所有分组包含Soda记录;所有均必须被可靠地传送并且按次序来处理。Compression标志视需要也可被呈现。
信道记录在共享相同报头CHANNEL_ID并具有顺序分组号和MAC字段的STRAW记录序列中传输。MAC演算取决于给定信道上仅在一个方向上的分组序列。在单个信道上传送的所有STRAW记录共享单个配置参数集(例如,{Client,reliable,compressed}({客户端,可靠的,压缩的})。单个信道上的记录如以下所解说地被压缩为串行流。
正常情况下只有可靠信道才可被压缩。在一些实施例中,不可靠信道可用其中在每个关键帧上重启压缩的压缩过程来进行压缩。在不可靠信道上丢失分组的情形中,该信道上的记录被丢弃直至到达关键帧(因为它们不能被无序解压缩)。在一些实施例中,定义记录在每个客户端网络节点上使用压缩动态链接库来进行压缩。为了改善压缩,信道定义可包括预加载数据,可使其穿过压缩器但并不被传送。其目的是用常用短语填装压缩状态表。在每次收到关键帧时压缩状态表被复位并重建。
流传输服务74将SODA定义封装在包括各自的信道标识符的流传输协议记录中。流传输协议74然后将这些流传输协议记录发送给传输协议99供在向底下的网络和链路层95、97传送之间进行进一步的封装。
图5示出在本文中称为STRAW分组的流传输协议记录的实施例100。STRAW分组100从STRAW记录102开始,STRAW记录102具有128位的信道ID(UUID)、16位的标志字段、8位的版本字段、8位的键值字段、64位的cookie字段、32位的MAC字段、16位的分组号、8位的扩展类型字段、8位的扩展长度字段、以及任选的扩展协议字段。KEY(键值)字段标识用来加密该消息的密码(0意味着不加密)。分组号始于0,并随该流中每个分组而递增。当分组号到达65535时,其返回到0并继续计数。分组号和标志呈“大端”序。在STRAW记录102之后是包含SODA记录的数据分组104。
标志包括:
TF_KEYFRAME=1
TF_NAKED=2
TF_MEDIA=4
TF_COMPRESSED=8
TF_SESSIONMAINTENANCE=16
TF_LOCALPACKET=32
TF_FIRST=64
TF_PROXIED=128
TF_MULTI=256
TF_RESEND=512
TF_WINDOWDELAY=1024
TF_FRAMESTART=2048
每个分组按需对这些标志进行置位。任何信道均可包含具有以任何模式置位的标志的分组。不是所有组合均是有效的。
KEYFRAME(关键帧)位暗示流中传送的带外信息。此标志通常在媒体流中传送的参数分组上置位。此标志的含义完全是因通信者-服务而异的。
NAKED(裸露的)标志意味着将不存在SODA记录报头。
MEDIA(媒体)标志意味着对跟随在该STRAW记录之后的所有分组字节的解释均将是因通信者-服务而异的。
COMPRESSED(压缩的)标志意味着该内容已被信道服务所压缩。此标志的含义在STRAW的定义之外。
SESSIONMAINTENANCE(会话维护)标志意味着该分组旨在作为STRAW协议,即便在可靠信道上也是不可靠的,是幂等的且packetNum(分组号)字段不应被解释。
LOCALPACKET(本地分组)标志意味着该分组是本地起源的并且实际上并不在传输缓冲器中。此标志是为“环回”类型的测试置位的,或由需要向处理流中插入本地生成的分组的应用来置位。
FIRST(首个)标志是内部STRAW栈标志,其意味着该消息被排队以在该队列的头部进行传送。
PROXIED(代理的)标志意味着该分组已由代理转发。
MULTI(多重)是内部STRAW栈标志,其意味着该STRAW报头应包括MULTI协议扩展。
RESEND(重发)标志意味着该分组先前已被传送,并且此副本是复写的。
WINDOWDELAY(窗延迟)标志意味着
FRAMESTART(帧起始)标志意味着该内容已被分成多个分组,并且此分组是该系列中的首个。
MAC字段是在跟随在该MAC字段之后包括该分组的其余部分(例如,soda定义或媒体)在内的所有内容上演算出来的散列。该MAC具有快速校验演算和穷举校验演算。快速校验可由路由器、中继器、协议嗅探器或传输层用来证实UDP分组包含STRAW分组。快速校验的示例有(HighWord XORLowWord==CheckValue)(高位字XOR(异或)低位字==校验值)。穷举校验的示例有(XOR(分组ID,分组号,以及16位字形式的扩展字段)==HighWord)。
扩展类型字节决定紧跟在STRAW记录之后的是什么。如果扩展类型是零(0),则没有协议扩展。如果扩展类型是1(1)并且扩展长度为6,则该协议扩展是具有16位的PacketFirst(首分组)字段、16位的PacketLast(末分组)字段以及16位的PacketLength(分组长度)字段的MULTI结构。MULTI用来将定义比能嵌合在单个UDP载荷中的要长的分组的各顺序分组编群如下:
该多分组序列中的各分组具有落在范围PacketFirst到PacketLast(含PacketFirst和PacketLast)的范围内的分组号。由该序列定义的总分组长度在大小(字节)上为PacketLength。构成该序列的所有分组均必须具有带同样字段值的MULTI扩展。如果该序列中有任何分组在不可靠信道上丢失,则整个序列被丢弃并且此大分组被视为是丢弃。如果该序列中有任何分组在可靠信道上丢失,则该丢失分组可由接收方请求,并被重新发送。由于PacketLength为16位,因此使用MULTI所能定义的最大分组在长度上为32767字节,带扩展字段的STRAW记录字段除外。
跟在STRAW记录102之后的是数据分组104。数据分组104的长度是从用来在网络之上传输该STRAW分组100的传输协议(例如,UDP)的载荷大小来确定的。数据分组104的长度通常由每个网络节点的操作系统所提供的传输协议网络API带外地传送给流传输服务72。数据分组格式因信道内容ID而异。
如图5中所示,STRAW分组100作为跨网络传送的链路层帧106的载荷来传送。在所解说的实施例中,链路层帧106始于链路层报头、网络层报头、和传输层报头,并终于链路层报尾。一般而言,传输协议分组106可对应于任何类型的链路层协议。图6示出其中STRAW分组100被封装在以太网帧108中的示例性实施例,该以太网帧108始于以太网报头、IP报头、和UDP报头,并终于以太网报尾。
E.会话
1.引言
各网络节点之间的会话可在任何类型的串行通信协议流(例如,UDP、TCP、HTTP、以及PPP)之上建立。在一些实施例中,流是两个网络节点之间由两个IP地址/端口对、和传输GUID来定义的双向UDP套接字。流支持信道的会话。会话是逻辑的节点对节点连接。会话为这两个节点传输各信道。会话可穿过一个或更多个代理节点,并在可包含多个会话的流之上传输。
客户端节点12、14和服务器节点16在各自的配对会话之上彼此通信,其中客户端节点12、14中的每个客户端节点与服务器节点16建立各自的服务器会话40、42,并且还与客户端节点12、14中的另一个客户端节点建立对等(P2P)会话44。会话40-44被逻辑地分成信道,信道由包含在STRAW记录102的首个字段(即,信道ID字段;参见图5)中的标识符来标识。示例性的信道类型包括会话信道、站信道、以及内容信道。会话信道由STRAW记录102的信道ID字段中出现会话标识符来标识,并被指定用于承载与会话管理任务有关的数据(例如,StreamStats(流统计)、Ping、以及Keepalive(保活)消息)。站信道由STRAW记录102的信道ID字段中出现站标识符来标识,并被指定用于承载与网络地址解析任务有关的数据。内容信道由STRAW记录102的信道ID字段中出现内容标识符来标识,并被指定用于承载内容数据(例如,音频数据、聊天数据、以及屏幕共享数据)。
图7示出网络通信环境10的示例性实施例,在其中客户端和服务器网络节点12–16在建立于网络节点12–16之间的各自相应的会话40–44中的各种信道上通信。在所解说的实施例中,服务器节点16在服务器会话40、42中的相应各个服务器会话信道110、112上与每个客户端节点12、14通信,并且客户端节点12、14在对等会话44中的站信道114、会话信道116、以及内容信道118上彼此通信。在一些实施例中,数据如上所描述地在会话中在相应各节点之间根据公布/订阅模型作为STRAW套接字之上的定义记录被共享。在客户端节点12、14上工作的流传输服务72的各实例仅订阅该客户端网络节点所需要的数据。为了订阅,流传输服务实例通过协商特定信道ID来创建去往目标网络节点的STRAW信道,该特定信道ID是在为服务器应用38定义的名字空间中的公知UUID。
服务器节点16维护用于置备客户端节点12、14来根据服务器应用38通信的数据。在服务器节点16所维护的类型的数据之中有站定义117、会话定义119、信道定义121、以及内容定义123。
在一些实施例中,每一个客户端网络节点被指派各自的唯一性站标识符。对于每个客户端网络节点,服务器网络节点确定各自相应的站定义,其包括各自相应的站标识符、以及各自包括相应的无连接传输协议地址及用于该客户端网络节点上的协议端口的相应的协议端口标识符的一个或更多个条目。在一些示例性实施例中,每个站定义117包括唯一性地标识各自相应的网络节点的持久性站ID、以及与各自相应的网络节点相关联的一组源地址(例如{IP地址,套接字端口,协议ID}条目)。在一些实施例中,服务器网络节点通过从接收自客户端网络节点的一个或更多个消息中的每个消息提取出各自相应的网络地址以及用于该客户端网络节点上的协议端口的各自相应的协议端口标识符,来确定用于该客户端网络节点的站定义中的条目。
在一些实施例中,每个会话定义119包括唯一性地标识各自相应的会话的会话ID、标识指定在各自相应的会话之上通信的构成网络节点的一对站ID、标识要用于各自相应的会话的传输协议的传输ID、以及标识要用于各自相应的会话的加密协议的加密ID。在一些实施例中,加密ID被作为具有如下字段的SODA定义的一组密码定义所替换:
·SOID soidStrawCipher;-该密码的公知guid,例如DES
·SOID soidKeyPurpose;-data tx(发射数据),data rx(接收数据),key tx(发射密钥),key rx(接收密钥)
·SDData<unsigned char*>sdKeyData;对该密码而言恰适的实际密钥(例如,DES 56位)
由于站ID解析到包括一组源地址(例如,{IP地址,套接字端口}对)的站定义,因此会话定义对用于尝试各网络节点之间的通信而言是充分的。
在一些实施例中,其中的一个或更多个信道定义121与各自相应的唯一性内容标识符相关联,各自相应的唯一性内容标识符标识指派给该信道的各自相应的数据流内容类型。在这些实施例中的一些实施例中,每个信道定义121包括唯一性的信道ID、公知的内容ID、压缩ID、一组标志、以及压缩预载数据串。每个内容定义123是具有定义类型、定义长度、以及一个或更多个字段的各自相应的SODA定义。在这些实施例中的一些实施例中,其中一个或更多个标志对应于独立于任何其他信道上的数据传输地来控制各自相应的信道上的数据传输的传输参数值。在一些实施例中,其中一个或更多个信道定义包括各自相应的可靠性传输参数值,其指示各自相应的信道上的数据是应由可靠传输协议还是不可靠传输协议来传输,根据可靠传输协议,丢失的数据分组被重传,而根据不可靠传输协议,丢失的分组被丢弃。在一些实施例中,其中一个或更多个信道定义包括各自相应的经压缩传输参数值,其指示各自相应的信道上的数据是否被要求要被原封不动地处理。在一些实施例中,其中一个或更多个信道定义包括各自相应的排序传输参数值,其指示各自相应的信道上的数据是要被按序还是按任何次序来处理。在一些实施例中,其中一个或更多个信道定义包括各自相应的压缩标识符,其规定用于压缩在各自相应的信道上传输的数据的各自相应的压缩过程。
服务器节点16还维护全局状态信息125,其包括连接到服务器应用的各客户端节点的当前寄存器127、以及标识这些客户端节点的数据源和阱以及这些源和阱的各自相应状态(即,活跃或非活跃)的接口数据129、131。
服务器网络节点为会话伙伴之间的每一对当前活跃的互补源和阱创建普遍唯一性信道ID。因此,每一当前可用的信道由对各客户端网络节点之间的当前对话而言唯一性的各自相应的信道ID来标识,并且用该信道ID来发送的消息可被信任为是真实的且是来自会话伙伴的。例如,响应于收到来自第一会话伙伴的要关掉其本地话筒的消息,服务器节点16指令第二会话伙伴拆卸其话筒音频信道处理图,这将移除对原始音频信道的相关联的订阅;并且响应于来自第一会话伙伴的要回头打开本地话筒的消息,服务器节点16用新的唯一性信道ID创建新的音频信道,并且指令第二会话伙伴订阅该新的音频信道并创建用于处理该新的音频信道上的话筒数据的新的话筒音频处理图。第二会话伙伴在收到要拆卸原始话筒音频信道处理图的指令之后将忽略在原始音频信道上接收到的任何分组。
服务器节点16通过在相应各个服务器会话信道110、112之上发送定义记录来置备每个客户端节点12、14以根据服务器应用38来通信。在此过程中,服务器节点16发送指示对客户端节点12、14可用的信道的公布消息,并用GUID句柄对其每一个加标签。流传输服务72在各客户端节点12、14上工作的实例向服务器节点16发送对想要的数据流的订阅消息。对用于所订阅的信道的置备数据的任何改变作为定义记录被发送给已订阅了那些信道的所有客户端网络节点。
在每个服务器会话之上,服务器网络节点在不同的相应各个信道上传输不同内容类型的控制消息,这些不同的相应各个信道按内容类型来逻辑地划分这些控制消息。每个控制消息通常以指派给该服务器会话的唯一性服务器会话标识符、以及标识该控制消息的内容类型的各自相应的内容标识符来发送。在一些实施例中,服务器网络节点向连接到该服务器应用的每个客户端网络节点传送指派给其他客户端网络节点的各自相应的唯一性站标识符。在这些实施例中的一些实施例中,服务器网络节点还向连接到该服务器应用的每个客户端网络节点传送代理服务器的站定义。代理服务器的站定义通常包括指派给该代理服务器的各自相应的站标识符、以及各自包括相应的网络地址以及用于该代理服务器的协议端口的相应协议端口标识符的一个或更多个条目。
响应于收到来自服务器节点16的定义记录,流传输服务72在各客户端节点12、14上工作的相应各个实例更新本地存储的包含信道定义113、115、站定义120、122、会话定义124、126、以及内容定义128、130的表。这些定义被流传输服务72的这些实例用来确定是否要处理传入的数据分组,并用来确定应如何多路分解这些传入的分组以供流传输服务72和其他客户端进程74消费。
在一些实施例中,给定的客户端网络节点从服务器网络节点接收其他客户端网络节点中连接到该服务器应用的一个或更多个客户端网络节点的各自相应的站定义。在为每个收到的会话定义建立各自相应的会话的过程中包括,给定的客户端网络节点基于该会话定义中的站标识符来确定各自相应的会话伙伴客户端网络节点的站定义中的该一个或更多个条目,并且对于其中每个条目,试图通过相应各个网络地址以及相应各个协议端口标识符来与相应各个会话伙伴客户端网络节点建立相应各个网络连接。在这些实施例中的一些实施例中,每个会话定义包括与用于建立该网络连接的无连接传输协议相关联的传输标识符。在为每个收到的会话定义建立相应各个会话的过程中包括,给定的客户端网络节点尝试根据与相应各个会话定义中的传输标识符相关联的无连接传输协议来与相应各个会话伙伴客户端网络节点建立相应各个网络连接。
在一些实施例中,在为每个收到的会话定义建立相应各个会话的过程中,给定的客户端网络节点:与相应各个会话伙伴客户端网络节点创建多个网络连接;在所创建的网络连接中选定的一个之上建立相应各个会话;并且在选定的网络连接之上建立的会话期间使所创建的网络连接中未被选中的那些网络连接中的一个或更多个维活。在一些实施例中,会话定义中的一个或更多个与多个各自相应的地址相关联,以用于与相应各个会话伙伴客户端网络节点协商相应各个网络连接。在这些实施例中,对于该至少一个会话定义中的每一个,给定的客户端网络节点将试图通过与该会话定义相关联的这多个各自相应的地址的全部来与各自相应的会话伙伴客户端网络节点建立各自相应的网络连接。对于这些会话伙伴客户端网络节点中给定客户端网络节点已成功与另一客户端网络节点建立多个并发的网络连接的每一个会话伙伴客户端网络节点,该给定客户端网络选择与该会话伙伴客户端网络节点的这多个网络连接中的一个,并在选中的网络连接之上与该会话伙伴客户端网络节点建立各自相应的会话。在一些实施例中,对于这些会话伙伴客户端网络节点中给定客户端网络节点已成功与另一客户端网络节点建立多个并发网络连接的每一个会话伙伴客户端网络节点,该给定客户端网络节点在建立于选定的网络连接之上的各自相应的会话期间使与该会话伙伴的该多个并发网络连接中未被选定的那些之中的一个或更多个维活。
在一些实施例中,给定客户端网络节点从服务器网络节点接收代理服务器网络节点的各自相应的地址。在一些实施例中,给定客户端网络节点试图通过与该会话定义相关联的这一个或更多个各自相应的地址中的每一个,并通过代理服务器的相应地址,来与各自相应的会话伙伴客户端网络节点建立各自相应的网络连接。
在一些实施例中,在与各自相应的会话伙伴客户端网络节点建立各自相应的会话的过程中,给定客户端网络节点从包含指派给各自相应的会话伙伴客户端网络节点的各自相应的站标识符的一个或更多个入站消息的每一个中提取出各自相应的源网络地址。给定客户端网络节点还更新由指派给各自相应的会话伙伴客户端网络节点的站标识符来索引的本地存储的站定义以使之包括每个所提取出的尚未被包括在本地存储的站定义中的源网络地址。
在一些实施例中,在与各自相应的会话伙伴客户端网络节点建立各自相应的会话的过程中,给定客户端网络节点将包含指派给该给定网络节点的唯一性站标识符的出站消息发送给各自相应的会话伙伴客户端网络节点。响应于收到响应于该出站消息并包含指派给各自相应的会话伙伴客户端网络节点的唯一性站标识符的入站消息,该给定客户端网络节点从该入站消息中提取出各自相应的源网络地址,并将各自相应的会话伙伴客户端网络节点绑定到所提取出的源网络地址。在一些实施例中,在与各自相应的会话伙伴客户端网络节点建立各自相应的会话的过程中,给定客户端网络节点在定址到各自相应的会话伙伴客户端网络节点所绑定到的网络地址的传输流之上将包含指派给各自相应的会话的唯一性会话标识符的另一出站消息发送给各自相应的会话伙伴客户端网络节点。响应于收到响应于该另一出站消息并包含指派给各自相应的会话的唯一性会话标识符的入站消息,该给定客户端网络节点将该传输流指定为有效以供用于在各自相应的会话中传输数据。响应于所创建的各网络连接中给定的一个网络连接的失效,该给定客户端网络节点通常试图与各自相应的会话伙伴客户端网络节点重新创建该给定网络连接。
在一些实施例中,响应于收到对可从给定客户端网络节点公布的本地公布信道的标识,该给定客户端网络节点在每一个所建立的对等会话上公布这些本地公布信道。响应于收到要订阅所建立的各对等会话中给定的一个对等会话上的各本地公布信道中给定的一个本地公布信道的请求,该给定客户端网络节点向各自相应的会话伙伴客户端网络节点发送与该给定本地公布信道相关联的数据。该给定客户端网络节点确定与在该给定客户端网络节点上的一个或更多个本地软件实体相关联的本地订阅信道。响应于收到所建立的各对等会话中给定的一个对等会话上的一个或更多个远程公布信道的公布,该给定客户端网络节点向各自相应的会话伙伴客户端网络节点发送要订阅匹配于这些远程公布信道中相应的一个远程公布信道的每个本地订阅信道的请求。响应于在该给定对等会话上收到在这些远程公布信道中匹配于相应的一个本地订阅信道的相应一个远程公布信道中的数据,给定客户端网络节点将收到的数据传递给各本地软件实体中与匹配的本地订阅信道相关联的每一个本地软件实体。
在一些实施例中,给定的客户端网络节点在给定会话上根据数据流的内容类型将各数据流在相应信道中传送给各自相应的会话伙伴客户端网络节点。在此过程中,该给定客户端网络节点通常在各自相应的一个信道上将每一个数据流以包含与该数据流的内容类型相对应的相应一个内容标识符的分组的形式来传送。对于给定会话中由指示该数据应由可靠传输协议在该信道上传输的可靠性传输值定义的每个信道,该给定客户端网络节点在该信道上传输数据分组,并响应于确定其收到尚未被会话伙伴客户端网络节点确认的已传送数据分组的计数超过由该会话伙伴客户端网络节点规定的窗阈,在该信道上重传相应各个已传送的数据分组。对于给定会话中由指示该数据应由可靠传输协议在该信道上传输的可靠性传输值定义的每个信道,该给定客户端网络节点保留已在该信道上传送的数据分组,并且响应于收到对应的各个已传送数据分组已被会话伙伴客户端网络节点收到的确认而释放所保留的数据分组。
在一些实施例中,给定客户端网络节点从各自相应的会话伙伴客户端网络节点接收包括发送窗大小数字和接收窗大小数字的会话维护消息。该给定客户端网络节点向各自相应的会话伙伴客户端网络节点传送数据分组直至有发送窗大小数字个已传送的数据分组其收到尚未被会话伙伴客户端网络节点所确认。该给定客户端网络节点响应于从向会话伙伴客户端网络节点发送了前序会话维护消息起收到了至少接收窗大小数字个来自该会话伙伴客户端网络节点的数据分组,向各自相应的会话伙伴客户端网络节点发送各自相应的会话维护消息。由给定客户端网络节点发送的各自相应的会话维护消息通常为每个处于活跃状态的信道包括在该信道上收到的分组的最大分组序列号的相应指示。由给定客户端网络节点发送的各自相应的会话维护消息通常为每个处于活跃状态的信道包括未在该信道上收到的丢失分组的相应标识。
在一些实施例中,该给定客户端网络节点从各自相应的会话伙伴客户端网络节点接收包括第一时间参数值和第二时间参数值的会话维护消息。响应于确定给定会话处于活跃状态,该给定客户端网络节点以由该第一时间参数值设定的最大间隔来向会话伙伴客户端网络节点传送分组收到确认会话维护消息。响应于确定给定会话处于空闲状态,该给定客户端网络节点以由该第二时间参数值设定的最大间隔来向会话伙伴客户端网络节点传送分组收到确认会话维护消息。在一些实施例中,客户端网络节点响应于确定在由该给定客户端网络节点向会话伙伴客户端网络节点传送两个接连的会话维护消息之前已从会话伙伴客户端网络节点收到至少一个数据分组,确定该给定会话处于活跃状态。在这些实施例中,给定客户端网络节点响应于确定在由该给定客户端网络节点向会话伙伴客户端网络节点传送两个接连的会话维护消息之前尚未从会话伙伴客户端网络节点收到数据分组,确定该给定会话处于空闲状态。
2.置备客户端节点
在所解说的实施例中,在网络节点上工作的流传输服务实例在试图与另一网络节点建立会话之前被用该另一网络节点的站定义来置备。在一些实施例中,该置备过程在已向该平台认证了该网络节点时被发起。在被认证之后,该网络节点接收服务器节点16的站定义。该网络节点使用服务器节点站定义在与服务器节点16的服务器会话信道之上建立会话,这便对该网络节点进行了用于与连接到该服务器应用38的其他网络节点进行通信的置备。服务器节点16在服务器会话信道之上向客户端节点发送的示例性类型的定义包括站定义、会话定义、公布和订阅定义、传输报告请求、代理节点定义、指令客户端拆卸会话的站拆卸消息、以及ping消息。
网络认证通常每当通信28、32在客户端节点12、14上起动时进行一次。在一些实施例中,使用账户服务来认证客户端节点12、14并为该通信者建立真实用户标识符(RUID)。该账户服务可由服务器节点16或另一服务器节点(例如,专用账户服务器节点)来提供。该认证过程由通信应用28、32发起,该通信应用28、32联系账户服务,认证,并标识分别操作客户端节点12、14的通信者。
图8示出账户服务藉以响应于来自客户端节点12的登录消息的方法的实施例。该登录消息通常被带外地(例如,经由Web服务互换,诸如SOAP之类)传送到账户服务。
根据图8的方法,账户服务从客户端通信应用28接收包含客户端节点12的源地址的登录消息(图8,框140)。源地址通常被嵌在包含登录消息的分组的报头中。登录消息通常包括在通信应用28被安装在客户端节点12上的时候分配给该客户端节点12的站ID。登录服务与客户端通信应用28、32之间的通信通常是经由Web服务互换(例如,SOAP)的带外通信、或在另一会话之上。
响应于该登录消息,账户服务认证客户端网络节点12(图8,框142)。在此过程中,账户服务创建令牌并将其给予客户端网络节点12以用于向其他服务器(例如,托管服务器应用38的服务器节点16)认证其自己。在一些实施例中,账户服务还向客户端网络节点12提供随机的128位挑战短语。客户端网络节点12用通信者提供的口令的密码术摘要来对该挑战短语进行散列,并将此返回作为响应。账户服务器也用关于该通信者的先前获得的摘要来对该挑战短语进行散列并验证来自客户端网络节点12的该响应匹配。网络连接现在得到认证并且通信者被标识为该私钥的所有者。在一些实施例中,作为登录过程的一部分,账户服务在安全连接(例如,SSL或经加密带内链路)之上向客户端网络节点12发送一组加密密钥,包括密码、目的、以及各加密密钥。
在认证客户端网络节点12之后,账户服务提取出与接收自客户端节点12、14的登录消息相关联的源地址,并将所提取出的源地址纳入到客户端网络节点的站定义中(图8,框144)。账户服务通常通过调用托管该账户服务的操作系统的网络服务API(例如,调用通过由微软视窗操作系统提供的WinsockAPI提供的网络服务)来提取出与登录消息相关联的源地址。
账户服务向客户端网络节点12发送客户端节点12、服务器节点16、以及代理节点18(若存在)的站定义(图8,框146)。如以上所解释的,每个站定义包括唯一性地标识相关联的网络节点的持久性站ID以及与各自相应的网络节点相关联的一组一个或更多个地址(例如,{IP地址,套接字端口,协议ID}条目)。
账户服务还向客户端网络节点12发送该客户端网络节点12与服务器网络节点16之间的会话的定义(图8,框148)。会话定义包括唯一性地标识各自相应的会话的会话ID、客户端节点12的站ID、服务器节点16的站ID、标识要用于各自相应的会话的传输协议的传输ID、以及标识要用于各自相应的会话的加密协议的加密ID。在一些实施例中,加密ID被一组密码定义所替换。
图9示出流传输服务72在客户端节点12、14上工作的实例藉以响应于收到来自账户服务的站定义的方法的实施例。根据图9的方法,流传输服务72在客户端网络节点上本地存储该客户端网络节点、服务器网络节点16、以及代理网络节点18各自相应的站定义(图9,框150)。这些站定义通常存储在站定义表120中(见图7)。流传输服务72基于会话定义与服务器网络节点16建立会话(图9,框152)。如果代理节点18存在,则流传输服务72还基于代理网络节点站定义与该代理网络节点18建立传输流(图9,框154)。客户端节点12藉以与服务器节点16建立会话以及与代理节点18建立传输流的过程在以下描述。
在客户端节点12、14已与服务器节点16建立会话(图9,框152)之后,服务器节点16置备客户端节点12、14以用于根据在服务器应用38中定义的交换规则来通信。在此过程中,服务器节点16充当中央管辖者。每个客户端节点被显式地置备成与其他客户端节点通信,并且其将不会与未被显式地置备的任何未置备网络节点谈话。如果未置备的网络节点在没有先通过服务器节点18进行认证的情况下试图与该客户端节点通信,则该客户端节点将不能与之通信,并且来自该未置备的网络节点的通信将被忽略。客户端节点12无从与该未置备的网络节点通信,直至服务器节点18在客户端节点12与该未置备网络节点之间创建会话定义并给双方节点提供该会话定义以及在这些节点之间可用的信道的定义。以此办法,客户端节点和该未置备的网络节点不会彼此发现,并且它们不会自治地工作;取而代之的是,由服务器节点16来定义在各客户端网络节点之间可能的通信。此办法排除了任何病毒或其他攻击的可能性,因为每个客户端节点忽略来自未被显式地认证和置备的网络节点的通信。
图10示出服务器节点16藉以置备连接到服务器应用38的客户端节点以彼此通信的方法的实施例。
根据图10的方法,给定的客户端网络节点连接到由服务器网络节点16托管的服务器应用38,并且有一个或更多个其他客户端网络节点连接着该服务器应用38,其中该给定的客户端网络节点和该一个或更多个其他客户端网络节点之中的每一个网络节点均具有各自相应的数据流内容类型的一个或更多个源和阱(图10,框160)。客户端节点藉以与服务器节点16建立会话的过程在以下部分中描述。
服务器节点16确定连接到由该服务器网络节点16托管的服务器应用38的一对或更多对客户端网络节点,其中每一对的构成客户端网络节点具有各自相应的数据流内容类型的一组或更多组活跃的互补源和阱(图10,框162)。在此过程中,服务器节点16搜索该服务器节点16为每个客户端节点12、14维护的接口数据129、131以寻找服务器应用38所准许的每种数据流内容类型的阱的互补的活跃源,并确定在其间具有至少一组活跃的互补源和阱的每一对客户端节点。活跃的互补源和阱组的示例包括一个客户端节点上的活跃话筒和另一客户端节点上的活跃扬声器、由一个客户端节点共享的活跃屏幕和由另一客户端节点观看的活跃屏幕、以及两个客户端节点之中的每一者上的各自相应的活跃聊天窗口。
对于每一对所确定的客户端网络节点,服务器节点16向该对的构成客户端网络节点中的每一者发送定义该对的构成客户端网络节点之间的网络连接之上各自相应的对等会话的各自相应的会话定义(图10,框164)。对于每一对确定的客户端网络节点,服务器网络节点通常生成各自相应的会话定义以包括(i)指派给该对的构成客户端网络节点的各自相应的站标识符,以及(ii)与用于在该对的构成客户端网络节点之间建立该网络连接的无连接传输协议相关联的传输标识符。对于每一对所确定的客户端网络节点,该服务器网络节点还通常生成各自相应的会话定义以包括与用于加密在该对的构成客户端网络节点之间的网络连接上传输的数据的加密过程相关联的加密标识符(或一组密码定义)。在一些实施例中,每个会话定义包括唯一性地标识各自相应的会话的会话ID、构成客户端节点中的第一节点的站ID、构成客户端节点中的第二节点的站ID、标识要由构成客户端节点用于各自相应的会话的传输协议的传输ID、以及标识要由构成客户端节点用于各自相应的会话的加密协议的加密ID。在一些实施例中,加密ID被一组密码定义所替换。服务器节点16还通常向构成客户端网络节点中的每一者发送在该会话上可用的各信道的定义。
该给定的客户端网络节点从服务器网络节点16接收该给定的客户端网络节点与其他客户端网络节点中该给定的客户端网络节点与之具有至少一个互补的活跃源或阱的每一个其他客户端网络节点之间各自相应的会话定义,其中该至少一个互补的活跃源或阱是与该另一客户端网络节点的一个或更多个源和阱中活跃的一个互补(图10,框166)。
对于每个收到的会话定义,该给定的客户端网络节点基于该会话定义在该给定的客户端网络节点与各自相应的另一客户端网络节点之间的各自相应的网络连接之上建立各自相应的对等会话(图10,框168)。两个客户端网络节点藉以与彼此建立对等会话的过程在以下小节中描述。
3.会话建立
希望彼此互换数据的任何两个网络节点首先被用参引这些网络节点的站定义并任选地包括传输ID和加密ID(或替换地,一组密码定义)的会话定义来置备。每个网络节点上的流传输服务72使用该会话定义来确定另一会话伙伴网络节点的站ID,并且然后查找本地存储的该另一会话伙伴网络节点的站定义以找到用于与该另一网络节点协商各自相应的网络连接的一组一个或更多个地址。如以上所描述的,各会话定义和各站定义两者均由各网络节点事先带外接收。
在确定与会话伙伴的站ID相关联的这一个或更多个地址之后,每个本地网络节点上的流传输服务72向每个地址(例如,IP/端口对)传送关于该本地网络节点的站信道(即,带有该本地网络节点的站ID作为信道ID)的StreamStats消息。去往每个会话伙伴地址的此传输突发通常以呈指数增长的退避延迟来重复,此呈指数增长的退避延迟以例如50毫秒(ms)开始,并在每个突发之后以1.5倍的速率增长,直至到达超过3秒的值,在此刻突发每3秒发生一次。在一些实施例中,每个StreamStats消息是具有标识该信道(例如,站信道或会话信道)的信道ID以及包括具有SODA ID字段和丢弃分组计数字段的SODA记录的载荷的STRAW分组。
通常,各会话伙伴并发地向彼此发送各自相应的StreamStats消息,直至这些会话伙伴中的一方或双方接收到StreamStats消息。当从远程网络节点接收到任何StreamStats消息(由信道ID标识)时,本地网络节点从该StreamStats消息提取出该远程网络节点的地址(例如,IP/端口地址)。在一些实施例中,本地网络节点上的流传输服务72藉由通过在该本地网络节点上运行的计算机操作系统的连网应用编程接口(API)调用服务来提取出与该StreamStats消息相关联的地址。例如,在运行视窗操作系统的网络节点中,地址提取功能性是通过包含在Winsock API内的服务来提供的。在从StreamStats消息提取出远程节点的地址之后,本地网络节点在针对该本地网络节点的站信道上向所提取出的地址发回StreamElect(流选取)消息。每个StreamElect消息是具有包括带SODA ID字段和总长度字段的SODA记录的载荷的STRAW分组。本地网络节点通过使用其站ID作为该STRAW分组的信道ID来在其站信道上发送该StreamElect消息。
当从任何远程网络节点接收到StreamElect消息时,本地网络节点将该远程网络节点绑定到从所接收到的StreamElect消息提取出的网络地址。在此过程中,本地网络节点上的流传输服务72将从StreamElect消息提取出的地址提拔为“net address current(当前网络地址)”,这是通过在本地存储的该远程网络节点的定义中置位来进行的。设置该当前网络地址位就将该地址标记为有效以供被本地网络节点用来建立与该远程网络节点的会话。此刻,该远程网络节点的网络地址已被解析,并且在该本地网络节点与该远程网络节点之间已建立起传输流。发送StreamStats消息并等待接收来自远程网络节点的StreamElect消息的这一过程确保该远程网络节点已从本地网络节点接收到发往该当前网络地址的消息,并且本地网络节点已通过该远程网络节点接收到来自该当前网络地址的消息。
图11示出第一和第二网络节点(例如,网络节点A和网络节点B)藉以与彼此协商链路的方法的实施例。图12示出包含在图11的方法的示例性实现中在网络节点A与网络节点B之间传送的一组示例性消息的交互图。
参见图10和11,响应于收到与另一网络节点的会话的定义,每个网络节点应用该会话定义中该另一网络节点的站ID作为本地存储的站定义表中的索引以确定与该另一网络节点相关联的所有地址(图11,框170)。每个网络节点在其自己的站ID信道上向与该另一网络节点相关联的每一个地址发送StreamStats消息(例如,图12,消息172和176)(图11,框174)。
响应于在接收网络节点的站信道上收到来自该另一网络节点的StreamStats消息(例如,图12,消息176和172),每个网络节点提取出与该StreamStats消息相关联的源地址,并在其自己的站ID信道上向所提取出的源地址发送StreamElect消息(例如,图12,消息178和182)(图11,框180)。响应于在该另一网络节点的站ID信道上收到该StreamElect消息(例如,图12,消息182和178),每个网络节点提取出与该StreamElect消息相关联的源地址,并将所提取出的源地址绑定到另一网络节点(图11,框184)。
一旦任何网络节点被绑定到特定地址,本地网络节点上的流传输服务72就开始在会话信道上向该远程网络节点发送Ping消息。每个Ping消息是具有包括带有SODA ID字段和时戳字段的SODA记录的载荷的STRAW分组。本地网络节点通过将该Ping消息的信道ID设为该会话ID来在该会话信道上发送该Ping消息。当本地网络节点在会话信道上接收到来自远程网络节点的Ping消息时,就已在该本地网络节点与该远程网络节点之间建立起了传输流,其中该传输流由地址对(例如,{IP,端口})和传输GUID定义。响应于收到Ping消息,本地网络节点将本地存储的站定义表中与该远程网络节点相关联的位标记为有效以供使用。当任何远程网络节点被标记为有效时,本地网络节点上的流传输服务72检查已在该本地网络节点与远程网络节点之间建立起的所有传输流,并选择这些传输流中最高优先级或最高排名的一个来用于在与该远程网络节点的会话之上发送消息。本地网络节点上的流传输服务72通过在会话信道上向该远程网络节点的当前网络地址发送StreamElect消息来在所选定的与该远程网络节点建立起的传输流之上建立该会话。
图13示出由第一和第二网络节点(例如,网络节点A和网络节点B)与彼此建立会话的方法的实施例。图14示出包含在图13的方法的示例性实现中在网络节点A与网络节点B之间传送的一组示例性消息的交互图。
参见图13和14,每个网络节点在会话ID信道上向绑定到该另一网络节点的地址发送Ping消息(图14,消息190和194)(图13,框192)。响应于在会话ID信道上接收到来自绑定到该另一网络节点的地址的Ping消息(图14,消息194和190),每个网络节点在会话ID信道上向绑定到该另一网络节点的该地址发送StreamElect消息(图14,消息196和200)(图13,框198)。响应于在会话ID信道上接收到来自绑定到该另一网络节点的地址的StreamElect消息(图14,消息200和196),每个网络节点将与该另一网络节点的该传输流标记为有效以供使用(图13,框202)。如果仅有一个有效传输流(图13,框204),则每个网络节点在该有效传输流之上与该另一网络节点建立传输流(图13,框206)。如果有多个有效传输流(图13,框204),则每个网络节点选择这些有效传输流之一,并在所选定的传输流上与该另一网络节点建立会话(图13,框208)。
在一些实施例中,对于会话伙伴客户端网络节点中给定的客户端网络节点已成功与另一客户端网络节点建立多个并发的网络连接的每一个会话伙伴客户端网络节点,该给定客户端网络节点在建立于所选定的网络连接之上的会话期间使与该会话伙伴的这多个并发网络连接中未被选定的那些之中的一个或更多个维活。在一些实施例中,流传输服务72通过周期性地(例如,每三秒)向该会话伙伴发送Ping来使这些流保活。如果没有接收到响应的Ping,则流传输服务72可重复与该会话伙伴建立传输流的这一过程(参见例如图13-14)。如果该过程失败,则流传输服务72可重复网络地址解析过程(参见例如图11-12)继以传输流建立过程(参见例如图13-14)这两者。
在一些实施例中,传输服务72创建被绑定到特定套接字地址(即,特定IP地址和协议端口号)但不绑定到任何特定目的地地址的单个协议套接字(例如,UDP套接字)。以此方式,可创建具有多个目的地地址的传输流。在其中套接字协议端口是UDP/IP协议端口的实施例中,传输服务器在该单个协议端口之上使用“sendto()(发送到())”API函数来发送数据,该函数取端点网络节点的目的地地址(即,IP地址/协议端口号)。
网络层协议(即,IP)维护管理用于在套接字协议端口处接收分组的一组缓冲器的线程。当分组到达这些缓冲器之一时,该线程检查该分组(例如,证实校验和),解密该分组(若其是被加密的),并且如果该分组有效(例如,各标志、校验和、以及MAC有效),则该线程尝试将信道ID匹配于在信道定义表中列出的所有传输服务(由传输ID标识)以确定指定处置该信道ID的传输的一个或更多个目标传输服务。如果找到目标传输服务,则该传输服务通知流传输服务72该分组已到达与该分组的信道ID对应的信道上。流传输服务72确定该分组的内容ID,并向订阅该内容ID的每个客户端进程74发送该分组载荷。在此过程中,流传输服务72将该载荷派驻到队列并派驻到在该队列中等待的线程。如果在信道定义表中没有找到目标传输服务,则流传输服务72尝试将该信道ID匹配于会话定义表和站定义表中的条目。如果找到匹配的条目,则流传输服务72处理该分组(例如,进行网络地址解析或会话维护处理)。如果在信道定义表、会话定义表、以及站定义表中的任何一者中均未找到目标传输服务,则该分组被丢弃。
各信道是独立于相同套接字之上的其他信道地来传送的。一个信道中的任何分组的丢失并不影响其他各信道的完好性。如以下所解释的,流传输服务提供逐信道的流动控制功能性,其中每个信道可具有不同的优先级。
4.会话终止
当给定客户端网络节点上的通信者输入要退出通信会话的命令时,流传输服务向服务器节点发送退出消息。响应于收到该退出消息,服务器节点向连接到服务器应用的其他客户端网络节点发送指令其各自的流传输服务72的实例拆卸其与该给定客户端网络节点的会话的定义记录。响应于收到这些定义记录,这些其他客户端网络节点中的每一者拆卸与该给定客户端网络节点的会话、以及与为与该给定客户端网络节点的通信创建的信道相关联的所有音频和评估共享处理组件。
5.代理节点
在一些实施例中,各网络节点之间的会话是在包括由服务器节点16置备的一个或更多个代理节点(也称为“代理中继站”)的网络连接之上建立的。代理节点并不为其自己协商会话。任何会话协商均是有各客户端节点端对端地进行的,其中代理节点仅仅是在这些客户端节点之间中继消息。由于代理节点并不参与会话层流动控制,因此代理节点传输实现仅仅是丢弃会话消息,直至会话中的双方参与者均已被听到。由于任一方客户端节点均将不会发送任何话务,直至已互换了Ping消息,因此在链路之上的网络话务是很少的。
服务器节点16用各种协议和优先级的站定义来置备各客户端节点,由此使得每个客户端节点均能够通过某个路由来与每个合意的客户端节点P2P通信。如果有一个或更多个代理节点可用,则服务器节点16将这些代理服务器的会话定义和站定义发送给客户端节点12,14,其中每个代理节点站定义包括代理站ID、传输变体ID、以及加密变体ID。如果有不止一个代理可用,则区域服务挑选对于当前负载而言最佳的代理,并决定每个代理站将其话务路由到哪里,其中话务可通过一个或更多个其他代理站来中继。在一些实施例中,区域服务通过执行网络话务平衡过程来为每个会话选择各自相应的路由,该网络话务平衡过程尝试基于最小话务网目来使网络中的瓶颈最小化。
客户端节点与代理节点之间的传输流是以与客户端节点与任何其他节点建立传输流相同的方式使用StreamStats消息来建立的。代理节点传输实现使用其自己的站地址来协商客户端节点链路。代理节点可接受并转发联系它的任何客户端站的消息(混杂中继),或其可忽略其所未知的站信道上的StreamStats消息(经置备中继)。允许的客户端节点的站定义的置备是带外地进行的。如果链路出现(即,客户端节点在代理站信道上听到来自某个网络地址的StreamElect消息),则该客户端节点将该代理节点绑定到该网络地址。
在代理节点被绑定到地址之后,客户端节点以3秒为间隔向该代理节点发送StreamStats消息以使该传输流保活。当在会话信道上接收到来自代理节点的Ping时,该代理节点被标记为有效以供使用。当任何代理节点被标记为有效时,检查所有代理节点的优先级,并且选择最佳的一个代理节点来用于发送后续的会话消息。StreamElect消息在该会话信道上被发送到所选中的代理节点。此选择在该会话的生命期之上可随网络连通性改变以及不同优先级的代理节点变为可用或不可用而改变许多次。
在这些实施例中,服务器节点16使用带外的代理会话消息来对代理进行用于两个客户端节点之间的会话的置备,该代理会话消息包括代理节点的代理站ID以及指派给该会话的会话ID。一旦该代理节点被置备,服务器节点16就修改会话定义以将该代理节点的代理站ID包括在其可能中继站的列表中。
在一些实施例中,代理节点由服务器节点16从服务器数据库中的收发机表来置备。活跃代理节点的列表在服务器启动时被读取,并且对收发机表的改动导致向服务器节点16的通知事件,由此服务器节点16可添加或移除活跃代理节点。
服务器节点16与代理节点之间的会话由服务器节点16发起。服务器节点16首先向代理节点发送包含该服务器节点的站ID和唯一性会话ID的TransceiverSessionStart(收发机会话开始)消息。如果连接被丢失并重新建立,则会话ID将改变,从而触发代理节点上的清理阶段以移除过时的会话与信道绑定。当代理节点接收到该TransceiverSessionStart消息时,它用如上所描述的StreamStats消息来响应。收到StreamStats消息使服务器节点16激活该代理节点并开始如由该服务器节点的代理选择探试法所决定的那样将其用于客户端/服务器以及对等会话。
一旦代理节点已被激活,它就得到用于每个选定的会话的先前建立的会话/信道绑定的通知。向该代理节点发送StrawSession(Straw会话)消息以定义该会话以及这两个端点客户端节点。对于该会话上每个公布的信道,向该代理节点发送将信道ID映射到会话ID的ChannelBind(信道绑定)消息。随着有新的会话被建立并且代理节点被选定,所选定的代理节点在客户端节点得到这些新的会话的告知的同时得到这些会话的通知。当新的信道在代理的会话上被公布时,ChannelBind消息在这些信道被公布的同时发送。当代理的会话结束时,代理节点以两个TransceiverSessionStop(收发机会话停止)消息来得到通知,这两个TransceiverSessionStop消息提供该会话中所涉及的每个客户端节点的站ID和会话ID。如果服务器节点16需要从代理节点断开,则其发送带有服务器节点16的站ID和服务器/代理会话ID的TransceiverSessionStop消息。这将使得该代理节点移除先前在该会话上提供的所有会话映射。
6.会话维护
a.会话协议分组
当STRAW分组中的SESSIONMAINTENANCE(会话维护)标志被置位时,该分组就是STRAW会话协议分组,它是不可靠的,它是幂等的,并且packetNum(分组号)字段不被解读。STRAW会话协议分组的示例包括Keepalive和ACK(确收)。
i.保活(Keepalive)会话协议
保活会话始于带有等于会话ID的信道ID、SESSIONMAINTENANCE标志被置位、零扩展类型和长度的正常STRAW记录,并继以带有SODA ID(guidSodaSESSION_KeepAliveAck(guidSoda会话_保活确收))的单个SODA定义数据分组。当标志字段中的SESSIONMAINTENANCE被置位时,NAKED标志字段被假定为是被置位的(即,将不会出现Soda记录报头)。
参见图15,跟随在STRAW记录之后的分组是SODA定义210,其具有正常的128位SODA ID以及值为30的16位长度,并继以32位的无符号ActiveTimeout(活跃超时)字段、32位无符号的IdleTimeout(空闲超时)字段、16位无符号的SendWindowSize(发送窗大小)字段以及16位无符号的ReceiveWindowSize(接收窗大小)字段。ActiveTimeout值规定在由接收站响应于发送了的STRAW分组(不包括STRAW协议分组)而传送ACK之间流逸的最大毫秒数。IdleTimeout值规定自上一个由接收站传送的ACK起在除STRAW协议分组外未曾传送过STRAW分组时由接收站传送的保活消息之间流逸的最大毫秒数。SendWindowSize值规定在等待此站传送ACK之前由接收站传送的分组的最大数目。ReceiveWindowSize值规定在向此站传送ACK之前由接收站接收到的分组的最小数目。此值一般被假定为小于SendWindowSize。在该情形中,发送了的分组的队列在发送方触发流动控制(停止发送)之前得到确收,从而准许会话的全部带宽被填充而不浪费时间在协议上。
ii.ACK会话协议
ACK协议分组始于保活分组,但其中SODA长度值大于30。跟随在SodaSESSION_KeepAliveAck SODA定义之后的是一组SDSESSION_ChannelAck(SD会话_信道确收)SODA定义,一个这样的SDSESSION_ChannelAck SODA定义针对该会话定义的每个活跃的可靠信道。
参见图16,每个SodaSESSION_KeepAliveAck SODA定义212始于值为(guidSodaSESSION_ChannelAck)(guidSoda会话_信道确收)的正常的128位SODA ID,继以值为36或更大的SODA长度字段。这继以128位信道ID、16位PacketNumMax(最大分组号)字段以及零个或更多个PacketNumMissed(丢失分组号)字段。PacketNumMissed字段的数目由SODA长度值超过36的部分除以2来确定。例如,如果SODA长度值为40,则有(40-36)/2=2个PacketNumMissed字段出现。
b.流动控制
STRAW会话分组流动由保活/ACK分组来控制。它们是在会话信道上发送的幂等的不可靠维护消息,并包含ACK间隔时间、分组窗大小、以及信道确收。它们完全负责跟踪会话上的各信道上的所有分组流动。
保活消息从不受流动控制。它们作为优先消息来被排队(队列的头),并在它们被丢掉的情形中被周期性地重发。它们是响应于入站的流动而发送的,当有分组在流动时更为频繁,而当自上一间隔起未曾出现分组时则不那么频繁。
这些消息端到端地传递。因此,穿过代理并不改变这些消息。
STRAW可在任何串行信道(例如,UDP、TCP、HTTP或甚至PPP)之上传送。保活消息无论什么信道均使用。
i.ACK 间隔时间
在每个会话保活消息中发送的有两个间隔:cMsActive(cMs活跃)和cMsIdle(cMs空闲)。这些间隔控制保活消息之间的最大间隔。当接收到分组时,会话变为活跃的,并且保活消息至少如cMsActive一样频繁地被发送。当在一个发送了的保活与下一个之间没有接收到分组时,该会话变为空闲的,并且后续的保活消息至少如cMsIdle一样频繁地被发送。如果在此空闲间隔期间接收到分组,则该会话重新恢复活跃状态。
正常情况下,这些间隔逐消息并不改变——然而每当接收到保活时,这些间隔就应被取为新值。
存在两个间隔均为零的特例。这将该保活消息标记为“重申请求”。站在其规定的间隔(其所发送的那一个间隔)已到期而未曾从伙伴站接收到保活时传送此消息。接收到重申的站被预期立即发送带有对所有订阅了的信道的确收的保活。站可尝试数次重申,并且如果长达数个ack间隔未收到任何东西,则该会话可被视为已丢失。
重申也可在流动控制已使一信道停工长达延长期时被发送。这可能在保活被丢弃(请记得它们是不可靠的)、并且所丢弃的保活包含未出现在后续各保活中的信道确收时发生。
图17示出由流传输服务72的实施例在控制确收消息流动时实现的方法的实施例。
根据图17的方法,如果会话是活跃的(图17,框214),则流传输服务72至少如在接收自会话伙伴节点的最近一个保活值中规定的msActive参数值一样频繁地发送保活消息(图17,框216)。当接收到分组时(图17,框218),该会话是处于活跃状态(图17,框220)并且流传输服务72至少如在接收自会话伙伴节点的最近一个保活值中规定的msActive参数值一样频繁地发送保活消息(图17,框216)。如果没有接收到分组(图17,框218),则流传输服务72确定在发送了连个接连的保活消息之前是否已从会话伙伴节点接收到分组(图17,框222)。如果自上一分组来自会话伙伴节点起未曾发送两个接连的保活消息(图17,框222),则流传输服务72继续等待接收分组(图17,框218)。
如果自上一分组来自会话伙伴节点起未曾发送两个接连的保活消息(图17,框222),则流传输服务72将该会话设为空闲状态(图17,框224)。如果会话处于空闲状态(图17,框224),则流传输服务72至少如在接收自会话伙伴节点的最近一个保活值中规定的msIdle参数值一样频繁地发送保活消息(图17,框226)。当接收到分组时(图17,框228),该会话是处于活跃状态(图17,框220)并且流传输服务72至少如在接收自会话伙伴节点的最近一个保活值中规定的msActive参数值一样频繁地发送保活消息(图17,框216)。
ii.窗大小:
在每个会话保活消息中发送的有两个窗大小:sSendWindow(s发送窗)和sRcvWindow(s接收窗)。这些窗并不是一对,它们控制两个不同的流的流动。发送窗限定未确收的入站分组。接收窗限定未确收的出站分组。
假定两个伙伴P1和P2各自向彼此发送窗大小,称其为P1.send(P1.发送)、P1.rcv(P1.接收)、P2.send(P2.发送)以及P2.rcv(P2.接收)。从P1的观点来看,有两个流,即SOut(S出)和SIn(S入)。
流P1.SOut由P2.send和P1.rcv控制。会话伙伴节点P1在阻塞该流之前将发送最多达P2.send个未确收的分组。P2在自上一次其确收起已接收到P1.rcv个分组时将确收该流。正常情况下P1.rcv是从P2.send来演算的,并且小于P2.send。其可被设为P2.send的一半,并且如果P1在一会儿时间里未曾必须阻塞该流则上调一点,而每次它必须阻塞时下调一点。这将P2确收的数目和频度控制在合理的程度,并使该流保持如该网络将负担得起的那样快地流动。
流P1.Sin由P1.send和P2.rcv控制。会话伙伴节点P2在阻塞该流之前将发送最多达P1.send个未确收的分组。P1在自上一次其确收起已接收到P2.rcv个分组时将确收该流。正常情况下P1.send被设为标称值(10或其上下),并且如果正看到被跳过的分组号(因拥塞而丢弃的分组)则批量下调。如果流传输服务当前未看到重传,则其可被缓慢上调。
图18A-18C解说由流传输服务72在控制会话伙伴节点P1和P2之间的分组流动时的实施例所实现的方法的实施例。
图18A示出会话伙伴节点P1和P2之间的保活消息互换,其中由会话伙伴节点P1发送的保活消息包含窗大小P1.send和P1.rcv,并且由会话伙伴节点P1发送的保活消息包含窗大小P2.send和P2.rcv。
图18B示出来自会话伙伴节点P1的分组的流动。由会话伙伴节点P1发送的分组的流动由窗大小P2.send和P1.rcv来控制。在所解说的示例中,P2.send窗大小由会话伙伴P2设为八个分组。因此,会话伙伴节点P1在阻塞该流之前将发送最多达八个未确收的分组。当从会话伙伴节点P2接收到对分组1的确收时,P2.send窗滑动从而会话伙伴节点P1可发送分组9。
图18C示出在会话伙伴节点P1上工作的流传输服务72藉以确认收到来自会话伙伴节点P2的分组的方法的实施例。根据此方法,如果自会话伙伴节点P1发送了上一确收消息起已从会话伙伴节点P2接收到P2.rcv个分组(图18C,框230),则会话伙伴节点P1向会话伙伴节点P2发送确收消息。否则,会话伙伴节点P1等待直至自会话伙伴节点P1发送了上一确收消息起已从会话伙伴节点P2接收到P2.rcv个分组(图18C,框230)。
7.信道协议
i.不可靠信道协议
在定义为不可靠的信道(在其信道定义中没有Reliable(可靠的)位)之上发送的分组无论何时均不被重传。它们的STRAW记录报头与在可靠信道之上发送的分组的报头一样,并且STRAW同样地演算所有报头字段,其包括递增的PacketNumber(分组号)值和演算出的MAC值。但在到达的分组具有不正确的MAC值或跳过了下一个预期的PacketNumber值的发生时,唯一的结果是STRAW向订阅该信道的本地服务报告有分组丢失。归由该服务来恰适地响应(例如,使用其自己的应用层信令或通过对音频数据进行滤波以隐藏丢失的音频值来合成出丢失的数据)。
ii.可靠信道协议
在定义为可靠的信道(在其信道定义中有Reliable(可靠的)位)之上发送的分组被重传直至被确收。可靠性是通过STRAW记录PacketNumber(分组号)字段与收到的ACK会话协议分组相组合来达成的。
在一些实施例中,流传输服务72如下来可靠地发送分组。流传输服务72传输排队的分组,直至对未确收的已发送分组的计数超过SendWindowSize。发送分组由流传输服务72保留,直至被确收。收到的ACK在符合以下条件时确认收到编号的分组:该ACK包含带有匹配该分组的信道的信道ID、带有满足或超过该分组的分组号的PacketNumMax值、并且该分组的分组号不出现在任何PacketNumMissed值中的SodaSESSION_KeepAliveAck记录。一旦被确收,用于所发送的分组的流传输服务资源即被释放。
流传输服务72在符合以下条件时重发未确收的分组:其接收到在PacketNumMissed字段中列出该分组号的任何SodaSESSION_KeepAliveAck消息,或其接收到对该信道的两(2)个PacketNumMax值低于所发送的分组的分组号的ACK。
如果流传输服务72因未确收的分组而停滞(例如,在ActiveTimeout值*2ms之内没有收到信道ACK),则其可发送ActiveTimeout值为零(0)且IdleTimeout值为零(0)的特殊的早熟保活。此消息成为“重申请求”。这向伙伴站指示其必需立即确收所有信道,无论是活跃的还是空闲的。此特殊的全信道ACK称为“重申消息”。
重申从丢失的ACK分组恢复。由于ACK分组是幂等的,因此发送方和接收方在收到该重申之后将处于同步。STRAW以ActiveTimeout为间隔发送重申请求,直至接收到ACK消息,或已超过其耐性,并且该会话被拆卸(解除绑定)。
图19示出流传输服务72藉以在与会话伙伴节点的会话中在可靠信道上发送分组的实施例。
根据图19的方法,流传输服务72在可靠信道上传送分组(图19,框240)。流传输服务72保留所传送的分组的副本(图19,框242)。
如果没有接收到ACK(图19,框244),则流传输服务72继续传送分组,直至未确收分组的数目超过SendWindowSize参数值(图19,框246)。如果未确收分组的数目超过SendWindowSize参数值(图19,框246),则流传输服务72确定自接收到上一ACK起的时间是否大于停滞期(例如,ActiveTimeout值*2ms)(图19,框248)。如果自接收到上一ACK起的时间大于停滞期(图19,框248),则流传输服务72向该会话伙伴节点发送重申请求(图19,框250)。如果响应于该重申请求从会话伙伴节点接收到重申消息(图19,框252),则流传输服务72重发未确收分组(图19,框254)并继续在该可靠信道上传送分组(图19,框240);否则流传输服务72拆卸该会话(图19,框256)。如果自接收到上一ACK起的时间小于或等于停滞期(图19,框248),则流传输服务72重发未确收分组(图19,框254)并继续在可靠信道上传送分组(图19,框240)。
如果接收到ACK(图19,框244),则流传输服务72释放已被确认为已被会话伙伴节点接收到的保留分组(图19,框258)。如果在ACK中标识了任何丢失分组(图19,框260),则流传输服务72重发所标识出的丢失分组(图19,框262)。
在一些实施例中,在发送方和接收方网络节点上工作的流传输服务72使用STRAW记录102中的cookie字段(参见图5)来最优化发送方网络节点对分组的重发。在这些实施例中,发送方网络节点在随每个分组发送的STRAW记录的cookie字段中发送唯一性的会话级别cookie值。发送方网络节点在数据结构中存储这些cookie值的有序列表(例如,表168)。接收方网络节点随每个确收分组(ACK)发送上一个由该接收网络节点处理的分组的cookie值,该cookie值是在随该ACK分组发送的STRAW记录的cookie字段中。如在上面描述的实施例中那样,每个ACK分组还在随该ACK分组发送的ACK SODA定义的PacketNumMax(最大分组号)和PacketNumMissed(丢失分组号)中包括收到最大分组号收到值和丢失分组的分组号(参见图16)。一旦收到ACK分组,发送网络节点就提取由接收网络节点处理的上一分组的cookie值。发送方网络节点在图19中所示的方法的框246中使用此信息。尤其,发送方网络节点不在对未确收分组的计数中包括具有在所提取出的cookie值之后发送的cookie值的任何分组(参见图19,框246)。以此方式,发送方网络节点就避免重发已被接收方网络节点接收到、但因对收到分组的处理中不可避免的等待时间而导致尚未被处理的分组。
Cookie值可以是在会话期间唯一性地标识该分组的任何数据类型(例如,时戳值或非重复性计数器值)。如以上所解释的,分组号是唯一性重复数字序列中指派给相应各个信道中的各分组的数字。由于确收是在会话级别发生的(针对所有信道),因此cookie提供单由信道级别分组号不能提供的附加信息,因为cookie是整个分组流内的标记物,而分组号则是每个信道的分组流内的标记物。
图20示出根据前面段落中描述的实施例由发送方节点264发送分组并由接收方节点266确认收到分组的方法的示例性实施例。在此示例中,发送方网络节点264从其传送队列(TX队列)向接收方网络节点266发送具有各自相应的唯一性cookie值C106、C107、C108的分组的序列。接收方网络节点266在其收到队列(RX队列)中接收所发送的分组,并开始处理RX队列中的分组。在处理带有cookie值C108的分组之后,接收方网络节点266向发送方网络节点发送ACK分组267,该ACK分组267包含接收到的最高分组号值(PNM,PacketNumMax)((PNM,最大分组号))以及从接收自发送方网络节点的该分组提取出的cookie值C108。在接收ACK分组267之前,发送方网络节点从其传送队列(TX队列)向接收方网络节点266发送具有各自相应的唯一性cookie值C109和C110的分组的序列。当发送方网络节点接收ACK分组267时,发送方网络节点如上所描述地基于接收到的最高分组号来释放资源。发送方网络节点还在表中查找该cookie值C108以确定接收方网络节点所处理的最近一个分组。发送方网络节点不在对未确收分组的计数中包括具有在cookie值C108之后发送的cookie值的任何分组(参见图19,框246)。
如果接收方网络节点错过任何非ACK分组且其为系列中最后一个,则它可能将该会话标记为空闲,并且发送方网络节点可能看不到来自该接收方网络节点的另一个ACK达数秒。但是,此情景并不导致丢弃的分组。尤其,根据图19的方法,当发送方网络节点当前具有被设为活跃状态的会话然而长达超过停滞期没有接收到ACK(参见图19,框248),则发送方网络节点发出重申消息(图19,框250),从而使任何接收方网络节点立即发送完整的ACK。发送方网络节点将在响应于该重申消息发送的ACK中的cookie值视为当前的来对待,并且如果其并不覆盖已发送给接收方网络节点的最近各分组,则发送方网络节点将这些已发送的最近分组标记为丢失分组并对其进行重发(图19,框254)。
在一些实施例中,流传输服务72如下来可靠地接收分组。流传输服务72一旦接收到非协议分组即为上一接收到的ActiveTimeout值启动会话ACK计时器(若该计时器尚未被启动)。当该计时器到期时,流传输服务72发送包含针对所有活跃的(自上一ACK起已接收到分组的)信道的SodaSESSION_KeepAliveAck记录的ACK。然后如果自该计时器被启动起接收到任何分组,该计时器就被复位到ActiveTimeout值,否则它被置为IdleTimeout值。流传输服务72在接收到任何脱序分组时发送ACK。流传输服务72在达到ReceiveWindowSize时,就是当收到分组号比上一确收的分组号大ReceiveWindowSize时发送ACK。流传输服务72在会话被绑定时发送ACK。流传输服务72在接收到重申请求时发送ACK。当发送了任何ACK时,所有活跃信道(或若会话已接收到重申请求则为所有信道)以SodaSESSION_KeepAliveAck记录来代表。当接收到重复的消息(其分组号在该信道上已被确收过的消息)时,流传输服务72标记该会话以在下一ACK上进行重申。
图21示出流传输服务72藉以在与会话伙伴节点的会话中在可靠信道上接收分组的实施例。
根据图21的方法,响应于收到非协议分组(图21,框270),流传输服务72将会话计时器置为接收自会话伙伴节点的上一ActiveTimeout期(图21,框272)。流传输服务72然后等待接收下一分组(图21,框274)。如果在会话时间到期之前未曾接收到分组(图21,框276),则流传输服务72发送针对所有活跃信道的ACK(图21,框278),并将该会话时间置为IdleTimeout期(图21,框280)。如果在会话时间到期之前已接收到分组(图21,框276),则流传输服务72:如果收到分组是脱序的(图21,框282、284)、如果收到分组使得达到ReceiveWindowSize(图21,框286、288)、如果收到分组绑定会话(图21,框290、292)、或如果收到分组是重申请求消息(图21,框294、296),则发送ACK。
8.协议扩展
在一些实施例中,流传输协议包括以下扩展:SINGLETON(单立)和MULTI(多重)。几乎所有分组都是单立地发送的,其扩展类型为零,且扩展长度为零。这些分组一旦收到就被立即处理。多重地发送的分组旨在传送大小超过的记录,即大于UDP载荷所准许的记录。此类分组的数据载荷简单地按分组号次序拼接,并且一旦该序列中的所有STRAW分组均被接收到就作为单个数据分组来处理。如果在不可靠信道上使用MULTI,则错过MULTI序列中的一个分组就导致该序列中的所有分组均被丢弃并向订阅的服务报告为“丢失”。
V.示例性应用环境
A.引言
流传输协议支持由通信应用28、32和服务器节点16提供的该平台的各种不同应用环境。
一些示例性实施例在实时聊天交互之上应用这些空间隐喻视觉化中的一个或更多个。这些视觉化提供用于描绘实时聊天交互中所涉及的通信者的当前通信状态的上下文。空间隐喻还提供用于组织由各通信者用来参与实时聊天交互的各种接口元素的呈现的上下文。空间隐喻视觉化可被应用于在因特网或某种形式的内部网络/内联网之上提供两个或更多个通信者之间的基于文本的实时通信的任何类型的即时消息接发平台,该消息接发平台任选地一个或更多个其他实时通信信道,诸如音频、视频、文件共享、以及应用共享信道。例如,各实施例可与任何当前可用的即时消息接发平台集成,包括例如AOL即时信使、MSN信使、Yahoo!信使、Google Talk(谷歌聊天)、以及Skype。
图22示出其中服务器节点20由虚拟环境创建器302实现的网络通信10(参见图1)的实施例300。虚拟环境创建器302包括提供网络基础设施服务环境306的至少一个服务器网络节点304。通信应用28、32和网络基础设施服务环境306一起提供用于创建包括以上描述的各空间隐喻视觉化中的一个或更多个的空间虚拟通信环境(本文中也简称为“虚拟环境”)的平台。
网络基础设施服务环境306根据虚拟区域应用310管理虚拟区域308中的第一和第二客户端节点12、14的会话。虚拟区域应用310由虚拟区域308托管并包括虚拟区域308的描述。在第一和第二客户端网络节点12、14上工作的通信应用26根据接收自网络基础设施服务环境306的数据呈现虚拟区域308的各自相应的视图,并提供用于如上所描述地接收来自通信者的命令并提供增强通信者之间的实时通信的空间接口的相应各个接口。通信者通常在虚拟区域308中由各自相应的头像来代表,这些头像响应于由各通信者在其各自相应的网络节点处输入的命令在虚拟区域308中四处移动。每个通信者对虚拟区域308的视图通常是从该通信者的头像的视角来呈现的,这提高了该通信者所体验到的沉浸感的程度。每个通信者通常能够观看虚拟区域308中在他或她的头像周围的任何部分。在一些实施例中,通信应用28、32基于各通信者的头像在虚拟区域308中的位置在第一和第二客户端网络节点12、14以及共享虚拟区域308的其他网络节点之间建立实时数据流连接。
网络基础设施服务环境306还维护包含各通信者之间的交互的记录311的关系数据库309。每个交互记录311描述一对通信者之间的交互的上下文。
B.网络基础设施服务
网络基础设施服务环境306通常包括在建立和管辖客户端节点12、14以及其他网络节点(参见图1和22)之间的网络连接的过程中与通信应用28、32协作的一个或更多个网络基础设施服务。网络基础设施服务可在单个网络节点上运行,或可跨多个网络节点分布。网络基础设施服务通常在一个或更多个专用网络节点(例如,执行诸如路由和交换之类的一个或更多个边界服务的服务器计算机或网络设备)上运行。然而,在一些实施例中,这些网络基础设施服务中的一个或更多个在各通信者的网络节点中的至少一个上运行。在网络基础设施服务环境306的示例性实施例中所包括的网络基础设施服务之中有账户服务、安全性服务、区域服务、聚会服务、以及交互服务。
账户服务
账户服务管理用于该虚拟环境的通信者账户。账户服务还管理认证令牌的创建和发行,认证令牌能被客户端网络节点用来向任何网络基础设施服务认证它们自己。
安全性服务
安全性服务控制通信者对虚拟环境的资产及其他资源的访问。由安全性服务实现的访问控制方法通常基于各能力(其中访问权被准予具有适当的能力或准许的实体)以及访问控制列表(其中访问权被准予具有在该列表上的身份的实体)中的一者或更多者。在特定通信者已被准予对资源的访问权之后,该通信者通常使用由其他网络基础设施服务提供的功能性在网络通信环境300中交互。
区域服务
区域服务管辖虚拟区域。在一些实施例中,区域服务受制于一组约束312地来远程地配置根据虚拟区域应用308在第一和第二客户端网络节点12、14上工作的通信应用28、32(参见图22)。约束312通常包括对虚拟区域的访问权的控制。访问控制通常基于各能力(其中访问权被准予具有恰当的能力或准许的通信者或客户端节点)以及访问控制列表(其中访问权被准予具有在该列表上的身份的通信者或客户端节点)中的一者或更多者。
区域服务还受制于请求方实体的能力地来管理与该虚拟区域相关联的网络连接,维护该虚拟区域的全局状态信息,并为在由虚拟区域308定义的上下文中参与共享通信会话的客户端网络节点担当数据服务器。全局状态信息包括该虚拟区域中的所有对象及其在该虚拟区域中的相应位置的列表。区域服务发送配置客户端网络节点的指令。区域服务还注册请求加入通信会话的其他客户端网络节点并向其传送初始化信息。在此过程中,区域服务可根据虚拟区域应用310向每个加入的客户端网络节点传送在该客户端网络节点上呈现虚拟区域308所需的组件(例如,插件)的列表。区域服务还确保若发生通信故障则客户端网络节点能同步到全局状态。区域服务通常经由与各虚拟区域相关联的支配规则来管理通信者与这些虚拟区域的交互。
聚会服务
聚会服务管理在场信息的收集、存储和分发,并受制于请求方实体的能力地(例如,通过管理连接句柄的分发)为网络节点提供用以彼此通信的机制。聚会服务通常将在场信息存储于在场数据库中。聚会服务通常经由通信者隐私偏好来管理通信者彼此之间的交互。
交互服务
交互服务维护包含通信者之间交互的记录311的关系数据库36。对于通信者之间的每个交互,网络基础设施服务环境306中的一个或更多个服务(例如,区域服务)向交互服务传送交互数据。响应于此,交互服务生成一个或更多个各自相应的交互记录并将它们存储于关系数据库中。每个交互记录描述一对通信者之间的交互的上下文。例如,在一些实施例中,交互记录包含每个通信者的标识符、交互场所(例如,虚拟区域实例)的标识符、交互场所的等级结构的描述(例如,对交互房间如何与更大区域相关的描述)、交互的起始和结束时间、以及在交互期间共享或记录的所有文件和其他数据流的列表。因此,对于每个实时交互,交互服务跟踪其何时发生、在哪里发生、以及在交互期间在所涉及(例如,进入或退出)的通信者、被激活/停用的对象、以及曾共享的文件的意义上发生了什么。
交互服务还支持受制于请求方实体的能力的对关系数据库36的查询。交互服务以基于虚拟区域的经分拣排序的次序(例如,最频繁的或最近期的)来呈现对交互数据库记录的查询结果。该查询结果可用于驱动对通信者在哪些虚拟区域中已经遇到的联系人的频度分拣排序,以及在不论虚拟区域的情况下该通信者已经遇到的人的分拣排序和该通信者最常出入的虚拟区域的分拣排序。查询结果也可被应用开发者用作基于关系使某些任务自动化的探试系统的一部分。此类型的探试法的示例是默认地准许已经到访特定虚拟区域超过5次的通信者无需敲门即可进入的探试,或者是允许在特定时间出现在一区域中的各通信者修改和删除由在该同一时间出现在该同一区域中的另一通信者创建的文件的探试。对关系数据库309的查询可与其他搜索相结合。例如,对关系数据库的查询可与对为使用在网络基础设施服务环境306的域之外的通信系统(例如,Skype、Facebook、以及Flickr)与联系人交互而生成的联系人历史数据的查询相结合。
C.虚拟区域
通信应用28、32和网络基础设施服务环境306通常在由虚拟区域的实例定义的通信上下文中管辖与网络节点的实时连接。该虚拟区域实例可对应于关于抽象(非几何)坐标来定义的抽象虚拟空间。替换地,该虚拟区域实例可对应于关于与特定视觉化相关联的一维、二维或三维几何坐标来定义的视觉虚拟空间。抽象虚拟区域可以与各自相应的视觉化相关联也可以不与之相关联,而视觉虚拟区域与各自相应的视觉化相关联。
如以上所解释的,通信者在具有相关联的视觉化的虚拟区域中通常由各自相应的头像(例如,精灵贴图)来代表。这些头像响应于通信者在其各自相应的网络节点处输入的命令在虚拟区域中四处移动。在一些实施例中,通信者对虚拟区域实例的视图通常从该通信者的头像的视角来呈现,并且每个通信者通常能够观看该视觉虚拟区域中在他或她的头像周围的任何部分,从而提高了该通信者所体验到的沉浸感的程度。
虚拟区域通常包括与支配由虚拟区域中的各头像代表的各网络节点之间的实时数据流的交换的相应各个规则相关联的一个或更多个区划。交换规则规定在每一个网络节点上执行的本地连接进程如何基于通信者的头像在虚拟区域的各区划中的位置来建立与其他网络节点的通信。虚拟区域通常由包括对该虚拟区域的几何元素的描述以及一个或更多个规则(包括交换规则和支配规则)的规范来定义。交换规则支配各网络节点之间的实时流连接。支配规则控制通信者对诸如虚拟区域本身、虚拟区域内的界域、以及虚拟区域内的对象之类的资源的访问。在一些实施例中,虚拟区域的几何元素根据COLLADA-Digital Asset Schema Release 1.4.1April 2006 specification(2006年4月数字资产计划版本1.4.1规范,可从http://www.khronos.org/collada/得到)进行了描述,而交换规则根据在美国申请号11/923,629和11/923,634中描述的COLLADA流参考规范使用可扩展标记语言(XML)文本格式(在本文称为虚拟空间描述格式(VSDL))进行描述。
虚拟区域的几何元素通常包括虚拟区域的物理几何体系和碰撞几何体系。物理几何体系描述虚拟区域的形状。物理几何体系通常由三角形、四边形、或多边形的表面构成。颜色和纹理被映射到物理几何体系上来为虚拟区域创建更真实的外观。例如,可通过将光线绘制到视觉几何体系上并修改光线附近的纹理、颜色、或亮度来提供照明效果。碰撞几何体系描述决定对象在虚拟区域中能移动的方式的不可视表面。碰撞几何体系可与视觉几何体系一致、与对视觉几何体系的较简单近似相对应、或与虚拟区域设计者的因应用而异的要求有关。
交换规则通常包括对用于在虚拟区域中的位置的意义上连接实时数据流的源和阱的条件的描述。每个规则通常包括定义该规则所适用的实时数据流类型以及该规则在该虚拟区域中所适用的(诸)位置的属性。在一些实施例中,每个规则任选地可包括指定源的所要求角色、阱的所要求角色、流的优先级别、以及所请求的流处置拓扑的一个或更多个属性。在一些实施例中,如果没有为虚拟区域的特定部分定义的显式交换规则,则可向虚拟区域的该部分应用一个或更多个隐式或默认的交换规则。一个示例性默认交换规则是受制于策略规则将区域内的每个源连接到每个可兼容阱的规则。策略规则可全局地适用于各客户端节点之间的所有连接,或者只适用于与个体客户端节点的各自相应的连接。策略规则的示例是接近度策略规则,该规则仅允许关联于虚拟区域中落在彼此规定距离(或半径)内的相应各个对象的源与兼容阱的连接。
在一些实施例中,支配规则与虚拟区域相关联以控制谁有对该虚拟区域的访问权、谁有对其内容的访问权、对虚拟区域的这些内容的该访问权的范围是什么(例如,用户能对这些内容做什么)、以及访问这些内容的后继结果是什么(例如,记录记入,诸如审计日志、和支付要求)。在一些实施例中,整个虚拟区域或该虚拟区域的区划与“支配网目”相关联。在一些实施例中,支配网目是以与美国申请No.11/923,629和11/923,634中所描述的区划网目的实现相类似的方式来实现的。支配网目使软件应用开发者能够将支配规则与虚拟区域或虚拟区域的区划相关联。这避免了为虚拟区域中的每个文件创建个体准许的需要,并且避免了处理在需要取决于上下文不同地对待同一文档时潜在可能产生的复杂性的需求。
在一些实施例中,虚拟区域与使该虚拟区域的一个或更多个区划与数字版权管理(DRM)功能相关联的支配网目相关联。DRM功能控制对虚拟区域、或该虚拟区域内的一个或更多个区划、或该虚拟区域内的各对象中的一者或更多者的访问。每次有通信者越过该虚拟区域内的支配网目边界时触发DRM功能。DRM功能确定是否准许此触发动作,并且如果是,则确定所准许的动作的范围是什么、是否需要支付、以及是否需要生成审计记录。在虚拟区域的示例性实现中,相关联的支配网目被配置成使得如果通信者能够进入该虚拟区域,则他或她能够对与该虚拟区域相关联的所有文档执行动作,包括操纵文档、观看文档、下载文档、删除文档、修改文档和重新上传文档。以此方式,虚拟区域就可变成在由该虚拟区域所定义的上下文中被共享和讨论的信息的贮存库。
在美国申请No.61/042714(提交于2008年4月4日)、11/923,629(提交于2007年10月24日)和11/923,634(提交于2007年10月24日)中描述了关于虚拟区域的规范的附加细节。
D.通信应用
在一些实施例中,通信应用26包括:
a.本地人机接口设备(HID)和音频回放设备;
b.So3D图形显示、头像、以及物理引擎;
c.系统数据库和存储设施。
本地人机接口设备(HID)和音频回放设备
本地HID使通信者在参与虚拟区域通信会话时能够向客户端网络节点中输入命令和其他信号。示例性HID包括计算机键盘、计算机鼠标、触摸屏显示器、以及话筒。
音频回放设备使通信者能够回放在虚拟区域通信会话期间接收到的音频信号。示例性音频回放设备包括用于操纵音频信号(例如,混音和施加特效)的音频处理硬件(例如,声卡)、以及用于输出声音的扬声器。
So3D图形显示、头像、和物理学引擎
So3D引擎是控制虚拟区域和虚拟区域内的对象在显示监视器上各自相应的视图的呈现的三维视觉化引擎。So3D引擎通常与图形用户界面驱动器和HID设备接口,以呈现虚拟区域的视图并允许通信者控制通信应用26的操作。
在一些实施例中,So3D引擎从区域服务接收图形呈现指令。So3D引擎还可读取包含在虚拟区域中呈现通信者的头像所需的图像的本地通信者头像数据库。基于该信息,So3D引擎从通信者在虚拟区域中的头像的视角(位置和取向)生成虚拟区域和该虚拟区域中各对象的视觉表示(即,图像)。该视觉表示通常被传递给操作系统的图形呈现组件,这些图形呈现组件驱动图形呈现硬件以在客户端网络节点上呈现该虚拟区域的视觉表示。
通信者可通过经由HID设备(例如,计算机鼠标)输入视图控制命令来控制所呈现的该虚拟区域的视图。So3D引擎根据视图控制命令来更新虚拟区域的视图。So3D引擎还根据从区域服务接收到的经更新的对象位置信息来更新该虚拟区域在显示监视器上的图形表示。
E.系统数据库和存储设施
系统数据库和存储设施存储该平台所使用的各种种类的信息。通常由存储设施存储的示例性信息包括在场数据库、关系数据库、头像数据库、真实用户标识符(RUID)数据库、艺术(art)高速缓存数据库、以及区域应用数据库。该信息可被存储在单个网络节点上,或者其可跨多个网络节点分布。
F.客户端节点架构
通信者通常从客户端网络节点连接到网络20。客户端网络节点通常由通用计算机系统或专用通信计算机系统(或称“控制台”,诸如启用网络的视频游戏控制台之类)来实现。客户端网络节点执行建立与其他网络节点的实时数据流连接的通信进程,并且通常执行呈现该通信者所进入的每个虚拟区域的视图的视觉化呈现进程。
图23示出由计算机系统320实现的客户端网络节点的实施例。计算机系统320包括处理单元322、系统存储器324、以及将处理单元322耦合到计算机系统320的各种组件的系统总线326。处理单元322可包括一个或更多个数据处理器,这些数据处理器各自可呈各种市售计算机处理器中的任一种的形式。系统存储器324包括通常与定义对各软件应用可用的地址的软件应用寻址空间相关联的一个或更多个计算机可读介质。系统存储器324可包括存储基本输入/输出系统(BIOS)的只读存储器(ROM)、和随机存取存储器(RAM),该BIOS包含用于计算机系统320的启动例程。系统总线326可以是存储器总线、外围总线或本地总线,并且可与各种总线协议(包括PCI、VESA、Microchannel、ISA和EISA)中的任一种兼容。计算机系统320还包括持久性存储存储器328(例如,硬驱动器、软驱动器、CD ROM驱动器、磁带驱动器、闪存设备、以及数字视频盘(DVD)),该持久性存储存储器328连接到系统总线326并包含为数据、数据结构和计算机可执行指令提供非易失或持久性存储的一个或更多个计算机可读介质盘。
通信者可使用一个或更多个输入设备330(例如,一个或更多个键盘、计算机鼠标、话筒、相机、操纵杆、诸如Wii输入设备之类的物理运动传感器、以及触摸板)与计算机系统320交互(例如,输入命令或数据)。信息可通过在显示监视器332上向通信者呈现的图形用户界面(GUI)来呈现,显示监视器332由显示控制器334控制。计算机系统320还可包括其他输入/输出硬件(例如,诸如扬声器和打印机之类的外围输出设备)。计算机系统320通过网络适配器336(也称为“网络接口卡”或NIC)连接到其他网络节点。
数个程序模块可被存储在系统存储器324中,包括应用编程接口338(API)、操作系统(OS)340(例如,可从美国华盛顿州雷蒙德市的微软公司得到的操作系统)、通信应用26、驱动程序342(例如,GUI驱动程序)、网络传输协议344、以及数据346(例如,输入数据、输出数据、程序数据、注册表、以及配置设置)。
G.服务器节点架构
在一些实施例中,虚拟环境创建器16的一个或更多个服务器网络节点由相应各个通用计算机系统实现,这些通用计算机系统与客户端网络节点320类型相同,不同之处仅在于每个服务器网络节点通常包括一个或更多个服务器软件应用。
在其他实施例中,虚拟环境创建器302的这一个或更多个服务器网络节点由执行边界服务(例如,路由和交换)的相应各个网络设备实现。
VI.结论
本文中描述的实施例提供支持在各自相应的网络节点上操作的通信者之间的实时网络通信的流传输协议。该流传输协议具有相对低的计算资源要求,从而实时通信性能可使用当前可用的广大范围的计算设备和网络连接来达成。
其他实施例也落在权利要求的范围之内。
Claims (71)
1.一种方法,包括由服务器网络节点(16):
确定连接到由所述服务器网络节点(16)托管的服务器应用(38)的一对或更多对客户端网络节点(12、14),其中每一对的构成客户端网络节点(12、14)具有各自相应的数据流内容类型的一组或更多组活跃的互补源和阱;并且
对于所确定的每一对客户端网络节点(12、14),向该对的构成客户端网络节点(12、14)中的每一者发送定义在该对的构成客户端网络节点(12、14)之间的网络连接之上的各自相应的对等会话的各自相应的会话定义。
2.如权利要求1所述的方法,其中客户端网络节点(12、14)各自被指派相应的唯一性站标识符;并且
所述方法进一步包括,由所述服务器网络节点(16)向连接到所述服务器应用(38)的每个客户端网络节点(12、14)传送指派给其他客户端网络节点(12、14)的各自相应的唯一性站标识符。
3.如权利要求2所述的方法,进一步包括由所述服务器网络节点(16):
为每个客户端网络节点(12、14),
确定各自相应的站定义,所述站定义包括各自相应的站标识符以及一个或更多个各自包括相应的无连接传输协议地址和用于所述客户端网络节点上的协议端口的各自相应的协议端口标识符的一个或更多个条目;并且
所述传送包括向连接到所述服务器应用(38)的每个其他客户端网络节点(12、14)发送各自相应的站定义。
4.如权利要求3所述的方法,其中对于每个客户端网络节点(12、14)
所述确定各自相应的站定义包括,由所述服务器网络节点(16)从接收自所述客户端网络节点的一个或更多个消息中的每个消息提取出各自相应的网络地址以及用于所述客户端网络节点上的协议端口的各自相应的协议端口标识符。
5.如权利要求3所述的方法,进一步包括由所述服务器网络节点(16):
为所确定的每一对客户端网络节点(12、14)生成各自相应的会话定义,以包括(i)指派给该对的构成客户端网络节点(12、14)的各自相应的站标识符,以及(ii)与用于在该对的构成客户端网络节点(12、14)之间建立所述网络连接的无连接传输协议相关联的传输标识符。
6.如权利要求5所述的方法,进一步包括由所述服务器网络节点(16):
为所确定的每一对客户端网络节点(12、14),生成各自相应的会话定义,以包括与用于加密在该对的构成客户端网络节点(12、14)之间的网络连接上传输的数据的加密过程相关联的加密标识符。
7.如权利要求1所述的方法,进一步包括由所述服务器网络节点(16):
向连接到所述服务器应用(38)的每个客户端网络节点(12、14)传送代理服务器的站定义,其中所述站定义包括指派给所述代理服务器的各自相应的站标识符、以及各自包括相应的网络地址和用于所述代理服务器上的协议端口的各自相应的协议端口标识符的一个或更多个条目。
8.如权利要求1所述的方法,进一步包括由所述服务器网络节点(16):
对所确定的每一对客户端网络节点(12、14),
为该对的构成客户端网络节点(12、14)之间的各自相应的数据流内容类型的每一组活跃的互补源和阱,确定逻辑地划分在该对的构成客户端网络节点(12、14)之间的网络连接之上的所述会话中传输的数据的各自相应的信道的定义。
9.如权利要求8所述的方法,其中所述信道定义中的一个或更多个各自包括独立于任何其他信道上的数据传输地控制在各自相应的信道上的数据传输的各自相应的一组一个或更多个传输参数值。
10.如权利要求9所述的方法,其中所述信道定义中的一个或更多个各自包括各自相应的可靠性传输参数值,其指示各自相应的信道上的数据是应由可靠传输协议还是不可靠传输协议来传输,根据可靠传输协议,丢失的数据分组被重传,而根据不可靠传输协议,丢失的数据分组被丢弃。
11.如权利要求9所述的方法,其中所述信道定义中的一个或更多个各自包括各自相应的经压缩传输参数值,其指示各自相应的信道上的数据是否被要求要被原封不动地处理。
12.如权利要求9所述的方法,其中所述信道定义中的一个或更多个各自包括各自相应的排序传输参数值,其指示各自相应的信道上的数据是要被按序还是按任何次序来处理。
13.如权利要求9所述的方法,其中所述信道定义中的一个或更多个各自包括各自相应的压缩标识符,其规定用于压缩在各自相应的信道上传输的数据的各自相应的压缩过程。
14.如权利要求8所述的方法,其中所述信道定义中的一个或更多个各自与各自相应的唯一性内容标识符相关联,各自相应的唯一性内容标识符标识指派给该信道的各自相应的数据流内容类型。
15.如权利要求1所述的方法,进一步包括由所述服务器网络节点(16):
与连接到所述服务器应用(38)的每个客户端网络节点(12、14)建立各自相应的服务器会话(40、42);并且
在每个服务器会话(40、42)之上,在不同的相应各个信道上传输不同内容类型的控制消息,所述不同的相应各个信道按内容类型来逻辑地划分所述控制消息。
16.如权利要求15所述的方法,其中每个控制消息以指派给所述服务器会话(40、42)的唯一性服务器会话标识符(40、42)、以及标识所述控制消息的内容类型的各自相应的内容标识符来发送。
17.如权利要求1所述的方法,进一步包括由所述服务器网络节点(16):
响应于收到来自所述客户端网络节点(12、14)中的给定客户端网络节点的要从所述服务器应用(38)断开的消息,向所述客户端网络节点(12、14)中与所述给定网络节点具有各自相应的会话的其他客户端网络节点发送要拆卸其与所述给定客户端网络节点各自相应的会话的各自相应的指令。
18.一种装置(16),包括:
存储计算机可读指令的计算机可读存储器;以及
耦合至所述存储器的数据处理器,其能作用于执行所述指令,并至少部分地基于所述指令的执行能作用于执行操作,所述操作包括:
确定连接到由所述装置(16)托管的服务器应用(38)的一对或更多对客户端网络节点(12、14),其中每一对的构成客户端网络节点(12、14)具有各自相应的数据流内容类型的一组或更多组活跃的互补源和阱;并且
对于所确定的每一对客户端网络节点(12、14),向该对的构成客户端网络节点(12、14)中的每一者发送定义在该对的构成客户端网络节点(12、14)之间的网络连接之上的各自相应的对等会话的各自相应的会话定义。
19.至少一个其中实施有计算机可读程序代码的计算机可读存储器设备,所述计算机可读程序代码适配成由计算机(16)执行以实现一种方法,包括:
确定连接到由所述计算机(16)托管的服务器应用(38)的一对或更多对客户端网络节点(12、14),其中每一对的构成客户端网络节点(12、14)具有各自相应的数据流内容类型的一组或更多组活跃的互补源和阱;并且
对于所确定的每一对客户端网络节点(12、14),向该对的构成客户端网络节点(12、14)中的每一者发送定义在该对的构成客户端网络节点(12、14)之间的网络连接之上的各自相应的对等会话的各自相应的会话定义。
20.一种方法,包括由给定客户端网络节点(12):
连接到由服务器网络节点(16)托管的服务器应用(38),并且有一个或更多个其他客户端网络节点(14)连接着所述服务器应用(38),其中所述给定客户端网络节点和所述一个或更多个其他客户端网络节点(14)之中的每一个网络节点均具有各自相应的数据流内容类型的一个或更多个源和阱;
为所述其他客户端网络节点(14)中、所述给定的客户端网络节点与之具有至少一个互补的活跃源或阱的每一个其他客户端网络节点(14),从所述服务器网络节点(16)接收所述给定客户端网络节点与所述其他客户端网络节点(14)中各自相应的会话伙伴客户端网络节点之间各自相应的会话定义,其中所述至少一个互补的活跃源或阱是与所述另一客户端网络节点的所述一个或更多个源和阱中活跃的一个互补;并且
对于每个收到的会话定义,基于所述会话定义在所述给定的客户端网络节点与各自相应的会话伙伴客户端网络节点之间的各自相应的网络连接之上建立各自相应的对等会话。
21.如权利要求20所述的方法,其中所述会话定义中的至少一个与多个各自相应的地址相关联,以用于与相应各个会话伙伴客户端网络节点协商相应各个网络连接;并且
进一步包括由所述给定客户端网络节点(12)
对所述至少一个会话定义中的每一个,尝试通过与所述会话定义相关联的所述多个各自相应的地址的全部来与各自相应的会话伙伴客户端网络节点(14)建立各自相应的网络连接。
22.如权利要求21所述的方法,进一步包括由所述给定的客户端网络节点(12):
对所述会话伙伴客户端网络节点(14)中、所述给定客户端网络节点(12)已成功与另一客户端网络节点(14)建立多个并发网络连接的每一个会话伙伴客户端网络节点,选择与所述会话伙伴客户端网络节点的所述多个网络连接之一,并在所选定的与所述会话伙伴客户端网络节点(14)的网络连接之上建立各自相应的会话。
23.如权利要求22所述的方法,进一步包括由所述给定客户端网络节点(12):
为所述会话伙伴客户端网络节点(14)中、所述给定的客户端网络节点(12)已成功与另一客户端网络节点(14)建立多个并发的网络连接的每一个会话伙伴客户端网络节点,在建立于所选定的网络连接之上的各自相应的会话期间使与所述会话伙伴客户端网络节点(14)的所述多个并发网络连接中未被选定的那些之中的一个或更多个维活。
24.如权利要求21所述的方法,进一步包括由所述给定客户端网络节点(12):
从所述服务器网络节点(16)接收对所述其他客户端网络节点(14)中连接到所述服务器应用(38)的一个或更多个中的每一个其他客户端网络节点的各自相应的站定义,其中每个所述站定义包括指派给相应各个其他客户端网络节点(14)的各自相应的唯一性站标识符、以及各自包括相应网络地址以及用于相应各个其他客户端网络节点(14)的协议端口的各自相应的协议端口标识符的一个或更多个条目;
其中每个所述会话定义包括指派给各自相应的会话伙伴客户端网络节点的唯一性站标识符;并且
对于每个收到的会话定义建立各自相应的会话包括,由所述给定客户端网络节点(12),基于所述会话定义中的站标识符来确定各自相应的会话伙伴客户端网络节点(14)的站定义中的所述一个或更多个条目,并且对于每个所述条目,尝试通过各自相应的网络地址和各自相应的协议端口标识符来与各自相应的会话伙伴客户端网络节点(14)建立各自相应的网络连接。
25.如权利要求24所述的方法,其中每个所述会话定义包括与用于建立所述网络连接的无连接传输协议相关联的传输标识符;并且
对于每个收到的会话定义建立各自相应的会话包括,由所述给定客户端网络节点(12)尝试根据与各自相应的会话定义中的传输标识符相关联的无连接传输协议来与各自相应的会话伙伴客户端网络节点(14)建立各自相应的网络连接。
26.如权利要求20所述的方法,其中每个所述会话定义与一个或更多个各自相应的地址相关联,以用于与相应各个会话伙伴客户端网络节点(14)协商相应各个网络连接;并且
所述方法进一步包括由所述给定客户端网络节点(12),
从所述服务器网络节点(16)接收代理服务器网络节点(16)各自相应的地址;并且
对于每个收到的会话定义建立各自相应的会话包括,由所述给定客户端网络节点(12),尝试通过与所述会话定义相关联的所述一个或更多个各自相应的地址中的每一个并通过所述代理服务器网络节点(16)各自相应的地址来与相应各个会话伙伴客户端网络节点(14)建立各自相应的网络连接。
27.如权利要求20所述的方法,其中:
每个所述会话定义与指派给所述给定客户端网络节点(12)和所述相应各个其他客户端网络节点(14)中的每一者的各自相应的唯一性站标识符相关联;并且
对于每个收到的会话定义建立各自相应的会话包括,由所述给定客户端网络节点(12),
从包含指派给相应各个会话伙伴客户端网络节点(14)的各自相应的站标识符的一个或更多个入站消息中的每一个提取各自相应的源网络地址;以及
更新由指派给各自相应的会话伙伴客户端网络节点(14)的站标识符索引的本地存储的站定义以包括尚未被包括在所述本地存储的站定义中的每个提取出的源网络地址。
28.如权利要求20所述的方法,其中:
每个所述会话定义与指派给所述给定客户端网络节点(12)和所述相应各个其他客户端网络节点(14)中的每一者的各自相应的唯一性站标识符相关联;并且
对于每个收到的会话定义建立各自相应的会话包括,由所述给定客户端网络节点(12),
向所述各自相应的会话伙伴客户端网络节点(14)发送包含指派给所述给定客户端网络节点(12)的唯一性站标识符的出站消息;
响应于收到响应于所述出站消息且包含指派给所述各自相应的会话伙伴客户端网络节点(14)的唯一性站标识符的入站消息,从所述入站消息中提取出各自相应的源网络地址,并将各自相应的会话伙伴客户端网络节点(14)绑定到所提取出的源网络地址。
29.如权利要求28所述的方法,其中:
每个所述会话定义与各自相应的唯一性会话标识符相关联;并且
对于每个收到的会话定义建立各自相应的会话包括,由所述给定客户端网络节点(912),
在定址到各自相应的会话伙伴客户端网络节点(14)所绑定到的网络地址的传输流之上,向所述各自相应的会话伙伴客户端网络节点(14)发送包含指派给各自相应的会话的唯一性会话标识符的另一出站消息;并且
响应于收到响应于所述另一出站消息且包含指派给各自相应的会话的唯一性会话标识符的入站消息,将所述传输流指定为有效以供在所述各自相应的会话中传送数据。
30.如权利要求20所述的方法,其中对于每个收到的会话定义建立各自相应的会话包括,由所述给定客户端网络节点(12):
与各自相应的会话伙伴客户端网络节点(14)创建多个网络连接;
在所创建的网络连接中选定的一个网络连接上建立各自相应的会话;
在所选定网络连接之上所建立的会话期间,使所创建的网络连接中未被选定的网络连接中的一个或更多个维活。
31.如权利要求30所述的方法,其中对于每个收到的会话定义建立各自相应的会话包括,响应于所创建的网络连接中给定的一个网络连接失效,由所述给定客户端网络节点(12)尝试与各自相应的会话伙伴客户端网络节点(14)重新创建所述给定的网络连接。
32.如权利要求20所述的方法,进一步包括由所述给定客户端网络节点(12):
从所述服务器网络节点(16)接收能从所述给定客户端网络节点(12)公布的本地公布信道的表示;并且
在每个所建立的对等会话上公布所述本地公布信道。
33.如权利要求32所述的方法,进一步包括由所述给定客户端网络节点(12):
响应于收到订阅所述本地公布信道中在所建立的对等会话中给定的一个对等会话上的给定的一个本地公布信道的请求,向各自相应的会话伙伴客户端网络节点(14)发送与所述给定的本地公布信道相关联的数据。
34.如权利要求32所述的方法,进一步包括由所述给定客户端网络节点(12):
确定与所述给定客户端网络节点(12)上的一个或更多个本地软件实体相关联的本地订阅信道;并且
响应于收到所建立的对等会话中给定的一个对等会话上的一个或更多个远程公布信道的公布,向各自相应的会话伙伴客户端网络节点(14)发送对订阅所述本地订阅信道中匹配于相应各个远程公布信道的每个本地订阅信道的请求。
35.如权利要求34所述的方法,进一步包括由所述给定客户端网络节点(12):
响应于在所述给定的对等会话上在匹配于所述本地订阅信道中的相应各个本地订阅信道的相应各个远程公布信道中收到数据,将接收到的数据传递给所述本地软件实体中与匹配的本地订阅信道相关联的每个本地软件实体。
36.如权利要求20所述的方法,进一步包括由所述给定客户端网络节点(12):
从所述服务器网络节点(16)接收按数据流内容类型逻辑地划分在所述会话中的给定一个会话上传输的数据的相应各个信道的定义;并且
根据数据流的内容类型在所述给定的会话上在相应各个信道中向相应各个会话伙伴客户端网络节点(14)传送所述数据流。
37.如权利要求36所述的方法,其中每个所述信道定义包括标识指派给各自相应的信道的各自相应的数据流内容类型的各自相应的唯一性内容标识符,并且所述传送包括在各自相应的一个信道上将每一个数据流以包含与该数据流的内容类型相对应的相应一个内容标识符的分组的形式来传送。
38.如权利要求36所述的方法,其中所述信道定义各自包括独立于所述给定会话中的任何其他信道上的数据传输地控制在各自相应的信道上的数据传输的各自相应的一组一个或更多个传输参数值。
39.如权利要求38所述的方法,其中所述信道定义各自包括各自相应的可靠性传输参数值,其指示各自相应的信道上的数据是应由可靠传输协议还是不可靠传输协议来传输,根据可靠传输协议,丢失的数据分组被重传,而根据不可靠传输协议,丢失的数据分组被丢弃。
40.如权利要求39所述的方法,其中所述传输包括由所述给定客户端网络节点(12):
对所述给定会话中的信道中由指示数据在该信道上应由所述可靠传输协议来传输的可靠性传输值定义的每一个信道:
在所述信道上传送数据分组;并且
响应于确定对会话伙伴客户端网络节点(14)尚未确认收到的已传送数据分组的计数超过由所述会话伙伴客户端网络节点定义的窗阈,在所述信道上重传所述已传送数据分组中的相应各个。
41.如权利要求40所述的方法,其中所述传送包括由所述给定客户端网络节点(12):
对所述给定会话中的信道中由指示数据在该信道上应由所述可靠传输协议来传输的可靠性传输值定义的每一个信道:
保留在所述信道上传送的数据分组;并且
响应于收到已传送数据分组中的相应各个已被会话伙伴客户端网络节点(14)接收到的确认,释放所保留的数据分组。
42.如权利要求36所述的方法,进一步包括由所述给定客户端网络节点(12):
从各自相应的会话伙伴客户端网络节点(14)接收包括发送窗大小数目和接收窗大小数目的会话维护消息;
向各自相应的会话伙伴客户端网络节点(14)传送数据分组直至有所述发送窗大小数目个未被会话伙伴客户端网络节点(14)确认收到的已传送数据分组;并且
响应于自前一会话维护消息被发往会话伙伴客户端网络节点(14)起收到至少所述接收窗大小数目个来自所述会话伙伴客户端网络节点(14)的数据分组,向各自相应的会话伙伴客户端网络节点(14)发送各自相应的会话维护消息。
43.如权利要求42所述的方法,其中由所述给定客户端网络节点(12)发送的各自相应的会话维护消息对于处于活跃状态的每个信道包括在该信道上接收到的分组的最大分组序列号的相应指示。
44.如权利要求42所述的方法,进一步包括,从各自相应的会话伙伴客户端网络节点(14)接收数据分组序列,其中每个数据分组包括各自相应的顺序的信道级别分组号以及各自相应的唯一性的会话级别的分组标识符,并且所述发送包括在发送给各自相应的会话伙伴客户端网络节点(14)的各自相应的会话维护消息中纳入:对于每个信道,与该信道中由所述给定客户端网络节点(12)处理的数据分组的顺序分组号中最高的一个对应的各自相应的值;以及由所述给定客户端网络节点(12)跨所述给定会话中的所有信道处理的数据分组中最近期的一个的各自相应的唯一性分组标识符。
45.如权利要求42所述的方法,其中由所述给定客户端网络节点(12)发送的各自相应的会话维护消息对于处于活跃状态的每个信道包括未在该信道上接收到的丢失分组的各自相应的标识。
46.如权利要求20所述的方法,进一步包括由所述给定客户端网络节点(12):
从各自相应的会话伙伴客户端网络节点(14)接收包括第一时间参数值和第二时间参数值的会话维护消息;
响应于确定所述给定会话处于活跃状态,以由所述第一时间参数值设定的最大间隔来向所述会话伙伴客户端网络节点(14)传送分组收到确认会话维护消息;并且
响应于确定所述给定会话处于空闲状态,以由所述第二时间参数值设定的最大间隔来向所述会话伙伴客户端网络节点(14)传送分组收到确认会话维护消息。
47.如权利要求46所述的方法,进一步包括由所述客户端网络节点(12):
响应于确定在由所述给定客户端网络节点向所述会话伙伴客户端网络节点(14)传送了两个接连的会话维护消息之前已从所述会话伙伴客户端网络节点(14)接收到至少一个数据分组,确定所述给定会话处于活跃状态;并且
响应于确定在由所述给定客户端网络节点(12)向所述会话伙伴客户端网络节点(14)传送了两个接连的会话维护消息之前未曾从所述会话伙伴客户端网络节点(14)接收到数据分组,确定所述给定会话处于空闲状态。
48.一种装置(12),包括:
存储计算机可读指令的计算机可读存储器(22);以及
耦合至所述存储器的数据处理器(24),其能作用于执行所述指令,并至少部分地基于所述指令的执行能作用于执行操作,所述操作包括:
连接到由服务器网络节点(16)托管的服务器应用(38),并且有一个或更多个其他客户端网络节点(14)连接着所述服务器应用38,其中所述给定客户端网络节点和所述一个或更多个其他客户端网络节点(14)之中的每一个网络节点均具有各自相应的数据流内容类型的一个或更多个源和阱;
为所述其他客户端网络节点(14)中、所述给定的客户端网络节点与之具有至少一个互补的活跃源或阱的每一个其他客户端网络节点(14),从所述服务器网络节点(16)接收所述给定客户端网络节点与所述其他客户端网络节点(14)中各自相应的会话伙伴客户端网络节点之间各自相应的会话定义,其中所述至少一个互补的活跃源或阱是与所述另一客户端网络节点的所述一个或更多个源和阱中活跃的一个互补;并且
对于每个收到的会话定义,基于所述会话定义在所述装置与各自相应的会话伙伴客户端网络节点(14)之间的各自相应的网络连接之上建立各自相应的对等会话。
49.至少一个其中实施有计算机可读程序代码的计算机可读存储器设备(22),所述计算机可读程序代码适配成由计算机(12)执行以实现一种方法,包括:
连接到由服务器网络节点(16)托管的服务器应用(38),并且有一个或更多个其他客户端网络节点(14)连接着所述服务器应用38,其中所述给定客户端网络节点和所述一个或更多个其他客户端网络节点(14)之中的每一个网络节点均具有各自相应的数据流内容类型的一个或更多个源和阱;
为所述其他客户端网络节点(14)中、所述计算机(12)与之具有至少一个互补的活跃源或阱的每一个其他客户端网络节点(14),从所述服务器网络节点(16)接收所述给定客户端网络节点与所述其他客户端网络节点(14)中各自相应的会话伙伴客户端网络节点之间各自相应的会话定义,其中所述至少一个互补的活跃源或阱是与所述另一客户端网络节点的所述一个或更多个源和阱中活跃的一个互补;并且
对于每个收到的会话定义,基于所述会话定义在所述计算机(12)与各自相应的会话伙伴客户端网络节点(14)之间的各自相应的网络连接之上建立各自相应的对等会话。
50.一种方法,包括由给定客户端网络节点(12):
存储多个地址,用于与会话伙伴客户端网络节点(14)协商各自相应的网络连接;以及
尝试通过与会话定义相关联的所述多个相应的地址的全部来与所述会话伙伴客户端网络节点(14)建立各自相应的网络连接。
51.如权利要求50所述的方法,进一步包括由所述给定客户端网络节点(12):
响应于成功与所述会话伙伴客户端网络节点(14)建立多个并发的网络连接,选择所述多个并发的网络连接之一,并在所选定的网络连接上与所述会话伙伴客户端网络连接(14)建立相应的会话。
52.如权利要求51所述的方法,进一步包括由所述给定客户端网络节点(12):
在建立于所选定的网络连接的各自相应的会话期间,使与所述会话伙伴客户端网络节点(14)的所述多个并发的网络连接中未被选定的那些网络连接中的一个或更多个维活。
53.如权利要求50所述的方法,其中所述尝试包括,由所述给定客户端网络节点(12)尝试通过所述一个或更多个各自相应的地址中的每一个,并通过代理服务器网络节点(16)各自相应的地址,来与所述会话伙伴客户端网路节点(14)建立各自相应的网络连接。
54.如权利要求50所述的方法,进一步包括由所述给定客户端网络节点(12):
从包含指派给所述会话伙伴客户端网络节点(14)的各自相应的站标识符的一个或更多个入站消息中的每一个提取各自相应的源网络地址;以及
将每个非冗余的所提取出的源网络地址作为用于与所述会话伙伴客户端网络节点(14)协商相应各个网络连接的地址中相应的一个地址来存储。
55.一种方法,包括由给定客户端网络节点(12):
与会话伙伴客户端网络节点(14)建立网络连接,其中所述建立包括:
向所述会话伙伴客户端网络节点(14)发送包含指派给所述给定客户端网络节点(12)的唯一性站标识符的出站消息;并且
响应于收到响应于所述出站消息且包含指派给所述会话伙伴客户端网络节点(14)的唯一性站标识符的入站消息,从所述入站消息中提取出源网络地址,并将所述会话伙伴客户端网络节点(14)绑定到所提取出的源网络地址。
56.如权利要求55所述的方法,进一步包括由所述给定客户端网络节点(12):
在定址到各自相应的会话伙伴客户端网络节点(14)所绑定到的网络地址的传输流之上,向所述会话伙伴客户端网络节点(14)发送包含指派给所述会话的唯一性会话标识符的另一出站消息;并且
响应于收到响应于所述另一出站消息且包含指派给各自相应的会话的唯一性会话标识符的入站消息,将所述传输流指定为有效以供在所述各自相应的会话中传送数据。
57.一种方法,包括由给定客户端网络节点(12):
与会话伙伴客户端网络节点(14)建立对等会话;
在所建立的对等会话上,公布从所述给定客户端网络节点(12)可用的本地公布信道,其中所述信道按数据流内容类型逻辑地划分在所述对等会话上传输的数据。
58.如权利要求57所述的方法,进一步包括由所述给定客户端网络节点(12):
响应于收到订阅所述本地公布信道中在所建立的对等会中给定的一个对等会话上的给定的一个本地公布信道的请求,向所述会话伙伴客户端网络节点(14)发送与所述给定的本地公布信道相关联的数据。
59.如权利要求57所述的方法,进一步包括由所述给定客户端网络节点(12):
确定与所述给定客户端网络节点(12)上的一个或更多个本地软件实体相关联的本地订阅信道;并且
响应于收到所建立的对等会话上的一个或更多个远程公布信道的公布,向所述会话伙伴客户端网络节点(14)发送对订阅所述本地订阅信道中匹配于相应各个远程公布信道的每个本地订阅信道的请求。
60.如权利要求59所述的方法,进一步包括由所述给定客户端网络节点(12):
响应于在所述对等会话上在匹配于所述本地订阅信道中的相应各个本地订阅信道的相应各个远程公布信道中收到数据,将接收到的数据传递给所述本地软件实体中与匹配的本地订阅信道相关联的每个本地软件实体。
61.一种方法,包括由给定客户端网络节点(12):
与会话伙伴客户端网络节点(14)建立对等会话;
存储和按数据流内容类型逻辑地划分在所述对等会话上传输的数据的相应各个信道的定义;以及
根据数据流的内容类型在所述对等会话上在相应各个信道中向所述会话伙伴客户端网络节点(14)传送所述数据流。
62.如权利要求61所述的方法,其中每个所述信道定义包括标识指派给各自相应的信道的各自相应的数据流内容类型的各自相应的唯一性内容标识符,并且所述传送包括在各自相应的一个信道上将每一个数据流以包含与该数据流的内容类型相对应的相应一个内容标识符的分组的形式来传送。
63.如权利要求61所述的方法,其中所述信道定义各自包括独立于所述给定会话中的任何其他信道上的数据传输地控制在各自相应的信道上的数据传输的各自相应的一组一个或更多个传输参数值。
64.如权利要求63所述的方法,其中所述传送包括由所述给定客户端网络节点(12):
对所述对等会话中的信道中由指示数据在该信道上应由可靠传输协议来传输的可靠性传输值定义的每一个信道:
在所述信道上传送数据分组;并且
响应于确定对会话伙伴客户端网络节点(14)尚未确认收到的已传送数据分组的计数超过由所述会话伙伴客户端网络节点(14)定义的窗阈,在所述信道上重传所述已传送数据分组中的相应各个。
65.如权利要求64所述的方法,其中所述传送包括由所述给定客户端网络节点(12):
对所述对等会话中的信道中由指示数据在该信道上应由所述可靠传输协议来传输的可靠性传输值定义的每一个信道:
保留在所述信道上传送的数据分组;并且
响应于收到已传送数据分组中的相应各个已被会话伙伴客户端网络节点(14)接收到的确认,释放所保留的数据分组。
66.如权利要求61所述的方法,进一步包括由所述给定客户端网络节点(12):
从会话伙伴客户端网络节点(14)接收包括发送窗大小数目和接收窗大小数目的会话维护消息;
向所述会话伙伴客户端网络节点(14)传送数据分组直至有所述发送窗大小数目个未被所述会话伙伴客户端网络节点(14)确认收到的已传送数据分组;并且
响应于自前一会话维护消息被发往所述会话伙伴客户端网络节点(14)起收到至少所述接收窗大小数目个来自所述会话伙伴客户端网络节点(14)的数据分组,向所述会话伙伴客户端网络节点(14)发送各自相应的会话维护消息。
67.如权利要求66所述的方法,其中由所述给定客户端网络节点(12)发送的会话维护消息对于处于活跃状态的每个信道包括在该信道上接收到的分组的最大分组序列号的相应指示。
68.如权利要求66所述的方法,进一步包括,从各自相应的会话伙伴客户端网络节点(14)接收数据分组序列,其中每个数据分组包括各自相应的顺序的信道级别分组号以及各自相应的唯一性的会话级别的分组标识符,并且所述发送包括在发送给各自相应的会话伙伴客户端网络节点(14)的各自相应的会话维护消息中纳入:对于每个信道,与该信道中由所述给定客户端网络节点(12)处理的数据分组的顺序分组号中最高的一个对应的各自相应的值;以及由所述给定客户端网络节点(12)跨所述给定会话中的所有信道处理的数据分组中最近期的一个的各自相应的唯一性分组标识符。
69.如权利要求66所述的方法,其中由所述给定客户端网络节点(12)发送的会话维护消息对于处于活跃状态的每个信道包括未在该信道上接收到的丢失分组的各自相应的标识。
70.一种方法,包括由给定客户端网络节点(12):
与会话伙伴客户端网络节点(14)建立对等会话;
从所述会话伙伴客户端网络节点(14)接收包括第一时间参数值和第二时间参数值的会话维护消息;
响应于确定所述对等会话处于活跃状态,以由所述第一时间参数值设定的最大间隔来向所述会话伙伴客户端网络节点(14)传送分组收到确认会话维护消息;并且
响应于确定所述对等会话处于空闲状态,以由所述第二时间参数值设定的最大间隔来向所述会话伙伴客户端网络节点(14)传送分组收到确认会话维护消息。
71.如权利要求70所述的方法,进一步包括由所述客户端网络节点(12):
响应于确定在由所述给定客户端网络节点(12)向所述会话伙伴客户端网络节点(14)传送了两个接连的会话维护消息之前已从所述会话伙伴客户端网络节点(14)接收到至少一个数据分组,确定所述对等会话处于活跃状态;并且
响应于确定在由所述给定客户端网络节点(12)向所述会话伙伴客户端网络节点(14)传送了两个接连的会话维护消息之前未曾从所述会话伙伴客户端网络节点(14)接收到数据分组,确定所述给定会话处于空闲状态。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31815610P | 2010-03-26 | 2010-03-26 | |
US61/318,156 | 2010-03-26 | ||
US12/825,512 US8732236B2 (en) | 2008-12-05 | 2010-06-29 | Managing network communications between network nodes and stream transport protocol |
US12/825,512 | 2010-06-29 | ||
PCT/US2011/029723 WO2011119793A2 (en) | 2010-03-26 | 2011-03-24 | Managing network communications between network nodes and stream transport protocol |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102823196A true CN102823196A (zh) | 2012-12-12 |
Family
ID=44673862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011800159065A Pending CN102823196A (zh) | 2010-03-26 | 2011-03-24 | 管理网络节点之间的网络通信以及流传输协议 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8732236B2 (zh) |
EP (1) | EP2553874A2 (zh) |
JP (1) | JP2013524632A (zh) |
KR (1) | KR20120136371A (zh) |
CN (1) | CN102823196A (zh) |
WO (1) | WO2011119793A2 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104284237A (zh) * | 2014-10-13 | 2015-01-14 | 中安消技术有限公司 | 视频传输方法及系统 |
CN107579949A (zh) * | 2016-07-05 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 数据报文处理方法及装置 |
CN109861790A (zh) * | 2019-01-16 | 2019-06-07 | 顺丰科技有限公司 | 数据传输方法和装置 |
CN110958151A (zh) * | 2018-09-26 | 2020-04-03 | 上海欣诺通信技术股份有限公司 | 保活检测方法、装置、节点、存储介质及通信系统 |
CN111800311A (zh) * | 2020-06-22 | 2020-10-20 | 中科边缘智慧信息科技(苏州)有限公司 | 分散计算状态实时感知方法 |
CN112187414A (zh) * | 2019-07-04 | 2021-01-05 | 华为技术有限公司 | 指示数据传输情况的方法和装置 |
CN112789666A (zh) * | 2018-10-05 | 2021-05-11 | Jcm美国公司 | 用于对投币记账系统中辅助串行通信端口进行改造的设备 |
Families Citing this family (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407605B2 (en) | 2009-04-03 | 2013-03-26 | Social Communications Company | Application sharing |
US8397168B2 (en) * | 2008-04-05 | 2013-03-12 | Social Communications Company | Interfacing with a spatial virtual communication environment |
US7769806B2 (en) | 2007-10-24 | 2010-08-03 | Social Communications Company | Automated real-time data stream switching in a shared virtual area communication environment |
EP2279472A4 (en) | 2008-04-05 | 2013-11-20 | Social Communications Co | APPARATUS AND METHODS BASED ON A SHARED VIRTUAL SPACE COMMUNICATION ENVIRONMENT |
US9514444B2 (en) | 2009-01-15 | 2016-12-06 | Sococo, Inc. | Encapsulating virtual area based communicant assemblies |
US9853922B2 (en) | 2012-02-24 | 2017-12-26 | Sococo, Inc. | Virtual area communications |
US20130283169A1 (en) | 2012-04-24 | 2013-10-24 | Social Communications Company | Voice-based virtual area navigation |
US9319357B2 (en) | 2009-01-15 | 2016-04-19 | Social Communications Company | Context based virtual area creation |
US8738780B2 (en) * | 2009-01-22 | 2014-05-27 | Citrix Systems, Inc. | System and method for hybrid communication mechanism utilizing both communication server-based and direct endpoint-to-endpoint connections |
CN101854311A (zh) * | 2009-03-31 | 2010-10-06 | 国际商业机器公司 | 在web服务器上传递上下文信息的方法和装置 |
US8629866B2 (en) * | 2009-06-18 | 2014-01-14 | International Business Machines Corporation | Computer method and apparatus providing interactive control and remote identity through in-world proxy |
US9019532B2 (en) | 2010-04-07 | 2015-04-28 | Hewlett-Packard Development Company | Device messaging |
US8990411B2 (en) * | 2010-04-22 | 2015-03-24 | Microsoft Technology Licensing, Llc | Dynamic connection management on mobile peer devices |
US9276972B2 (en) * | 2010-12-14 | 2016-03-01 | Microsoft Technology Licensing, Llc | Real-time media optimization over remoted sessions |
US8655955B2 (en) | 2011-08-18 | 2014-02-18 | International Business Machines Corporation | Stream processing using a client-server architecture |
US9330154B2 (en) * | 2011-08-22 | 2016-05-03 | Sybase, Inc. | Multicast database replication |
WO2013039748A2 (en) * | 2011-09-16 | 2013-03-21 | Social Communications Company | Capabilities based management of virtual areas |
US9036185B2 (en) | 2011-09-28 | 2015-05-19 | Hewlett-Packard Development Company, L.P. | Managing network connections |
WO2013078062A1 (en) * | 2011-11-23 | 2013-05-30 | Social Communications Company | Creating and managing virtual areas |
CN102611947B (zh) * | 2011-11-24 | 2017-11-17 | 中兴通讯股份有限公司 | 创建组播频道的方法、系统和媒体服务器 |
JP5887507B2 (ja) * | 2011-11-28 | 2016-03-16 | パナソニックIpマネジメント株式会社 | 通信機器間の接続確立方法、通信機器、及びサーバ装置 |
US9374613B2 (en) * | 2011-12-07 | 2016-06-21 | Verizon Patent And Licensing Inc. | Media content flicking systems and methods |
EP2820564B1 (en) * | 2012-02-29 | 2019-04-10 | Global File Systems Holdings, LLC | Stream recognition and filtering |
KR101758681B1 (ko) * | 2012-03-27 | 2017-07-14 | 한화테크윈 주식회사 | 통신 시스템 및 통신 시스템에서의 데이터 송수신 방법 |
WO2013181026A1 (en) | 2012-06-02 | 2013-12-05 | Social Communications Company | Interfacing with a spatial virtual communications environment |
US10009445B2 (en) * | 2012-06-14 | 2018-06-26 | Qualcomm Incorporated | Avoiding unwanted TCP retransmissions using optimistic window adjustments |
US10452769B1 (en) | 2012-08-31 | 2019-10-22 | United Services Automobile Association (Usaa) | Concurrent display of application between devices |
US9146790B1 (en) * | 2012-11-02 | 2015-09-29 | Symantec Corporation | Performing fencing operations in multi-node distributed storage systems |
CN103034615B (zh) * | 2012-12-07 | 2016-04-13 | 无锡美森微电子科技有限公司 | 一种适用于流应用多核处理器的存储管理方法 |
US9549024B2 (en) | 2012-12-07 | 2017-01-17 | Remote Media, Llc | Routing and synchronization system, method, and manager |
US9372960B2 (en) | 2012-12-11 | 2016-06-21 | ViewSend ICT Co., Ltd. | Medical support system and method thereof |
KR102070727B1 (ko) * | 2013-02-13 | 2020-01-29 | 삼성전자주식회사 | 무선 통신 시스템의 전송 제어 프로토콜 통신 방법 및 장치 |
WO2014180792A1 (en) * | 2013-05-05 | 2014-11-13 | Lantiq Deutschland Gmbh | Training optimization of multiple lines in a vectored system using a prepared-to-join group |
CN104469949B (zh) * | 2013-09-23 | 2018-10-12 | 中国移动通信集团公司 | 无线网络中的保活方法、装置及系统 |
US10542094B2 (en) * | 2013-10-08 | 2020-01-21 | Iotic Labs Limited | Internet of things |
US9398058B2 (en) * | 2013-10-28 | 2016-07-19 | Instamedica Inc. | Systems and methods for video-conference network system suitable for scalable, private tele-consultation |
US9558148B2 (en) * | 2014-04-30 | 2017-01-31 | Intel Corporation | Method to optimize network data flows within a constrained system |
EP2990970A1 (en) * | 2014-08-26 | 2016-03-02 | Dassault Systèmes | Execution of sequential update |
EP2990969A1 (en) * | 2014-08-26 | 2016-03-02 | Dassault Systèmes | Criterion for sequential update |
US9665340B2 (en) * | 2014-10-13 | 2017-05-30 | Daniel Kuniansky | Systems and methods for temporarily sharing audio over a network |
WO2016073315A1 (en) * | 2014-11-05 | 2016-05-12 | NCS Technologies, Inc. | Zero client device with cached connections |
US9646163B2 (en) | 2014-11-14 | 2017-05-09 | Getgo, Inc. | Communicating data between client devices using a hybrid connection having a regular communications pathway and a highly confidential communications pathway |
US20160149839A1 (en) * | 2014-11-20 | 2016-05-26 | Superchat, LLC | Multi-Network Chat System |
US10219242B2 (en) * | 2015-01-20 | 2019-02-26 | Futurewei Technologies, Inc. | System and method for delivering notifications |
US9701135B2 (en) * | 2015-01-30 | 2017-07-11 | S-Printing Solution Co., Ltd. | Image forming apparatus, recording medium, terminal, server, note printing method, and storage medium |
US10789207B2 (en) | 2015-07-27 | 2020-09-29 | Sas Institute Inc. | Distributed data storage grouping |
CN105072050A (zh) * | 2015-08-26 | 2015-11-18 | 联想(北京)有限公司 | 一种数据传输方法及装置 |
TWI584617B (zh) * | 2015-11-18 | 2017-05-21 | Walton Advanced Eng Inc | Auxiliary data transmission |
CN106547529A (zh) * | 2015-09-23 | 2017-03-29 | 百度在线网络技术(北京)有限公司 | 页面构建方法及装置 |
US10200371B2 (en) | 2015-11-09 | 2019-02-05 | Silvercar, Inc. | Vehicle access systems and methods |
CN105721491B (zh) * | 2016-03-22 | 2018-10-26 | 同济大学 | 一种用于面向高速磁浮交通仿真的通信方法 |
US10264314B2 (en) * | 2016-04-29 | 2019-04-16 | Pccw Vuclip (Singapore) Pte. Ltd. | Multimedia content management system |
US10609093B2 (en) * | 2016-05-06 | 2020-03-31 | Facebook, Inc. | Instantaneous call sessions over a communications application |
WO2017210208A1 (en) * | 2016-05-31 | 2017-12-07 | Brocade Communications Systems, Inc. | Keepalive technique in a network device |
US11075886B2 (en) * | 2016-12-15 | 2021-07-27 | Keysight Technologies Singapore (Sales) Pte. Ltd. | In-session splitting of network traffic sessions for server traffic monitoring |
WO2018213481A1 (en) * | 2017-05-16 | 2018-11-22 | Sportscastr.Live Llc | Systems, apparatus, and methods for scalable low-latency viewing of integrated broadcast commentary and event video streams of live events, and synchronization of event information with viewed streams via multiple internet channels |
US10404810B2 (en) * | 2017-06-20 | 2019-09-03 | Futurewei Technologies, Inc. | Session layer communications using an ID-oriented network |
US20190141009A1 (en) * | 2017-11-07 | 2019-05-09 | General Electric Company | Session moderator for turn-pattern tcp-packet relay with websocket instantiation |
JP7032652B2 (ja) * | 2018-08-03 | 2022-03-09 | 日本電信電話株式会社 | 仮想世界構築システム及び方法 |
EP3837824B1 (en) * | 2018-11-13 | 2023-05-24 | Sony Group Corporation | Methods and devices for establishing a streaming session in a framework for live uplink streaming |
US20220200973A1 (en) * | 2019-04-15 | 2022-06-23 | Bear System, LLC | Blockchain schema for secure data transmission |
US11483143B2 (en) * | 2019-04-15 | 2022-10-25 | Smart Security Systems, Llc | Enhanced monitoring and protection of enterprise data |
CN110442366B (zh) * | 2019-08-09 | 2021-06-15 | 广州视源电子科技股份有限公司 | 一种传屏处理方法、装置、设备和存储介质 |
US11297147B2 (en) * | 2019-11-22 | 2022-04-05 | Amazon Technologies, Inc. | Managed data export to a remote network from edge devices |
US11463547B2 (en) | 2019-12-12 | 2022-10-04 | Google Llc | Reliable transport protocol and hardware architecture for datacenter networking |
US11349937B2 (en) * | 2020-09-18 | 2022-05-31 | EMC IP Holding Company LLC | Passive management of network connections |
KR20220074108A (ko) * | 2020-11-27 | 2022-06-03 | 삼성전자주식회사 | 전자 장치 및 그의 동작 방법 |
US11811877B2 (en) | 2021-05-13 | 2023-11-07 | Agora Lab, Inc. | Universal transport framework for heterogeneous data streams |
US11842190B2 (en) * | 2022-01-18 | 2023-12-12 | Lemon Inc. | Synchronizing multiple instances of projects |
US12093328B2 (en) * | 2022-05-19 | 2024-09-17 | Apple Inc. | Playback engine |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198726A1 (en) * | 2000-10-12 | 2007-08-23 | Peerapp Ltd. | Method and system for accelerating receipt of data in a client to client network |
US20090075642A1 (en) * | 2003-10-27 | 2009-03-19 | Olli Rantapuska | Method and devices for relayed peer-to-peer communications between terminals in mobile networks |
CN101473630A (zh) * | 2006-06-16 | 2009-07-01 | 卢森特技术有限公司 | 用于建立对等会话的方法、装置和体系架构 |
Family Cites Families (115)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1615973A (en) | 1923-11-17 | 1927-02-01 | Marietta Mfg Company | Process of coloring glassware |
US5193151A (en) | 1989-08-30 | 1993-03-09 | Digital Equipment Corporation | Delay-based congestion avoidance in computer networks |
AU650242B2 (en) | 1989-11-28 | 1994-06-16 | International Business Machines Corporation | Methods and apparatus for dynamically managing input/output (I/O) connectivity |
US6594688B2 (en) | 1993-10-01 | 2003-07-15 | Collaboration Properties, Inc. | Dedicated echo canceler for a workstation |
US5434913A (en) | 1993-11-24 | 1995-07-18 | Intel Corporation | Audio subsystem for computer-based conferencing system |
US6343263B1 (en) | 1994-08-02 | 2002-01-29 | Apple Computer, Inc. | Real-time signal processing system for serially transmitted data |
US5721922A (en) | 1994-10-13 | 1998-02-24 | Intel Corporation | Embedding a real-time multi-tasking kernel in a non-real-time operating system |
US5903752A (en) | 1994-10-13 | 1999-05-11 | Intel Corporation | Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system |
US5619733A (en) | 1994-11-10 | 1997-04-08 | International Business Machines Corporation | Method and apparatus for synchronizing streaming and non-streaming multimedia devices by controlling the play speed of the non-streaming device in response to a synchronization signal |
US6260057B1 (en) | 1995-03-01 | 2001-07-10 | Sun Microsystems, Inc. | Apparatus and method for high performance implementation of system calls |
US6466962B2 (en) | 1995-06-07 | 2002-10-15 | International Business Machines Corporation | System and method for supporting real-time computing within general purpose operating systems |
US5960173A (en) | 1995-12-22 | 1999-09-28 | Sun Microsystems, Inc. | System and method enabling awareness of others working on similar tasks in a computer work environment |
IL116708A (en) | 1996-01-08 | 2000-12-06 | Smart Link Ltd | Real-time task manager for a personal computer |
US6405255B1 (en) | 1996-07-01 | 2002-06-11 | Sun Microsystems, Inc. | Mixing and splitting multiple independent audio data streams in kernel space |
US5913038A (en) | 1996-12-13 | 1999-06-15 | Microsoft Corporation | System and method for processing multimedia data streams using filter graphs |
US5995745A (en) | 1996-12-23 | 1999-11-30 | Yodaiken; Victor J. | Adding real-time support to general purpose operating systems |
US6317774B1 (en) | 1997-01-09 | 2001-11-13 | Microsoft Corporation | Providing predictable scheduling of programs using a repeating precomputed schedule |
US6006279A (en) | 1997-01-21 | 1999-12-21 | Canon Information Systems, Inc. | Plug-in module host framework |
US6771594B1 (en) | 1997-03-31 | 2004-08-03 | Intel Corporation | Reliable/non-reliable transmission of voice using TCP/UDP based on network quality of service |
US6016515A (en) | 1997-04-04 | 2000-01-18 | Microsoft Corporation | Method, computer program product, and data structure for validating creation of and routing messages to file object |
US6273622B1 (en) | 1997-04-15 | 2001-08-14 | Flash Networks, Ltd. | Data communication protocol for maximizing the performance of IP communication links |
US6076114A (en) | 1997-04-18 | 2000-06-13 | International Business Machines Corporation | Methods, systems and computer program products for reliable data transmission over communications networks |
US5991836A (en) | 1997-05-02 | 1999-11-23 | Network Computing Devices, Inc. | System for communicating real time data between client device and server utilizing the client device estimating data consumption amount by the server |
US5991402A (en) | 1997-09-23 | 1999-11-23 | Aegisoft Corporation | Method and system of dynamic transformation of encrypted material |
US6349344B1 (en) | 1997-12-16 | 2002-02-19 | Microsoft Corporation | Combining multiple java class files into a run-time image |
US6216173B1 (en) | 1998-02-03 | 2001-04-10 | Redbox Technologies Limited | Method and apparatus for content processing and routing |
US6141686A (en) | 1998-03-13 | 2000-10-31 | Deterministic Networks, Inc. | Client-side application-classifier gathering network-traffic statistics and application and user names using extensible-service provider plugin for policy-based network control |
US6148336A (en) | 1998-03-13 | 2000-11-14 | Deterministic Networks, Inc. | Ordering of multiple plugin applications using extensible layered service provider with network traffic filtering |
US7065553B1 (en) | 1998-06-01 | 2006-06-20 | Microsoft Corporation | Presentation system with distributed object oriented multi-user domain and separate view and model objects |
US6324564B1 (en) | 1998-06-02 | 2001-11-27 | Nettech Systems, Inc. | Optimized wireless communication system |
US6243753B1 (en) | 1998-06-12 | 2001-06-05 | Microsoft Corporation | Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters |
US6604136B1 (en) | 1998-06-27 | 2003-08-05 | Intel Corporation | Application programming interfaces and methods enabling a host to interface with a network processor |
US7159222B1 (en) | 1998-09-09 | 2007-01-02 | Microsoft Corporation | Highly componentized system architecture with object mutation |
US6807667B1 (en) | 1998-09-21 | 2004-10-19 | Microsoft Corporation | Method and system of an application program interface for abstracting network traffic control components to application programs |
US6182125B1 (en) | 1998-10-13 | 2001-01-30 | 3Com Corporation | Methods for determining sendable information content based on a determined network latency |
US6219706B1 (en) | 1998-10-16 | 2001-04-17 | Cisco Technology, Inc. | Access control for networks |
US6470397B1 (en) | 1998-11-16 | 2002-10-22 | Qlogic Corporation | Systems and methods for network and I/O device drivers |
US6549538B1 (en) | 1998-12-31 | 2003-04-15 | Compaq Information Technologies Group, L.P. | Computer method and apparatus for managing network ports cluster-wide using a lookaside list |
US6490611B1 (en) | 1999-01-28 | 2002-12-03 | Mitsubishi Electric Research Laboratories, Inc. | User level scheduling of inter-communicating real-time tasks |
US6862735B1 (en) | 1999-02-11 | 2005-03-01 | Sun Microsystems, Inc. | Mechanism by which platform independent software may bind to and access platform dependent software |
US6615278B1 (en) | 1999-03-29 | 2003-09-02 | International Business Machines Corporation | Cross-platform program, system, and method having a global registry object for mapping registry equivalent functions in an OS/2 operating system environment |
US6493324B1 (en) | 1999-03-29 | 2002-12-10 | Worldcom, Inc. | Multimedia interface for IP telephony |
US6779027B1 (en) | 1999-04-30 | 2004-08-17 | Hewlett-Packard Development Company, L.P. | Intelligent management module application programming interface with utility objects |
US6438603B1 (en) | 1999-04-30 | 2002-08-20 | Microsoft Corporation | Methods and protocol for simultaneous tuning of reliable and non-reliable channels of a single network communication link |
US6587875B1 (en) | 1999-04-30 | 2003-07-01 | Microsoft Corporation | Network protocol and associated methods for optimizing use of available bandwidth |
US6742176B1 (en) | 1999-06-14 | 2004-05-25 | Lycos, Inc. | Secure flexible plugin software architecture |
US20010044904A1 (en) | 1999-09-29 | 2001-11-22 | Berg Ryan J. | Secure remote kernel communication |
US7140015B1 (en) | 1999-09-29 | 2006-11-21 | Network Appliance, Inc. | Microkernel for real time applications |
US7213054B2 (en) | 1999-12-15 | 2007-05-01 | Microsoft Corporation | Methods and apparatuses for handling single-user applications in multi-user computing environments |
SE517156C2 (sv) | 1999-12-28 | 2002-04-23 | Global Ip Sound Ab | System för överföring av ljud över paketförmedlade nät |
US7197017B1 (en) | 2000-01-04 | 2007-03-27 | Qualcomm, Incorporated | Method and apparatus for channel optimization during point-to-point protocol (PPP) session requests |
US7069590B1 (en) | 2000-02-17 | 2006-06-27 | Microsoft Corporation | System and method for protecting data streams in hardware components |
US6990669B1 (en) | 2000-03-21 | 2006-01-24 | Microsoft Corporation | Real-time scheduler |
US6871345B1 (en) | 2000-04-04 | 2005-03-22 | Motive, Inc. | Self managing software agents with introspection |
US8020176B2 (en) | 2000-04-06 | 2011-09-13 | Infineon Technologies Ag | Virtual machine interface for hardware reconfigurable and software programmable processors |
US6646195B1 (en) | 2000-04-12 | 2003-11-11 | Microsoft Corporation | Kernel-mode audio processing modules |
US6961631B1 (en) | 2000-04-12 | 2005-11-01 | Microsoft Corporation | Extensible kernel-mode audio processing architecture |
EP1170673A1 (en) | 2000-07-05 | 2002-01-09 | Sony International (Europe) GmbH | Portal application |
US6763176B1 (en) | 2000-09-01 | 2004-07-13 | Matrox Electronic Systems Ltd. | Method and apparatus for real-time video editing using a graphics processor |
US7599753B2 (en) | 2000-09-23 | 2009-10-06 | Microsoft Corporation | Systems and methods for running priority-based application threads on a realtime component |
US7263550B1 (en) | 2000-10-10 | 2007-08-28 | Juniper Networks, Inc. | Agent-based event-driven web server architecture |
US7313593B1 (en) | 2000-10-24 | 2007-12-25 | International Business Machines Corporation | Method and apparatus for providing full duplex and multipoint IP audio streaming |
US6961942B1 (en) | 2000-11-06 | 2005-11-01 | Microsoft Corporation | Bluetooth TDI and winsock interface |
US7149314B2 (en) | 2000-12-04 | 2006-12-12 | Creative Technology Ltd | Reverberation processor based on absorbent all-pass filters |
US20020080822A1 (en) | 2000-12-22 | 2002-06-27 | Brown Michael K. | Address defined session management over stateless communications channels |
US7296226B2 (en) | 2001-02-15 | 2007-11-13 | Accenture Gmbh | XML-based multi-format business services design pattern |
US7386356B2 (en) | 2001-03-05 | 2008-06-10 | Microsoft Corporation | Dynamic audio buffer creation |
US7376475B2 (en) | 2001-03-05 | 2008-05-20 | Microsoft Corporation | Audio buffer configuration |
US7107110B2 (en) | 2001-03-05 | 2006-09-12 | Microsoft Corporation | Audio buffers with audio effects |
US20020165973A1 (en) * | 2001-04-20 | 2002-11-07 | Doron Ben-Yehezkel | Adaptive transport protocol |
US6996832B2 (en) | 2001-05-30 | 2006-02-07 | Bea Systems, Inc. | System and method for software component plug-in framework |
US6918093B2 (en) | 2001-05-31 | 2005-07-12 | International Business Machines Corp. | Inheritance of background color in a containment hierarchy of objects in a graphical user interface |
US7562306B2 (en) | 2001-05-31 | 2009-07-14 | International Business Machines Corporation | System and method for reducing memory use associated with the graphical representation of a list control |
US7017162B2 (en) | 2001-07-10 | 2006-03-21 | Microsoft Corporation | Application program interface for network software platform |
US7254610B1 (en) | 2001-09-19 | 2007-08-07 | Cisco Technology, Inc. | Delivery of services to a network enabled telephony device based on transfer of selected model view controller objects to reachable network nodes |
US7254814B1 (en) | 2001-09-28 | 2007-08-07 | Emc Corporation | Methods and apparatus for managing plug-in services |
US7987491B2 (en) * | 2002-05-10 | 2011-07-26 | Richard Reisman | Method and apparatus for browsing using alternative linkbases |
US7631318B2 (en) | 2002-06-28 | 2009-12-08 | Microsoft Corporation | Secure server plug-in architecture for digital rights management systems |
US6782424B2 (en) | 2002-08-23 | 2004-08-24 | Finite State Machine Labs, Inc. | System, method and computer program product for monitoring and controlling network connections from a supervisory operating system |
US20040064210A1 (en) | 2002-10-01 | 2004-04-01 | Puryear Martin G. | Audio driver componentization |
US20080242327A1 (en) | 2002-10-17 | 2008-10-02 | Gabriel Manny M | System and method for sending sms and text messages |
CN100463469C (zh) | 2002-10-25 | 2009-02-18 | 国际商业机器公司 | 在多通道上共享应用程序会话信息的方法、装置和系统 |
US20040088704A1 (en) | 2002-10-30 | 2004-05-06 | Advanced Simulation Technology, Inc. | Method for running real-time tasks alongside a general purpose operating system |
EP1586214B1 (en) | 2003-01-16 | 2008-12-03 | Research In Motion Limited | System and method of exchanging identification information for mobile stations |
CN1977258A (zh) | 2003-08-07 | 2007-06-06 | 简易通信工具有限公司 | 实时电子通信系统和方法 |
US20050060137A1 (en) | 2003-09-12 | 2005-03-17 | Lanus Mark S. | Method and apparatus to emulate an execution environment |
JP2005196286A (ja) | 2003-12-26 | 2005-07-21 | Okuma Corp | リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法 |
US20060031779A1 (en) | 2004-04-15 | 2006-02-09 | Citrix Systems, Inc. | Selectively sharing screen data |
WO2006042300A2 (en) | 2004-10-12 | 2006-04-20 | Mindego, Inc. | System and method for creating, distributing, and executing rich multimedia applications |
US20060168114A1 (en) | 2004-11-12 | 2006-07-27 | Arnaud Glatron | Audio processing system |
CN101116306A (zh) | 2005-02-08 | 2008-01-30 | 艾利森电话股份有限公司 | 在分组交换网络上的按需多频道流会话 |
WO2006110952A1 (en) | 2005-04-19 | 2006-10-26 | Fairlight.Au Pty Ltd | Media processing system and method |
US20060244818A1 (en) | 2005-04-28 | 2006-11-02 | Comotiv Systems, Inc. | Web-based conferencing system |
US20070064851A1 (en) | 2005-09-02 | 2007-03-22 | Sbc Knowledge Ventures Lp | Method for synchronizing a customer edge router or customer premise equipment associated therewith |
US8606950B2 (en) | 2005-06-08 | 2013-12-10 | Logitech Europe S.A. | System and method for transparently processing multimedia data |
EP1750253B1 (en) | 2005-08-04 | 2012-03-21 | Nuance Communications, Inc. | Speech dialog system |
US9569556B2 (en) | 2005-08-19 | 2017-02-14 | Google Inc. | Software architecture for displaying information content from plug-in modules in a user interface |
US7509654B2 (en) | 2005-09-29 | 2009-03-24 | Avaya Inc. | Data-driven and plug-in defined event engine |
US8498629B2 (en) | 2005-10-18 | 2013-07-30 | Harris Corporation | Extensible human machine interface (HMI) plugin architecture for radio software system and related method |
US20070240134A1 (en) | 2006-02-28 | 2007-10-11 | Joydeep Buragohain | Software packaging model supporting multiple entity types |
WO2007105026A1 (en) | 2006-03-14 | 2007-09-20 | Nokia Corporation | Allocation of a communications channel to a data transfer session |
US20070250540A1 (en) | 2006-04-20 | 2007-10-25 | Hsu Mike S C | A Computer System with File Attribute Extension |
EP2367343B1 (en) | 2006-05-11 | 2017-03-22 | Google, Inc. | Audio mixing |
US20070280206A1 (en) | 2006-05-31 | 2007-12-06 | Samsung Electronics Co., Ltd. | Method for consuming heterogeneous services on heterogeneous devices using script plugins |
US20080005721A1 (en) | 2006-06-29 | 2008-01-03 | Augusta Systems, Inc. | Method and System for Rapidly Developing Sensor-Enabled Software Applications |
US8798075B2 (en) | 2006-06-30 | 2014-08-05 | Sony Corporation | Peer to peer connection |
US7940653B2 (en) | 2006-08-29 | 2011-05-10 | Verizon Data Services Llc | Audiovisual data transport protocol |
US8817668B2 (en) | 2006-09-15 | 2014-08-26 | Microsoft Corporation | Distributable, scalable, pluggable conferencing architecture |
US20080085502A1 (en) | 2006-10-04 | 2008-04-10 | Ecollege.Com | Web service api for student information and course management systems |
CN101170572A (zh) | 2006-10-23 | 2008-04-30 | 日电(中国)有限公司 | 基于p2p sip技术实现的多媒体网络通信系统 |
FR2909823B1 (fr) | 2006-12-06 | 2012-12-14 | Soc Fr Du Radiotelephone Sfr | Procede et systeme de gestion de sessions multimedia, permettant de controler l'etablissement de canaux de communication |
US8280978B2 (en) * | 2006-12-29 | 2012-10-02 | Prodea Systems, Inc. | Demarcation between service provider and user in multi-services gateway device at user premises |
US7688762B2 (en) | 2007-03-21 | 2010-03-30 | Cisco Technology, Inc. | Mesh backhaul network planning |
DE102008004729A1 (de) | 2008-01-16 | 2009-07-23 | T-Mobile Internationale Ag | Verfahren zur Versendung einer E-Mail an eine beliebige Rufnummer |
KR101085629B1 (ko) | 2009-03-16 | 2011-11-22 | 삼성전자주식회사 | 이동통신 단말에서 ⅰp 통신의 네트워크 설정 방법 및 장치 |
-
2010
- 2010-06-29 US US12/825,512 patent/US8732236B2/en active Active
-
2011
- 2011-03-24 KR KR1020127025015A patent/KR20120136371A/ko not_active Application Discontinuation
- 2011-03-24 JP JP2013502658A patent/JP2013524632A/ja not_active Withdrawn
- 2011-03-24 CN CN2011800159065A patent/CN102823196A/zh active Pending
- 2011-03-24 EP EP11760188A patent/EP2553874A2/en not_active Withdrawn
- 2011-03-24 WO PCT/US2011/029723 patent/WO2011119793A2/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198726A1 (en) * | 2000-10-12 | 2007-08-23 | Peerapp Ltd. | Method and system for accelerating receipt of data in a client to client network |
US20090075642A1 (en) * | 2003-10-27 | 2009-03-19 | Olli Rantapuska | Method and devices for relayed peer-to-peer communications between terminals in mobile networks |
CN101473630A (zh) * | 2006-06-16 | 2009-07-01 | 卢森特技术有限公司 | 用于建立对等会话的方法、装置和体系架构 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104284237A (zh) * | 2014-10-13 | 2015-01-14 | 中安消技术有限公司 | 视频传输方法及系统 |
CN107579949A (zh) * | 2016-07-05 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 数据报文处理方法及装置 |
CN107579949B (zh) * | 2016-07-05 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 数据报文处理方法及装置 |
CN110958151A (zh) * | 2018-09-26 | 2020-04-03 | 上海欣诺通信技术股份有限公司 | 保活检测方法、装置、节点、存储介质及通信系统 |
CN112789666A (zh) * | 2018-10-05 | 2021-05-11 | Jcm美国公司 | 用于对投币记账系统中辅助串行通信端口进行改造的设备 |
CN109861790A (zh) * | 2019-01-16 | 2019-06-07 | 顺丰科技有限公司 | 数据传输方法和装置 |
CN109861790B (zh) * | 2019-01-16 | 2022-04-19 | 顺丰科技有限公司 | 数据传输方法和装置 |
CN112187414A (zh) * | 2019-07-04 | 2021-01-05 | 华为技术有限公司 | 指示数据传输情况的方法和装置 |
US11817957B2 (en) | 2019-07-04 | 2023-11-14 | Huawei Technologies Co., Ltd. | Data delivery status indicating method and apparatus |
CN111800311A (zh) * | 2020-06-22 | 2020-10-20 | 中科边缘智慧信息科技(苏州)有限公司 | 分散计算状态实时感知方法 |
CN111800311B (zh) * | 2020-06-22 | 2021-10-08 | 中科边缘智慧信息科技(苏州)有限公司 | 分散计算状态实时感知方法 |
Also Published As
Publication number | Publication date |
---|---|
US8732236B2 (en) | 2014-05-20 |
WO2011119793A2 (en) | 2011-09-29 |
WO2011119793A3 (en) | 2012-01-19 |
US20100274848A1 (en) | 2010-10-28 |
EP2553874A2 (en) | 2013-02-06 |
KR20120136371A (ko) | 2012-12-18 |
JP2013524632A (ja) | 2013-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102823196A (zh) | 管理网络节点之间的网络通信以及流传输协议 | |
US7493413B2 (en) | APIS to build peer to peer messaging applications | |
US7912959B2 (en) | Architecture for building a peer to peer messaging platform | |
CN111406396B (zh) | 用于诸如区块链网络等网络中的数据传播和通信的计算机实现的系统和方法 | |
CN101247361B (zh) | 一种用户群组中成员动态信息显示系统及方法 | |
CN102362269B (zh) | 实时内核 | |
CN101247393B (zh) | 用于防止ip欺骗和促进专用数据区的解析的系统和方法 | |
US7949704B2 (en) | Administration of a broker-based publish/subscribe messaging system | |
CN110661801B (zh) | 一种数据传输方法、装置、以及计算机存储介质 | |
EP4429205A1 (en) | Data processing method and apparatus, and device and medium | |
CN104243281B (zh) | 基于移动互联网的语音通信方法 | |
CN107211172A (zh) | 共享场景网格数据同步 | |
CN103108037B (zh) | 一种通信方法,Web服务器及Web通信系统 | |
WO2013078062A1 (en) | Creating and managing virtual areas | |
CN100363870C (zh) | 用于在具有sip功能的终端上提供多个客户支持的方法和设备 | |
CN109639782A (zh) | 消息发送平台、方法 | |
CN104981275A (zh) | 在媒体平台之间的一般同伴消息传送 | |
CN1595890B (zh) | 与预订通知服务的虚拟连接 | |
CN103297858A (zh) | 一种智能电视用户状态显示系统及方法 | |
Lim et al. | Rapid development of distributed applications using high-level communication support | |
CN105933352B (zh) | 基于客户端的服务器之间数据同步方法、客户端及系统 | |
EP1296490A2 (en) | Message broker | |
Saveliev et al. | Architecture of data exchange with minimal client-server interaction at multipoint video conferencing | |
Heikkinen et al. | UbiBroker: event-based communication architecture for pervasive display networks | |
CN101860544A (zh) | 会话启动协议消息的发送系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1176482 Country of ref document: HK |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121212 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1176482 Country of ref document: HK |