Systems and methods for establishing connections between devices communicating over a network

Information

  • Patent Grant
  • 9225785
  • Patent Number
    9,225,785
  • Date Filed
    Monday, September 15, 2014
    9 years ago
  • Date Issued
    Tuesday, December 29, 2015
    8 years ago
Abstract
Systems and methods are described for establishing a connection between a client and a server that are each communicating via a network. The methods and techniques may be used, for example, to establish a media streaming connection between a media player and a placeshifting device when a firewall or other impediment to direct network connections exists. A relay server receives connection requests from the client and from the server via the network. In response to receiving the requests, a first connection is established between the relay server and the client and a second connection between the relay server and the server. Data received by the relay server on each of the first and second connections is relayed to the other of the first and second connections to thereby establish the connection between the client and the server via the relay server.
Description
TECHNICAL FIELD

The present disclosure generally relates to systems and methods for establishing connections between devices communicating over a network. Such systems and techniques may be useful, for example, in establishing connections between devices that are logically separated from each other by one or more firewalls. In various embodiments, the techniques and systems described below may be used to establish streaming connections between media players and placeshifting devices that provide media content across the network, although equivalent concepts could be readily applied in any number of other applications and settings.


BACKGROUND

The Internet and other digital communications networks continue to have significant effects on every aspect of personal and professional life. Network communications are becoming increasingly ubiquitous due to the reduced cost and increased capability of portable computing devices, the increasing prevalence and capability of mobile telephony and other wireless communications technologies, and other factors. As a result, consumers are increasingly expecting access to data, entertainment and other media without regard to the physical or geographic proximity of such content.


As an example, consumers have expressed significant interest in “place shifting” devices that allow remote viewing of television or other media content at locations other than the viewer's primary television set. Place shifting devices typically packetize media content that can be transmitted over a local or wide area network to a portable computer, mobile phone, personal digital assistant, remote television or other remote device capable of playing back the packetized media stream for the viewer. Placeshifting therefore allows consumers to view their media content from remote locations such as other rooms, hotels, offices, and/or any other locations where portable media player devices can gain access to a wireless or other communications network. Other media and other data-intensive applications are similarly enjoying widespread consumer interest.


While modern computing and network technologies allow increased mobility and improved access to desired content, a tradeoff often exists between access and security. Although firewalls and other structures can effectively preserve network security, these same structures can have the undesired effect of preventing access to desired services. To use placeshifting as an example, it may be very challenging to establish a connection between a placeshifting device and a media player if a firewall or other security structure resides between the two entities that wish to communicate. In addition to preventing undesired access to the secure network, then, a firewall may prevent legitimate and desired access to placeshifting or other services, particularly if the firewall is incorrectly or incompletely configured by the user.


Challenges can frequently arise in effectively establishing connections between clients and servers for placeshifting, media streaming and/or other applications. It is therefore desirable to create systems and methods for reliably and conveniently establishing connections between clients and servers across a network. These and other desirable features and characteristics will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and this background section.


BRIEF SUMMARY

According to various exemplary embodiments, systems and methods are described for establishing connections between client and server devices that are each communicating via a network. Certain methods and techniques described below may be used in some instances to establish media streaming connections between media players and placeshifting devices when firewalls or other impediments to direct network connections exist. Other embodiments may be equivalently used in other settings, including any settings relating to media streaming or the like.


In various embodiments, a method of establishing a media-streaming connection between a media player and a placeshifting device that are each communicating via a network is provided. A relay server receives a first request associated with the media player and a second request associated with the placeshifting device. In response to receiving the first and second requests, a first connection is established between the relay server and the media player and a second connection is established between the relay server and the placeshifting device. Data received by the relay server on each of the first and second connections is relayed to the other of the first and second connections to thereby establish the media streaming connection between the media player and the placeshifting device via the relay server.


In other embodiments, a method is provided for establishing a connection via a relay server between a client device and a server device that are each communicating via a network. A connectionless session is first attempted between the client device and the server device across the network. If the connectionless session is unsuccessful, the client and the server are directed to contact the relay server via the network, wherein the server is directed by a message transmitted via a pre-existing connection over the network. In response to the client and server subsequently contacting the relay server, a first connection is established between the relay server and the client and a second connection is established between the relay server and the server. Data received by the relay server on each of the first and second connections is then relayed to the other of the first and second connections to thereby establish the connection between the client and the server via the relay server.


In still other embodiments, a system is provided for establishing a media-streaming connection between a media player and a placeshifting device that are each communicating via a network. A relay manager module is configured to receive a request to establish the media-streaming connection between the media player and the placeshifting device. A relay instance module is configured to establish, in response to the request, a first connection with the media player and a second connection with the placeshifting device, and to relay data received on each of the first and second connections to the other of the first and second connections to thereby establish the media streaming connection between the media player and the placeshifting device.


Various embodiments, aspects and other features are described in more detail below.





BRIEF DESCRIPTION OF THE DRAWING FIGURES

Exemplary embodiments will hereinafter be described in conjunction with the following drawing figures, wherein like numerals denote like elements, and



FIG. 1 is a block diagram of an exemplary system for establishing and supporting relay connections between a client node and a server node;



FIG. 2 is a message flow diagram showing an exemplary process for reliably establishing connections between a client and a server; and



FIG. 3 is a flowchart of an exemplary process for establishing a relay connection between a client node and a server node.





DETAILED DESCRIPTION

The following detailed description of the invention is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any theory presented in the preceding background or the following detailed description.


According to various embodiments, a relay server can establish separate connections with a client and a server to effectively bridge communications between the two devices when a direct connection is not available. A relay server could establish separate connections with a media player and with a placeshifting device, for example, and could subsequently relay data between the two connections as needed. Further, although the two connections established between the relay server and either or both of the client and the server could be implemented using any protocols or techniques, in some implementations the connections are reliable connections (e.g., transmission control protocol (TCP) connections) that can be originated from behind the firewall. By providing a relay server that is able to relay information between two separate connections to the client and server, users are provided with a very dependable mechanism for easily establishing client-server connections. Moreover, much of the information needed to configure such a connection can be readily automated in many implementations, thereby dramatically improving the likelihood of successful connections between clients and servers while simultaneously reducing the complexity (and therefore the frustration) associated with configuring such connections.


Although the following discussion often refers to placeshifting devices and techniques for convenience of illustration, equivalent embodiments could apply the same structures and methods described herein in any number of other settings. Indeed, the techniques described herein could be readily used to establish communications between any sorts of clients and/or servers over any sort of network. Examples of such applications could include any sort of media streaming applications, any sort of media sharing or storage applications, or any other application in which a client is attempting to establish a connection with a server that is logically isolated from the client via a firewall or other security mechanism.


Turning now to the drawing figures and with initial reference to FIG. 1, an exemplary network system 100 for establishing a connection between a client 102 and a server 104 over a network 110 suitably includes a relay system 116 that relays data between two connections separately established with client 102 and server 104. System 100 therefore allows client 102 and server 104 to communicate using relay system 116 even though a firewall 106 would otherwise prevent direct communications between client 102 and server 104, as described more fully below.


Client 102 is any device, component, module, hardware, software and/or other network node capable of receiving streaming, file based and/or other data provided by one or more servers 104 via network 110. Client 102 may be implemented with any sort of hardware, software, firmware and/or the like, including any sort of general or special purpose computing platform. In various embodiments, client 102 is personal computer (e.g., a “laptop” or similarly portable computer, although desktop-type computers could also be used), a mobile phone, a personal digital assistant, a set-top box (STB), an audio/video receiver of any sort, a video game player, a navigation device, a personal media player (such as the ARCHOS products available from the Archos company of Igny, France) or the like. In many embodiments, client 102 is a general purpose computing device that includes a media player or other application in software or firmware that is capable of securely connecting to server 104, as described more fully below, and of receiving and presenting content to the user of the device as appropriate. In other embodiments, however, client 102 is a standalone or other separate hardware device capable of receiving data via any portion of network 110 and of decoding the received data to provide an appropriate output to the user (e.g., an output on a television or other display). One example of a standalone media receiver product that could be used in some embodiments is the SLINGCATCHER product available from Sling Media of Foster City, Calif., although other products could be equivalently used.


Server 104 is any component, hardware, software logic and/or the like that is capable of transmitting packetized data over network no. In some embodiments, the packetized data is a packetized stream of media content in MPEG, Quicktime, Windows Media, Real Media, or any other format, although any sort of streaming, file based and/or other data could be equivalently applied in other embodiments. Server 104 may be implemented with any sort of general or special purpose hardware, software and/or firmware, including any sort of conventional personal computer, workstation or other server system.


