CN106464687A - 经由用户隧道通信的客户端应用程序 - Google Patents

经由用户隧道通信的客户端应用程序 Download PDF

Info

Publication number
CN106464687A
CN106464687A CN201580028392.5A CN201580028392A CN106464687A CN 106464687 A CN106464687 A CN 106464687A CN 201580028392 A CN201580028392 A CN 201580028392A CN 106464687 A CN106464687 A CN 106464687A
Authority
CN
China
Prior art keywords
data
equipment
link
connection
mobile device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201580028392.5A
Other languages
English (en)
Other versions
CN106464687B (zh
Inventor
B·S·图格
郑铉国
杨炎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN106464687A publication Critical patent/CN106464687A/zh
Application granted granted Critical
Publication of CN106464687B publication Critical patent/CN106464687B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/70Routing based on monitoring results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup
    • H04W76/15Setup of multiple wireless link connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W80/00Wireless network protocols or protocol adaptations to wireless operation
    • H04W80/06Transport layer protocols, e.g. TCP [Transport Control Protocol] over wireless

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供了用于管理向/从设备传送数据的方法、系统和装置。例如,在所述设备上运行的多个客户端应用程序可通过同一主要套接字连接向第二设备进行通信。复用模块可通过相应客户端连接从两个不同客户端应用程序接收数据。所接收的数据可包括将所述第二设备识别为目的地的标头信息。当在所述复用模块处接收到来自第一客户端应用程序的第一数据时,可创建所述主要套接字连接;并且当接收到来自第二客户端应用程序的第二数据时,可识别并再次使用所述现有的主要套接字连接。所述主要套接字连接可由所述复用模块的控制器管理。

Description

经由用户隧道通信的客户端应用程序
相关申请的交叉引用
本申请要求2014年5月30日提交的Tung等人的名称为“CLIENT APPLICATIONSCOMMUNICATING VIA A USER TUNNEL”的美国临时申请No.62/005,606(参考号P23188USP1)以及2014年9月2日提交的Tung等人的名称为“CLIENT APPLICATIONS COMMUNICATING VIAA USER TUNNEL”的美国非临时申请No.14/475,526(参考号P23188US1)的优先权。这些申请中的每一者出于所有目的全文以引用方式并入。
本申请还与以下美国临时申请有关:
2014年5月30日提交的Rauenbuehler等人的名称为“ANSWER AND HOLD WITHCLIENT AND HOST”的62/005,550(参考号P23172USP1);
2014年5月30日提交的名称为“ANSWERING A CALL WITH CLIENT THROUGH AHOST”的62/005,534(参考号P23171USP1);
2014年5月30日提交的Pollack等人的名称为“PROXIED PUSH”的62/005,565(参考号P23053USP1);
2014年5月30日提交的Circosta等人的名称为“SMS PROXYING”的62/005,336(参考号P23192USP1);
2014年5月30日提交的Schobel等人的名称为“MANAGING CONNECTIONS OF A USERDEVICE”的62/005,505(参考号P23295USP1);
2014年5月30日提交的Pollack等人的名称为“APPLICATION-LEVELACKNOWLEDGEMENTS”的62/005,565(参考号P23189USP1);
2014年5月30日提交的Pollack等人的名称为“MESSAGES WITH ATTENUATINGRETRANSMIT IMPORTANCE”的62/005,586(参考号P23190USP1);以及
2014年5月30日提交的Prats等人的名称为“PROTOCOL SWITCHING IN INTER-DEVICE COMMUNICATION”的62/005,799(参考号P22319USP1),这些申请据此出于所有目的以引用方式并入。本申请还与2014年3月14日提交的Liu等人的名称为“DYNAMIC LINKADAPTATION FOR IMPROVED LINK MARGIN”的美国临时申请61/953,591有关,该申请据此出于所有目的以引用方式并入。
背景
移动设备(例如,智能电话或平板电脑)可使用各种客户端应用程序与另一个设备通信。该另一个设备可为不同的移动设备、非移动客户端计算机,或服务器。移动设备上的多个客户端应用程序可同时与另一个设备上的多个应用程序通信。这种持续进行的通信可能难以有效管理。因此,需要提供用于在运行多个客户端应用程序时管理移动设备的通信的新系统、方法和装置。
发明内容
本发明的实施方案涉及用于管理向/从设备传送数据的方法、系统和装置。在一个实施方案中,在该设备上运行的多个客户端应用程序可通过同一主要套接字连接向第二设备进行传送。复用模块可通过相应客户端连接从两个不同客户端应用程序接收数据。接收到的数据可包括将第二设备识别为目的地的标头信息。当在复用模块上接收到来自第一客户端应用程序的第一数据时,可创建主要套接字连接。当接收到来自第二客户端应用程序的第二数据时,可识别并且再次使用现有的主要套接字连接。
根据一个实施方案,复用模块可包括控制器(例如,UTun控制器),其可管理与客户端应用程序的连接并且跟踪与其他设备的任何活动主要套接字连接。例如,与客户端应用程序的连接可为虚拟TCP套接字,其可经由内核中的TCP库管理。UTun控制器可将这些虚拟TCP套接字相关到特定设备。在各种实施方案中,UTun控制器可管理消息和数据流、标头压缩,以及加密。在一个实施方案中,链路管理器可选择特定链路以用于通过主要套接字连接将数据发送到第二设备。
其他实施方案涉及与本文所述方法相关联的系统、便携式消费者设备和计算机可读介质。
通过参考以下具体实施方式和附图,可更好地理解本发明的实施方案的实质和优点。
附图说明
图1是根据各种实施方案,由在彼此之间传送消息的一个或多个客户端、主机(例如,配套设备)和服务器构成的系统的框图。
图2是根据各种实施方案的提供推送通知服务的系统的框图。
图3示出了根据本发明的实施方案的用于传送数据的协议栈。
图4是根据本发明的实施方案,示出客户端应用程序的连接的复用和解复用的系统的框图。
图5是根据本发明的实施方案的用于从第一移动设备向第二设备发送数据的方法的流程图。
图6示出了根据本发明的实施方案的用于协议栈的流的示例性处理流程。
图7示出了根据本发明的实施方案的用于协议栈700的传出消息的示例性处理流程。
图8示出了根据本发明的实施方案的用于协议栈的传入数据的示例性处理流程。
图9A示出了根据本发明的实施方案的通用压缩标头。
图9B示出了根据本发明的实施方案的压缩UDP标头。
图10示出了根据本发明的实施方案的压缩TCP标头。
图11是根据本发明的实施方案的便携式电子设备或移动设备的框图。
具体实施方式
移动设备上的多个客户端应用程序可同时与另一个设备上的多个应用程序通信。通常,移动设备上的每个客户端应用程序将使用独立的网络连接来与另一个设备上的客户端应用程序通信。例如,每个应用程序可与另一个客户端应用程序建立网络套接字。然而,这会导致当多个应用程序正在两个设备上进行通信时,在这两个设备之间打开多个网络套接字。不同的网络套接字可使用同一无线接口,但将存在多个网络套接字。
实施方案可在这两个设备之间建立一个主要套接字连接,并且具有处理多个设备内连接的复用模块。例如,第一设备的内核可为复用模块的一部分,并且与在第一设备上运行的各种应用程序建立TCP(传输控制协议)连接。此内核可通过接口与用户隧道(UTun)控制器进行通信,而且此UTun控制器可建立与另一个设备的主要套接字连接。
各种实施方案可处理数据的流式传输和消息传送,这些数据可以不同方式进行处理。主要套接字连接中的传入数据可被解复用并发送到适当的客户端应用程序(例如,根据TCP或消息传送标头)。UTun控制器可管理不同的设备内连接的优先级,并且随后确定如何以及何时经由主要套接字连接发送出去。
在各种具体实施中,链路管理器可确定使用哪个链路层协议,例如,将哪个无线接口(诸如蓝牙或Wi-Fi)和哪个传输层协议用于链路层之间的通信。可针对某些通信禁用或以其他方式不使用重传,例如,在假定特定链路稳定时。单个加密协议可用于经由主要套接字连接发生的所有通信。控制连接可用于协商加密协议。另外,可压缩标头信息,例如针对在设备内连接中使用的标头信息。
I.简介
首先描述本发明的实施方案中可能涉及的各种设备和服务器的总体系统图。随后分节描述可管理从一个设备到另一个设备的多个客户端应用程序的通信的特定软件模块。
A.通信系统
图1是根据各种实施方案的系统100的框图。图1和其他附图仅仅例示了本文所公开的发明的实施方案或具体实施,而不应限制如权利要求书中所叙述的任何发明的范围。本领域的普通技术人员可通过本公开内容和本文所呈现的教导内容认识到附图中所示的那些实施方案或具体实施的其他变型、修改和/或替代形式。系统100中的设备可包括硬件和/或软件元件。
在一个实施方案中,系统100包括身份管理基础结构105(即,实现身份管理服务、授权服务和/或认证服务的一个或多个服务器)、内容基础结构110(即,实现语音/视频呼叫服务、消息服务和/或推送通知服务的一个或多个服务器)、移动设备115、配套设备120、用户设备125、提供者130、提供者135和通信网络140。如图所示,身份管理基础结构105、内容基础结构110、移动设备115、配套设备120、用户设备125、提供者130和提供者135各自能够与通信网络140(代表互联网、广域网(WAN)、城域网(MAN)、局域网(LAN)、无线局域网(WiLAN)、无线电接入网(RAN)、公共交换电话网(PTSN)等和/或它们的组合)通信并通过该通信网络进行通信。如图所示,移动设备115可在不利用通信网络140的情况下直接与配套设备120通信。
身份管理基础结构105可在各种实施方案中使用单个服务器计算机系统来实现,或者可包括多个服务器计算机系统、web服务器、应用服务器、网络、互连件等。在各种方面,身份管理基础结构105提供对各个实体、其在系统(诸如内容基础结构110)内或跨系统的认证、授权和特权的管理。身份管理基础结构105所提供的身份管理服务可包括多种技术和服务,诸如活动目录、身份提供者、口令管理器、访问控制提供者、单点登录(SSO)服务、开放授权、安全性令牌服务等。
在各种实施方案中,身份管理基础结构105维护用于认证受管理实体(诸如用户、组织和任何相关联设备、资源、服务、应用程序等)的身份的信息。身份管理基础结构105可使用口令、生物识别(诸如指纹)、独特行为(诸如触摸屏上的手势图案)、质疑-应答协议、一次性口令(OTP)、双向认证和其他技术验证实体是其声称的人/物。身份管理基础结构105还可管理定义实体在特定应用程序、服务或资源的上下文中能够执行的操作的授权信息。一些授权可基于与受管理实体相关联的角色、设备类型、应用程序、应用类型等。用户被授予通常与特定工作或工作功能相关的角色。身份管理基础结构105还可管理关于受管理实体的描述性信息以及如何和谁能够访问和修改该信息。
在一些实施方案中,身份管理基础结构105为受管理实体创建数字身份,包含例如实体识别信息(PII)和辅助信息。在一个方面,受管理实体可具有多个数字身份,并且每个数字身份可包含多个属性。例如,用户可具有链接到多个设备的用户标识符(例如,电话号码、电子邮件等)。除了创建、删除、修改数字身份之外,身份管理基础结构105还可管理辅助实体数据以供服务诸如内容基础结构服务110使用。
在另外的实施方案中,身份管理基础结构105可存储与用户标识符相关联的每个设备的性能。设备性能的实施例包括设备是否包括特定类型或版本的硬件,设备是否包括特定类型或版本的软件(例如,操作系统或应用程序),设备是否能够执行特定功能诸如拨打和接收电话呼叫或发送和接收短消息服务(SMS)/多媒体消息服务(MMS)消息,设备是否能够保持与其他设备的连接,诸如此类。当与同一用户标识符相关联时,与用户相关联的设备的列表可被发送到该用户的任何其他设备,诸如移动设备115和配套设备120,并存储在该设备上。当注册设备并且使之与用户标识符相关联时,身份管理基础结构105可确定并且收集设备的性能。身份管理基础结构105可周期性地更新设备的性能,例如,当设备重新注册或与由身份管理基础结构105管理的一个或多个服务通信时。
在各种实施方案中,身份管理基础结构105可接收单个用户标识符,该用户标识符用于确定与该用户标识符相关联的设备的设备标识符。在实体注册期间,为了访问由身份管理基础结构105管理的服务或资源,可组合一个或多个用户或其他标识符和唯一实体或设备标识符(UID)以生成实体或设备令牌。在各种实施方案中,通过应用散列算法(例如,SHA-0、SHA-1、SHA-2、MD5、Whirlpool或其他散列算法)来将令牌加密。为实体所生成并加密的令牌可在各种实施方案中保持不变。一旦身份管理基础结构105已经生成并加密令牌,就可将令牌发送回实体。在一些方面,实体可随后将令牌分发给由身份管理基础结构105管理的服务或资源,或者其他第三方服务,用于与实体在那些受管理服务或资源处的认证、授权、记账等或第三方向实体进行可信内容传递有关的各种目的。
内容基础结构110可由身份管理基础结构105保护且/或能够被由此身份管理基础结构管理的实体访问。内容基础结构110可在各种实施方案中使用单个服务器计算机系统来实现,或者可包括多个服务器计算机系统、web服务器、应用服务器、网络、互连件等。
内容基础结构110可向移动设备115、配套设备120和用户设备125以及向其他设备和实体提供内容。内容的实施例包括文本消息、多媒体消息、即将发生的日历事件、音频/视频呼叫(例如,使用VOIP)或远程服务器上的新数据的通知。在一个实施方案中,内容可来自由身份管理基础结构105管理的一个或多个源,或由内容基础结构110直接提供。在其他实施方案中,内容可来自其他源。例如,内容可来自移动设备115、配套设备120、用户设备125和提供者130及135中的任一者。
在另一个实施例中,可从其他源诸如互联网、蜂窝网络、公共交换电话网等接收内容。内容基础结构110可随后将内容路由到移动设备115、配套设备120、用户设备125和提供者130及135。在一个实施方案中,内容基础结构110可通过基础结构路由从蜂窝网络接收或去往蜂窝网络的SMS消息。在另一个实施方案中,内容基础结构110可通过基础结构路由从公共交换电话网接收或去往公共交换电话网的语音呼叫。
在一些实施方案中,发送到移动设备115的内容可被转发到配套设备120以供传送到移动设备115。配套设备120还可代表移动设备115起作用并发送信号。在这些实施方案中,配套设备120充当主要或中间设备,移动设备115充当被代理设备。内容基础结构110可协调配套设备120如何以及是否能够代表移动设备115起作用并发送信号。
在一些实施方案中,内容基础结构110可在适当时向不止一个设备发送内容。用户可与移动设备115和配套设备120两者相关联。内容基础结构110可将内容路由到移动设备115和配套设备120两者,使得VOIP电话呼叫在这两个设备上响铃或使消息出现在安装于这两个设备上的相同应用程序的收件箱中。在其他实施方案中,内容被发送到仅一个设备,例如,配套设备120,该配套设备可将呼叫转发到移动设备115。当呼叫正被转发到设备时,电话号码可识别哪个设备将接收此电话/视频呼叫,并且该设备可视情况中继呼叫。
在一个方面,内容可包括一项或多项数据,诸如如上文论述的设备标识符(或令牌)和有效载荷。可在来自提供者(例如,提供者130和/或135)、同一用户的设备(例如,来自移动设备115或配套设备120)或另一个用户的设备(例如,用户设备125)的内容中连同提供者设法使用内容基础结构110传送的任何有效载荷一起提供设备令牌。设备令牌可包含使内容基础结构110能够定位上面安装了特定服务或客户端应用程序并且被注册以接收内容的设备的信息。有效载荷可包括在服务器应用程序处接收的新信息或对将在哪里找到该信息的标引。有效载荷还可包括指定特定服务或客户端应用程序将如何向用户提醒此新信息的属性列表。
提醒可以多种形式出现。在一个实施例中,可将内容作为提醒消息或其他视觉表示(诸如与应用程序图标相关联的标志)来向用户显示。还可通过在显示提醒或标志时播放声音来宣布内容的可用性。当向用户通知应用程序或服务具有消息、事件或其他内容数据给他们时,用户可启动该应用程序或服务,并通过查看内容、查看推送通知中包含的信息、使客户端应用程序检索标引的信息等来看到详情。用户还可选择忽略通知,在这种情况下应用程序不会被激活。
如上所述,内容基础结构110可包括除了路由内容之外或代替路由内容的推送通知服务,其实现给予用户设备上的推送提供者的客户端应用程序让用户知道新内容在一个或多个服务器应用程序上可获得、在该设备上或正在传入的能力的机制。如本文所使用的推送提供者(或简称为提供者)可指使用推送通知基础结构转发和/或传送信息的实体。一般来讲,当用户可使用新数据时,软件开发者(充当提供者)在其服务器软件中发起通知。提供者通过持久且安全的信道将其服务器软件与内容基础结构110连接。身份管理基础结构105可确保提供者被认证(例如,提供者是提供者所宣称的人)并获得授权以可信方式连接并利用内容基础结构110。
在监视预期用于其客户端应用程序的传入数据时,当应用程序的新数据到达时,提供者在一方面准备通知并通过其信道连接将通知发送到内容基础结构110,该内容基础结构将通知推送到推送消费者或目的地目标设备。身份管理基础结构105还可确保消费者或目的地目标设备被认证并获得授权来以可信方式连接到并且利用内容基础结构115的服务。推送消费者(或简称为消费者或目的地)可指被指定为接收使用内容基础结构110转发和/或传送的信息的实体。虽然上文出于简单起见将提供者描述为内容或可用内容通知的发起者,但提供者在一种情况下可又变成消费者,反之亦然。另外,移动设备115可为配套设备120的内容提供者,反之亦然,并且提供者130向提供者135提供内容,反之亦然。
在内容基础结构110的操作的一个实施例中,一个或多个服务器计算机提供、调配、管理并且以其他方式操作推送通知服务,以在提供者130、提供者135、移动设备115、配套设备120和用户设备125之间传播信息。其中每一者可与内容基础结构110建立至少一个持久连接(例如,被认可并加密的互联网协议(IP)连接),以经由这一持久连接发起和/或接收内容。如上所述,其中每一者及其连接可由身份管理基础结构105认证并授权。
如果内容基础结构110针对与用户设备相关联的应用程序传送的通知在应用程序未运行时到达,则此用户设备可提醒用户该应用程序有数据在等它,如上文论述。内容基础结构110还可提供默认服务质量部件,该部件提供存储并转发性能。如果内容基础结构110尝试传送通知但目标设备离线,则可将通知存储一段有限的时间,并且在设备变得可用时将通知传送到设备。在一些实施方案中,存储特定应用程序的所有近期通知。在一些实施方案中,存储特定应用程序的仅一个近期通知。例如,如果在设备离线时发送了多个通知,则每个新通知使先前的通知被丢弃。这种仅保持最新通知的行为被称为合并通知。在其他实施方案中,如果设备长时间保持离线,则可丢弃一直为其存储的任何通知。
提供者130和提供者135可在各种实施方案中使用单个服务器计算机系统来实现,或者可包括多个服务器计算机系统、web服务器、应用服务器、网络、互连件等。在各种方面,提供者130和提供者135提供在移动设备115、配套设备120和用户设备125上运行的客户端应用程序,以及提供客户端应用程序能够连接的一个或多个服务的服务器应用程序。提供者130和提供者135可设法向移动设备115、配套设备120和用户设备125中的一者或多者能够访问的客户端应用程序通知该信息可供其相应用户获得。
在一个方面,推送提供者是维护被配置为与移动设备115、配套设备120和用户设备125中的一者或多者上的一个或多个客户端应用程序交互的服务器软件的软件开发者、公司或组织。提供者130和提供者135各自在监视预期用于其客户端应用程序的传入数据时,通过持久且安全的信道与内容基础结构110连接。在一个实施方案中,提供者130和提供者135通过例如使用流式传输TCP套接字设计结合二进制内容提供高速高容量接口的二进制接口来连接。该二进制接口可为同步或异步的。对于每个接口,TLS(或SSL)可用于建立安全通信信道。
移动设备115、配套设备120和用户设备125可各自被实施为单个设备、单个计算机系统、多个设备或多个计算机系统。在各种方面,尽管为了方便起见,将移动设备115、配套设备120和用户设备125以不同方式标注,但它们可各自实施为移动设备、可穿戴设备或其他移动设备(例如,膝上型电脑、掌上电脑、移动电话、智能电话、多媒体电话、便携式媒体播放器、GPS单元、移动游戏系统等)。例如,可穿戴设备可为佩戴于手腕上的设备、夹到或别到用户衣服上的设备、具有可佩戴在用户颈部周围的挂带或链子的设备、头带设备、眼镜,或可紧固到用户身体或衣服上的任何其他设备。
另外或替代地,配套设备120和用户设备125可如上所述那样实施,以及被实施为个人计算机系统、大型机、服务器计算机系统、云服务等。移动设备115、配套设备120和用户设备125可包括提供通信连接的多种技术。连接技术的一些实施例包括有线连接(例如,以太网、光纤、数字用户线路(DSL)等)和无线连接(例如,WiFi、蓝牙、WiMax、3G、4G、LTE等)。
在一个方面,移动设备115、配套设备120和用户设备125托管与一个或多个提供者(例如,提供者130和135)所提供的一个或多个服务器应用程序通信的多种客户端应用程序中的一者或多者。这些客户端应用程序可包括特定于设备的预期功能的应用程序(诸如电话应用程序或GPS应用程序),以及电子邮件客户端、更新/升级客户端、新闻客户端、网页/博客客户端、播客客户端、社交网络客户端,或可能发送通知消息的其他类型的客户端应用程序。这些客户端应用程序可向用户表示使用内容基础结构110接收到的一条或多条通知消息。可采用由设备的操作系统、图形用户界面工具包和/或应用程序本身定义的一种或多种方式向用户表示通知。通知的表示的一些实施例包括新电子邮件指示符、新新闻条目指示符、新播客指示符、社交网络朋友的在线状态的变化等。在各种实施方案中,在设备上进行操作的另一个服务可为客户端应用程序处理通知。
如上文论述,移动设备115、配套设备120和用户设备125可在客户端应用程序初始与内容基础结构110连接以便接收推送通知时接收标识符(或设备令牌)。提供者130和135可使用该令牌,或包括该令牌连同任何内容或通知消息,使得可使用内容基础结构110将该令牌适当地转发回设备。在各种实施方案中,为了确保信任,提供者在每当其与内容基础结构110连接时传送此令牌。内容基础结构110可解密设备令牌,并且使用身份管理基础结构105验证该令牌是为目的地设备生成的。在一个实施方案中,为了进行验证,内容基础结构110确保令牌中包含的设备标识符匹配在设备向身份管理基础结构105注册时使用的设备证书中的设备标识符。
参考图1所示的系统100的操作,在一个实施方案中,该操作可为从提供者130向配套设备120转发或以其他方式传送通知消息,如路径145所示。在各种实施方案中,提供者130在与内容基础结构110初始连接时发送认证安全套接字层(SSL)证书。身份管理基础结构105可认证并授权提供者130作为推送通知的注册且授权的发送者。此SSL证书还可被配置有额外用户定义数据。身份管理基础结构105可利用此额外用户定义数据来以可信方式识别提供者130。在其他实施方案中,可使用其他安全通信协议(例如,密码协议,诸如传输层安全性(TLS)等)。
在一些实施方案中,在提供者130与特定应用程序(例如,电子邮件、Facebook或Twitter)相关联并且在SSL证书内包括额外识别(例如,用户定义)数据的情况下,身份管理基础结构105可不仅认证提供者130,而且为提供者130和利用内容基础结构110的应用程序自动调配推送服务。换句话讲,身份管理基础结构105可自动从认证证书中提取任何额外识别数据,并且使内容基础结构110将额外识别数据(或该数据的一部分)附接到内容(例如,推送通知消息)。在一些实施方案中,额外识别数据可识别用户可能经由内容基础结构110订阅的与提供者130(或提供者130的应用程序)相关联的主题或源。因此,可利用认证证书中的此额外信息来将内容定向到已经订阅该主题/源或请求关于该主题/源的信息的设备。以此方式,自动地为提供者130调配推送服务。
一旦提供者130被信任,内容基础结构110就从提供者130接收通知消息。如上文论述,通知消息可包括设备令牌。在已经从提供者130接收到通知消息之后,内容基础结构110确定通知消息的目的地。在各种实施方案中,基于连同通知消息一起发送的设备令牌来确定目的地。在一些实施方案中,不一定将目的地信息作为令牌的一部分来发送。通过从设备令牌确定或提取目的地或者以其他方式获得内容的目的地信息,内容基础结构110可随后确定目的地是否“在线”或以其他方式可访问。
在一个实施方案中,如果目的地在线,则内容基础结构110可随后将通知消息路由到目的地配套设备120,由路径150示出,例如,经由配套设备120所保持的与内容基础结构110的持久连接。如果目的地“离线”或以其他方式不可由内容基础结构110访问,则可存储内容并在稍后时间重试递送。内容基础结构110可另外或另选地将通知消息路由到移动设备115,由路径155示出,例如,经由配套设备120所保持的与内容基础结构110的持久连接。内容基础结构110因此可将内容路由到单个设备、同时路由到多个设备,或路由到一个设备以递送给另一个设备。
B.内容基础结构
图2是根据各种实施方案的提供推送通知服务的系统200的框图。系统200可在各种实施方案中使用单个服务器计算机系统来实现,或者可包括多个服务器计算机系统、web服务器、应用服务器、网络、互连件等。系统200可在各种实施方案中被实施为图1的内容基础结构。
具体地讲,图2示出了在设备之间(例如在提供者与移动设备之间,或在一个用户的发送设备与另一个用户的接收设备之间)转发内容(例如,通知消息和电话/视频呼叫)的各种实施例。在这些实施例中,系统200被示为具有身份服务(IDS)205、推送通知服务(PNS)220以及用户设备250,其中身份服务(IDS)具有接口210和身份管理服务器(IMS)220,推送通知服务(PNS)具有提供者接口225、具有存在信息235的网关230、具有连接信息245的设备接口240。每个服务可使用硬件和/或软件元件实现。
在一个方面,IDS 205可被实施为身份管理基础结构105或形成其一部分。IDS 205可在各种实施方案中使用单个服务器计算机系统来实现,或者可包括多个服务器计算机系统、web服务器、应用服务器、网络、互连件等。接口210可使得实体(例如,移动设备115或提供者130)能够连接(例如,经由网络)以利用IDS 205所提供的服务。接口210可整合负载平衡和其他连接管理技术,从而允许实体与身份管理服务器215通信。
在一个实施方案中,实体将在初始连接后经由接口210接收到的信息(诸如认证证书)发送到IDS 205或发送到由IDS 205管理的服务、资源或应用程序(例如,PNS 220)。身份管理服务器215可将发送该信息的设备、用户或组织认证并授权为注册并授权的实体。可为此设备、用户或组织授权或调配一种或多种类型的服务(例如,呼叫服务、即时消息服务、聊天服务、通知服务等)。为了支持PNS 220的安全模型,可要求实体及其设备拥有某些证书、证书管理机构(CA)证书或令牌。
在一个实施方案中,每个内容提供者使用唯一的提供者证书和私有密码密钥来验证其与PNS 220的连接。此证书可由身份管理服务器215调配并且识别提供者和/或由该提供者发布的特定主题。一般来讲,该主题是客户端应用程序的程序包ID。提供者可任选地希望使用PNS 220所提供的公共服务器证书来验证提供者所连接到的服务。在各种方面,提供者在注册以认证提供者已经连接到的服务时,使用由身份管理服务器215传递给它的公共服务器证书。
身份管理服务器215还可向希望接收内容的每个设备发布唯一的私有密钥和证书,设备使用该唯一私有密钥和证书来向身份管理服务器215认证其自身并建立与PNS 220的连接。设备通常在设备激活期间从身份管理服务器215获得设备证书和密钥,并将其存储在密钥链中。设备还保持其特定的设备令牌,设备在服务连接过程期间接收该令牌。利用PNS 220的每个客户端应用程序负责将此令牌传送到其内容提供者。
身份管理服务器215可存储用于验证连接以及提供者和设备的身份所需的任何证书、CA证书和密码密钥(私有和公有)。
在该实施例中,一旦实体被信任,系统200就允许该实体利用PNS 220所提供的推送通知服务。PNS 220可在各种实施方案中使用单个服务器计算机系统来实现,或者可包括多个服务器计算机系统、web服务器、应用服务器、网络、互连件等。实体可为希望与PNS 220连接(例如,经由网络)的提供者或其他通知提供者。如上文所述,在一个实施方案中,提供者接口225提供允许推送通知提供者与PNS 220通信的高速高容量接口。提供者接口225可整合负载平衡和其他连接管理技术,从而允许实体与PNS 220通信。虽然提供者接口225被示为链接到网关230,但提供者接口225可整合到网关230或设备接口240中。如上文论述,在各种实施方案中,用户设备可为内容的提供者,并且可为使用PNS 220路由的内容的目的地。
网关230可在各种实施方案中使用单个服务器计算机系统来实现,或者可包括多个服务器计算机系统、web服务器、应用服务器、网络、互连件等。网关230可确定经由提供者接口225或设备接口240接收的内容(例如,推送消息)的目的地。在各种实施方案中,网关230可基于存在信息235来确定目的地。在一个方面,使用设备的推送令牌保持存在信息235。因此,当在网关230处接收到涉及特定推送令牌的推送通知时,网关230可执行查找以确定是否存在与该推送令牌相关联的TCP套接字描述符。该套接字描述符可提供TCP套接字信息和传输推送通知所需的其他联网信息。在各种方面,存在信息235包括被认证实体和其与PNS 220的连接之间的映射。这些连接可由PNS 220用来递送内容、通知等或以其他方式与实体通信。每个映射可指示至少一个实体和该实体的至少一个连接机制,诸如网络套接字连接或其他连接标识符。例如,映射可通过设备令牌识别目的地设备或通过提供者标识符识别提供者。可在每个映射中包括额外信息以促进与实体的设备的通信。
在一些实施方案中,为了扩展来自越来越多的利用PNS 220的服务的用户、设备和提供者的连接的处理,可根据至少一个称为区域的分组或逻辑分区来管理存在信息235中的设备连接(或设备本身)。由网关230执行的功能可被分区到多个服务器,这些服务器被动态分配来处理这些分组或区域。例如,一个或多个服务器可能在一段时间内管理到被分配到一个区域的目的地的递送,并且随后被切换或重新配置为在稍后时间管理到被分配到不同区域的目的地的通知递送。这些服务器中的每一者还可包括用于将内容路由到与内容的目的地的特定区域相关联的其他服务器的路由信息。因此,当在一个服务器处接收到内容时,确定被设计为处理预先确定区域的另一个服务器并且可将内容转发到适当的服务器。在一个方面,由网关230执行的功能可被分区到多个服务器以处理对应的设备连接(例如,设备接口240)。
在各种实施方案中,网关230链接到设备接口240。设备接口240提供用以与用户设备250通信的接口。设备接口240可整合负载平衡和其他连接管理技术,从而允许设备与PNS220通信。虽然设备接口240被示为链接到网关230,但设备接口240可整合到网关230或提供者接口225中。
在这些实施例中,设备接口240允许在设备接口240连接到用户设备240时生成存在信息235。用户设备240可在建立持久连接时向PNS 220断言其存在。设备接口240随后在连接信息245中生成设备/连接映射。设备接口240可将连接信息245反向传播到网关230,从而允许网关230在存在信息235中生成设备/连接映射。在一个方面,存在信息235包括设备/信使映射或链接,从而允许网关230确定充当连接到用户设备250的设备接口240的适当信使。该信使利用连接信息245(包括任何设备/连接映射或链接),使得信使能够确定特定于用户设备250的可用于将内容递送到用户设备250的连接信息。在另一个方面,存在信息235和连接信息245可基本上相同,这是因为包括给定设备和它与PNS 220的连接之间的对应关系。
在各种实施方案中,希望经由PNS 220接收内容的设备在与设备接口240形成初始连接时或直接向IDS 205发送认证信息。身份管理服务器215可直接或间接地接收认证信息,随后将设备或其相关联用户或组织认证并授权为注册和授权的实体。一旦设备被信任,就告知PNS 220,然后PNS220管理在该设备与PNS 220之间建立的任何连接(诸如与连接信息245中的设备接口240的连接)。连接信息245中的可在设备接口240处获得的设备信息可被周期性地反向传播到网关220以生成或更新存在信息235。
当设备初始与PNS 220连接时,PNS 220对设备进行调配。在各种实施方案中,为设备调配区域,如上所述。不管每个设备的特定区域分配如何,设备可出于各种原因丢失其与设备接口240的连接。例如,连接可能因为蜂窝信号或wi-fi信号丢失、停电或者因为移动设备已经改变地理位置等等而丢失。在其他方面,与持久连接相反,连接可被中断,以便省电或实现其他能效指标。
当用户设备250尝试重新连接到PNS 220时,用户设备250可与充当设备接口240的任何信使连接。在设备连接被分配给至少一个分组或区域的实施方案中,设备接口240可为连接调配网关230的一个或多个服务器,这些服务器被分配来处理连接设备的区域。例如,如果设备接口240连接到被分配给区域1的用户设备250,则设备接口240可为连接调配负责管理区域1的一个或多个服务器。设备接口240可随后将用户设备250的设备信息反向传播到负责管理区域1的这一个或多个服务器。以类似方式,设备接口240可与不同区域的服务器形成连接以反向传播与这些相应区域相关联的设备的特定设备信息,从而确保无论用户设备250在哪里或如何连接到PNS 220,存在信息235都是最新的并且可用以确定如何路由内容。在一些实施方案中,设备接口240可特定于无线运营商或互联网服务提供商(ISP),从而允许PNS 220支持特定于多个第三方实体的协议或物理连接。
根据一个实施例,当网关230从提供者接口225接收内容时,网关230基于存在信息235中它的映射来将从提供者接口225接收的内容转发到设备接口240。设备接口240可将从网关230接收的内容递送到用户设备250,连接信息245中保持了针对该用户设备的关于持久连接的信息。
在从网关230接收到内容时,设备接口240可在连接信息245中执行查找或以其他方式查询其设备连接,并将从网关230接收的内容发送到适当设备,例如,通过与用户设备250相关联的持久连接。在一个方面,设备接口240检查与待递送的内容相关联的设备令牌,并确定是否在设备令牌与设备接口240在连接信息245中管理的连接之间找到匹配。设备接口240可使用由具有给定设备令牌的设备建立的连接递送内容。
在操作的一个实施例中,用户设备250订阅由提供者管理的特定应用程序,并且希望经由PNS 220接收该应用程序的通知消息。因此,用户设备250经由通信网络直接呼叫或利用PNS 220呼叫提供者,并将其设备令牌传输到提供者。设备令牌或其传输可不仅包括设备的识别信息,而且还可包括设备的UID与其区域标识符的加密组合,从而允许PNS 220根据分配给该区域的适当资源来为设备调配连接信息。
当提供者向用户设备250上的特定应用程序发送通知消息时,提供者使用提供者接口225连接到PNS 220并将消息发送到网关230。即使用户设备250与特定区域相关联,提供者也不一定需要连接到PNS 220的任何特定网关来将通知消息成功地推送到用户设备250。例如,如果网关230从提供者接口225接收到内容并且此内容中包含设备令牌,则网关230将查看令牌,并将消息路由到PNS 220的适当服务器(其可将消息路由到设备接口240或PNS 230的另一个信使)或将消息直接路由到设备接口240。
在一些实施方案中,如果网关230是指定网关,则网关230基于存在信息235中它的设备/信使映射来将消息发送/转发到设备接口240。设备接口240随后能够在连接信息245中查找其连接,并通过由设备建立的与设备接口240的持久连接将消息发送到设备。概括地讲,在PNS 220接收具有特定目的地的消息的情况下,PNS 220的网关使用在设备连接到PNS220时建立的设备/信使映射将该消息直接转发到PNS 220的适当信使。在另外的实施方案中,网关230可基于存在信息235中它的设备/连接映射来将消息直接发送/转发到用户设备250。网关230可从设备已经与其中每一者建立连接的各种源生成此映射信息。
II.移动设备上的通信栈
来自设备(例如,移动设备115或配套设备120)的数据通信可通过各种协议(例如,802.11协议、蓝牙协议和近场通信(NFC)协议)发生。为了确定使用哪个协议,设备可包括用于确定将针对特定应用程序使用哪个协议并且因此应发送哪个驱动器路径数据的链路管理器。较低层级的链路层还可执行选择特定协议来使用。另外,用户隧道(UTun)控制器可协调与各种客户端应用程序的多个虚拟连接以经由与另一个设备(例如,与配套设备120通信的移动设备115)的共用套接字连接进行通信。
图3示出了根据本发明的实施方案的用于传送数据的协议栈300。可省略协议栈300中的各种模块,或添加其他模块。这些软件模块可在同一处理器或不同处理器上运行。虽然仅列举了一些通信协议,但可使用许多无线协议。例如,蓝牙协议可包括基本速率(BR)、增强数据速率(EDR)和低能量(LE)选项。蓝牙BR/EDR还称为经典蓝牙。
在一些实施方案中,设备(例如,移动设备115)上的客户端应用程序305可请求将数据发送到另一个设备(例如,配套设备120)。请求可经由任何合适的标识符(例如,账户名称、IP地址、MAC地址等)指定该另一个设备。请求可在设备确定另一个设备在通信内(例如通过初始信令诸如握手确定)之前或之后。数据(例如,在消息或流中)可经由任何合适的应用层协议,诸如HTTP、RTP、SMTP、MGCP等发送。该另一个设备可为任何设备,包括用户的另一个设备。能够响应于用户的动作、可在相同或其他应用程序(例如,日历应用程序)中的内部事件(例如,基于时间或其他准则)或外部事件(例如,响应于来自另一个设备的消息)来做出请求。事件的一个实施例为同步事件。
在发送数据之前,客户端应用程序305可提交打开套接字请求(例如,在流式传输实施例中)。套接字请求可使用来自身份服务(IDS)框架315的信息,其可提供另一个设备的地址(或其他类型的ID)。例如,客户端应用程序305可知道第二设备的账户信息(例如,不同或相同用户的账户信息),并且IDS框架315可存储用于特定账户的设备ID列表。IDS框架315可与身份管理基础结构105通信以获得列表。因此,IDS框架315可存储或以其他方式获得用户已经向ID基础结构105注册的所有设备的设备ID(例如,地址)。例如,IDS框架315可经由IDS守护进程向ID基础结构105请求以获得设备ID。在一个具体实施中,可向内核310做出套接字请求。
在即时消息实施例中,对发送数据的请求可去往IDS框架315以获得设备ID,该设备ID可被发送到消息控制器318和用户隧道(UTun控制器320)。UTun控制器可在设备ID不是IP地址时建立设备ID与IP地址(例如,虚拟IP地址)之间的映射。可在消息控制器318(其向套接字分配设备ID)与内核310(其可向套接字分配地址,诸如虚拟IP地址)之间创建套接字。UTun控制器可用于在消息控制器318与内核310之间创建套接字连接。以此方式,来自客户端应用程序305的发送日期请求不需要包括设备ID,但可指定账户,其可接着由IDS框架315使用该账户的已知设备及其性能(例如,如果该请求需要某些性能)来交叉参考。假定可获得设备ID,则在创建套接字之前不需要发生配对。
在各种实施方案中,IDS框架315可从客户端应用程序305接收另一个设备处的特定端口/服务,基于从ID基础结构105获得的信息确定端口/服务,或从在请求中发送的令牌确定端口/服务。IDS框架315可接着将设备ID和其他标头信息传送到消息控制器318和/或UTun控制器320。IDS框架315和UTun控制器320可经由跨进程通信(XPC)通信。UTun控制器320可为IDS守护进程的一部分,并且可从ID基础结构105接收设备ID。
如上所述,UTun控制器320可创建对应于实际设备地址的虚拟地址,其中虚拟地址可用于创建虚拟套接字。虚拟套接字还可使用任何设备ID(例如,设备的实际地址或其他ID)来创建。例如,可针对客户端应用程序305与内核310之间的通信创建套接字(例如,在流式传输上下文中),其中内核310可对于各种客户端应用程序使各种套接字打开。内核310可对于另一个设备具有去往UTun控制器320的单个连接,并且将来自各种客户端应用程序的数据复用到单个连接中。除此之外或作为替代,例如,如果在内核310与UTun控制器320之间针对另一个设备的各种客户端应用程序存在多个套接字,UTun控制器320还可执行复用。传入数据可被解复用以用于发送到目的地客户端应用程序。
又如,可在内核310与消息控制器318之间创建套接字(例如,在即时消息上下文中),其中可针对每个目的地设备创建套接字,其中用于同一设备的不同套接字有可能具有不同优先级。因此,特定虚拟套接字可与特定设备和特定优先级(例如,高和低)相关联。消息控制器318可具有与各种客户端应用程序的各种连接。因此,消息控制器318可提供复用/解复用性能。
UTun控制器可创建与另一个设备的主要套接字。当UTun控制器320使用与第二设备相关联的虚拟连接接收数据时,其可接着将虚拟连接映射到主要套接字以用于与另一个设备通信。用于另一个设备的所有数据可接着通过主要套接字发送出去。用于虚拟套接字的虚拟地址可被传回到客户端应用程序315,例如,在流上下文中。在一个实施方案中,涉及内核310的虚拟套接字是TCP套接字。虚拟地址可具有与规则地址(例如IPv6地址)相同的格式。复用模块可包括内核310、消息控制器318和UTun控制器320的任何组合。
当客户端应用程序发送数据时,客户端应用程序305可使用虚拟套接字来将数据发送到内核310。例如,数据可经由虚拟套接字使用TCP来发送。内核310可实现用于与UTun控制器320通信的UTun接口。内核310将把数据(例如,具有TCP标头)和识别虚拟地址的虚拟套接字传到UTun控制器320,其将接着使用虚拟地址来解析设备地址以用于确定设备套接字。
当经由设备套接字发送数据时,链路管理器325可确定使用哪个链路。链路可为无线接口协议(例如,蓝牙或Wi-Fi)、传输协议(例如,TCP、UDP等)和目的地设备的特定组合。以此方式,UTun控制器320不需要知道正如何发送数据,而是可仅将数据发送到链路管理器325。
在各种实施方案中,链路管理器325的确定可针对每个数据包、每组数据包、每个设备套接字来做出,并且可在各个数据包之间变化。链路管理器325可接着选择用于发送数据的链路。在所示的实施例中,Wi-Fi链路330提供用于使用一个或多个Wi-Fi协议进行通信的软件驱动器,并且BTLE链路335提供用于使用蓝牙LE进行通信的软件驱动器。Wi-Fi链路330与Wi-Fi硬件360通信,并且BTLE链路335与BTLE硬件355通信。Wi-Fi链路330可用于各种Wi-Fi协议,诸如基础结构Wi-Fi。在一个实施方案中,链路管理器325可尝试所有链路以确定任何链路是否可接触另一个设备,并且接着使用具有最高预先确定等级或动态等级的连接链路。
硬件350至360可与被分配给各种设备的链路通信。例如,链路330、335和340可被分配用于与第二设备通信。另外,被分配用于与第三设备通信的其他链路也可与硬件350至360通信。当特定硬件接收数据时,软件可识别特定发送设备并且接着确定对应链路,例如,使用标头信息来确定对应于发送设备和传输协议的链路。
在一些实施方案中,组合链路340可包括用于与链路管理器325通信的接口344和选择特定协议来使用的选择器348。这些协议可与链路管理器325可用的协议相同或不同。选择器348可执行与链路管理器325类似的功能这是因为选择特定链路。然而,链路管理器325和选择器348可使用不同准则来确定使用哪个链路。例如,链路管理器325可确定使用组合链路340,并且选择器348可接着确定将使用BTLE硬件355。硬件可包含在同一芯片上或分开的芯片上。
一个或多个协议可仅经由组合链路340可用,诸如经典蓝牙硬件350。链路管理器325和选择器348可使用各种准则用于确定使用哪个链路,诸如链路的功率使用率、链路的速度(例如,实时数据速率)和链路的信号强度。针对选择链路进行优化的目标可以是以最低可能能量提供最小数据速率。关于用于选择链路和硬件的方法和准则的其他细节可在2014年3月14日提交的名称为“Dynamic Link Adaptation For Improved Link Margin”的美国临时申请No.61/953,591(参考号P22725)中找到,该申请以引用的方式并入。
III.复用
如上文所述,来自各种客户端应用程序的多个连接可通过单个主要套接字连接发送。例如,客户端应用程序可使用TCP套接字并且以客户端应用程序被配置为要采用的正常方式发送数据。但是,TCP连接可被组合到主要套接字中,该主要套接字可通过单个UDP链路或通过用于实现该主要套接字的各种链路进行通信。
A.一般化复用
图4是根据本发明的实施方案,示出客户端应用程序的连接的复用和解复用的系统400的框图。系统400包括设备410和设备420。主要套接字连接430处理设备410与设备420之间的数据通信。
两个客户端应用程序411和412被示为在设备410上运行。复用/解复用模块415具有与应用程序411的连接413,并且具有与应用程序412的连接414。在一个实施方案中,连接413和414可为TCP套接字。两个客户端应用程序421和422被示为在设备420上运行。复用/解复用模块425具有与应用程序421的连接423,并且具有与应用程序422的连接424。
在各种实施方案中,复用/解复用模块415可包括内核(例如,310)、消息控制器(例如,318)和用户隧道(UTun)控制器(例如,320)或它们的任何组合。例如,内核可建立与客户端应用程序的TCP套接字。又如,消息控制器可建立与客户端应用程序的消息连接。
对于从应用程序411向应用程序421发送数据的实施例来讲,应用程序411可请求用于设备420的套接字。如上所述,IDS框架可用于确定能够用于创建连接413的设备ID。在该实施例中,连接413专用于与设备420的通信。在一个具体实施中(例如,在即时消息上下文中),连接413可包括两个子连接:第一持久子连接(例如,在客户端应用程序中的消息控制器之间)和第二设备特定连接(例如,在消息控制器与UTun控制器之间,其可经由内核)。
复用/解复用模块415可接收数据连同识别目的地的信息(例如,目的地址和目的端口,其指定设备420上的特定应用程序)。复用/解复用模块415可例如使用虚拟地址与设备ID之间的映射来解析虚拟套接字与主要套接字连接430之间的任何映射。复用/解复用模块415可包括用于确定将哪个链路用于通过主要套接字连接430发送数据的链路管理器。来自相同或不同连接的不同数据可通过不同链路发送,同时仍使用主要套接字连接430。根据选择了哪个链路,可以各种形式的数据包发送数据。
复用/解复用模块425可沿主要套接字连接430接收数据包。第一层标头信息可用于识别数据包去往哪个链路,例如,标头信息可将设备410识别为被分配给特定链路的发送设备。可丢弃第一层标头信息。
第二层标头信息可用于识别客户端应用程序(例如,421),并且因此复用/解复用模块425可跨适当连接(例如,423)将数据包发送到指定的应用程序(例如,421)。在一些实施方案中,可例如在消息传送上下文中使用多层标头信息。例如,第二层可指定内核(例如,在复用/解复用模块425中)与消息控制器之间的特定套接字连接。随后,第三层标头信息可指定特定应用程序。因此,每个接续层标头信息可用于确定哪个套接字发送剩余有效载荷或套接字将剩余有效载荷发送到哪里。另外,每层标头信息可用于各种传输层协议中的任一者(例如,TCP、UDP或消息传送协议)。
在一个实施方案中(例如,针对流),可在设备410与设备420之间存在单个UDP链路。可从任何端口(例如,任何客户端应用程序)存在多个套接字,并且可通过这一个UDP链路来发送数据。在一个具体实施中,在UDP标头中不使用端口(仅设备到设备),并且TCP标头可指定端口。在其他实施方案中,各种链路可同时用于实现主要套接字连接430。
图5是根据本发明的实施方案的用于从第一移动设备向第二设备发送数据的方法500的流程图。方法500可由第一移动设备执行,该第一移动设备具有用户界面、一个或多个无线接口以及耦接到这一个或多个无线接口和用户界面的一个或多个处理器。
在框510处,复用模块通过第一连接接收第一数据。第一数据具有从在所述一个或多个处理器上执行的第一客户端应用程序发送的有效载荷,并且第一数据包括将第二设备识别为第一数据的目的地的第一标头信息。在消息传送实施例中,消息控制器(其可为复用模块的一部分)可从第一客户端应用程序接收消息。如果数据没有包括此类标头信息或如果标头未根据消息传送协议格式化,则消息控制器可根据消息传送协议添加标头信息。在流实施例中,可针对第二目的地建立套接字连接,并且可针对此套接字指定数据流,从而将第二设备识别为目的地。
在框520处,复用模块识别第一移动设备与第二设备之间的主要套接字连接。在一个实施方案中,如果尚未存在主要套接字连接,则复用模块可创建主要套接字连接。所述识别将为主要套接字连接的创建的一部分。在另一个实施方案中,主要套接字连接可已经存在,并且可通过搜索打开的套接字列表以查找与第二设备匹配的套接字来进行识别。
在框530处,使用主要套接字连接将第一数据传输到第二设备。可根据各种链路(例如,使用不同协议和接口)传输第一数据。例如,可例如使用Wi-Fi和合适的传输层协议(例如,UDP或TCP)经由网络传输第一数据。在另一个具体实施中,可使用对等通信(例如,使用蓝牙协议)传输第一数据。在一个实施方案中,可将第一数据作为不同的数据包来发送,其中通过不同的链路发送不同的数据包。根据所使用的链路,可添加额外的标头信息。
在框540处,复用模块接收(通过第二连接)第二数据,该第二数据具有从在所述一个或多个处理器上执行的第二客户端应用程序发送的有效载荷。第二数据包括将第二设备识别为第二数据的目的地的第二标头信息。第二应用程序不同于第一应用程序,并且可独立于第一应用程序来发送数据。第二数据和第一数据可具有相同形式,例如,两者均为消息或两者均为流的一部分。
在框550处,复用模块识别到在第一移动设备与第二设备之间存在主要套接字连接。复用模块可例如使用数据结构(诸如表)跟踪与其他设备的现有主要套接字连接。例如,复用模块可搜索数据结构,该数据结构识别与特定其他设备相关联的活动主要套接字连接。如果第二标头信息识别与活动套接字相关联的第二设备,则此套接字可被识别为已经存在,并且不需要打开新的套接字。
在框560处,使用主要套接字连接将第二数据传输到第二设备。因此,第一数据和第二数据是使用相同套接字传输的,即使它们是由不同的应用程序发送。第二设备可识别不同标头信息以将数据路由到第二设备上运行的所需应用程序。
B.流式传输
图6示出了根据本发明的实施方案的用于协议栈600的流的示例性处理流程。两个客户端应用程序605和608正在第一设备上执行。在步骤651中,客户端应用程序608可请求并获得用于第二(接收方)设备的设备ID。IDS框架615(其可正在客户端应用程序308内运行)可具有该设备ID(例如,与账户名相关联)或从IDS服务器获得该设备ID。每个客户端应用程序可包括IDS框架或与由其他应用程序共享的同一IDS框架通信。
在步骤652中,将第二设备ID传送到UTun控制器320,该UTun控制器可设法促进创建用于客户端应用程序608的客户端连接。例如,UTun控制器可将设备ID映射到TCP套接字。UTun控制器可随后帮助创建客户端应用程序与内核610之间的TCP套接字。
在步骤653中,UTun控制器可向内核610发送指令以创建与客户端应用程序308的客户端连接(例如,以创建TCP套接字)。这些指令可包括用于创建TCP套接字的虚拟地址(例如,以IPv6格式),其中此虚拟地址被映射到设备ID。这种映射可以各种方式实现。内核610可将客户端连接信息提供到客户端应用程序608。
在步骤654中,在客户端应用程序608与内核610之间创建了客户端连接之后,客户端应用程序608通过此客户端连接将数据发送到内核610。内核610可根据任何合适的传输层协议(例如TCP)将数据处理成数据包。作为处理的一部分,将第一层标头信息包括在数据包中,其中该标头信息包括虚拟地址。
在步骤655中,内核610可将数据包发送到UTun控制器,该UTun控制器可使用虚拟地址来确定设备标识符并且确定是否存在主要套接字。UTun控制器可在这个时间点之前的任何时间(例如当在步骤652中获得第二设备ID时)创建主要套接字。
在步骤656中,UTun控制器620通过主要套接字将数据包发送到链路控制器625。UTun控制器620可提供第二设备的目的地址,因为第一层标头信息识别虚拟地址。在一个实施方案中,UTun控制器620可移除数据(例如,虚拟地址,并用实际地址替换)或压缩数据,这在下文中更详细地描述。UTun控制器620还可建立加密协议以与第二设备一起用于通过主要套接字发送的所有数据。
在步骤657中,链路管理器625选择用以经由主要套接字发送数据包的链路。该选择可基于本文所提及的各种准则。用于相同主要套接字(即,去往相同设备)的不同数据包可通过不同链路发送。链路的实施例是组合链路640、BTLE链路635和Wi-Fi/UDP链路630。这些链路中的每一者可在内核610所使用的传输协议之上使用额外传输协议。
在步骤658中,所选择的链路630向数据包添加任何标头信息(例如,UDP标头)。第二层标头信息可确保数据包被发送到正确的设备。接收链路可去掉第二层标头信息,并且将数据包的其余部分发送到另一侧上的对应链路管理器。另一个链路管理器可通过哪个链路接收数据包来知道第一设备ID(例如,因为链路可被分配给特定设备),并且第一ID可用于将数据包映射到特定客户端连接(例如,另一端上的TCP套接字)。
C.传出消息
图7示出了根据本发明的实施方案的用于协议栈700的传出消息的示例性处理流程。一个客户端应用程序605正在第一设备上执行,但其他应用程序可正在运行并且与第二设备通信。
在步骤751中,客户端应用程序705可向IDS框架715发送消息,以及账户的标识。如果已知设备ID,则可将其发送。IDS框架可确定设备ID。
在步骤752中,IDS框架715可将具有设备ID的消息发送到消息控制器718。消息控制器718可向此消息添加第一层标头信息(消息协议)。例如,标头信息可包括第二设备ID、请求应用程序(例如,705)、目的地应用程序、任一个设备的用户的账户信息、选项、有效载荷的大小以及任何其他合适的标头信息。
在步骤753中,IDS框架715可将设备ID发送到UTun控制器720,该UTun控制器可创建主要套接字并且将设备ID和虚拟连接映射到主要套接字。在另一个实施例中,设备ID可由消息控制器718在打开连接的请求中发送。虚拟连接位于内核710与消息控制器718之间,这可将虚拟连接关联到虚拟地址(内核710)或设备ID(消息控制器718)。可在内核710与消息控制器718之间创建多个虚拟连接,并且这些虚拟连接可以不同的目的地设备和/或优先级区分。例如,可针对同一目的地设备存在两个虚拟连接,其中一个虚拟连接具有高优先级,另一个虚拟连接具有低优先级。可使用同一虚拟连接发送来自多个客户端应用程序的消息。
在步骤754和755中,UTun控制器720向消息控制器718和内核710发送指令。这些指令可提供用于在消息控制器718与内核710之间创建虚拟连接的套接字编号。在一个具体实施中,对消息控制器718的指令将虚拟连接与设备ID相关联(经由套接字编号),该设备ID是消息控制器718已知的。另外,对内核710的指令将虚拟连接与虚拟地址相关联(经由套接字编号),该虚拟地址随后被存储在内核710中以供稍后使用。因此,消息控制器718和内核710使用套接字编号来经由相互知道的套接字协调消息通信。
在步骤756中,消息控制器718通过虚拟连接将消息发送到内核710。内核710可随后根据第二协议(例如,TCP)创建数据包,并且根据第二协议添加第二层标头信息。
在步骤757中,内核710可将数据包连同第二协议的第二层标头信息(即,添加到消息标头的第二层)发送到UTun控制器。因此,数据包可包括来自上游任何模块的标头信息。因此,一旦存在虚拟连接,每当客户端应用程序将消息发送到第二设备时,消息中的数据就可通过内核(例如TCP/IP栈)回到UTun控制器。
在步骤758中,UTun控制器720通过主要套接字将数据包发送到第二设备。主要套接字可由数据包的第二层标头信息中的虚拟地址来识别。在消息传送实施例中,可从第二标头层去掉端口和其他数据(例如,去掉消息协议标头多余的信息)。该过程的剩余部分可如在图6和本文所述的其他部分中那样进行。
在其他实施方案中,UTun控制器720可提供传输层协议(例如,TCP)。在这种实施例中,将不需要内核710,并且可在UTun控制器720与消息控制器718之间建立虚拟连接。另外,如果设备ID采用IP格式,则可不需要映射。表仍可与活动主要套接字一起存在。或者,由UTun控制器720添加的传输层协议可使用设备ID。
D.传入数据
图8示出了根据本发明的实施方案的用于协议栈800的传入数据的示例性处理流程。一个客户端应用程序805正在第一设备上执行,但其他应用程序可正在运行并且与第二设备通信。
在步骤861中,BTLE硬件855将数据包发送到BTLE链路835。BTLE硬件855可从第二设备接收分组。BTLE硬件855可包括用于确定哪个BTLE链路对应于第二设备的软件功能。例如,第一层标头信息可用于确定数据包的来源,并且表可用于确定哪个链路应接收数据包。
在步骤862中,BTLE链路可去掉所使用的任何标头信息并且将数据包发送到链路管理器825。如果使用不同的传输层协议(例如,通过Wi-Fi的UDP),则可去掉UDP标头。链路管理器825可识别哪个链路发送数据包,并且因此可知道第二设备是什么。后续模块还可移除标头信息,例如,UTun控制器可去掉用于与第二设备的主要套接字连接的任何标头信息。
在步骤863中,链路管理器825可将数据包发送到UTun控制器820。链路管理器825可将设备ID发送到UTun控制器,其中设备ID对应于第二设备并且可基于正被使用的BTLE链路835被知道,因为BTLE链路835与第二设备相关联。UTun控制器820可解压或解密任何剩余的标头信息。UTun控制器还可指定用于数据包的连接(例如,TCP套接字),使得内核810可识别要将数据包发送到哪里。
在步骤864中,内核810可接收具有由内核810实现的标头信息的数据包。例如,内核810可采用TCP库并且分析数据包中的TCP标头。内核810可识别与数据包相关联的连接。例如,可将目的地客户端应用程序指定为例如端口。标头信息还可指定数据包是否为消息或流的一部分。例如,标头中的虚拟地址可与用于传送数据流的客户端连接相关联。
在步骤865或866中,通过对应的客户端/虚拟连接发送数据包。客户端连接是直接与客户端应用程序805建立的,并且虚拟连接是与消息控制器818建立的。所选择的连接取决于标头信息指定了哪个连接,例如,指定了哪个TCP套接字。当目的地为虚拟地址时,客户端连接可为虚拟连接。当连接是在客户端应用程序与另一个模块之间时,虚拟连接可为客户端连接。
在步骤867中,消息控制器818将消息发送到在用于消息协议的标头信息中识别的客户端应用程序。消息控制器818可将消息直接发送到客户端应用程序805。
E.优先级
如上所述,不同的虚拟连接可具有不同的优先级。因此,对于同一第二设备,可在消息控制器与内核之间存在多个虚拟连接。此群组中的每个虚拟连接将对应于不同优先级。虚拟连接的优先级可由正在请求与另一个设备通信的客户端应用程序指定。例如,在图7的步骤753中,可将优先级包括在对UTum控制器720的请求中,使得在内核710与消息控制器718之间创建所需优先级的虚拟连接。如果不存在具有指定优先级的虚拟连接,则可创建这样的一个虚拟连接。
当UTun控制器从内核获得数据包时,UTun控制器可识别虚拟连接并且识别优先级。UTun控制器可随后确定哪些数据包在哪个时间被发送出去。具有较高优先级的分组可先于具有较低优先级的分组发送。时间戳可用于识别已经长时间等待的低优先级分组,并且将它们先于最近的高优先级分组发送出去。可使用任何合适形式的调度逻辑。如果存在可用的带宽,则可同时发送低优先级数据包和高优先级数据包两者。
IV.链路管理器
在一些实施方案中,链路管理器可用于选择特定链路(例如,硬件接口和传输协议)来发送一个数据包或一组数据包。链路管理器可为每个数据包或多个数据包做出这个决策,例如,为每50个数据包或组成消息的群组做一次决策。链路管理器不需要知道分组来自哪里(例如,哪个客户端应用程序发送了该数据、其优先级以及其是否为流或消息的一部分)。链路管理器可从UTun控制器(其可指定第二设备)接收数据包,并且随后链路管理器可通过所选择的链路发送数据包。因此,UTun控制器可以单一方式提及远程设备(例如,仅告诉链路管理器发送到哪个设备)。
根据所选择的链路,可以各种方式发送数据包,例如,使用不同的硬件接口。可添加额外标头信息。例如,当使用组合链路340、640、840时,可添加校验和用于错误检测。
链路管理器可保持关于所有链路的统计值,并且使用这些统计值来确定使用哪个链路。例如,可监视每个链路的带宽可用性和使用率,并且将其用作选择决策的因素。启发式算法可分析链路统计值以确定使用哪个链路。在一个具体实施中,启发式算法可设法在维持最小数据速率的同时有效地优化能量,并且因此选择能够满足这两个准则的链路。链路的每个统计值(例如,数据速率)可为一个参数,或者多个统计值可被组合成单个参数。
例如,如果链路管理器看到少于阈值量的数据,则可选择BTLE链路,因为其使用低功率。但是,如果链路管理器开始看到更多数据,则可进行切换以通过经典蓝牙发送数据。如果用于经典蓝牙链路的缓冲区发生堆积,则可选择Wi-Fi链路用于发送数据包。链路管理器还可识别特定链路是否可用,例如,第一设备或第二设备不是经由Wi-Fi连接。因此,可基于可用链路的当前统计值选择功率和吞吐量的最佳选项。
在一个实施方案中,可根据以下至少一项确定链路的参数:与链路相关联的信号强度、数据速率和能量使用。可为多个链路中的每一者确定相应参数。可将这些参数彼此比较或与阈值进行比较,以确定选择哪个链路。例如,可选择具有最低能量使用同时保持高于阈值的数据速率的链路。
在一些实施方案中,首先选择组合链路(例如,340)。如果使用组合链路340的连接是成功的,例如,某些连接属性满足预期。如果组合链路340不满足特定预期,则可尝试另一个链路。例如,组合链路340可能遇到由于距离、弱信号或某些其他错误引起的问题。
可在组合链路340工作时通过此组合链路发送用于其他链路的连接信息。链路管理器(例如,325)可使用该连接信息来创建使用另一个链路的连接。例如,用于基础Wi-Fi链路(基础结构模式)的连接信息可经由组合链路340来获得,并且如果使用组合链路340的连接不合标准,则可使用用于基础Wi-Fi链路的连接信息。在另一个具体实施中,可使用自组织Wi-Fi连接。另外,还可尝试通过服务器的与另一个设备连接。在两个设备没有足够靠近来点对点通信时以及在两个设备未连接到同一接入点时,这可为有利的。
在其他实施方案中,首先选择另一个链路。例如,可在将要发送大文件(例如,几MB数据)时选择基础Wi-Fi链路。这可在基础Wi-Fi具有比组合链路340大的吞吐量时进行,其可具有约1.6Mbps的速率。可仍初始针对组合链路340获得用于基础Wi-Fi的连接信息。可监视基础Wi-Fi链路的吞吐量,并且如果吞吐量低于预期和/或低于组合链路340的预期吞吐量,则可将连接切换到使用组合链路340。排队的数据量可用作用于选择链路的准则。
V.重传
某些传输协议(例如,TCP)当在某段时间内未从另一个设备接收到确认时会实现数据包的重传。此类决策可为用于确定是否发送重传的第一规则。如果第一规则指示应当发送重传,则可使用另一个规则来确定实际上是否应发送重传。例如,链路的类型和链路的可靠性级别可用于确定是否将发送重传。在一个具体实施中,不会为某些链路发送重传。
如上所述,内核可实现TCP,并且将TCP包发送到UTun控制器。在一个实施方案中,UTun控制器可接收重传并且确定是否发送到另一个设备。例如,UTun控制器可知道哪个链路发送了数据包;并且如果该链路被认为是可靠的,则重传分组可被UTun控制器丢弃并且不被发送。
因此,在一个实施方案中,TCP具体实施可不对所使用的链路做出任何假设,并且基于标准启发式算法重传分组。例如,内核可在其接收到导致其推断出一些分组已丢失或未在时间限制内接收到确认的信息时重传分组。但是,根据链路,往返时间可能不一致,这可产生过多重传。如果链路例如基于其他统计、已知行为或设置被认为是可靠的,则可丢弃重传以节省带宽。UTun控制器可与链路管理器联系以确定是否应丢弃重传。
VI.加密
在一些实施方案中,可加密通过主要套接字连接发送的数据。UTun控制器或其他子模块(例如,作为复用模块的一部分)可协商加密上下文以用于主要套接字连接。例如,第一设备的UTun控制器可建立与第二设备的UTun控制器的主要套接字。这两个UTun控制器可协商加密技术并且交换会话所需的任何加密密钥。在一个具体实施中,公钥基础结构(PKI)用于消息和流以及任何控制分组。
当一个UTun控制器发送数据包时,其可在发送到链路管理器之前加密该数据包。另外,另一个UTun控制器可在发送到对应内核之前解密该数据包。可在任何时间创建新的加密上下文。在一些具体实施中,可在同样两个设备之间存在多个主要套接字连接,并且每一者可具有不同的加密上下文。在各种实施方案中,加密上下文可指定要使用的特定密钥和特定加密算法。
VII.标头压缩
在一些实施方案中,可压缩数据包中的标头信息。标头压缩可由UTun控制器执行。例如,第一设备的UTun控制器可将压缩上下文发送到另一个设备的UTun控制器。压缩上下文可将编号与一组信息(例如源端口和目的地端口)相关。因此,由内核管理的每个TCP套接字可对应于不同编号。编号与端口信息(以及任何其他压缩数据)之间的映射可用于压缩和解压缩。压缩上下文可经由控制信道来协商,该控制信道不使用压缩并且被建立为与用于数据的主要套接字连接分开。同一控制信道可用于针对任何数量的虚拟连接协商压缩上下文。
用于消息传送协议(或在UTun控制器之前的任何传输协议)的标头信息可被压缩。在一些具体实施中,可总是对任何标头信息进行压缩,或仅当满足某些准则(例如,带宽)或发生触发时(例如,当通信量超过特定量或虚拟连接用于数据流时)进行压缩。一般来讲,标头压缩没有带来显著开销,并且因此可总是使用。除了压缩之外,标头的某些部分可被排除(例如,递送接收的校验和或要求)以便减小标头大小。
图9A示出了根据本发明的实施方案的通用压缩标头900。前两行数字仅仅表示数据大小,即,在该实施例中为两个字节。第一数据位是压缩位C(1比特),不压缩时它为0,使用压缩时它为1。变量P(2比特)指定传输协议(例如,00代表UDP,01代表TCP)。当使用2比特时,可支持两个其他传输协议。
变量V(1比特)指定使用短版本还是长版本(例如,0代表小版本;1代表大版本)。小版本支持较少连接用于压缩,而大版本支持较多连接用于压缩。在该实施例中,短版本使用示为CID 910的上下文ID(CID)。这个小CID为4比特,可支持16个虚拟连接(0至15)。例如,当标头具有作为8的CID 910时,另一个设备基于压缩上下文知道对应的端口信息(例如,由UTun控制器指定8对应于经由控制信道的特定端口信息)。大CID为16比特(0-65535)。当使用大CID时,可保留小CID(标记为R)并且将其设置为0。可仅在V=1时存在用于大CID的2个字节。CID是压缩编号的一个实施例。
在一个实施方案中,可为不同的虚拟连接(例如,内核的TCP套接字)跟踪使用率统计值。如果虚拟连接繁忙,则其可为针对小CID分配介于0至15之间的数字。因此,当为这个繁忙虚拟连接发送数据时,可使用小CID,从而节省2个字节。显示了较少使用的虚拟连接可被分配给大CID。如果第二设备存在少于16个虚拟连接,则仅需要小CID。另外,如果特定虚拟连接没有被经常使用,则序列编号和确认编号可例如从4个字节减少到2个字节。
虚拟连接可调换CID编号以使得繁忙的连接(具有第一大编号)得到小编号并且较不繁忙连接得到第一大编号。例如,当第一连接繁忙时,具有大编号的第一连接可被改动成小编号。随后可将分配给小编号的第二连接改为具有大编号,因为第二连接的使用频率较低。
图9B示出了根据本发明的实施方案的压缩UDP标头950。压缩UDP标头用1个字节或3个字节替代4个字节的端口信息(例如,当每个端口由2个字节指定时),具体取决于是小版本还是大版本。数据显示在标头信息之后。在该实施例中,C为1以指示压缩,P为00以指定UDP。如上陈述,V可用于指定是需要第一字节的4位(小)还是两个额外字节(大)。
图10示出了根据本发明的实施方案的压缩TCP标头1000。在该实施例中,C为1以指示压缩,P为01以指定TCP。TCP标头还包括额外信息,诸如:序列编号、确认编号、窗口、数据偏移量、选项和填充。其他信息可包括校验和以及紧急指针。类似于UDP的情况,压缩TCP标头用1个字节或3个字节替代4个字节的端口信息。
一旦已经建立压缩上下文,第一UTun控制器便可经由上文所述的方案用CID编号替换某些标头信息。假设先前已经在UTun控制器之间传送了压缩上下文,则接收UTun控制器可解释压缩标头,即,将标头解压缩。
VIII.移动设备
图11是根据本发明的实施方案的便携式电子设备或移动设备1100的框图。移动设备1100通常包括计算机可读介质1102、处理系统1104、输入/输出(I/O)子系统1106、无线电路1108以及包括扬声器1150和麦克风1152的音频电路1110。这些部件可通过一根或多根通信总线或信号线1103来耦接。设备1100可为任何便携式电子设备,包括手持式计算机、平板电脑、移动电话、膝上型计算机、平板设备、媒体播放器、个人数字助理(PDA)、密钥卡、车钥匙、通行卡、多功能设备、移动电话、便携式游戏设备等,包括这些物品中的两者或更多者的组合。
显然,图11所示的架构仅为移动设备1100的架构的一个实施例,并且移动设备1100可具有比图示中更多或更少的部件或不同配置的部件。图11中所示的各种部件可以硬件、软件方式或软硬件组合来实现,包括一个或多个信号处理电路和/或专用集成电路。
无线电路1108用于通过无线链路或网络发送和接收信息至一个或多个其他设备的常规电路,诸如天线系统、RF收发器、一个或多个放大器、调谐器、一个或多个振荡器、数字信号处理器、CODEC芯片组、存储器等。在一些实施方案中,无线电路1108能够使用一个或多个通信协议与其他设备建立并保持通信,该一个或多个通信协议包括时分多址(TDMA)、码分多址(CDMA)、全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、长期演进(LTE)、LTE-Advanced、WiFi(诸如IEEE 802.11a、IEEE 802.11b、IEEE802.11g和/或IEEE 802.11n)、蓝牙、Wi-MAX、互联网协议语音技术(VoIP)、近场通信协议(NFC)、用于电子邮件、即时消息和/或短消息服务(SMS)的协议、或任何其他合适的通信协议,包括到本文的提交日期为止尚未开发出来的通信协议。移动设备可包括能够根据通信所需的范围通过若干不同类型的无线网络进行通信的无线电路。例如,短程无线收发器(例如,蓝牙)、中程无线收发器(例如,WiFi)和/或远程无线收发器(例如,GSM/GPRS、UMTS、CDMA2000 1x/EV-DO和LTE/LTE-Advanced)可根据通信类型或通信的范围来使用。
无线电路1108经由外围设备接口1116耦接至处理系统1104。接口1116可包括用于建立并保持外围设备和处理系统1104之间的通信的常规部件。通过无线电路1108所接收的语音和数据信息(例如,在语音识别或语音命令应用程序中)经由外围设备接口1116被发送至一个或多个处理器1118。一个或多个处理器1118可被配置为处理存储在介质1102上的一个或多个应用程序1134的各种数据格式。
外围设备接口1116将设备的输入和输出外围设备耦接至处理器1118和计算机可读介质1102。一个或多个处理器1118经由控制器1120与计算机可读介质1102进行通信。计算机可读介质1102可以是可存储供一个或多个处理器1118使用的代码和/或数据的任何设备或介质。介质1102可包括存储器分级结构,包括高速缓存、主存储器和辅助存储器。可使用RAM(例如SRAM、DRAM、DDRAM)、ROM、闪存、磁存储设备和/或光学存储设备(诸如磁盘驱动器、磁带、CD(光盘)和DVD(数字视频光盘))的任何组合来实现该存储器分级结构。在一些实施方案中,外围设备接口1116、一个或多个处理器1118和存储器控制器1120可在单个芯片上实现,诸如处理系统1104。在一些其他实施方案中,它们可以在独立的芯片上实现。
移动设备1100还可包括用于为各种硬件部件供电的电力系统1142。电力系统1142可包括电力管理系统、一个或多个电源(例如,电池、交流电(AC))、再充电系统、电力故障检测电路、功率变换器或逆变器、电源状态指示器(例如,发光二极管(LED))以及通常与移动设备中的电力的生成、管理和分配相关联的任何其他部件。
在一些实施方案中,移动设备1100包括相机1144。在一些实施方案中,移动设备1100包括传感器1146。传感器可包括加速度计、罗盘、陀螺仪、压力传感器、音频传感器、光传感器、气压计等。传感器1146可用于感测位置相关方面,诸如位置的听觉或光影签名。
在一些实施方案中,移动设备1100可包括GPS接收器,有时被称为GPS单元1148。移动设备可使用卫星导航系统诸如全球定位系统(GPS)来获得定位信息、定时信息、高度或其他导航信息。在操作期间,GPS单元可接收来自绕地球飞行的GPS卫星的信号。GPS单元对信号进行分析以对传送时间和传送距离进行估计。GPS单元可确定移动设备的当前定位(当前位置)。基于这些估计,移动设备可确定位置方位、高度和/或当前速度。位置方位可为地理坐标,诸如纬度和经度信息。
一个或多个处理器1118运行存储在介质1102中的各种软件部件以执行设备1100的各种功能。在一些实施方案中,软件部件包括操作系统1122、通信模块(或指令集)1124、定位模块(或指令集)1126和其他应用程序(或指令集)1134。通信模块1124可包括本文所述的模块,诸如复用模块,其可包括消息控制器、UTun控制器和内核的若干部分。
操作系统1122可为任何合适的操作系统,包括iOS、Mac OS、Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS或嵌入式操作系统诸如VxWorks。操作系统可包括用于控制和管理一般系统任务(例如,存储器管理、存储设备控制、电力管理等)的各种程序、指令集、软件部件和/或驱动器,并且有利于各种硬件和软件部件之间的通信。
通信模块1124有利于通过一个或多个外部端口1136或经由无线电路1108与其它设备通信,并且包括用于处理从无线电路1108和/或外部端口1136所接收的数据的各种软件部件。外部端口1136(例如,USB、火线、闪电连接器、30引脚连接器等)适用于通过网络(例如,互联网、无线局域网等)直接地或间接地耦接至其他设备。
定位/运动模块1126可有助于确定移动设备1100的当前位置(例如,坐标或其他地理位置标识符)和运动。现代定位系统包括基于卫星的定位系统诸如全球定位系统(GPS)、基于“小区ID”的蜂窝网络定位和基于WiFi网络的WiFi定位技术。通常,GPS为最准确的,但常常比其他定位系统消耗更多电力。GPS还依赖于多个卫星的可见性来确定位置估计,其可能在室内或在“城市峡谷”中不可见(或具有弱信号)。在一些实施方案中,定位/运动模块1126从GPS单元1148接收数据并且分析这些信号以确定移动设备的当前位置。在一些实施方案中,定位/运动模块1126可使用WiFi或蜂窝定位技术确定当前位置。例如,可使用对附近小区站点和/或WiFi接入点的了解并结合对其位置的了解来估计移动设备的位置。识别WiFi或蜂窝式发射器的信息被接收于无线电路1108处并传送到定位/运动模块1126。在一些实施方案中,定位模块接收一个或多个发射器ID。在一些实施方案中,可将发射器ID的序列与参考数据库(例如,小区ID数据库、WiFi参考数据库)进行比较,该参考数据库将发射器ID映射或关联至对应发射器的位置坐标,并且至少部分地基于对应发射器的位置坐标来计算移动设备1100的估计的位置坐标。不论使用何种特定定位技术,定位/运动模块1126接收能够从其中得出位置方位的信息、解译该信息、并返回位置信息诸如地理坐标、纬度/经度或其他位置方位数据。
位于移动设备上的一个或多个应用程序1134可包括安装在设备1100上的任何应用程序,包括但不限于浏览器、地址簿、联系人列表、电子邮件、即时消息、文字处理、键盘仿真、桌面小程序、支持JAVA的应用程序、加密软件、数字版权管理、语音识别、语音复制、音乐播放器(回放存储在诸如MP3或AAC文件之类的一个或多个文件中的录制音乐),等等。这一个或多个应用程序1134还可包括用于寻找停放的汽车的特定应用程序、地图应用程序或任何其他合适的应用程序。
可存在其他模块或指令集(未示出),诸如图形模块、时间模块等。例如,图形模块可包括用于在显示器表面上渲染、以动画方式显示和显示图形对象(包括但不限于文本、网页、图标、数字图像、动画等)的各种常规软件部件。又如,定时器模块可为软件定时器。定时器模块还可以硬件来实现。时间模块可针对任何数量的事件维护各种定时器。
I/O子系统1106可耦接至显示系统(未示出),该显示系统可以是触敏显示器。显示器在GUI中向用户显示视觉输出。视觉输出可包括文本、图形、视频以及它们的任何组合。视觉输出中的一些或所有可对应于用户界面对象。尽管显示器可使用发光二极管(LED)技术、液晶显示器(LCD)技术或发光聚合物显示器(LPD)技术,但在其他实施方案中可使用其他显示技术。
在一些实施方案中,I/O子系统1106可包括显示器和诸如键盘、鼠标和/或触控板之类的用户输入设备。在一些实施方案中,I/O子系统1106可包括触敏显示器。触敏显示器还可接受来自用户的基于触觉和/或触感接触的输入。在一些实施方案中,触敏显示器形成接受用户输入的触敏表面。触敏显示器/表面(连同介质1102中的任何相关联的模块和/或指令集)检测触敏显示器上的接触(和接触的任何移动或释放),并将检测到的接触转换为与用户界面对象的交互,诸如在接触发生时显示在触摸屏上的一个或多个软键。在一些实施方案中,触敏显示器和用户之间的接触点对应于一个或多个用户的数字。用户可使用诸如触笔、笔、手指等任何合适的物体或附属件接触触敏显示器。触敏显示器表面可使用任何合适的触敏技术检测接触及其任何移动或释放,这些技术包括电容式、电阻式、红外和表面声波技术以及其他接近传感器阵列或用于确定与触摸显示器的一个或多个接触点的其他元件。
此外,I/O子系统还可耦接至一个或多个其他物理控制设备(未示出),诸如按钮、按键、开关、摇杆按钮、拨号盘、滑动开关、操作杆、LED等,用于控制或执行各种功能诸如功率控制、扬声器音量控制、电话铃声响度、键盘输入、滚动、保持、菜单、锁屏、清除和结束通信等。在一些实施方案中,除了触摸屏之外,设备1100还包括用于激活或去激活特定功能的触控板(未示出)。在一些实施方案中,触控板是设备的触敏区域,该触敏区域与触摸屏不同,其不显示视觉输出。触控板可以是与触敏显示器分开的触敏表面、或者是由该触敏显示器形成的触敏表面的延伸部。
本发明的某些实施方案的优点包括在确定汽车处于停放状态时自动标记停放位置。这可在没有用户提示的情况下进行,并且因此用户不必记得手动标记停放位置。这改善了用户体验并且对于用户而言更方便。
本发明的某些实施方案的另外的优点包括在弱定位信号场景中能够标记停放位置。本发明的一些实施方案准许标记汽车的停放位置,而不使用停放区域中的应答器(例如,停放地点附近的应答器)来传输可用于定位停放地点的唯一标识符。
在一些实施方案中,本文所述的一些或所有操作可使用在用户的移动设备上执行的应用程序来执行。电路、逻辑模块、处理器和/或其他部件可被配置为执行本文所述的各种操作。本领域的技术人员将会认识到,根据具体实施,可以通过具体部件的设计、设置、互连和/或编程完成此类配置,并且同样根据具体实施,配置的部件可以针对不同操作是可重新配置的或不是可重新配置的。例如,可通过提供合适的可执行代码来配置可编程处理器;可通过合适地连接逻辑闸和其他电路元件来配置专用逻辑电路;等等。
结合本发明的各种特征的计算机程序可被编码在各种计算机可读存储介质上;合适的介质包括磁盘或磁带、诸如光盘(CD)或DVD(数字多功能光盘)的光学存储介质、闪存存储器等。可与兼容设备一起封装或与其他设备分开地提供编码有程序代码的计算机可读存储介质。任何此类计算机可读介质可驻留在单个计算机产品(例如,硬盘驱动器、CD或整个计算机系统)上或内,并且可存在于系统或网络内的不同计算机产品上或内。此外,可以经由符合多种协议的有线光学和/或无线网络(包括互联网)编码和传输程序代码,从而允许例如经由互联网下载进行分布。
尽管已结合具体实施方案描述了本发明,但应当理解,本发明旨在覆盖以下权利要求范围内的所有修改形式和等同形式。

Claims (24)

1.一种方法,包括:
在具有用户界面、一个或多个无线接口以及耦接到所述一个或多个无线接口和所述用户界面的一个或多个处理器的第一移动设备处:
在复用模块处通过第一连接接收第一数据,所述第一数据具有从在所述一个或多个处理器上执行的第一客户端应用程序发送的有效载荷,所述第一数据包括将第二设备识别为所述第一数据的目的地的第一标头信息;
由所述复用模块识别所述第一移动设备与所述第二设备之间的主要套接字连接;
使用所述主要套接字连接将所述第一数据传输到所述第二设备;
在所述复用模块处通过第二连接接收第二数据,所述第二数据具有从在所述一个或多个处理器上执行的第二客户端应用程序发送的有效载荷,所述第二数据包括将所述第二设备识别为所述第二数据的所述目的地的第二标头信息;
由所述复用模块识别在所述第一移动设备与所述第二设备之间存在所述主要套接字连接;以及
使用所述主要套接字连接将所述第二数据传输到所述第二设备。
2.根据权利要求1所述的方法,其中所述复用模块包括隧道控制器、内核和消息控制器,其中将所述第一数据作为消息的一部分来发送,所述方法还包括:
在所述第一移动设备处:
在所述消息控制器处从所述第一客户端应用程序接收所述第二设备的设备标识符;
在所述消息控制器与所述内核之间创建第一套接字连接,所述消息控制器将所述第一套接字连接分配给所述设备标识符,所述内核将所述第一套接字连接分配给第一虚拟地址;以及
在所述隧道控制器处创建所述设备标识符与虚拟地址之间的映射。
3.根据权利要求2所述的方法,还包括:
在所述第一移动设备处:
在所述消息控制器处接收所述第一消息;
将所述第一数据发送到所述内核;
从所述第一数据创建数据包;
将所述数据包发送到所述隧道控制器,所述数据包识别所述虚拟地址;
将所述虚拟地址映射到所述设备标识符;以及
使用所述设备标识符来识别所述主要套接字连接。
4.根据权利要求3所述的方法,其中所述数据包是TCP数据包。
5.根据权利要求3所述的方法,其中所述第一连接包括所述第一套接字连接。
6.根据权利要求2所述的方法,还包括:
在所述第一移动设备处:
向所述第一套接字连接分配优先级。
7.根据权利要求1所述的方法,其中所述复用模块包括隧道控制器和内核,其中将所述第一数据作为流的一部分来发送,所述方法还包括:
在所述第一移动设备处:
在所述内核与所述第一客户端应用程序之间创建所述第一连接;以及
在所述隧道控制器处创建设备标识符与分配给所述第一连接的虚拟地址之间的映射。
8.根据权利要求7所述的方法,还包括:
在所述第一移动设备处:
在所述内核处接收所述第一数据并且从所述第一数据创建数据包;
在所述隧道控制器处接收所述数据包,所述数据包识别所述虚拟地址;
将所述虚拟地址映射到所述设备标识符;以及
使用所述设备标识符来识别所述主要套接字连接。
9.根据权利要求1所述的方法,还包括:
在所述第一移动设备处:
识别对应于所述第一数据的优先级;以及
基于所述优先级确定何时通过所述主要连接发送所述第一数据。
10.根据权利要求1所述的方法,还包括:
在所述第一移动设备处:
识别用于传输所述第一数据的链路;
基于第一规则确定是否应执行所述第一数据的一个或多个数据包的重传;以及
使用第二规则来确定是否将发送所述重传,其中所述第二规则取决于用于传输所述第一数据的所识别的链路。
11.根据权利要求10所述的方法,其中所述第一连接是TCP套接字,其中所述第一规则是TCP规则,并且其中当所识别的链路被指定为不发送重传时,不发送所述重传。
12.根据权利要求1所述的方法,还包括:
在所述第一移动设备处:
在所述第一标头信息中识别第一传输标头;
确定所述第一传输标头的至少一部分将被压缩;
向所述第一传输标头的所述至少一部分分配压缩编号;
作为协商压缩上下文的一部分,发送所述压缩编号和所述第一传输标头的所述至少一部分;
使用所述压缩编号发送所述第一数据。
13.根据权利要求12所述的方法,还包括:
在所述第一移动设备处:
将压缩位添加到所述第一标头信息,所述压缩位识别是否使用压缩以及对应于所述第一传输标头的传输协议。
14.根据权利要求12所述的方法,还包括:
在所述第一移动设备处:
将一个或多个版本位添加到所述第一标头信息,所述版本位指定所述压缩编号的大小,其中所述一个或多个版本位指定至少两个不同大小。
15.根据权利要求14所述的方法,还包括:
在所述第一移动设备处:
识别所述第一连接具有比所述第二连接高的使用率,其中所述第一连接与小版本大小相关联并且所述第二连接与大版本大小相关联,所述大版本大小大于所述小版本大小;
调换所述第一连接和第二连接的所述一个或多个版本位的值;以及
调换所述第一连接和第二连接的压缩编号。
16.根据权利要求1所述的方法,其中使用同一加密上下文传输所述第一数据和第二数据。
17.根据权利要求1所述的方法,还包括:
在所述第一移动设备处:
在所述复用模块处通过所述主要套接字连接从所述第二设备接收数据包;
分析标头信息以将所述数据包的接收方目的地确定为所述第二客户端应用程序;以及
通过所述第二应用程序将所述数据包传输到所述第二客户端应用程序。
18.根据权利要求1所述的方法,还包括:
在所述第一移动设备处:
从多个链路中选择第一链路以用于将所述第一数据发送到所述第二设备,其中使用所述第一链路传输所述第一数据。
19.根据权利要求18所述的方法,其中所述第一链路对应于特定无线接口和传输层协议。
20.根据权利要求18所述的方法,还包括:
在所述第一移动设备处:
对于所述多个链路中的每一者:
从以下至少一项确定参数:与所述多个链路中的每一者相关联的信号强度、数据速率和能量使用,其中选择所述第一链路是基于用于所述第一链路的第一参数。
21.根据权利要求18所述的方法,其中经由所述第一链路发送所述第二数据。
22.根据权利要求18所述的方法,还包括:
在所述第一移动设备处:
从所述多个链路中选择第二链路以用于将所述第二数据发送到所述第二设备,其中使用所述第二链路传输所述第二数据,所述第二链路不同于所述第一链路。
23.一种移动设备,包括:
用户界面;
一个或多个无线接口;以及
耦接到所述一个或多个无线接口和所述用户界面的一个或多个处理器,所述一个或多个处理器被配置为:
在复用模块处通过第一连接接收第一数据,所述第一数据具有从在所述一个或多个处理器上执行的第一客户端应用程序发送的有效载荷,所述第一数据将被发送到第二设备;
由所述复用模块识别所述第一移动设备与所述第二设备之间的主要套接字连接;
使用所述主要套接字连接将所述第一数据传输到所述第二设备;
在所述复用模块处通过第二连接接收第二数据,所述第二数据具有从在所述一个或多个处理器上执行的第二客户端应用程序发送的有效载荷,所述第二数据将被发送到所述第二设备;
由所述复用模块识别在所述第一移动设备与所述第二设备之间存在所述主要套接字连接;以及
使用所述主要套接字连接将所述第二数据传输到所述第二设备。
24.一种计算机产品,所述计算机产品包括存储多个指令的非暂态计算机可读介质,所述多个指令当被执行时控制第一移动设备,所述第一移动设备具有用户界面、一个或多个无线接口以及耦接到所述一个或多个无线接口和所述用户界面的一个或多个处理器,所述指令包括:
在复用模块处通过第一连接接收从在所述一个或多个处理器上执行的第一客户端应用程序发送的第一数据,所述第一数据将被发送到第二设备;
由所述复用模块识别所述第一移动设备与所述第二设备之间的主要套接字连接;
使用所述主要套接字连接将所述第一数据传输到所述第二设备;
在所述复用模块处通过第二连接接收从在所述一个或多个处理器上执行的第二客户端应用程序发送的第二数据,所述第二数据将被发送到所述第二设备;
由所述复用模块识别在所述第一移动设备与所述第二设备之间存在所述主要套接字连接;以及
使用所述主要套接字连接将所述第二数据传输到所述第二设备。
CN201580028392.5A 2014-05-30 2015-05-27 经由用户隧道通信的客户端应用程序 Active CN106464687B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462005606P 2014-05-30 2014-05-30
US62/005,606 2014-05-30
US14/475,526 2014-09-02
US14/475,526 US9485177B2 (en) 2014-05-30 2014-09-02 Client applications communicating via a user tunnel
PCT/US2015/032560 WO2015183879A1 (en) 2014-05-30 2015-05-27 Client applications communicating via a user tunnel

Publications (2)

Publication Number Publication Date
CN106464687A true CN106464687A (zh) 2017-02-22
CN106464687B CN106464687B (zh) 2019-10-25

Family

ID=53476974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580028392.5A Active CN106464687B (zh) 2014-05-30 2015-05-27 经由用户隧道通信的客户端应用程序

Country Status (4)

Country Link
US (1) US9485177B2 (zh)
EP (1) EP3150022B1 (zh)
CN (1) CN106464687B (zh)
WO (1) WO2015183879A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109257227A (zh) * 2018-10-24 2019-01-22 京信通信系统(中国)有限公司 数据传输中的偶联管理方法、装置及系统
CN109800362A (zh) * 2018-12-11 2019-05-24 浙江口碑网络技术有限公司 标识码的处理方法及装置、存储介质、计算机设备

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140351832A1 (en) * 2013-05-21 2014-11-27 Samsung Electronics Co., Ltd. Electronic device using framework interface for communication
US9967197B2 (en) * 2015-01-12 2018-05-08 Citrix Systems, Inc. Large scale bandwidth management of IP flows using a hierarchy of traffic shaping devices
US10084865B2 (en) 2015-02-26 2018-09-25 Urban Airship, Inc. Mobile event notifications
US10200486B2 (en) 2015-02-26 2019-02-05 Urban Airship, Inc. Mobile event notifications for network enabled objects
US9451412B1 (en) * 2015-03-05 2016-09-20 Htc Corporation Mobile device and method for executing a function thereof
US10476980B2 (en) * 2015-08-07 2019-11-12 Dell Products L.P. Remote socket splicing system
KR102367456B1 (ko) * 2015-12-03 2022-02-25 삼성전자주식회사 전자 장치 및 전자 장치의 통신 연결 방법
CN106507282B (zh) * 2016-11-14 2021-06-29 北京小米移动软件有限公司 无线连接的控制方法和装置
US10621062B2 (en) * 2017-02-21 2020-04-14 International Business Machines Corporation Widget provisioning of user experience analytics and user interface / application management
TWI665559B (zh) * 2017-08-21 2019-07-11 立創智能股份有限公司 藍牙資料存取系統
US10291598B1 (en) * 2018-08-07 2019-05-14 Juniper Networks, Inc. Transmitting and storing different types of encrypted information using TCP urgent mechanism
US11582579B2 (en) 2018-09-28 2023-02-14 Apple Inc. Secure streaming of real-time location data between electronic devices
TWI718513B (zh) * 2019-03-29 2021-02-11 群光電子股份有限公司 電子裝置與語音辨識切換方法
EP4011043A4 (en) 2019-08-06 2023-08-02 Airship Group, Inc. CROSS-CHANNEL ORCHESTRATING OF NEWS
US11956199B2 (en) 2021-07-26 2024-04-09 Airship Group, Inc. Software development kit enabled cross-channel two-way software application messaging
CN113923273B (zh) * 2021-09-29 2024-05-28 深信服科技股份有限公司 一种数据包控制方法及相关装置
US20230208920A1 (en) * 2021-12-23 2023-06-29 OpenFin Inc. Bridging communications between applications in different environments
US11709660B1 (en) 2022-10-12 2023-07-25 Stodge Inc. Integrated third-party application builder trigger for message flow

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101257456A (zh) * 2008-03-31 2008-09-03 华为技术有限公司 提高压缩报文转发性能的方法及装置
CN101447925A (zh) * 2008-12-17 2009-06-03 中兴通讯股份有限公司 一种发送多路数据包的方法及系统
US20100135330A1 (en) * 2007-08-10 2010-06-03 Huawei Technologies Co., Ltd. Method and system for setting up header compression communication, header compression policy function entity
US20120054851A1 (en) * 2010-09-01 2012-03-01 Canon Kabushiki Kaisha Systems and methods for multiplexing network channels
US20130170451A1 (en) * 2011-12-30 2013-07-04 UV Networks, Inc. High capacity network communication link using multiple cellular devices

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769869B2 (en) 2006-08-21 2010-08-03 Citrix Systems, Inc. Systems and methods of providing server initiated connections on a virtual private network
US8019878B1 (en) * 2010-03-05 2011-09-13 Brass Monkey, Inc. System and method for two way communication and controlling content in a web browser
US8433783B2 (en) * 2010-09-29 2013-04-30 Citrix Systems, Inc. Systems and methods for providing quality of service via a flow controlled tunnel

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100135330A1 (en) * 2007-08-10 2010-06-03 Huawei Technologies Co., Ltd. Method and system for setting up header compression communication, header compression policy function entity
CN101257456A (zh) * 2008-03-31 2008-09-03 华为技术有限公司 提高压缩报文转发性能的方法及装置
CN101447925A (zh) * 2008-12-17 2009-06-03 中兴通讯股份有限公司 一种发送多路数据包的方法及系统
US20120054851A1 (en) * 2010-09-01 2012-03-01 Canon Kabushiki Kaisha Systems and methods for multiplexing network channels
US20130170451A1 (en) * 2011-12-30 2013-07-04 UV Networks, Inc. High capacity network communication link using multiple cellular devices

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109257227A (zh) * 2018-10-24 2019-01-22 京信通信系统(中国)有限公司 数据传输中的偶联管理方法、装置及系统
CN109800362A (zh) * 2018-12-11 2019-05-24 浙江口碑网络技术有限公司 标识码的处理方法及装置、存储介质、计算机设备
CN109800362B (zh) * 2018-12-11 2020-11-13 浙江口碑网络技术有限公司 标识码的处理方法及装置、存储介质、计算机设备

Also Published As

Publication number Publication date
EP3150022B1 (en) 2020-12-30
CN106464687B (zh) 2019-10-25
US9485177B2 (en) 2016-11-01
EP3150022A1 (en) 2017-04-05
WO2015183879A1 (en) 2015-12-03
US20150350068A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
CN106464687B (zh) 经由用户隧道通信的客户端应用程序
US10542109B2 (en) Proxied push
US10499205B2 (en) SMS proxying
US11088807B2 (en) Application-level acknowledgements
KR101911653B1 (ko) 모바일 디바이스들에 대한 네트워크 대역폭 공유
US10887400B2 (en) Answering a call with client through a host
US9602661B2 (en) Answer and hold with client and host
US10064026B2 (en) Unified message delivery between portable electronic devices
US11658963B2 (en) Cooperative communication validation
US20150319137A1 (en) Techniques to monitor connection paths on networked devices
US9755788B2 (en) Messages with attenuating retransmit importance
KR20170048864A (ko) 사용자 단말, 메시지를 송수신하는 방법 및 컴퓨터 프로그램

Legal Events

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