Several examples of servers 104 suitable for use in placeshifting applications may be implemented using any of the various SLINGBOX products available from Sling Media of Foster City, Calif., although other products or servers 104 could be used in other embodiments. Many different types of placeshifting devices are generally capable of receiving media content from an external source, such as any sort of digital video recorder (DVR), set top box (STB), cable or satellite programming source, DVD player, and/or the like. In other embodiments, server 104 may be integrated with any sort of content-receiving or other capabilities. Server 104 may be a hybrid STB or other receiver, for example, that also provides transcoding and placeshifting features. Such a device may receive satellite, cable, broadcast and/or other signals that encode television programming or other content received from an antenna, modem, server and/or other source. The receiver may further demodulate or otherwise decode the received signals to extract programming that can be locally viewed and/or place shifted to a remote client 102 as appropriate. Such devices may also include a content database stored on a hard disk drive, memory, or other storage medium to support a personal or digital video recorder (DVR) feature or other content library as appropriate. Hence, in some embodiments, a media source may be physically and/or logically contained within a common component, housing or chassis with server 104. Examples of conventional placeshifting functions, features, systems and structures are described in United States Patent Publication No. 2006/0095471, although the features described herein could be equivalently applied with any number of other techniques and structures in addition to those described in that particular publication.


In still other embodiments, server 104 is a software program, applet or the like executing on a conventional computing system (e.g., a personal computer). In such embodiments, server 104 may encode, for example, some or all of a screen display typically provided to a user of the computing system for placeshifting to a remote location. One device capable of providing such functionality is the SlingProjector product available from Sling Media of Foster City, Calif., which executes on a conventional personal computer, although other products could be used as well. And again, the types of clients 102 and servers 104 used in system 100 are not limited to placeshifting devices; any other clients 102 and servers 104 that are capable of communicating on network 110 could be equivalently applied.


In other embodiments, server 104 simply provides streaming, file-based and/or any other sort of information on network 110, including responses to database queries or the like. As noted above, the present features are not limited to placeshifting applications, and may be used with any conventional server 104 device or application operating on network 110.


Network 110 is any digital or other communications network capable of transmitting messages between senders (e.g., server 104) and receivers (e.g., client 102). In various embodiments, network 110 includes any number of public or private data connections, links or networks supporting any number of communications protocols. Network 110 may include the Internet, for example, or any other network based upon TCP/IP or other conventional protocols. In various embodiments, network 110 also incorporates a wireless and/or wired telephone network, such as a cellular communications network for communicating with mobile phones, personal digital assistants, and/or the like. Network 110 may also incorporate any sort of wireless or wired local area networks, such as one or more IEEE 802.3 and/or IEEE 802.11 networks.


As noted above, direct connections between client 102 and server 104 may not always be available due to the presence of one or more firewalls 106. Firewall 106 represents any sort of hardware, software and/or combination of hardware and software that is used to restrict connections between a client 102 and a server 104. Firewalls 106 may be implemented using dedicated hardware in some instances, although in other cases firewall 106 may be implemented with an architecture of server and/or client systems, router controls (e.g., access control lists (ACLs)) and/or the like. Often, a firewall is simply a feature implemented within a router, such as a router used to provide an interface between a home or office LAN and a cable, fiber optic, digital subscriber line (DSL) and/or other provider connection, as desired.


When a firewall 106 or other feature prevents direct connections between clients 102 and servers 104, then other techniques for establishing connections may be attempted. A mediation server 112, for example, may be used to support connections using user datagram protocol (UDP) or the like. Mediation server 112 therefore serves as a sort of “gatekeeper” machine that establishes indirect connections between client 102 and server 104, and handles the synchronizing details between client and server as well as communicating with the rest of system 100.


In many implementations, mediation server 112 is able to establish UDP or other connectionless sessions with both client 102 and server 104. As a client 102 requests connection to a server 104 that is already in communication with the mediation server, the two parties to the proposed session can often simply exchange UDP (or other) parameters and continue communicating. This technique is often referred to as “UDP hole punching”, and is often based upon conventional network address translation (NAT) techniques. Such techniques are often unsuccessful, however, particularly when the client 102 and server 104 are separated by a relatively sophisticated firewall 106 (e.g., a firewall associated with many corporate networks) that may recognize that the party originally involved in establishing the UDP session (e.g., the mediation server 112) is no longer the party involved in communications after the client 102 assumes the parameters previously used with server 112. Moreover, UDP or similar sessions may involve some manual configuration by the user, which can be inconvenient and often difficult, particularly to relatively unsophisticated users. When neither direct connection nor UDP-type proxy service is available to the user, it would be desirable to provide an additional connection feature that nevertheless allows the client 102 to communicate with server 104.


Various embodiments therefore provide a relay system 116 that is capable of establishing separate connections with the client 102 and the server 104 and relaying information between the two connections to thereby create a bridged connection between the client 102 and server 104. To that end, relay system 116 suitably includes one or more relay servers 120 that are capable of establishing and processing the various connections between any number of clients 102 and servers 104. In various embodiments, each relay server 120 includes a relay manager module 122 that invokes any number of relay instances 124 that process relay sessions in response to received requests for connections, as described more fully below. Relay manager module 122 may also interact with a database 126 and/or an administrative interface 128 to control access to the relay function, to implement business rules, and/or to take other actions as desired.


In various embodiments, load balancing 118 may also be provided to allocate relay servers 120 and/or other resources efficiently and effectively. Load balancing 118 may be implemented using any combination of hardware and/or software resources, and may be based upon network traffic, processor loads on servers 120, geographic distribution of clients 102 and/or servers 104, and/or any other factors as appropriate.


In various embodiments, each relay server 120 is implemented using conventional computer server hardware and software. Each relay server 120 may be implemented, for example, with a server computer system that is based upon any processor, architecture and/or operating system. In various embodiments, each relay server 120 is an actual or virtual computer system executing an operating system such as any version of the LINUX, UNIX, SOLARIS, NETWARE, WINDOWS, OS/X, AIX or other operating systems, and/or the like. The various UNIX/LINUX operating systems typically provide a computing core that is capable of executing a relay manager module 122 as an application, as well as any number of daemons, processes, applications or other relay instance modules 124 as desired. In an exemplary embodiment, relay manager module 122 is implemented using the JAVA environment available from Sun Microsystems of Sunnyvale, Calif., with the relay instance modules 124 implemented with conventional C, C++ or other programming. Other embodiments may implement the various components of system 116 using any other programming languages, scripting languages, development or execution environments, and/or the like.


In an exemplary embodiment, when a request for a relay connection is received from a mediation server 112, client 102 or other requesting party, the relay manager module 122 allocates incoming port numbers on server 120 to the connection and invokes a new relay instance 124 to process the connection. The instance receives the assigned port numbers and waits until both the client 102 and server 104 have contacted the relay server 120 to request connections. Requests from client 102 and server 104 are received at system 116 and forwarded to the appropriate ports by load balancing features 118 or the like. Although connections may be established using TCP, UDP or any other protocols, in various embodiments the connections are originated by client 102 and server 104 using TCP protocols to aid in traversing any firewalls 106 that may be intervening. Because most firewalls 106 do not block TCP connections that originate from within the trusted network, such connections can be very effective in establishing communications through the relay server 120.


After establishing separate connections with client 102 and server 104, relay instance 124 suitably relays data received on each connection to the other connection to create a virtual channel between client 102 and server 104. This virtual connection may be maintained or terminated at any time, based upon any criteria. In various embodiments, relay instance 125 tracks the elapsed time since the connection began and/or the amount of data processed thoughout the course of the connection. This information may be shared with relay manager 122 to terminate the connection after a pre-determined period of time or a pre-determined amount of traffic has been processed. Time and bandwidth consumption may be further stored in database 126 to allow further authentication, authorization and/or the like.


Communications from the server 104 with relay system 116 may be initiated in any manner. In various embodiments, server 104 maintains a relatively constant connection with a messaging server 114 at a uniform resource locator (URL) or other network address that can be readily contacted from behind firewall 106. Messaging server 114 may simply be a TCP server, for example, that is automatically accessed when server 104 starts up. In such cases, server 104 contacts the messaging server 114 on startup (or on some other temporal basis), establishes a TCP or similar connection, and then awaits further action. This connection may be kept alive using relatively low bandwidth “keep alive” features that are part of the TCP protocol. By pre-establishing the connection from the server 104 to the messaging server 114, a channel is maintained that can be used to send instructions or requests to the server 104, even though the server is behind a firewall 106. This is because many routers used in firewalls 106 will allow outgoing TCP connections that are originated within the trusted space while disallowing incoming TCP (and other) connections. After establishing a TCP or other connection from the server 104 to message server 114, that pre-existing connection can be used to transmit an instruction to server 104 to establish a separate connection with the relay server 116. This second connection can be established as another outgoing TCP (or other protocol) communication that is not likely to be blocked by firewall 106. That is, message server 114 can transmit an instruction over the pre-existing channel that directs server 104 to separately contact the relay server. This instruction may optionally include information about the client 102 or other party that is requesting the connection, although this information need not be present in all embodiments. When instructed to do so, server 104 suitably establishes a TCP or other connection with the relay server that can be used to transmit data to client 102, as described more fully below.


As noted above, the relay server 116 can establish connections with both the client 102 and the server 104 so that data can be relayed from one connection to another. While the relaying of data does place additional processing loads upon server 116, this does create a very convenient and effective mechanism for establishing connections between the client and server.


Turning now to FIG. 2, an exemplary process 200 for establishing a connection between a client 102 and a server 104 over network 110 is shown. In this example, client 102 initially attempts to establish a direct connection 202 with the server 104, but this connection 202 is blocked by firewall 106.


Following an unsuccessful attempt to create a direct connection, client 102 attempts to create a mediated connection 205 using mediation server 112. In this scenario, client 102 sends message 204 to mediation server 112 to request a UDP (or other) session 210 with the mediation server 112. Server 104 similarly transmits a request 206 to establish a UDP session 208 with the mediation server 112; this request 206 from server 104 may be sent at any time, including at times prior to client 102 sending message 204. Server 104 may automatically contact mediation server 112 with message 206 upon startup, for example, so that a UDP session 208 is already available when client 102 requests access to server 104. After both client 102 and server 104 are communicating with a common proxy (e.g., server 112), the proxy may forward UDP (or other) information associated with client 102 to server 104, and vice versa, in hopes that the client 102 and server 104 can directly communicate thereafter using the shared UDP information from the proxy server, as indicated by sessions 212 and 213 in FIG. 2. As noted above, however, many firewalls 106 will not allow such connections.


Again recalling that server 104 has previously established a TCP or other reliable connection 214 with a message server 114, this pre-existing connection 214 can be used to establish a relay connection from server 104 to relay server 116. When a proxy-type connection is unsuccessful, message server 114 suitably directs server 104 (via message 218) to initiate a separate connection with relay system 116. While FIG. 2 shows message 218 as being sent from message server 114 to server 104, this message 218 can be initiated in response to a request 216 received from any number of sources. In various embodiments, mediation server 112 sends request 216 to message server 114 to instruct the server 104 to contact relay server 116. In other embodiments, request 216 is transmitted by the client 102 to initiate instruction message 218. In either event, the pre-existing connection 214 established from server 104 to message server 114 is used to direct the server 104 to contact relay system 116 as appropriate. When directed to do so, server 104 sends request 220 to the relay server 116. This request 220 is appropriately processed at system 116 to create connection 226 using TCP, UDP, and/or any other appropriate protocol.


Connections between relay system 116 and client 102 may be established in any manner. In the exemplary embodiment shown in FIG. 2, either client 102 or mediation server 112 initiates a request 222 that results in connection 224 between relay server 116 and client 102. Request 222 may be initiated in response to an instruction from mediation server 112 to client 102 when a proxy connection is unsuccessful. Other embodiments, however, may initiate request 222 in any other manner. Again, if client 102 initiates the connection using TCP, then the ensuing connection 224 is very likely to pass through any intervening firewalls 106 without significant issue. Other embodiments, however, may use UDP or other protocols as appropriate.


Once connections 224 and 226 are in place, then relaying of data between client 102 and server 104 can proceed as described above over the relay connection 228. In a placeshifting application, for example, streaming media can be provided over a connection 228 from a placeshifting server 104 to be played on a media player client 102. In such embodiments, it may be desirable to limit the bit rate, frame rate, resolution or other encoding parameters of the media stream during relay transmission in order to reduce concerns about bandwidth and processing capability on servers 120. This limit could be imposed by, for example, instructions transmitted to server 104 from relay server 116 or another source, as desired. Alternately, firmware or other instructions in server 104 may configure encoding, streaming or other features as desired whenever a connection is made through relay server 116. Again, other features and implementations could be contemplated in addition to placeshifting.


Turning now to FIG. 3, an exemplary method 300 for establishing a connection between a client 102 and a server 104 suitably includes the broad steps of receiving requests 222, 220 from client 102 and server 104, respectively, at a relay server 120 (function 310); establishing the two connections 224, 226 between client 102 and server 104 (function 314); and relaying data between the two connections 224, 226 at the relay server 120 (function 316) to establish the relay connection 228. Other embodiments may provide additional features as well, such as approving the relay connection (function 312), discontinuing the relay connection after time or bandwidth limits are exceeded (function 318), and/or the like.


As noted above, relay connections do consume resources on server 120, so it may be desirable in many embodiments to encourage clients 102 to attempt direct connections (functions 302 and 304) and/or mediated connections (functions 306 and 308) prior to attempting a relay connection. In the event that direct and/or mediated connections are unsuccessful, then the relay connection may be attempted. Any number of rules or procedures could be implemented to govern if and when the relay feature is available to any particular user, client 102 and/or server 104. In the exemplary embodiment shown in FIG. 3, relay connections using server 120 are attempted after a direct connection (function 302) and a mediated (e.g., UDP) connection (function 306) have both been unsuccessful (functions 304, 308). Other embodiments may allow users to manually force a relay connection, or to automatically initiate a relay condition when it is known (or when it can be confidently assumed) that a direct or mediated connection will be unsuccessful. Such features may be coded into a media player or other client application executing at client 102, and/or may be enforced using business rules stored in database 126 or the like.


As noted above, relay server 120 creates the relay connection 228 in response to connection requests 220, 222 received from server 104 and client 102, respectively. In an exemplary embodiment, a relay instance 124 monitors ports identified by the relay manager module 122 for an appropriate period of time. If requests 220 and 222 are received prior to the expiration of an appropriate timeout period (e.g., on the order of several seconds or so), then processing continues. If no request is received from either or both of the client 102 or server 104, then the connection can be aborted.


Connections can be approved or rejected according to any suitable rules (function 312). As noted above, any number of business rules could be implemented to limit or restrict access to the relay server. Such rules may include limiting the feature to particular users, particular servers, and/or particular clients. In still other embodiments, users (or servers, or clients) could be restricted in the number of relay services that are allowed. Such a restriction could be an aggregate number (e.g., for the lifetime of the client or server), or could re-set after any appropriate period of time (e.g., ten relay connections per month).


Users may be identified with a userid/password, digital signature, biometric identification, or any other digital credential. Clients 102 and servers 104 may be similarly identified by any sort of digital credential, including any sort of digital signature or other identifier (e.g., a serial number, MAC address, and/or the like). Such information may be contained in requests 220 and/or 222, and may be compared against information stored in database 126 or elsewhere as desired. Approval can be processed by the relay manager module 122 in many embodiments, although other embodiments may process approval using the relay instance 124, an administrative feature 128, and/or any other feature as desired.


If approval is granted, then the connections 224 and 226 are established from the relay server 120 (function 314) and relaying of data between the client 102 and server 104 can commence over the relay connection 228 (function 316). In various embodiments, data stored within database 126 and/or in the relay instance 124 can be used to discontinue connection 228 according to appropriate rules. In some embodiments, it may be desirable to discontinue all connections (or just connections associated with particular clients, servers or users) after a pre-determined period of time (e.g., thirty minutes or so, although other embodiments may use longer or shorter times) or after a pre-determined amount of data has been processed (e.g., ten gigabytes/month, or any other value) (function 318). The particular rules and parameters implemented will vary from embodiment to embodiment; any number of rules could be implemented using the rules engine of database 126 as desired.


Generally speaking, the various steps of method 300 may be carried out with any sort of hardware, software and/or firmware logic within system 100. Method 300 may be carried out, for example, by a relay server 120 (FIG. 1) operating in conjunction with any appropriate client 102 and/or server 104 as appropriate. FIG. 3 also shows functions 302, 304, 306, 308 relating to attempting direct and mediated connections, as described above. In practice, these features may be carried out by client 102 or server 104 rather than by relay server 120. In various embodiments, the various steps of method 300 are carried out in response to software or firmware instructions stored in a memory, or on a disk drive and/or other storage associated with relay server 120 and/or client 102. Such instructions may be executed by any processor and/or other processing features within server 120, client 102 and/or the like. The particular means used to implement each of the various functions shown in FIG. 3, then, could be any sort of processing hardware (such as server 120, client 102 and/or server 104 of FIG. 1) executing conventional software logic in any format.


As described herein, then, new systems and techniques for establishing connections between clients and servers over a digital network have been described. Various techniques described herein allow clients and servers to separately establish TCP or other connections with a relay server that effectively relays data between the two connections to establish a virtual point-to-point link between the client and server. By allowing each of the client and the server to initiate connections with a common relay service, firewalls that would otherwise prevent direct connections between the client and server can be traversed, thereby allowing data transfer or other communications between the client and server without compromising the security of the network. This service could be used to support placeshifting or other streaming media applications by allowing a placeshifting server device to stream media data to the relay server, which in turn relays the received stream to the media player client. Equivalent embodiments could provide similar features for transfer of any stream, file-based, packet-based or other data in any format.


The term “exemplary” is used herein to represent one example, instance or illustration that may have any number of alternates. Any implementation described herein as exemplary is not necessarily to be construed as preferred or advantageous over other implementations. While several exemplary embodiments have been presented in the foregoing detailed description, it should be appreciated that a vast number of alternate but equivalent variations exist, and the examples presented herein are not intended to limit the scope, applicability, or configuration of the invention in any way. To the contrary, various changes may be made in the function and arrangement of elements described without departing from the scope of the claims and their legal equivalents.

Claims
  • 1. A method executable by a relay server to establish a media streaming connection between a media player and a placeshifting device that are each communicating with the relay server via a network, the method comprising: receiving, by the relay server, a first request associated with the media player and a second request associated with the placeshifting device, wherein both the first and second requests are received by the relay server via the network;in response to receiving the first and second requests, the relay server establishing a first connection between the relay server and the media player and a second connection between the relay server and the placeshifting device; andthe relay server relaying data received by the relay server on each of the first and second connections to the other of the first and second connections to thereby establish the media streaming connection as a bridged connection between the media player and the placeshifting device via the relay server.
  • 2. The method of claim 1 wherein the first and second connections are transmission control protocol (TCP) connections.
  • 3. The method of claim 1 wherein the receiving occurs in response to an unsuccessful user datagram protocol (UDP) connection between the media player and the placeshifting device.
  • 4. The method of claim 1 wherein the receiving occurs in response to an unsuccessful attempt to establish a direct connection between the media player and the placeshifting device.
  • 5. The method of claim 1 further comprising directing the placeshifting device to send the second request to the relay server.
  • 6. The method of claim 5 wherein the directing comprises directing a message to be sent to the placeshifting device across a pre-established connection with the placeshifting device via the network.
  • 7. The method of claim 1 further comprising discontinuing the media streaming connection after a pre-determined time has elapsed.
  • 8. The method of claim 1 further comprising discontinuing the media streaming connection after a pre-determined amount of data has been relayed.
  • 9. The method of claim 1 further comprising approving the media streaming connection prior to establishing the first and second connections based upon identification information associated with at least one of the placeshifting device, the media player, and a user of the placeshifting device.
  • 10. The method of claim 1 further comprising approving the media streaming connection prior to establishing the first and second connections based upon identification information contained in at least one of the first and second requests.
  • 11. A method of establishing a network connection via a relay server between a client and a server that are each communicating via a network, the method comprising: first attempting to establish a connectionless session across the network between the client device and the server;if the connectionless session is unsuccessful, directing both the client and the server to contact the relay server via the network;in response to the client and the server subsequently contacting the relay server via the network, establishing a first connection via the network between the relay server and the client and a second connection via the network between the relay server and the server; andrelaying data received by the relay server on each of the first and second connections via the network to the other of the first and second connections via the network to thereby establish the network connection as a bridged connection between the client and the server via the relay server in which the relay server relays commands from the media player to the placeshifting device to thereby establish a media stream that is relayed from the placeshifting device to the media player.
  • 12. The method of claim 11 wherein the connectionless session is a user datagram protocol (UDP) session, and wherein the first and second connections are transmission control protocol (TCP) connections.
  • 13. A system for establishing a media streaming connection between a media player and a placeshifting device that are each communicating via a network, the system comprising: a relay manager module configured to receive a request to establish the media streaming connection between the media player and the placeshifting device; anda relay instance module configured to establish, in response to the request, a first connection with the media player and a second connection with the placeshifting device, and to relay data received on each of the first and second connections to the other of the first and second connections to thereby establish the media streaming connection between the media player and the placeshifting device.
  • 14. The system of claim 13 wherein the first and second connections are transmission control protocol (TCP) connections.
  • 15. The system of claim 13 further comprising a database configured to store information, and wherein the relay manager module is configured to allow or disallow the media streaming connection based upon the information stored in the database.
  • 16. The system of claim 15 wherein the information stored in the database comprises an elapsed time that the media streaming connection has been established, and wherein the relay manager module is further configured to disallow the media streaming connection when the elapsed time exceeds a pre-determined value.
  • 17. The system of claim 15 wherein the information stored in the database comprises a total time that the placeshifting device has used the system, and wherein the relay manager module is further configured to disallow the media streaming connection when the total time exceeds a pre-determined allowed value.
  • 18. The system of claim 15 wherein the relay instance module is configured to establish the first and second connections by directing the media player and the placeshifting device to contact the relay instance module via the network, and wherein the placeshifting device is directed by a message transmitted via a pre-existing connection over the network.
  • 19. The system of claim 15 further comprising a mediation server configured to attempt to connect the placeshifting device and the media player via the network using a connectionless protocol, and, if the attempt to connect via the connectionless protocol is unsuccessful, to initiate the request to establish the media streaming connection between the media player and the placeshifting device via a connection-based protocol.
  • 20. The system of claim 15 further comprising a message server configured to establish a pre-existing connection with the placeshifting device across the network using a connection-based protocol and to send a message to the placeshifting device across the pre-existing connection that directs the placeshifting device to establish the second connection.
CROSS-REFERENCES TO RELATED APPLICATIONS

This Application is a continuation of U.S. application Ser. No. 13/458,852, filed on Apr. 27, 2012, now issued U.S. Pat. No. 8,838,810, which is a continuation of U.S. Non-Provisional application Ser. No. 12/426,103, filed Apr. 17, 2009, which is now issued U.S. Pat. No. 8,171,148.

US Referenced Citations (393)
Number Name Date Kind
3416043 Jorgensen Dec 1968 A
4254303 Takizawa Mar 1981 A
5161021 Tsai Nov 1992 A
5237648 Mills et al. Aug 1993 A
5386493 Degen et al. Jan 1995 A
5434590 Dinwiddie, Jr. et al. Jul 1995 A
5493638 Hooper et al. Feb 1996 A
5602589 Vishwanath et al. Feb 1997 A
5661516 Carles Aug 1997 A
5666426 Helms Sep 1997 A
5682195 Hendricks et al. Oct 1997 A
5706290 Shaw et al. Jan 1998 A
5708961 Hylton et al. Jan 1998 A
5710605 Nelson Jan 1998 A
5722041 Freadman Feb 1998 A
5757416 Birch et al. May 1998 A
5774170 Hite et al. Jun 1998 A
5778077 Davidson Jul 1998 A
5794116 Matsuda et al. Aug 1998 A
5822537 Katseff et al. Oct 1998 A
5831664 Wharton et al. Nov 1998 A
5850482 Meany et al. Dec 1998 A
5852437 Wugofski et al. Dec 1998 A
5880721 Yen Mar 1999 A
5898679 Brederveld et al. Apr 1999 A
5909518 Chui Jun 1999 A
5911582 Redford et al. Jun 1999 A
5922072 Hutchinson et al. Jul 1999 A
5936968 Lyons Aug 1999 A
5968132 Tokunaga Oct 1999 A
5987501 Hamilton et al. Nov 1999 A
6002450 Darbee et al. Dec 1999 A
6008777 Yiu Dec 1999 A
6014694 Aharoni et al. Jan 2000 A
6020880 Naimpally Feb 2000 A
6031940 Chui et al. Feb 2000 A
6036601 Heckel Mar 2000 A
6040829 Croy et al. Mar 2000 A
6043837 Driscoll, Jr. et al. Mar 2000 A
6049671 Slivka et al. Apr 2000 A
6075906 Fenwick et al. Jun 2000 A
6088777 Sorber Jul 2000 A
6097441 Allport Aug 2000 A
6104334 Allport Aug 2000 A
6108041 Faroudja et al. Aug 2000 A
6115420 Wang Sep 2000 A
6117126 Appelbaum et al. Sep 2000 A
6141059 Boyce et al. Oct 2000 A
6141447 Linzer et al. Oct 2000 A
6160544 Hayashi et al. Dec 2000 A
6201536 Hendricks et al. Mar 2001 B1
6212282 Mershon Apr 2001 B1
6222885 Chaddha et al. Apr 2001 B1
6223211 Hamilton et al. Apr 2001 B1
6240459 Roberts et al. May 2001 B1
6240531 Spilo et al. May 2001 B1
6243596 Kikinis Jun 2001 B1
6256019 Allport Jul 2001 B1
6263503 Margulis Jul 2001 B1
6279029 Sampat et al. Aug 2001 B1
6282714 Ghori et al. Aug 2001 B1
6286142 Ehreth Sep 2001 B1
6310886 Barton Oct 2001 B1
6340994 Margulis et al. Jan 2002 B1
6353885 Herzi et al. Mar 2002 B1
6356945 Shaw et al. Mar 2002 B1
6357021 Kitagawa et al. Mar 2002 B1
6370688 Hejna, Jr. Apr 2002 B1
6389467 Eyal May 2002 B1
6421429 Merritt et al. Jul 2002 B1
6434113 Gubbi Aug 2002 B1
6442067 Chawla et al. Aug 2002 B1
6456340 Margulis Sep 2002 B1
6466623 Youn et al. Oct 2002 B1
6470378 Tracton et al. Oct 2002 B1
6476826 Plotkin et al. Nov 2002 B1
6487319 Chai Nov 2002 B1
6493874 Humpleman Dec 2002 B2
6496122 Sampsell Dec 2002 B2
6505169 Bhagwvath et al. Jan 2003 B1
6510177 De Bonet et al. Jan 2003 B1
6529506 Yamamoto et al. Mar 2003 B1
6553147 Chai et al. Apr 2003 B2
6557031 Mimura et al. Apr 2003 B1
6564004 Kadono May 2003 B1
6567984 Allport May 2003 B1
6584201 Konstantinou et al. Jun 2003 B1
6584559 Huh et al. Jun 2003 B1
6597375 Yawitz Jul 2003 B1
6598159 McAlister et al. Jul 2003 B1
6600838 Chui Jul 2003 B2
6609253 Swix et al. Aug 2003 B1
6611530 Apostolopoulos Aug 2003 B1
6628716 Tan et al. Sep 2003 B1
6642939 Vallone et al. Nov 2003 B1
6647015 Malkemes et al. Nov 2003 B2
6658019 Chen et al. Dec 2003 B1
6665751 Chen et al. Dec 2003 B1
6665813 Forsman et al. Dec 2003 B1
6697356 Kretschmer et al. Feb 2004 B1
6701380 Schneider et al. Mar 2004 B2
6704678 Minke et al. Mar 2004 B2
6704847 Six et al. Mar 2004 B1
6708231 Kitagawa Mar 2004 B1
6718551 Swix et al. Apr 2004 B1
6732158 Hesselink et al. May 2004 B1
6754266 Bahl et al. Jun 2004 B2
6754439 Hensley et al. Jun 2004 B1
6757851 Park et al. Jun 2004 B1
6757906 Look et al. Jun 2004 B1
6766376 Price Jul 2004 B2
6768775 Wen et al. Jul 2004 B1
6771828 Malvar Aug 2004 B1
6774912 Ahmed et al. Aug 2004 B1
6781601 Cheung Aug 2004 B2
6785700 Masud et al. Aug 2004 B2
6795638 Skelley, Jr. Sep 2004 B1
6798838 Ngo Sep 2004 B1
6806909 Radha et al. Oct 2004 B1
6807308 Chui et al. Oct 2004 B2
6816194 Zhang et al. Nov 2004 B2
6816858 Coden et al. Nov 2004 B1
6826242 Ojard et al. Nov 2004 B2
6834123 Acharya et al. Dec 2004 B2
6839079 Barlow et al. Jan 2005 B2
6847468 Ferriere Jan 2005 B2
6850571 Tardif Feb 2005 B2
6850649 Malvar Feb 2005 B1
6868083 Apostolopoulos et al. Mar 2005 B2
6889385 Rakib et al. May 2005 B1
6892359 Nason et al. May 2005 B1
6898583 Rising, III May 2005 B1
6907602 Tsai et al. Jun 2005 B2
6927685 Wathen Aug 2005 B2
6930661 Uchida et al. Aug 2005 B2
6941575 Allen Sep 2005 B2
6944880 Allen Sep 2005 B1
6952595 Ikedo et al. Oct 2005 B2
6981050 Tobias et al. Dec 2005 B1
7016337 Wu et al. Mar 2006 B1
7020892 Levesque et al. Mar 2006 B2
7032000 Tripp Apr 2006 B2
7047305 Brooks et al. May 2006 B1
7110558 Elliott Sep 2006 B1
7124366 Foreman et al. Oct 2006 B2
7127507 Clark et al. Oct 2006 B1
7137136 Aratani Nov 2006 B1
7151575 Landry et al. Dec 2006 B1
7155734 Shimomura et al. Dec 2006 B1
7155735 Ngo et al. Dec 2006 B1
7184433 Oz Feb 2007 B1
7224323 Uchida et al. May 2007 B2
7239800 Bilbrey Jul 2007 B2
7344084 DaCosta Mar 2008 B2
7430686 Wang et al. Sep 2008 B1
7464396 Hejna, Jr. Dec 2008 B2
7478164 Lango et al. Jan 2009 B1
7478166 Agnoli et al. Jan 2009 B2
7502733 Andrsen et al. Mar 2009 B2
7505480 Zhang et al. Mar 2009 B1
7516136 Lee et al. Apr 2009 B2
7558862 Tyukasz et al. Jul 2009 B1
7565681 Ngo et al. Jul 2009 B2
7594218 Lozben Sep 2009 B1
7647430 Ng et al. Jan 2010 B2
7647614 Krikorian et al. Jan 2010 B2
7676590 Silverman et al. Mar 2010 B2
7702952 Tarra et al. Apr 2010 B2
7706358 Kitada Apr 2010 B2
7707614 Krikorian et al. Apr 2010 B2
7721300 Tipton et al. May 2010 B2
7721315 Brown et al. May 2010 B2
7725912 Margulis May 2010 B2
7769756 Krikorian et al. Aug 2010 B2
7877776 Krikorian et al. Jan 2011 B2
7895275 Evans et al. Feb 2011 B1
7917602 Sweatt, III et al. Mar 2011 B2
7921150 Schwartz Apr 2011 B1
7945688 Lango et al. May 2011 B1
7975047 Dongre Jul 2011 B2
7975062 Krikorian et al. Jul 2011 B2
7992176 Margulis Aug 2011 B2
8041988 Tarra et al. Oct 2011 B2
8051454 Krikorian et al. Nov 2011 B2
8060609 Banger et al. Nov 2011 B2
8082545 Prakash Dec 2011 B2
8099755 Bajpai et al. Jan 2012 B2
8149851 Asnis et al. Apr 2012 B2
8169914 Bajpai et al. May 2012 B2
8171148 Lucas et al. May 2012 B2
8194681 Kaarela et al. Jun 2012 B2
8266657 Margulis Sep 2012 B2
8667279 Rao Mar 2014 B2
8838810 Lucas et al. Sep 2014 B2
20010021998 Margulis Sep 2001 A1
20020004839 Wine et al. Jan 2002 A1
20020010925 Kikinis Jan 2002 A1
20020012530 Bruls Jan 2002 A1
20020031333 Mano et al. Mar 2002 A1
20020042921 Ellis Apr 2002 A1
20020046404 Mizutani Apr 2002 A1
20020053053 Nagai et al. May 2002 A1
20020080753 Lee Jun 2002 A1
20020090029 Kim Jul 2002 A1
20020105529 Bowser et al. Aug 2002 A1
20020112247 Horner et al. Aug 2002 A1
20020122137 Chen et al. Sep 2002 A1
20020131497 Jang Sep 2002 A1
20020138843 Samaan et al. Sep 2002 A1
20020143972 Christopoulos et al. Oct 2002 A1
20020143973 Price Oct 2002 A1
20020147634 Jacoby et al. Oct 2002 A1
20020147687 Breiter et al. Oct 2002 A1
20020167458 Baudisch et al. Nov 2002 A1
20020188818 Nimura et al. Dec 2002 A1
20020191575 Kalavade et al. Dec 2002 A1
20030001880 Holtz et al. Jan 2003 A1
20030028873 Lemmons Feb 2003 A1
20030065915 Yu et al. Apr 2003 A1
20030074660 McCormack et al. Apr 2003 A1
20030093260 Dagtas et al. May 2003 A1
20030095791 Barton et al. May 2003 A1
20030115167 Sharif et al. Jun 2003 A1
20030159143 Chan Aug 2003 A1
20030187657 Erhart et al. Oct 2003 A1
20030192054 Birks et al. Oct 2003 A1
20030198243 Yamada Oct 2003 A1
20030208612 Harris et al. Nov 2003 A1
20030231621 Gubbi et al. Dec 2003 A1
20040003406 Billmaier Jan 2004 A1
20040052216 Roh Mar 2004 A1
20040068334 Tsai et al. Apr 2004 A1
20040083301 Murase et al. Apr 2004 A1
20040100486 Flamini et al. May 2004 A1
20040103340 Sundareson et al. May 2004 A1
20040139047 Rechsteiner et al. Jul 2004 A1
20040162845 Kim et al. Aug 2004 A1
20040162903 Oh Aug 2004 A1
20040172410 Shimojima et al. Sep 2004 A1
20040177151 Kryeziu Sep 2004 A1
20040194141 Sanders Sep 2004 A1
20040205830 Kaneko Oct 2004 A1
20040212640 Mann et al. Oct 2004 A1
20040216173 Horoszowski et al. Oct 2004 A1
20040221029 Jenkins et al. Nov 2004 A1
20040236844 Kocherlakota Nov 2004 A1
20040255249 Chang et al. Dec 2004 A1
20050021398 McCleskey et al. Jan 2005 A1
20050027821 Alexander et al. Feb 2005 A1
20050038981 Connor et al. Feb 2005 A1
20050044058 Matthews et al. Feb 2005 A1
20050050462 Whittle et al. Mar 2005 A1
20050053356 Mate et al. Mar 2005 A1
20050055595 Frazer et al. Mar 2005 A1
20050060759 Rowe et al. Mar 2005 A1
20050097542 Lee May 2005 A1
20050114852 Chen et al. May 2005 A1
20050132351 Randall et al. Jun 2005 A1
20050138560 Lee et al. Jun 2005 A1
20050155077 Lawrence et al. Jul 2005 A1
20050198584 Matthews et al. Sep 2005 A1
20050204046 Watanabe Sep 2005 A1
20050216851 Hull et al. Sep 2005 A1
20050227621 Katoh Oct 2005 A1
20050229118 Chiu et al. Oct 2005 A1
20050246369 Oreizy et al. Nov 2005 A1
20050251833 Schedivy Nov 2005 A1
20050283791 McCarthy et al. Dec 2005 A1
20050288999 Lerner et al. Dec 2005 A1
20060011371 Fahey Jan 2006 A1
20060031381 Van Luijt et al. Feb 2006 A1
20060034259 Matsuda Feb 2006 A1
20060050970 Gunatilake Mar 2006 A1
20060051055 Ohkawa Mar 2006 A1
20060064307 Pakkala Mar 2006 A1
20060095401 Krikorian et al. May 2006 A1
20060095471 Krikorian et al. May 2006 A1
20060095472 Krikorian et al. May 2006 A1
20060095942 van Beek May 2006 A1
20060095943 Demircin et al. May 2006 A1
20060107226 Matthews et al. May 2006 A1
20060117371 Margulis Jun 2006 A1
20060146174 Hagino Jul 2006 A1
20060171395 Deshpande Aug 2006 A1
20060190616 Mayerhofer et al. Aug 2006 A1
20060206526 Sitomer Sep 2006 A1
20060230345 Weng et al. Oct 2006 A1
20060280157 Karaoguz et al. Dec 2006 A1
20060280177 Gupta et al. Dec 2006 A1
20060294183 Agnoli et al. Dec 2006 A1
20070003224 Krikorian et al. Jan 2007 A1
20070005783 Saint-Hillaire et al. Jan 2007 A1
20070019545 Alt et al. Jan 2007 A1
20070022328 Tarra et al. Jan 2007 A1
20070043792 O'Brien Feb 2007 A1
20070067390 Agnoli et al. Mar 2007 A1
20070073767 Springer et al. Mar 2007 A1
20070074115 Patten et al. Mar 2007 A1
20070076604 Litwack Apr 2007 A1
20070107019 Romano et al. May 2007 A1
20070136778 Birger et al. Jun 2007 A1
20070147263 Liao et al. Jun 2007 A1
20070168543 Krikorian et al. Jul 2007 A1
20070180485 Dua Aug 2007 A1
20070183436 Hunter Aug 2007 A1
20070198532 Krikorian et al. Aug 2007 A1
20070217407 Yuan et al. Sep 2007 A1
20070234213 Krikorian et al. Oct 2007 A1
20070286596 Lonn Dec 2007 A1
20070288550 Ise et al. Dec 2007 A1
20080007651 Bennett Jan 2008 A1
20080019276 Takatsuji et al. Jan 2008 A1
20080037573 Cohen Feb 2008 A1
20080059533 Krikorian Mar 2008 A1
20080134267 Moghe et al. Jun 2008 A1
20080195698 Stefanovic et al. Aug 2008 A1
20080195744 Bowra et al. Aug 2008 A1
20080199150 Candelore Aug 2008 A1
20080209487 Osann et al. Aug 2008 A1
20080215392 Rajan Sep 2008 A1
20080229404 Siegrist et al. Sep 2008 A1
20080256485 Krikorian Oct 2008 A1
20080294759 Biswas et al. Nov 2008 A1
20080301233 Choi Dec 2008 A1
20080307456 Beetcher et al. Dec 2008 A1
20080307462 Beetcher et al. Dec 2008 A1
20080307463 Beetcher et al. Dec 2008 A1
20090074380 Boston et al. Mar 2009 A1
20090080448 Tarra et al. Mar 2009 A1
20090102983 Malone et al. Apr 2009 A1
20090103607 Bajpai et al. Apr 2009 A1
20090133088 Kim et al. May 2009 A1
20090146779 Kumar et al. Jun 2009 A1
20090157697 Conway et al. Jun 2009 A1
20090157777 Golwalkar et al. Jun 2009 A1
20090164600 Issa et al. Jun 2009 A1
20090199248 Ngo et al. Aug 2009 A1
20090254672 Zhang Oct 2009 A1
20090268740 Sindhu et al. Oct 2009 A1
20090282445 Yang et al. Nov 2009 A1
20100001960 Williams Jan 2010 A1
20100005483 Rao Jan 2010 A1
20100023642 Ladd et al. Jan 2010 A1
20100030880 Joshi et al. Feb 2010 A1
20100034511 Kawai et al. Feb 2010 A1
20100061708 Barton Mar 2010 A1
20100064055 Krikorian et al. Mar 2010 A1
20100064332 Krikorian et al. Mar 2010 A1
20100070925 Einaudi et al. Mar 2010 A1
20100071076 Gangotri et al. Mar 2010 A1
20100077438 Ansari Mar 2010 A1
20100100898 Pfleging et al. Apr 2010 A1
20100100915 Krikorian et al. Apr 2010 A1
20100129057 Kulkarni May 2010 A1
20100146527 Craib et al. Jun 2010 A1
20100169477 Stienhans et al. Jul 2010 A1
20100192184 Margulis Jul 2010 A1
20100192185 Margulis Jul 2010 A1
20100192188 Rao Jul 2010 A1
20100226444 Thevathasan et al. Sep 2010 A1
20100232438 Bajpai et al. Sep 2010 A1
20100269144 Forsman et al. Oct 2010 A1
20100281042 Windes et al. Nov 2010 A1
20100309916 Oskouy et al. Dec 2010 A1
20100333162 Lloyd et al. Dec 2010 A1
20110002381 Yang et al. Jan 2011 A1
20110019839 Nandury Jan 2011 A1
20110032986 Banger et al. Feb 2011 A1
20110033168 Iyer Feb 2011 A1
20110035462 Akella Feb 2011 A1
20110035466 Panigrahi Feb 2011 A1
20110035467 Thiyagarajan et al. Feb 2011 A1
20110035668 Thiyagarajan Feb 2011 A1
20110035669 Shirali et al. Feb 2011 A1
20110035741 Thiyagarajan Feb 2011 A1
20110035765 Shirali Feb 2011 A1
20110047079 Du et al. Feb 2011 A1
20110050908 Nam Mar 2011 A1
20110051016 Malode Mar 2011 A1
20110055864 Shah et al. Mar 2011 A1
20110113354 Thiyagarajan et al. May 2011 A1
20110119325 Paul et al. May 2011 A1
20110125861 Evans et al. May 2011 A1
20110150432 Paul et al. Jun 2011 A1
20110153718 Dham et al. Jun 2011 A1
20110153845 Rao et al. Jun 2011 A1
20110158610 Paul et al. Jun 2011 A1
20110191456 Jain Aug 2011 A1
20110208506 Gurzhi et al. Aug 2011 A1
20110307608 Chang et al. Dec 2011 A1
20120039580 Sweatt, III et al. Feb 2012 A1
20120166669 Price Jun 2012 A1
20120219001 Sindhu et al. Aug 2012 A1
Foreign Referenced Citations (42)
Number Date Country
1981496 Nov 1927 CN
1464685 Dec 2003 CN
4407319 Sep 1994 DE
0838945 Apr 1998 EP
1077407 Feb 2001 EP
1255395 Nov 2002 EP
1443766 Aug 2004 EP
1691550 Aug 2006 EP
1830558 Sep 2007 EP
2307151 May 1997 GB
2001211416 Aug 2001 JP
2001345766 Dec 2001 JP
2003304231 Oct 2003 JP
2005229152 Aug 2005 JP
2006054535 Feb 2006 JP
2006295909 Oct 2006 JP
2007181123 Jul 2007 JP
2008172621 Jul 2008 JP
2009009582 Jan 2009 JP
2009077212 Apr 2009 JP
2009118032 May 2009 JP
19990082855 Nov 1999 KR
20010211410 Aug 2001 KR
0133839 May 2001 WO
0147248 Jun 2001 WO
0193161 Dec 2001 WO
03026232 Mar 2003 WO
03052552 Jun 2003 WO
03098897 Nov 2003 WO
2004032511 Apr 2004 WO
2005050898 Jun 2005 WO
2006064454 Jun 2006 WO
2006074110 Jul 2006 WO
2007027891 Mar 2007 WO
2007051156 May 2007 WO
2007096001 Aug 2007 WO
2007141555 Dec 2007 WO
2007149466 Dec 2007 WO
2008024723 Feb 2008 WO
2009073828 Jun 2009 WO
2009073830 Jun 2009 WO
2009134073 Nov 2009 WO
Non-Patent Literature Citations (109)
Entry
China State Intellectual Property Office, Office Action, dated Aug. 27, 2014 for China Patent Application No. 201080016835.6.
U.S. Patent and Trademark Office, Final Office Action, dated Aug. 14, 2014 for U.S. Appl. No. 12/648,024.
Canadian Intellectual Property Office, Notice of Allowance, dated Jun. 30, 2014 for Canadian Patent Application No. 2,758,791.
Australian Government, Notice of Acceptance, dated Jul. 16, 2014 for Australian Patent Application No. 2010236888.
Japan Patent Office, Decision of Rejection, dated Jun. 3, 2014 for Japanese Patent Application No. 2012-506055.
U.S. Patent and Trademark Office, Non-Final Office Action, mailed Jun. 19, 2014 for U.S. Appl. No. 12/821,983.
Japan Patent Office, Notice of Rejection Ground, dated Oct. 29, 2013 for Japanese Patent Application No. 2012-546061.
China State Intellectual Property Office, First Office Action, dated Nov. 8, 2013 for Chinese Patent Application No. 201080016835.6.
Australian Government, Patent Examination Report No. 1, dated Nov. 15, 2013 for Australian Patent Application No. 2011271358.
Japan Patent Office, Notice of Rejection Grounds, dated Dec. 3, 2013 for Japanese Patent Application No. 2012-506055.
Intellectual Property Office, Decision, dated Dec. 30, 2013 for Taiwan Patent Application No. 099144605.
Japan Patent Office, Notice of Rejection Grounds, dated Jan. 21, 2014 for Japanese Patent Application No. 2013-516600.
Canadian Intellectual Property Office, Office Action, dated Jan. 23, 2014 for Canadian Patent Application No. 2803796.
U.S. Patent and Trademark Office, Non-Final Office Action, mailed Mar. 27, 2014 for U.S. Appl. No. 12/645,870.
Intellectual Property Office of Singapore, Search and Examination Report, dated Feb. 4, 2014 for Singapore Patent Application No. 201204603.
Intellectual Property Office of Singapore, Search and Examination Report, dated Aug. 30, 2013 for Singapore Application No. 201107539-7.
Japan Patent Office “Notice of Rejection Ground” dated Mar. 26, 2013 for Japanese Patent Appln. No. 2012-506055.
Australian Government “Patent Examination Report No. 1” dated Apr. 5, 2013 for Australian Patent Appln. No. 2010236888.
Intellectual Property Office “Office Action” issued May 20, 2013 for Taiwan Patent Appln. No. 099144605.
USPTO “Notice of Allowance” mailed Jun. 24, 2013 for U.S. Appl. No. 12/635,138.
USPTO “Non-Final Office Action” mailed Sep. 14, 2012 for U.S. Appl. No. 12/635,138, filed Dec. 10, 2009.
USPTO “Non-Final Office Action” mailed Jul. 19, 2012 for U.S. Appl. No. 12/619,192, filed Nov. 16, 2009.
USPTO “Non-Final Office Action” mailed Oct. 12, 2012 for U.S. Appl. No. 12/645,870, filed Dec. 23, 2009.
Intellectual Property Office of Singapore “Search Report and Written Opinion” dated Nov. 8, 2012 for Singapore Appln. No. 201107539-7.
USPTO “Non-Final Office Action” mailed Dec. 21, 2012 for U.S. Appl. No. 12/648,024, filed Dec. 28, 2009.
European Patent Office, International Searching Authority, “International Preliminary Report on Patentability” mailed Jan. 10, 2013 for International Appln. No. PCT/US2011/039937, filed Dec. 16, 2010.
USPTO “Final Office Action” mailed Aug. 7, 2012 for U.S. Appl. No. 12/821,983, filed Jun. 23, 2010.
USPTO “Final Office Action” mailed Feb. 21, 2013 for U.S. Appl. No. 12/619,192, filed Nov. 16, 2009.
Canadian Intellectual Property Office, “Office Action” mailed May 17, 2013 for Canadian Patent Application No. 2,758,791.
Intellectual Property Office of Singapore, “Search Report and Written Opinion,” mailed May 30, 2013 for Singapore Patent Application No. 201204603-3.
Intellectual Property Office, “Office Action” mailed Apr. 26, 2013 for Taiwan Patent Application No. 099111307.
USPTO, Final Office Action mailed Aug. 1, 2013 for U.S. Appl. No. 12/645,870.
USPTO, Office Action mailed Oct. 17, 2013 for U.S. Appl. No. 12/648,024.
International Search Report and Written Opinion, PCT/US2005/020105, Feb. 15, 2007, 6 pages.
International Search Report and Written Opinion for PCT/US2006/04382, mailed Apr. 27, 2007.
Archive of “TV Brick Home Server,” www.tvbrick.com, [online] [Archived by http://archive.org on Jun. 3, 2004; Retrieved on Apr. 12, 2006] retrieved from the Internet <URL:http://web.archive.org/web/20041107111024/www.tvbrick.com/en/affiliate/tvbs/tvbrick/document18/print>.
Faucon, B. “TV ‘Brick’ Opens up Copyright Can of Worms,” Financial Review, Jul. 1, 2003, [online [Retrieved on Apr. 12, 2006] Retrieved from the Internet, URL:http://afr.com/cgi-bin/newtextversions.pl?storyid+1056825330084&3ate+2003/07/01&pagetype+printer&section+1053801318705&path+articles/2003/06/30/0156825330084.html.].
Balster, Eric J., “Video Compression and Rate Control Methods Based on the Wavelet Transform,” The Ohio State University 2004, pp. 1-24.
Kulapala et al., “Comparison of Traffic and Quality Characteristics of Rate-Controlled Wavelet and DCT Video,” Arizona State University, Oct. 11, 2004.
Skodras et al., “JPEG2000: The Upcoming Still Image Compression Standard,” May 11, 2000, 14 pages.
Taubman et al., “Embedded Block Coding in JPEG2000,” Feb. 23, 2001, pp. 1-8 of 36.
Kessler, Gary C., An Overview of TCP/IP Protocols and the Internet; Jan. 16, 2007, retrieved from the Internet on Jun. 12, 2008 at http://www.garykessler.net/library/tcpip.html; originally submitted to the InterNIC and posted on their Gopher site on Aug. 5, 1994.
Roe, Kevin, “Third-Party Observation Under EPC Article 115 on the Patentability of an Invention,” Dec. 21, 2007.
Roe, Kevin, Third-Party Submission for Published Application Under CFR §1.99, Mar. 26, 2008.
International Search Report and Written Opinion for International Application No. PCT/US2006/025911, mailed Jan. 3, 2007.
International Search Report for International Application No. PCT/US2007/063599, mailed Dec. 12, 2007.
International Search Report for International Application No. PCT/US2007/076337, mailed Oct. 20, 2008.
International Search Report and Written Opinion for International Application No. PCT/US2006/025912, mailed Jul. 17, 2008.
International Search Report for International Application No. PCT/US2008/059613, mailed Jul. 21, 2008.
International Search Report and Written Opinion for International Application No. PCT/US2008/080910, mailed Feb. 16, 2009.
Wikipedia “Slingbox” [Online], Oct. 21, 2007, XP002512399; retrieved from the Internet: <URL:http://en.wikipedia.org/w/index.php?title=Slingbox&oldid=166080570>; retrieved on Jan. 28, 2009.
Wikipedia “LocationFree Player” [Online], Sep. 22, 2007, XP002512400; retrieved from the Internet: <URL:http://en.wikipedia.org/w/index.php?title=LocationFree—Player&oldid=159683564>; retrieved on Jan. 28, 2009.
Capable Networks LLC “Keyspan Remote Control—Controlling Your Computer With a Remote” [Online], Feb. 21, 2006, XP002512495; retrieved from the Internet: <URL:http://www.slingcommunity.com/article/11791/Keyspan-Remote-Control---Controlling-Your-Computer-With-a-Remote/?highlight=remote+control>; retrieved on Jan. 28, 2009.
Sling Media Inc. “Slingbox User Guide” [Online] 2006, XP002512553; retrieved from the Internet: <URL:http://www.slingmedia.hk/attach/en-US—Slingbox—User—Guide—v1.2.pdf>; retrieved on Jan. 29, 2009.
Sony Corporation “LocationFree TV” [Online], 2004, SP002512410; retrieved from the Internet: <URL:http://www.docs.sony.com/release/LFX1—X5revision.pdf>; retrieved on Jan. 28, 2009 [note—document uploaded in two parts as file exceeds the 25MB size limit].
Sony Corporation “LocationFree Player Pak—LocationFree Base Station—LocationFree Player” [Online] 2005, XP002512401; retrieved from the Internet: <URL:http://www.docs.sony.com/release/LFPK1.pdf>; retrieved on Jan. 28, 2009.
European Patent Office, European Search Report for European Application No. EP 08 16 7880, mailed Mar. 4, 2009.
MythTV Wiki, “MythTV User Manual” [Online], Aug. 27, 2007, XP002515046; retrieved from the Internet: <URL:http://www.mythtv.org/wiki?title=User—Manual:Introduction&oldid=25549>.
International Searching Authority, Written Opinion and International Search Report for International Application No. PCT/US2008/077733, mailed Mar. 18, 2009.
International Searching Authority, Written Opinion and International Search Report for International Application No. PCT/US2008/087005, mailed Mar. 20, 2009.
Watanabe Y. et al., “Multimedia Database System for TV Newscasts and Newspapers”; Lecture Notes in Computer Science, Springer Verlag, Berlin, Germany; vol. 1554, Nov. 1, 1998, pp. 208-220, XP002402824, ISSN: 0302-9743.
Yasuhiko Watanabe et al., “Aligning Articles in TV Newscasts and Newspapers”; Proceedings of the International Conference on Computationallinguistics, XX, XX, Jan. 1, 1998, pp. 1381-1387, XP002402825.
Sodergard C. et al., “Integrated Multimedia Publishing: Combining TV and Newspaper Content on Personal Channels”; Computer Networks, Elsevier Science Publishers B.V., Amsterdam, Netherlands; vol. 31, No. 11-16, May 17, 1999, pp. 1111-1128, XP004304543, ISSN: 1389-1286.
Ariki Y. et al., “Automatic Classification of TV News Articles Based on Telop Character Recognition”; Multimedia Computing and Systems, 1999; IEEE International Conference on Florence, Italy, Jun. 7-11, 1999, Los Alamitos, California, USA, IEEE Comput. Soc. US; vol. 2, Jun. 7, 1999, pp. 148-152, XP010519373, ISBN: 978-0-7695-0253-3; abstract, paragraph [03.1], paragraph [05.2], figures 1,2.
Sonic Blue “ReplayTV 5000 User's Guide,” 2002, entire document.
Bluetooth-News; Main Future User Models Document Verification & Qualification: Bluetooth Technical Background, Apr. 21, 1999; pp. 1 of 7 and 2 of 7; http://www.bluetooth.com/v2/news/show.asp 1-2.
Microsoft Corporation; Harman/Kardon “Master Your Universe” 1999.
Matsushita Electric Corporation of America MicroCast : Wireless PC Multimedia Transceiver System, Nov. 1998.
“Wireless Local Area Networks: Issues in Technology and Standards” Jan. 6, 1999.
China State Intellectual Property Office “First Office Action,” issued Jul. 31, 2009, for Application No. 200580026825.X.
European Patent Office, International Searching Authority, “International Search Report,” for International Application No. PCT/US2009/049006, mailed Sep. 11, 2009.
European Patent Office, European Search Report, mailed Sep. 28, 2009 for European Application No. EP 06 78 6175.
International Search Report for PCT/US2008/069914 mailed Dec. 19, 2008.
PCT Partial International Search, PCT/US2009/054893, mailed Dec. 23, 2009.
Newton's Telecom Dictionary, 21st ed., Mar. 2005.
Ditze M. et all “Resource Adaptation for Audio-Visual Devices in the UPnP QoS Architecture,” Advanced Networking and Applications, 2006; AINA, 2006; 20% H International conference on Vienna, Austria Apr. 18-20, 2006.
Joonbok, Lee et al. “Compressed High Definition Television (HDTV) Over IPv6,” Applications and the Internet Workshops, 2006; Saint Workshops, 2006; International Symposium, Phoenix, AZ, USA, Jan. 23-27, 2006.
Lowekamp, B. et al. “A Hierarchy of Network Performance Characteristics for Grid Applications and Services,” GGF Network Measurements Working Group, pp. 1-29, May 24, 2004.
Meyer, Derrick “MyReplayTV™ Creates First-Ever Online Portal to Personal TII Service; Gives Viewers Whole New Way to Interact With Programming,” http://web.archive.org/web/20000815052751/http://www.myreplaytv.com/, Aug. 15, 2000.
Sling Media “Sling Media Unveils Top-of-Line Slingbox PRO-HD” [online], Jan. 4, 2008, XP002560049; retrieved from the Internet: URL:www.slingmedia.com/get/pr-slingbox-pro-hd.html; retrieved on Oct. 12, 2009.
Srisuresh, P. et al. “Traditional IP Network Address Translator (Traditional NAT),” Network Working Group, The Internet Society, Jan. 2001.
China State Intellectual Property Office “First Office Action,” issued Jan. 8, 2010, for Application No. 200810126554.0.
Australian Government “Office Action,” Australian Patent Application No. 2006240518, mailed Nov. 12, 2009.
Newton's Telcom Dictionary, 20th ed., Mar. 2004.
“The Authoritative Dictionary of IEEE Standard Terms,” 7th ed. 2000.
European Patent Office, International Searching Authority, “International Search Report,” mailed Mar. 30, 2010; International Application PCT/US2009/068468 filed Dec. 27, 2009.
Qiong, Liu et al. “Digital Rights Management for Content Distribution,” Proceedings of the Australasian Information Security Workshop Conference on ACSW Frontiers 2003, vol. 21, 2003, XP002571073, Adelaide, Australia, ISSN: 1445-1336, ISBN: 1-920682-00-7, sections 2 and 2.1.1.
China State Intellectual Property Office “Office Action” issued Mar. 18, 2010 for Application No. 200680022520.6.
China State Intellectual Property Office “Office Action” issued Apr. 13, 2010 for Application No. 200580026825.X.
Canadian Intellectual Property Office “Office Action” mailed Feb. 18, 2010 for Application No. 2569610.
European Patent Office “European Search Report,” mailed May 7, 2010 for Application No. 06786174.0.
Lee, M. et al. “Video Frame Rate Control for Non-Guaranteed Network Services with Explicit Rate Feedback,” Globecom'00, 2000 IEEE Global Telecommunications conference, San Francisco, CA, Nov. 27-Dec. 1, 2000; [IEEE Global Telecommunications Conference], New York, NY; IEEE, US, vol. 1,Nov. 27, 2000, pp. 293-297, XP001195580; ISBN: 978-0-7803-6452-3, lines 15-20 of sec. II on p. 293, fig. 1.
European Patent Office, International Searching Authority, “International Search Report and Written Opinion,” mailed Jun. 4, 2010 for International Application No. PCT/IN2009/000728, filed Dec. 18, 2009.
Korean Intellectual Property Office “Official Notice of Preliminary Rejection,” issued Jun. 18, 2010; Korean Patent Application No. 10-2008-7021254.
European Patent Office, International Searching Authority, “International Search Report,” mailed Dec. 13, 2010; International Application No. PCT/US2010/029062 filed Mar. 29, 2010.
European Patent Office, International Searching Authority, “International Search Report” mailed Mar. 18, 2011; International Appln. No. PCT/US2010/060797, filed Dec. 16, 2010.
USPTO “Non-Final Office Action” mailed Aug. 7, 2008 for U.S. Appl. No. 11/620,711, filed Jan. 7, 2007.
USPTO “Final Office Action” mailed Feb. 9, 2009 for U.S. Appl. No. 11/620,711, filed Jan. 7, 2007.
USPTO “Non'Final Office Action” mailed Oct. 1, 2009 for U.S. Appl. No. 11/778,287, filed Jul. 16, 2007.
USPTO “Final Office Action” mailed Jan. 25, 2010 for U.S. Appl. No. 11/734,277, filed Apr. 12, 2007.
USPTO “Final Office Action” mailed Mar. 12, 2010 for U.S. Appl. No. 11/620,711, filed Jan. 7, 2007.
USPTO “Non-Final Office Action” mailed Apr. 1, 2010 for U.S. Appl. No. 12/237,103, filed Sep. 24, 2008.
Japan Patent Office, Decision to Grant, dated Nov. 25, 2014 for Japanese Patent Application No. 2013-516600.
United States Patent and Trademark Office, Notice of Allowance and Fee(s) Due, dated Dec. 5, 2014 for U.S. Appl. No. 12/619,192.
United States Patent and Trademark Office, Final Office Action, dated Dec. 15, 2014 for U.S. Appl. No. 12/821,983.
United States Patent and Trademark Office, Final Office Action, dated Dec. 17, 2014 for U.S. Appl. No. 12/645,870.
State Intellectual Property Office of the People's Republic of China, Office Action for PRC (China) Patent Application No. 201180030790.2 mailed Feb. 27, 2015.
USPTO, Office Action for U.S. Appl. No. 12/648,024 mailed Mar. 12, 2015.
USPTO, Notice of Allowance and Fee(s) Due for U.S. Appl. No. 12/821,983 mailed Mar. 23, 2015.
Related Publications (1)
Number Date Country
20150006746 A1 Jan 2015 US
Continuations (2)
Number Date Country
Parent 13458852 Apr 2012 US
Child 14486908 US
Parent 12426103 Apr 2009 US
Child 13458852 US