US20120102157A1 - Communication method and apparatus using hypertext transfer protocol - Google Patents
Communication method and apparatus using hypertext transfer protocol Download PDFInfo
- Publication number
- US20120102157A1 US20120102157A1 US13/292,913 US201113292913A US2012102157A1 US 20120102157 A1 US20120102157 A1 US 20120102157A1 US 201113292913 A US201113292913 A US 201113292913A US 2012102157 A1 US2012102157 A1 US 2012102157A1
- Authority
- US
- United States
- Prior art keywords
- http
- control
- client
- server
- request
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2381—Adapting the multiplex stream to a specific network, e.g. an Internet Protocol [IP] network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/142—Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
- H04N21/64322—IP
Definitions
- Methods and apparatuses consistent with the present invention relate to communication using hypertext transfer protocol (HTTP), and more particularly, to implementing a real-time streaming using HTTP, and a client and a server used for the method.
- HTTP hypertext transfer protocol
- Streaming is transmission of video or audio from a server to a client through a network such as the Internet.
- the server breaks the video into packets so as to be transmitted through the network.
- the client collects the packets to recover the video and reproduces the video.
- the reproduction and packet reception simultaneously occur.
- the packets associated here are referred to as streaming.
- Streaming is distinguished from a simple file transmission for performing reproduction after receiving the entire video, in that the client reproduces video data while continuously receives the video data.
- the client simultaneously receives and reproduces streaming client packets and disuses the reproduced data.
- protocols such as HTTP, file transfer protocol (FTP), real-time transport protocol (RTP), and real-time streaming protocol (RTSP) can be used.
- HTTP and the FTP are inherently file transfer protocols, while the RTP and the RTSP are protocols for real-time file streaming.
- FIG. 1 is a signal flow diagram for explaining real-time streaming using HTTP between a client and a server according to the related art.
- the client 100 and the server 110 cannot transceive information with each other while processing HTTP requests by using an existing HTTP protocol and cannot cope with a session state which continuously changes, so that the existing HTTP protocol is not suitable for real-time streaming.
- a related art HTTP operates in that, as described above, an HTTP client always transmits a request, and an HTTP server transmits a response to the request. According to the aforementioned operation, when a state change in the HTTP server occurs, there is no method of notifying the change. In addition, there is no method of transmitting a request which is not a response from the HTTP server to the HTTP client. In addition, the HTTP client cannot receive a response to a new HTTP request from the HTTP server while processing a previous HTTP request. Lastly, when the HTTP response is divided into packets to be transmitted, there is no method of performing timestamping on each of the packets. Due to the restrictions, the HTTP has disadvantages for supporting real-time transport.
- the HTTP As a related art protocol supporting the real-time transport, there is the RTP.
- UTP universal plug and play
- AV audio and video
- DLNA digital living network alliance
- the HTTP is designated as a basic streaming protocol due to simplicity and convenience of the HTTP. In this case, it is necessary to enable real-time transport to be performed by only extending the HTTP. In addition, it is also important to enable the real-time transport to be performed by at least modifying an existing code.
- a format of chunked encoding of HTTP 1.1 is shown by a Backus Naur Form (BNF) as follows.
- chunk-data chunk-size(OCTET)
- * means that the following part is repeated by the number in front of the *
- token means string represented by general American Standard Code for Information Interchange (ASCII) codes
- HEX means hexadecimal.
- a part included in ‘[‘,’]’ can be omitted, and contents of a part included in ‘(‘,’)’ are managed as one.
- CRLF represents ‘ ⁇ r’ and ‘ ⁇ n’.
- the BNF is interpreted according to this rule in that, Chunked-Body represents that 0 or more chunk is repeated and when “last-chunk trailer CRLF” is shown, the Chunked-Body is completed.
- the chunk includes “chunk-size chunk-extension CRLF chunk-data CRLF”, and “chunk-extension” can be omitted.
- Chunk-size means a magnitude represented as hexadecimal
- Last-chunk includes one or more fields constructed with “0”, and chunk-extension and CRLF that can be omitted.
- Trailer includes 0 or more entity-header, for example a HTTP header.
- An example of the above chunk-body format is as follows.
- HTTP-Header HTTP-Header-value ⁇ r ⁇ n
- front numbers and ‘:’ represent line numbers.
- “100” means that the size of following chunk-data is “100 bytes”
- Completion of chunk header information is represented as ⁇ r ⁇ n.
- the chunk-data is transmitted, and at the end of the chunk-data, the ⁇ r ⁇ n is transmitted.
- ⁇ r ⁇ n follows “200”. This exemplifies a case where “chunk-extension” is omitted.
- real chunk-data is transmitted.
- ⁇ r ⁇ n is transmitted.
- “trailer” including entity-header is transmitted.
- ⁇ r ⁇ n is transmitted.
- HTTP-Header HTTP-Header-Value ⁇ r ⁇ n
- the second line shows that the HTTP server transmits data via chunked encoding through an HTTP header referred to as “Transfer-Encoding: chunked”.
- the present invention provides a method of exchanging information between a streaming server and a client by using chunked encoding of HTTP while an HTTP request is being processed.
- the present invention also provides a method of notifying an HTTP server state change, a method of exchanging information between a client and a server while an HTTP request is being processed, and a method of timestamping on an individual HTTP response packet.
- the present invention also provides a client and a server for implementing a communication method using HTTP.
- a communication method using HTTP including: setting streaming connection and control connection between a client and a server; the client transmitting an HTTP streaming request to the server; the server constructing a chunked encoding for the HTTP streaming request, and transmitting a first chunk response, including the chunked encoding, to the client through the streaming connection; and the server transmitting a second chunk response to the client through the streaming connection, wherein the second chunk response includes notification of the server.
- a communication method using HTTP including: a control handler receiving session information from a session manager, converting the session information into a chunk-extension message, and transmitting the chunk-extension message to an HTTP scheduler; the HTTP scheduler checking whether chunk transmission to an HTTP client is being performed, and when the chunk transmission is being performed, buffering the chunk-extension message until the next chunk is transmitted; the HTTP scheduler generating chunk data, by multiplexing multimedia content received from a streaming server and the chunk-extension message, and transmitting the chunk data to an HTTP server; and the HTTP server transmitting the chunk data to the HTTP client through streaming connection.
- a communication method using HTTP including: an HTTP client receiving chunk data from an HTTP server through streaming connection and transmitting the chunk data to an HTTP dispatcher, wherein the chunk data is obtained by multiplexing multimedia content and a chunk-extension message; an HTTP dispatcher demultiplexing the chunk data into the multimedia content and the chunk-extension message, transmitting the chunk-extension message to a control handler, and transmitting the multimedia content to a streaming client; and the control handler converting the chunk-extension message into session information and transmitting the session information to a session synthesizer.
- a communication method using HTTP including: a control handler receiving a session control request from a session synthesizer, converting the session control request into an HTTP control request, and transmitting the HTTP control request to an HTTP dispatcher; the HTTP dispatcher constructing an HTTP request by adding an HTTP header to the HTTP control request and transmitting the HTTP request to an HTTP client which manages control connection; and the HTTP client transmitting the HTTP request to an HTTP server through the control connection.
- a communication method using HTTP including: an HTTP server receiving an HTTP request from an HTTP client through control connection and transmitting the HTTP request to an HTTP scheduler; the HTTP scheduler analyzing the HTTP request, and based on the result of the analysis, extracting a control request excluding an HTTP header from the HTTP request, and transmitting the control request to a control handler; and the control handler converting the control request to a session control message and retrieving and calling callback, of a session manager, corresponding to the session control message.
- a communication method using HTTP including: a control handler of a client receiving a session control response from a session synthesizer, converting the session control response into an HTTP message, and transmitting the HTTP message to an HTTP dispatcher; the HTTP dispatcher generating an HTTP request by adding an HTTP header to the HTTP message, selecting an HTTP client which manages control connection, and transmitting the HTTP request to the HTTP client; the HTTP client transmitting the HTTP request through the control connection to an HTTP server, and the HTTP server transmitting the HTTP request to an HTTP scheduler; and the HTTP scheduler analyzing the HTTP request, and based on the result of the analysis, extracting the session control response from the HTTP request, and transmitting the extracted session control response to a control handler of a server.
- a communication apparatus using HTTP including: a client which is connected with a server through a streaming connection and a control connection; wherein the client requests an HTTP streaming request through the streaming connection; wherein the client transmits an HTTP post request to the server through the control connection; wherein the HTTP post request includes a control request and a response to a query of a state of the client from the server to the client.
- a communication apparatus using HTTP including: a server which is connected with a client through a streaming connection and a control connection; wherein the server receives an HTTP streaming request from the client through the streaming connection; wherein the server constructs chunked encoding for the HTTP streaming request and transmits a first chunk response, including the chunked encoding, to the client through the streaming connection; wherein the server transmits a second chunk response to the client through the streaming connection; wherein the second chunk response includes a notification of the server.
- a computer readable recording medium having recorded thereon a program for executing the methods described above.
- FIG. 1 is a signal flow diagram for explaining real-time streaming using HTTP between a client and a server according to the related art
- FIG. 2 is a signal flow diagram for explaining real-time streaming using HTTP between a client and a server according to an exemplary embodiment of the present invention
- FIG. 3 is a block diagram showing a schematic structure of the client shown in FIG. 2 ;
- FIG. 4 is a block diagram showing a schematic structure of the server shown in FIG. 2 ;
- FIG. 5 is a signal flow diagram of a server for transmitting notification from the server to a client according to another exemplary embodiment of the present invention
- FIG. 6 is a signal flow diagram of a client for receiving notification from a server to the client according to another exemplary embodiment of the present invention.
- FIG. 7 is a signal flow diagram of a server for transmitting a control request from the server to a client according to another exemplary embodiment of the present invention.
- FIG. 8 is a signal flow diagram of a client for receiving a control request from a server to the client according to another exemplary embodiment of the present invention.
- FIG. 9 is a signal flow diagram for explaining a response from a server to a client, to a control request according to another exemplary embodiment of the present invention.
- FIG. 10 is a signal flow diagram of a client for transmitting a control request from the client to a server according to another exemplary embodiment of the present invention.
- FIG. 11 is a signal flow diagram of a server for receiving a control request from a client to the server according to another exemplary embodiment of the present invention.
- FIG. 12 is a signal flow diagram of a server for transmitting a response to a control request from a client to the server according to another exemplary embodiment of the present invention.
- FIG. 13 is a signal flow diagram of a client for receiving a response to a control request from the client to a server according to another exemplary embodiment of the present invention.
- FIG. 2 is a signal flow diagram for explaining real-time streaming using HTTP between a client and a server according to an exemplary embodiment of the present invention
- thick lines represent control connection between a client 200 and a server 210
- dotted lines represent streaming connection between the client 200 and the server 210 .
- the client 200 firstly has the streaming connection with the server 210 when transmits a streaming request. In addition, the client 200 sets the control connection independent from the streaming connection.
- the server 210 transmits a query request for a state of the client 200 by using a new chunk of chunked encoding of HTTP 1.1 through the streaming connection or informs the client 200 of a change in streaming data.
- the client 200 may transmit a new request to the server 210 or transmit a response to the request of the server 210 through the control connection while HTTP streaming is performed through the streaming connection.
- session identification (ID) information is added to request and response messages.
- ID session identification
- sequence number for command and notification is added.
- the sequence number is only one in a single session.
- the server 210 constructs a chunk in order to transmit real streaming data, and starts a new chunk whenever transmits notification messages or query messages to the client 200 right after currently progressed chunk is completed and whenever transmits a response message to a control request of the client 200 .
- the server 210 performs timestamping on each chunk by using chunk-extension when transmits each of the chunks.
- the server 210 transmits an HTTP chunk response which is divided into an HTTP first chunk response, an HTTP second chunk response, an HTTP third chunk response, and an HTTP fourth chunk response through the streaming connection while adding a notification, a client state query, and server control response message to the chunk-extension.
- the client 200 adds a client state query response message and a client control request message to HTTP post requests, respectively, and transmits them through the control connection.
- FIG. 3 is a block diagram showing a schematic structure of the client 200 shown in FIG. 2 .
- an HTTP client 300 an HTTP dispatcher 310 , a control handler 320 , a streaming client 330 , a session synthesizer 340 , a session 350 , and a streaming application 360 are shown.
- the HTTP client 330 is a module for processing logic of a client of the HTTP 1.1 protocol.
- the HTTP dispatcher 310 is a module for separating a control request of a server from the server to a client, notification from the server to the client, and a response from the server to the client to a control request from the client to the server, from each of chunk data so as to be transmitted to the control handler 320 .
- the HTTP dispatcher 310 transmits a timestamp of each individual chunk transmitted from the HTTP client 300 to the control handler 320 , and obtains multimedia data needed for streaming from each chunk to transmit the obtained multimedia to the streaming client 330 .
- the HTTP dispatcher 310 transmits a stream control request from the client to the server of the control handler 320 to the server through the control connection and processes timeout of an individual stream control request.
- the HTTP dispatcher 310 transmits a response to the control request from the server to the client of the control handler 320 , to the server through the control connection.
- the control handler 320 converts a control instruction in a streaming level to a control instruction in an HTTP level, receives a response of a server to the control instruction from the HTTP dispatcher 310 , and converts the received response into a format understandable by the session synthesizer 340 so as to be transmitted to the session synthesizer 340 .
- control handler 320 receives notification from the server to the client of the server, from the HTTP dispatcher 310 and converts the notification into a format understandable by the session synthesizer 340 so as to notify the session synthesizer 340 .
- control handler 320 calls callback registered by the session synthesizer 340 for the control request of the server from the server to the client and converts a response to this in the streaming session level to a response in the HTTP level.
- the streaming client 330 receives chunk-data from the HTTP dispatcher 310 and performs buffering thereon and provides data to the streaming application 360 .
- the streaming client 330 provides a reception state, a reception time, a timestamp time, and buffer statistics information of each chunk to the session synthesizer 340 .
- the streaming client 330 adjusts the number of buffers according to an instruction of the session synthesizer 340 .
- the session synthesizer 340 is a module for synthesizing streaming sessions and performing a control function. Specifically, the session synthesizer 340 performs control in a session level by using the control handler 320 , and controls the streaming client 330 in correspondence with a change in streaming data notified from the control handler 320 . In addition, the session synthesizer 340 responds to session control from the server to the client, requested by the control handler 320 . In addition, the session synthesizer 340 monitors a streaming state by using the streaming client 330 and has a function of connecting a buffer of the streaming client 330 to the streaming application 360 .
- the streaming application 360 is a module for real rendering multimedia contents by using the session synthesizer 340 .
- FIG. 4 is a block diagram showing a schematic structure of the server 210 shown in FIG. 2 .
- an HTTP server 400 an HTTP scheduler 410 , a control handler 420 , a streaming server 430 , a session manager 440 , a session 450 , and a content source 460 are shown.
- the HTTP server 400 is a module for processing logic of a server of the HTTP 1.1 protocol.
- the HTTP scheduler 410 performs the following functions. When the HTTP scheduler 410 receives a notification request of a change in the streaming data from the server to the client from the control handler 420 , the HTTP scheduler 410 performs buffering thereon, and at a time point when current transmission of chunk data is completed and a new chunk is transmitted, the HTTP scheduler 410 transmits a corresponding notification to the new chunk. In addition, when the HTTP scheduler 410 receives a control request from the server to the client, from the control handler 420 , at the time point when current transmission of chunk data is completed and a new chunk is transmitted, the HTTP scheduler 410 inserts the corresponding control request to the new chunk so as to be transmitted.
- the HTTP scheduler 410 performs buffering on the response to the control request from the client to the server, wherein the request is received from the control handler 420 .
- the HTTP scheduler 410 inserts a timestamp to each individual chunk, and multiplexes chunk header information, a notification message according to the current exemplary embodiment of the present invention, a control request message, meta information on a control request response message or a timestamp, and a chunk data such as multimedia data.
- the HTTP scheduler 410 when the HTTP scheduler 410 receives a control request from the client to the server through the control connection, the HTTP scheduler 410 transmits an acknowledgment (ACK) (HTTP/1.1 200 OK) in response thereto, and when receiving a response of the client to the control request from the server to the client, transmits ACK (HTTP/1.1 200 OK) in response thereto.
- ACK acknowledgment
- the control handler 420 converts notification from the server to the client in the streaming session level to notification in a chunk-extension level and transmits the converted notification to the HTTP scheduler 410 .
- the control handler 420 converts the request into a control instruction in the chunk-extension level, transmits the control instruction to the HTTP scheduler 410 , and processes timeout for the request.
- control handler 420 when the control handler 420 receives a control request of the client from the client to the server through the control connection, the control handler 420 calls callback registered by the session manager 440 , converts a response to this in the streaming session level into the chunk-extension level, and transmits the converted response to the HTTP scheduler 410 .
- the streaming server 430 reads real streaming data from the content source 460 to perform buffering thereon so as to be transmitted to the HTTP scheduler 410 .
- the streaming server 430 has a function of transmission while maintaining timing of each chunk data for streaming.
- the streaming server 430 divides the chunk into data needed for a unit time so as to be transmitted.
- the streaming server 430 has a function of adjusting the number of internal transfer buffers according to a request from the session manager 440 .
- the session manager 440 is a module for synthesizing streaming sessions to perform a control function, and more particularly, perform the following functions.
- the session manager 440 performs control in a session level by using the control handler 420 .
- the session manager 440 monitors states of the client and the network by using the control handler 420 , monitors a state of the server by using the streaming server 430 , and controls the streaming server 430 .
- the content source 460 is a module for providing contents to be steamed by the streaming server 430 .
- FIG. 5 is a signal flow diagram of a server for transmitting notification from the server to a client according to another exemplary embodiment of the present invention.
- dotted lines represent the streaming connection.
- a session manager 500 transmits a session change to the control handler 510 .
- the session manager 500 monitors a change in a session state and transmits the change as a notification message.
- the control handler 510 receives the notification and converts the session change. Specifically, the control handler 510 converts a session change message in a session level into a message in a chunk-extension level.
- a sessionid is added to a message ID.
- the control handler transmits the converted session change chunked encoding to an HTTP scheduler 530 .
- the HTTP scheduler 530 performs buffering on the session change chunked encoding.
- the HTTP scheduler 530 checks whether chunk transmission is currently being performed. When the chunk transmission is being performed, the HTTP scheduler 530 does not immediately transmit the session change chunked encoding and performs buffering until a next chunk is transmitted.
- the streaming server 520 transmits multimedia data to the HTTP scheduler 530 to request the HTTP scheduler 530 to transmit the multimedia data to the client. Thereafter, the HTTP scheduler 530 multiplexes the session change chunk encoding received from the control handler 510 and the multimedia data received from the streaming server 520 .
- the HTTP scheduler 530 multiplexes session change notification messages currently piled in a buffer, a session control request message from the server to the client, a response message to a control request from the client to the server, and the multimedia content data, into chunk data messages.
- the HTTP scheduler 530 transmits the multiplexed chunk data to the HTTP server 540 through the streaming connection, and the HTTP server 540 transmits the multiplexed chunk data to the HTTP client 550 .
- a message format of the chunk data may be constructed as follows.
- the message format is an example of a chunk data message format for notification from the server to the client.
- timestamp represents a time at which a current chunk is transmitted.
- number of msgs represents the number of messages of the server, which are multiplexed into the current chunk.
- Start and end represent start and end of each individual message.
- Each individual message always includes “type”, “cmd”, “sessionid”, “sequence”, and the like, and remaining fields have different contents according to a type of each message.
- the message transmitted from the server is defined to include several messages because a requested session change, a session control request from the server to the client, and a session control response message from the client to the server cannot be transmitted while the current chunk is being transmitted.
- This message format may be commonly applied to the session change from the server to the client, the session control request from the server to the client, and the session control response from the client to the server.
- FIG. 6 is a signal flow diagram of a client for receiving notification from a server to the client according to another exemplary embodiment of the present invention.
- dotted lines represent streaming connection.
- An HTTP client 610 receives chunk data from an HTTP server 600 through the streaming connection and transmits the chunk data to an HTTP dispatcher 620 .
- the chunk data is multiplexed session change information and multiplexed multimedia content data.
- the HTTP dispatcher 620 demultiplexes session change chunked encoding and the multimedia contents. In other words, the HTTP dispatcher 620 divides the chunk data into session change information and multimedia content information. Next, the HTTP dispatcher 620 transmits the divided session change chunk-extension information to a control handler 630 , and transmits the divided multimedia content data to a streaming client 640 .
- the control handler 630 converts the received session change chunked encoding information into a notification message in a session level in order to convert the received session change chunked encoding. Next, the control handler 630 transmits the converted session change notification message to a session synthesizer 650 .
- FIG. 7 is a signal flow diagram of a server for transmitting a control request from the server to a client according to another exemplary embodiment of the present invention.
- dotted lines represent streaming connection.
- a session manager 700 transmits a session control request to a control handler 710 when needs to control a session.
- the control handler 710 which receives the session control request converts session control. To do this, the control handler 710 converts a control message in a session level into a session control message in a chunk level.
- the control handler 710 transmits the converted session control chunked encoding message in the chunk level to an HTTP scheduler 730 .
- the HTTP scheduler 730 performs buffering on the session control chunked encoding.
- the HTTP scheduler 730 checks whether current chunk transmission is being performed. When the current chunk transmission is being performed, the HTTP scheduler 730 does not immediately transmit the session control chunked encoding message and performs buffering until a next chunk is transmitted.
- a streaming server 720 transmits multimedia content data to the HTTP scheduler 730 .
- the HTTP scheduler 730 multiplexes the session control chunked encoding message and the multimedia contents. To do this, the HTTP scheduler 730 multiplexes session changes currently piled in a buffer, a session control request from the server to the client, a response message to the session control request from the client to the server, and the multimedia content data, into a chunk message.
- the HTTP scheduler 730 transmits the multiplexed chunk data to an HTTP server 740 , and the HTTP server 740 transmits the chunk data to the HTTP client 750 through the streaming connection.
- a format of the chunk data message transmitted from the HTTP server 740 is similar to the message format described with reference to FIG. 5 .
- the format of the chunk data message is different from the message format shown in FIG. 5 in that a type value of each individual message is “sessioncontrol”, and “cmd” means a type of a control instruction.
- a type value of each individual message is “sessioncontrol”
- “cmd” means a type of a control instruction.
- other fields except for, “sessionstatusquery-sessionid” and a sequence field may be different.
- FIG. 8 is a signal flow diagram of a client for receiving a control request from a server to the client according to another exemplary embodiment of the present invention.
- FIG. 8 similar to FIGS. 5 to 7 , the left of a chain line represents the server, and the right thereof represents the client. In addition, dotted lines represent the streaming connection.
- An HTTP client 810 receives chunk data from an HTTP server 800 through the streaming connection and transmits the chunk data to an HTTP dispatcher 820 .
- the chunk data is a multiplexed session control request and multiplexed content data.
- the HTTP dispatcher 820 demultiplexes session change chunked encoding and multimedia content. In other words, the HTTP dispatcher 820 divides the chunk data into session control request information and multimedia content information. Next, the HTTP dispatcher 820 transmits the divided session control chunk-extension information to a control handler 830 , and transmits the divided multimedia content data to a streaming client 840 .
- the control handler 830 converts the received session control chunked encoding. To do this, the control handler 830 converts the session control chunked encoding information into a control request message in a session level. Next, the control handler 830 calls callback of a session synthesizer 850 for the converted session control request.
- FIG. 9 is a signal flow diagram for explaining a response from a server to a client, to a control request according to another exemplary embodiment of the present invention.
- FIG. 9 similar to FIGS. 5 to 8 , the left of a chain line represents the server, and the right thereof represents the client. In addition, thick lines represent the control connection.
- a session synthesizer 960 in the client processes a session control request from the server
- the session synthesizer 960 transmits a response to the session control request to a control handler 950 .
- the control handler 950 converts the received session control response.
- the session control response sis converted into a message in an HTTP level.
- the session control response message includes a session ID and sequence information.
- the control handler 950 transmits the converted response message in the HTTP level to an HTTP dispatcher 940 .
- the HTTP dispatcher 940 receives the converted response message, in order to transmit the received message through the control connection, the HTTP dispatcher 940 constructs a complete HTTP request message to an HTTP client 930 which manages the control connection.
- the HTTP request message includes HTTP header information.
- the HTTP dispatcher 940 selects the HTTP client 930 which manages the control connection to transmit the HTTP request message through the control connection.
- the HTTP request message transmitted from the HTTP client 930 has a format as follows.
- the response message has the format of the HTTP request message.
- the response message means a response message to the session control request from the server to the client.
- the response message means the session control response
- the response message has the format of the HTTP request. Therefore, after this, a HTTP scheduler 910 transmits a dummy HTTP response message. Only when the aforementioned construction is satisfied, an HTTP rule is satisfied.
- the HTTP client 930 transmits the converted HTTP request message to an HTTP server 920 .
- the HTTP server 920 transmits the received message to the HTTP scheduler 910 .
- the HTTP scheduler 910 analyzes the received HTTP request message, determines that the received HTTP request message is the session control response, and extracts only body information excluding an HTTP header.
- the HTTP scheduler 910 transmits control response information to a control handler 900 and transmits a dummy HTTP response to the received HTTP request message, to the HTTP server 920 .
- the HTTP server 920 transmits the received dummy HTTP response message to the HTTP client 930 .
- the HTTP client 930 transmits the received dummy HTTP response message to the dispatcher 940 .
- the dispatcher 940 determines whether the received message is the dummy HTTP response, and when the received message is the dummy HTTP response, simply drops the dummy HTTP message.
- FIG. 10 is a signal flow diagram of a client for transmitting a control request from the client to a server according to another exemplary embodiment of the present invention.
- FIG. 10 similar to FIGS. 5 to 9 , the left of a chain line represents the server, and the right thereof represents the client. In addition, thick lines represent the control connection.
- the session synthesizer 1040 requests an handler 1030 of a session control request.
- the control handler 1030 converts the session control request. To do this, the control handler 1030 converts a corresponding request to a control request in an HTTP level. In this case, the control request message in the HTTP level includes a session ID and sequence information. Nest, the control handler 1030 transmits the converted control request message to a dispatcher 1020 .
- the HTTP dispatcher 1020 converts the control request to a complete HTTP request message, and in order to transmit the HTTP request message through the control connection, selects an HTTP client 1010 which manages the control connection to transmit the HTTP request message to the HTTP client 1010 .
- the HTTP client 1010 transmits the HTTP request message to the HTTP server 1000 .
- the HTTP request message transmitted from the HTTP client 1010 has a format as follows.
- FIG. 11 is a signal flow diagram of a server for receiving a control request from a client to the server according to another exemplary embodiment of the present invention.
- FIG. 11 similar to FIGS. 5 to 10 , the left of a chain line represents the server, and the right thereof represents the client. In addition, thick lines represent the control connection.
- An HTTP server 1130 receives an HTTP request from an HTTP client 1140 .
- the HTTP request message appears to be an HTTP request, however, in fact, means a session control request from the client to the server.
- the HTTP server 1130 transmits the HTTP request to an HTTP scheduler 1120 .
- the HTTP scheduler 1120 analyzes the HTTP request message, and determines that the received HTTP request message means session control, and extracts important control information excluding an HTTP header.
- the HTTP scheduler 1120 transmits the converted control request to a control handler 1110 .
- the HTTP scheduler 1120 constructs a dummy HTTP response message and transmits the dummy HTTP response message to an HTTP server 1130 .
- the control handler 1110 which receives the control request from the HTTP scheduler 1120 converts the control request into a control message in a session level, calls callback of a corresponding session manager 1100 , and calls a registered session control callback.
- the HTTP server 1130 which receives the dummy HTTP response from the HTTP scheduler 1120 transmits the dummy HTTP response to an HTTP client 1140 through the control connection.
- the HTTP client 1140 transmits the dummy HTTP response to a dispatcher 1150 .
- the dispatcher 1150 determines whether the received message is the dummy HTTP response, and when the received message is the dummy HTTP response, simply drops the dummy HTTP response.
- FIG. 12 is a signal flow diagram of a server for transmitting a response to a control request from a client to the server according to another exemplary embodiment of the present invention.
- FIG. 12 similar to FIGS. 5 to 11 , the left of a chain line represents the server, and the right thereof represents the client. In addition, dotted lines represent the streaming connection.
- a session manager 1200 transmits a session response to a control handler 1210 . More specifically, the session manager 1200 processes a session control request from the client to the server, and transmits a response message to the session control request to the control handler 1210 .
- the control handler 1210 converts the session control response. More specifically, the control handler 1210 converts the session control response message in a session level into a message in a chunk-extension level. Here, a sessionid is added to a message ID.
- the control handler 1210 transmits the converted session control response chunked encoding to an HTTP scheduler 1230 .
- the HTTP scheduler 1230 performs buffering on the session control response chunked encoding.
- the HTTP scheduler 1230 checks whether current chunk transmission is being performed. When the current chunk transmission is being performed, the HTTP scheduler 1230 does not immediately transmit the session control response chunked encoding and performs buffering until a next chunk is transmitted.
- a streaming server 1220 transmits multimedia data to the HTTP scheduler 1230 to request the HTTP scheduler 1230 to transmit the multimedia data to the client.
- the HTTP scheduler 1230 multiplexes the session control response chunked encoding transmitted from the control handler 1210 and the multimedia data transmitted from the streaming server 1220 .
- the HTTP scheduler 1230 multiplexes a session change notification message currently stacked in a buffer, a session control request message from the server to the client, a response message to a control request from the client to the server, and multimedia content data, into a chunk data message.
- the HTTP scheduler 1230 transmits the multiplexed chunk data through the streaming connection to an HTTP server 1240 , and the HTTP server 1240 transmits the multiplexed chunk data to an HTTP client 1250 .
- a message format of the chunk data may be constructed as follows.
- the format of the chunk data is similar to the message format shown in FIG. 5 . However, the format of the chunk data is different from the message format shown in FIG. 5 in that a type value of each individual message is “sessioncontrolresponse”, and “cmd” means a type of a response. For example, other fields except for a fastforwardresponse-sessionid field and a sequence field can be different.
- FIG. 13 is a signal flow diagram of a client for receiving a response to a control request from the client to a server according to another exemplary embodiment of the present invention.
- FIG. 13 similar to FIGS. 5 to 12 , the left of a chain line represents the server, and the right thereof represents the client. In addition, dotted lines represent the streaming connection.
- An HTTP client 1310 which receives chunk data from an HTTP server 1300 through the streaming connection transmits the chunk data to an HTTP dispatcher 1320 .
- the chunk data is multiplexed session control response information and multiplexed multimedia content data.
- the HTTP dispatcher 1320 demultiplexes session control response chunked encoding and the multimedia content. More specifically, the HTTP dispatcher 1320 divides the chunk data into session control response information and multimedia content information. Next, the HTTP dispatcher 1320 transmits the divided session control response chunk-extension information to a control handler 1330 , and transmits the divided multimedia content data to a streaming client 1340 .
- the control handler 1330 converts the received session control response chunked encoding. More specifically, the control handler 1330 converts the session control response chunked encoding information to a control response message in a session level. Next, the control handler 1330 transmits the converted session control response message to a session synthesizer 1350 .
- bidirectional communication between a client and a server is possible by using HTTP without modifying an existing HTTP protocol, so that there is an advantage in that real-time transmission can be implemented.
- the invention can also be embodied as computer readable codes on a computer readable recording medium.
- the computer readable recording medium is any data storage device that can store data which can be thereafter read by a computer system. Examples of the computer readable recording medium include read-only memory (ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, and optical data storage devices.
- the computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. Also, functional programs, codes, and code segments for accomplishing the present invention can be easily construed by programmers skilled in the art to which the present invention pertains.
Abstract
A communication method for implementing a real-time streaming using hypertext transfer protocol (HTTP) in a network is provided. Chunked encoding of HTTP is applied so that information can be exchanged between a server and a client while an HTTP request is being progressed. Therefore, bidirectional communication between the client and the server using HTTP is possible without modifying an existing HTTP protocol, and real-time transmission can be implemented.
Description
- This application is a Divisional application of U.S. patent application Ser. No. 11/967,289 filed Dec. 31, 2007, which claims priority from Korean Patent Application No. 10-2007-0037151, filed on Apr. 16, 2007 in the Korean Intellectual Property Office, the disclosure of which is incorporated herein by reference in its entirety.
- 1. Field of the Invention
- Methods and apparatuses consistent with the present invention relate to communication using hypertext transfer protocol (HTTP), and more particularly, to implementing a real-time streaming using HTTP, and a client and a server used for the method.
- 2. Description of the Related Art
- Streaming is transmission of video or audio from a server to a client through a network such as the Internet. The server breaks the video into packets so as to be transmitted through the network. The client collects the packets to recover the video and reproduces the video. Here, the reproduction and packet reception simultaneously occur. The packets associated here are referred to as streaming.
- Streaming is distinguished from a simple file transmission for performing reproduction after receiving the entire video, in that the client reproduces video data while continuously receives the video data. The client simultaneously receives and reproduces streaming client packets and disuses the reproduced data. For streaming a file, protocols such as HTTP, file transfer protocol (FTP), real-time transport protocol (RTP), and real-time streaming protocol (RTSP) can be used. The HTTP and the FTP are inherently file transfer protocols, while the RTP and the RTSP are protocols for real-time file streaming.
-
FIG. 1 is a signal flow diagram for explaining real-time streaming using HTTP between a client and a server according to the related art. - Referring to
FIG. 1 , theclient 100 and theserver 110 cannot transceive information with each other while processing HTTP requests by using an existing HTTP protocol and cannot cope with a session state which continuously changes, so that the existing HTTP protocol is not suitable for real-time streaming. - A related art HTTP operates in that, as described above, an HTTP client always transmits a request, and an HTTP server transmits a response to the request. According to the aforementioned operation, when a state change in the HTTP server occurs, there is no method of notifying the change. In addition, there is no method of transmitting a request which is not a response from the HTTP server to the HTTP client. In addition, the HTTP client cannot receive a response to a new HTTP request from the HTTP server while processing a previous HTTP request. Lastly, when the HTTP response is divided into packets to be transmitted, there is no method of performing timestamping on each of the packets. Due to the restrictions, the HTTP has disadvantages for supporting real-time transport.
- As a related art protocol supporting the real-time transport, there is the RTP. However, recently, for universal plug and play (UPnP) audio and video (AV)/digital living network alliance (DLNA), the HTTP is designated as a basic streaming protocol due to simplicity and convenience of the HTTP. In this case, it is necessary to enable real-time transport to be performed by only extending the HTTP. In addition, it is also important to enable the real-time transport to be performed by at least modifying an existing code.
- A format of chunked encoding of HTTP 1.1 is shown by a Backus Naur Form (BNF) as follows.
- Chunked-Body=*chunk last-chunk trailer CRLF
- chunk=chunk-size [chunk-extension] CRLF chunk-data CRLF
- chunk-size=1*HEX
- last-chunk=1*(“0”) [chunk-extension] CRLF
- chunk-extension=*(“;” chunk-ext-name [“=” chunk-ext-val])
- chunk-ext-name=token
- chunk-ext-vat=token|quoted-string
- chunk-data=chunk-size(OCTET)
- trailer=*(entity-header CRLF)
- Where, * means that the following part is repeated by the number in front of the *, token means string represented by general American Standard Code for Information Interchange (ASCII) codes, and HEX means hexadecimal. A part included in ‘[‘,’]’ can be omitted, and contents of a part included in ‘(‘,’)’ are managed as one. CRLF represents ‘\r’ and ‘\n’.
- The BNF is interpreted according to this rule in that, Chunked-Body represents that 0 or more chunk is repeated and when “last-chunk trailer CRLF” is shown, the Chunked-Body is completed. Here, the chunk includes “chunk-size chunk-extension CRLF chunk-data CRLF”, and “chunk-extension” can be omitted. Chunk-size means a magnitude represented as hexadecimal, “chunk-extension” has a repeated pair of a name and a value as shown as chunk-ext-name=chunk-ext-val”, and has a format having ‘;’ for division. Last-chunk includes one or more fields constructed with “0”, and chunk-extension and CRLF that can be omitted. Trailer includes 0 or more entity-header, for example a HTTP header. An example of the above chunk-body format is as follows.
- 1: 100; cen1=cev1; cen2=cev2; cen3\r\n
- 2: 100 bytes of chunk-data . . . \r\n
- 3: 200\r\n
- 4: 200 bytes of chunk-data . . . \r\n
- 5: 0\r\n
- 6: HTTP-Header: HTTP-Header-value\r\n
- 7: \r\n
- In the chunk-body example, front numbers and ‘:’ represent line numbers. At the first line, “100” means that the size of following chunk-data is “100 bytes”, and “cen1= . . . cen3” is “chunk-extension”. Completion of chunk header information is represented as \r\n. In addition, at the second line, the chunk-data is transmitted, and at the end of the chunk-data, the \r\n is transmitted. At the third line, \r\n follows “200”. This exemplifies a case where “chunk-extension” is omitted. At the fourth line, similar to the
line 2, real chunk-data is transmitted. At the fifth line which is the last chunk, after “0” is transmitted, \r\n is transmitted. After the last chunk, as shown at the sixth line, “trailer” including entity-header is transmitted. Lastly, as shown at the seventh line, \r\n is transmitted. An example of a complete HTTP response transmitting chunk-body as described above is as follows. - 01: HTTP/1.1 200 OK\r\n
- 02: Transfer-Encoding: chunked\r\n
- 03: \r\n
- 04: 100; cen1=cev1; cen2=cev2; cen3\r\n
- 05: 100 bytes of chunk-data . . . \r\n
- 06: 200\r\n
- 07: 200 bytes of chunk-data . . . \r\n
- 08: 0\r\n
- 09: HTTP-Header: HTTP-Header-Value\r\n
- 10: \r\n
- The second line shows that the HTTP server transmits data via chunked encoding through an HTTP header referred to as “Transfer-Encoding: chunked”.
- The present invention provides a method of exchanging information between a streaming server and a client by using chunked encoding of HTTP while an HTTP request is being processed.
- The present invention also provides a method of notifying an HTTP server state change, a method of exchanging information between a client and a server while an HTTP request is being processed, and a method of timestamping on an individual HTTP response packet.
- The present invention also provides a client and a server for implementing a communication method using HTTP.
- According to an aspect of the present invention, there is provided a communication method using HTTP, including: setting streaming connection and control connection between a client and a server; the client transmitting an HTTP streaming request to the server; the server constructing a chunked encoding for the HTTP streaming request, and transmitting a first chunk response, including the chunked encoding, to the client through the streaming connection; and the server transmitting a second chunk response to the client through the streaming connection, wherein the second chunk response includes notification of the server.
- According to another aspect of the present invention, there is provided a communication method using HTTP, including: a control handler receiving session information from a session manager, converting the session information into a chunk-extension message, and transmitting the chunk-extension message to an HTTP scheduler; the HTTP scheduler checking whether chunk transmission to an HTTP client is being performed, and when the chunk transmission is being performed, buffering the chunk-extension message until the next chunk is transmitted; the HTTP scheduler generating chunk data, by multiplexing multimedia content received from a streaming server and the chunk-extension message, and transmitting the chunk data to an HTTP server; and the HTTP server transmitting the chunk data to the HTTP client through streaming connection.
- According to another aspect of the present invention, there is provided a communication method using HTTP, including: an HTTP client receiving chunk data from an HTTP server through streaming connection and transmitting the chunk data to an HTTP dispatcher, wherein the chunk data is obtained by multiplexing multimedia content and a chunk-extension message; an HTTP dispatcher demultiplexing the chunk data into the multimedia content and the chunk-extension message, transmitting the chunk-extension message to a control handler, and transmitting the multimedia content to a streaming client; and the control handler converting the chunk-extension message into session information and transmitting the session information to a session synthesizer.
- According to another aspect of the present invention, there is provided a communication method using HTTP, including: a control handler receiving a session control request from a session synthesizer, converting the session control request into an HTTP control request, and transmitting the HTTP control request to an HTTP dispatcher; the HTTP dispatcher constructing an HTTP request by adding an HTTP header to the HTTP control request and transmitting the HTTP request to an HTTP client which manages control connection; and the HTTP client transmitting the HTTP request to an HTTP server through the control connection.
- According to another aspect of the present invention, there is provided a communication method using HTTP, including: an HTTP server receiving an HTTP request from an HTTP client through control connection and transmitting the HTTP request to an HTTP scheduler; the HTTP scheduler analyzing the HTTP request, and based on the result of the analysis, extracting a control request excluding an HTTP header from the HTTP request, and transmitting the control request to a control handler; and the control handler converting the control request to a session control message and retrieving and calling callback, of a session manager, corresponding to the session control message.
- According to another aspect of the present invention, there is provided a communication method using HTTP, including: a control handler of a client receiving a session control response from a session synthesizer, converting the session control response into an HTTP message, and transmitting the HTTP message to an HTTP dispatcher; the HTTP dispatcher generating an HTTP request by adding an HTTP header to the HTTP message, selecting an HTTP client which manages control connection, and transmitting the HTTP request to the HTTP client; the HTTP client transmitting the HTTP request through the control connection to an HTTP server, and the HTTP server transmitting the HTTP request to an HTTP scheduler; and the HTTP scheduler analyzing the HTTP request, and based on the result of the analysis, extracting the session control response from the HTTP request, and transmitting the extracted session control response to a control handler of a server.
- According to another aspect of the present invention, there is provided a communication apparatus using HTTP, including: a client which is connected with a server through a streaming connection and a control connection; wherein the client requests an HTTP streaming request through the streaming connection; wherein the client transmits an HTTP post request to the server through the control connection; wherein the HTTP post request includes a control request and a response to a query of a state of the client from the server to the client.
- According to another aspect of the present invention, there is provided a communication apparatus using HTTP, including: a server which is connected with a client through a streaming connection and a control connection; wherein the server receives an HTTP streaming request from the client through the streaming connection; wherein the server constructs chunked encoding for the HTTP streaming request and transmits a first chunk response, including the chunked encoding, to the client through the streaming connection; wherein the server transmits a second chunk response to the client through the streaming connection; wherein the second chunk response includes a notification of the server.
- According to another aspect of the present invention, there is provided a computer readable recording medium having recorded thereon a program for executing the methods described above.
- The above and other aspects of the present invention will become more apparent by describing in detail exemplary embodiments thereof with reference to the attached drawings in which:
-
FIG. 1 is a signal flow diagram for explaining real-time streaming using HTTP between a client and a server according to the related art; -
FIG. 2 is a signal flow diagram for explaining real-time streaming using HTTP between a client and a server according to an exemplary embodiment of the present invention; -
FIG. 3 is a block diagram showing a schematic structure of the client shown inFIG. 2 ; -
FIG. 4 is a block diagram showing a schematic structure of the server shown inFIG. 2 ; -
FIG. 5 is a signal flow diagram of a server for transmitting notification from the server to a client according to another exemplary embodiment of the present invention; -
FIG. 6 is a signal flow diagram of a client for receiving notification from a server to the client according to another exemplary embodiment of the present invention; -
FIG. 7 is a signal flow diagram of a server for transmitting a control request from the server to a client according to another exemplary embodiment of the present invention; -
FIG. 8 is a signal flow diagram of a client for receiving a control request from a server to the client according to another exemplary embodiment of the present invention; -
FIG. 9 is a signal flow diagram for explaining a response from a server to a client, to a control request according to another exemplary embodiment of the present invention; -
FIG. 10 is a signal flow diagram of a client for transmitting a control request from the client to a server according to another exemplary embodiment of the present invention; -
FIG. 11 is a signal flow diagram of a server for receiving a control request from a client to the server according to another exemplary embodiment of the present invention; -
FIG. 12 is a signal flow diagram of a server for transmitting a response to a control request from a client to the server according to another exemplary embodiment of the present invention; and -
FIG. 13 is a signal flow diagram of a client for receiving a response to a control request from the client to a server according to another exemplary embodiment of the present invention. - Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the attached drawings.
-
FIG. 2 is a signal flow diagram for explaining real-time streaming using HTTP between a client and a server according to an exemplary embodiment of the present invention; - Referring to
FIG. 2 , thick lines represent control connection between aclient 200 and aserver 210, and dotted lines represent streaming connection between theclient 200 and theserver 210. - The
client 200 firstly has the streaming connection with theserver 210 when transmits a streaming request. In addition, theclient 200 sets the control connection independent from the streaming connection. - The
server 210 transmits a query request for a state of theclient 200 by using a new chunk of chunked encoding of HTTP 1.1 through the streaming connection or informs theclient 200 of a change in streaming data. - The
client 200 may transmit a new request to theserver 210 or transmit a response to the request of theserver 210 through the control connection while HTTP streaming is performed through the streaming connection. - Here, in order for the
client 200 and theserver 210 to refer to a specific streaming session while transceiving requests with each other, session identification (ID) information is added to request and response messages. In addition, a sequence number for command and notification is added. Here, the sequence number is only one in a single session. - The
server 210 constructs a chunk in order to transmit real streaming data, and starts a new chunk whenever transmits notification messages or query messages to theclient 200 right after currently progressed chunk is completed and whenever transmits a response message to a control request of theclient 200. Theserver 210 performs timestamping on each chunk by using chunk-extension when transmits each of the chunks. - As shown in
FIG. 2 , theserver 210 transmits an HTTP chunk response which is divided into an HTTP first chunk response, an HTTP second chunk response, an HTTP third chunk response, and an HTTP fourth chunk response through the streaming connection while adding a notification, a client state query, and server control response message to the chunk-extension. Theclient 200 adds a client state query response message and a client control request message to HTTP post requests, respectively, and transmits them through the control connection. -
FIG. 3 is a block diagram showing a schematic structure of theclient 200 shown inFIG. 2 . - Referring to
FIG. 3 , anHTTP client 300, anHTTP dispatcher 310, acontrol handler 320, astreaming client 330, asession synthesizer 340, asession 350, and astreaming application 360 are shown. - The
HTTP client 330 is a module for processing logic of a client of the HTTP 1.1 protocol. - The
HTTP dispatcher 310 is a module for separating a control request of a server from the server to a client, notification from the server to the client, and a response from the server to the client to a control request from the client to the server, from each of chunk data so as to be transmitted to thecontrol handler 320. - More specifically, the
HTTP dispatcher 310 transmits a timestamp of each individual chunk transmitted from theHTTP client 300 to thecontrol handler 320, and obtains multimedia data needed for streaming from each chunk to transmit the obtained multimedia to thestreaming client 330. In addition, theHTTP dispatcher 310 transmits a stream control request from the client to the server of thecontrol handler 320 to the server through the control connection and processes timeout of an individual stream control request. In addition, theHTTP dispatcher 310 transmits a response to the control request from the server to the client of thecontrol handler 320, to the server through the control connection. - The
control handler 320 converts a control instruction in a streaming level to a control instruction in an HTTP level, receives a response of a server to the control instruction from theHTTP dispatcher 310, and converts the received response into a format understandable by thesession synthesizer 340 so as to be transmitted to thesession synthesizer 340. - More specifically, the
control handler 320 receives notification from the server to the client of the server, from theHTTP dispatcher 310 and converts the notification into a format understandable by thesession synthesizer 340 so as to notify thesession synthesizer 340. In addition, thecontrol handler 320 calls callback registered by thesession synthesizer 340 for the control request of the server from the server to the client and converts a response to this in the streaming session level to a response in the HTTP level. - The
streaming client 330 receives chunk-data from theHTTP dispatcher 310 and performs buffering thereon and provides data to thestreaming application 360. In addition, thestreaming client 330 provides a reception state, a reception time, a timestamp time, and buffer statistics information of each chunk to thesession synthesizer 340. In addition, thestreaming client 330 adjusts the number of buffers according to an instruction of thesession synthesizer 340. - The
session synthesizer 340 is a module for synthesizing streaming sessions and performing a control function. Specifically, thesession synthesizer 340 performs control in a session level by using thecontrol handler 320, and controls thestreaming client 330 in correspondence with a change in streaming data notified from thecontrol handler 320. In addition, thesession synthesizer 340 responds to session control from the server to the client, requested by thecontrol handler 320. In addition, thesession synthesizer 340 monitors a streaming state by using thestreaming client 330 and has a function of connecting a buffer of thestreaming client 330 to thestreaming application 360. - The
streaming application 360 is a module for real rendering multimedia contents by using thesession synthesizer 340. -
FIG. 4 is a block diagram showing a schematic structure of theserver 210 shown inFIG. 2 . - Referring to
FIG. 4 , anHTTP server 400, anHTTP scheduler 410, acontrol handler 420, astreaming server 430, asession manager 440, asession 450, and acontent source 460 are shown. - The
HTTP server 400 is a module for processing logic of a server of the HTTP 1.1 protocol. - The
HTTP scheduler 410 performs the following functions. When theHTTP scheduler 410 receives a notification request of a change in the streaming data from the server to the client from thecontrol handler 420, theHTTP scheduler 410 performs buffering thereon, and at a time point when current transmission of chunk data is completed and a new chunk is transmitted, theHTTP scheduler 410 transmits a corresponding notification to the new chunk. In addition, when theHTTP scheduler 410 receives a control request from the server to the client, from thecontrol handler 420, at the time point when current transmission of chunk data is completed and a new chunk is transmitted, theHTTP scheduler 410 inserts the corresponding control request to the new chunk so as to be transmitted. In addition, theHTTP scheduler 410 performs buffering on the response to the control request from the client to the server, wherein the request is received from thecontrol handler 420. When the current transmission of chunk data is completed and a new chunk is transmitted, a response to the corresponding control request to the chunk is inserted. In addition, theHTTP scheduler 410 inserts a timestamp to each individual chunk, and multiplexes chunk header information, a notification message according to the current exemplary embodiment of the present invention, a control request message, meta information on a control request response message or a timestamp, and a chunk data such as multimedia data. - In addition, when the
HTTP scheduler 410 receives a control request from the client to the server through the control connection, theHTTP scheduler 410 transmits an acknowledgment (ACK) (HTTP/1.1 200 OK) in response thereto, and when receiving a response of the client to the control request from the server to the client, transmits ACK (HTTP/1.1 200 OK) in response thereto. - The
control handler 420 converts notification from the server to the client in the streaming session level to notification in a chunk-extension level and transmits the converted notification to theHTTP scheduler 410. In addition, when there is a request from the server to the client in the streaming session level, thecontrol handler 420 converts the request into a control instruction in the chunk-extension level, transmits the control instruction to theHTTP scheduler 410, and processes timeout for the request. - In addition, when the
control handler 420 receives a control request of the client from the client to the server through the control connection, thecontrol handler 420 calls callback registered by thesession manager 440, converts a response to this in the streaming session level into the chunk-extension level, and transmits the converted response to theHTTP scheduler 410. - The streaming
server 430 reads real streaming data from thecontent source 460 to perform buffering thereon so as to be transmitted to theHTTP scheduler 410. The streamingserver 430 has a function of transmission while maintaining timing of each chunk data for streaming. In addition, the streamingserver 430 divides the chunk into data needed for a unit time so as to be transmitted. In addition, the streamingserver 430 has a function of adjusting the number of internal transfer buffers according to a request from thesession manager 440. - The
session manager 440 is a module for synthesizing streaming sessions to perform a control function, and more particularly, perform the following functions. Thesession manager 440 performs control in a session level by using thecontrol handler 420. In addition, thesession manager 440 monitors states of the client and the network by using thecontrol handler 420, monitors a state of the server by using thestreaming server 430, and controls thestreaming server 430. - The
content source 460 is a module for providing contents to be steamed by the streamingserver 430. -
FIG. 5 is a signal flow diagram of a server for transmitting notification from the server to a client according to another exemplary embodiment of the present invention. - In
FIG. 5 , the left of a chain line represents the server, and the right of the chain line represents the client. In addition, dotted lines represent the streaming connection. - Firstly, a
session manager 500 transmits a session change to thecontrol handler 510. In this case, thesession manager 500 monitors a change in a session state and transmits the change as a notification message. Thecontrol handler 510 receives the notification and converts the session change. Specifically, thecontrol handler 510 converts a session change message in a session level into a message in a chunk-extension level. Here, a sessionid is added to a message ID. - Next, the control handler transmits the converted session change chunked encoding to an
HTTP scheduler 530. TheHTTP scheduler 530 performs buffering on the session change chunked encoding. Here, theHTTP scheduler 530 checks whether chunk transmission is currently being performed. When the chunk transmission is being performed, theHTTP scheduler 530 does not immediately transmit the session change chunked encoding and performs buffering until a next chunk is transmitted. The streamingserver 520 transmits multimedia data to theHTTP scheduler 530 to request theHTTP scheduler 530 to transmit the multimedia data to the client. Thereafter, theHTTP scheduler 530 multiplexes the session change chunk encoding received from thecontrol handler 510 and the multimedia data received from the streamingserver 520. More specifically, theHTTP scheduler 530 multiplexes session change notification messages currently piled in a buffer, a session control request message from the server to the client, a response message to a control request from the client to the server, and the multimedia content data, into chunk data messages. - Next, the
HTTP scheduler 530 transmits the multiplexed chunk data to theHTTP server 540 through the streaming connection, and theHTTP server 540 transmits the multiplexed chunk data to theHTTP client 550. Here, a message format of the chunk data may be constructed as follows. - chunk-size:timestamp=1234567.0234; type=multiple; number of msgs; start; type=sessionchange; cmd=sessionchange; \sessionid=1234567; sequence=100; bitrate=1.2 Mbps; channels=7.1; containerformat=MP3; encoding=MP3; end; \r\n AV content-data . . . \r\n
- The message format is an example of a chunk data message format for notification from the server to the client.
- Here, “timestamp” represents a time at which a current chunk is transmitted. “Type=multiple” represents that several messages are multiplexed into one chunk. Next, “number of msgs” represents the number of messages of the server, which are multiplexed into the current chunk. “Start” and “end” represent start and end of each individual message. Each individual message always includes “type”, “cmd”, “sessionid”, “sequence”, and the like, and remaining fields have different contents according to a type of each message. As described above, the message transmitted from the server is defined to include several messages because a requested session change, a session control request from the server to the client, and a session control response message from the client to the server cannot be transmitted while the current chunk is being transmitted. Therefore, the aforementioned messages are buffered, and when a next chunk is started to be transmitted, the messages buffered until then are multiplexed into chunk data. This message format may be commonly applied to the session change from the server to the client, the session control request from the server to the client, and the session control response from the client to the server.
-
FIG. 6 is a signal flow diagram of a client for receiving notification from a server to the client according to another exemplary embodiment of the present invention. - Similar to
FIG. 5 , the left of a chain line represents the server, and the right of the chain line represents the client. In addition, dotted lines represent streaming connection. - An
HTTP client 610 receives chunk data from anHTTP server 600 through the streaming connection and transmits the chunk data to anHTTP dispatcher 620. Here, the chunk data is multiplexed session change information and multiplexed multimedia content data. - The
HTTP dispatcher 620 demultiplexes session change chunked encoding and the multimedia contents. In other words, theHTTP dispatcher 620 divides the chunk data into session change information and multimedia content information. Next, theHTTP dispatcher 620 transmits the divided session change chunk-extension information to acontrol handler 630, and transmits the divided multimedia content data to astreaming client 640. - The
control handler 630 converts the received session change chunked encoding information into a notification message in a session level in order to convert the received session change chunked encoding. Next, thecontrol handler 630 transmits the converted session change notification message to asession synthesizer 650. -
FIG. 7 is a signal flow diagram of a server for transmitting a control request from the server to a client according to another exemplary embodiment of the present invention. - Similarly to in
FIGS. 5 and 6 , the left of a chain line represents the server, and the right of the chain line represents the client. In addition, dotted lines represent streaming connection. - A
session manager 700 transmits a session control request to acontrol handler 710 when needs to control a session. Thecontrol handler 710 which receives the session control request converts session control. To do this, thecontrol handler 710 converts a control message in a session level into a session control message in a chunk level. Next, thecontrol handler 710 transmits the converted session control chunked encoding message in the chunk level to anHTTP scheduler 730. TheHTTP scheduler 730 performs buffering on the session control chunked encoding. Here, theHTTP scheduler 730 checks whether current chunk transmission is being performed. When the current chunk transmission is being performed, theHTTP scheduler 730 does not immediately transmit the session control chunked encoding message and performs buffering until a next chunk is transmitted. A streamingserver 720 transmits multimedia content data to theHTTP scheduler 730. - The
HTTP scheduler 730 multiplexes the session control chunked encoding message and the multimedia contents. To do this, theHTTP scheduler 730 multiplexes session changes currently piled in a buffer, a session control request from the server to the client, a response message to the session control request from the client to the server, and the multimedia content data, into a chunk message. TheHTTP scheduler 730 transmits the multiplexed chunk data to anHTTP server 740, and theHTTP server 740 transmits the chunk data to theHTTP client 750 through the streaming connection. - Here, a format of the chunk data message transmitted from the
HTTP server 740 is similar to the message format described with reference toFIG. 5 . However, the format of the chunk data message is different from the message format shown inFIG. 5 in that a type value of each individual message is “sessioncontrol”, and “cmd” means a type of a control instruction. For example, other fields except for, “sessionstatusquery-sessionid” and a sequence field may be different. -
FIG. 8 is a signal flow diagram of a client for receiving a control request from a server to the client according to another exemplary embodiment of the present invention. - Referring to
FIG. 8 , similar toFIGS. 5 to 7 , the left of a chain line represents the server, and the right thereof represents the client. In addition, dotted lines represent the streaming connection. - An
HTTP client 810 receives chunk data from anHTTP server 800 through the streaming connection and transmits the chunk data to anHTTP dispatcher 820. Here, the chunk data is a multiplexed session control request and multiplexed content data. - The
HTTP dispatcher 820 demultiplexes session change chunked encoding and multimedia content. In other words, theHTTP dispatcher 820 divides the chunk data into session control request information and multimedia content information. Next, theHTTP dispatcher 820 transmits the divided session control chunk-extension information to acontrol handler 830, and transmits the divided multimedia content data to astreaming client 840. - The
control handler 830 converts the received session control chunked encoding. To do this, thecontrol handler 830 converts the session control chunked encoding information into a control request message in a session level. Next, thecontrol handler 830 calls callback of asession synthesizer 850 for the converted session control request. -
FIG. 9 is a signal flow diagram for explaining a response from a server to a client, to a control request according to another exemplary embodiment of the present invention. - Referring to
FIG. 9 , similar toFIGS. 5 to 8 , the left of a chain line represents the server, and the right thereof represents the client. In addition, thick lines represent the control connection. - After a
session synthesizer 960 in the client processes a session control request from the server, thesession synthesizer 960 transmits a response to the session control request to acontrol handler 950. Thecontrol handler 950 converts the received session control response. Here, the session control response sis converted into a message in an HTTP level. Here, the session control response message includes a session ID and sequence information. - Thereafter, the
control handler 950 transmits the converted response message in the HTTP level to anHTTP dispatcher 940. After theHTTP dispatcher 940 receives the converted response message, in order to transmit the received message through the control connection, theHTTP dispatcher 940 constructs a complete HTTP request message to anHTTP client 930 which manages the control connection. Here, the HTTP request message includes HTTP header information. In addition, theHTTP dispatcher 940 selects theHTTP client 930 which manages the control connection to transmit the HTTP request message through the control connection. - Here, the HTTP request message transmitted from the
HTTP client 930 has a format as follows. -
POST /path/to/url HTTP/1. 1 \r\n HTTP headers \r\n Content-Length=ddd\r\n \r\n type=sessioncontrolresponse cmd=sessionstatus sessionid=1234567\r\n sequence=101\r\n alive=true\r\n rtt=...\r\n ... - As shown above, the response message has the format of the HTTP request message. However, the response message means a response message to the session control request from the server to the client. Although the response message means the session control response, the response message has the format of the HTTP request. Therefore, after this, a
HTTP scheduler 910 transmits a dummy HTTP response message. Only when the aforementioned construction is satisfied, an HTTP rule is satisfied. - The
HTTP client 930 transmits the converted HTTP request message to anHTTP server 920. TheHTTP server 920 transmits the received message to theHTTP scheduler 910. TheHTTP scheduler 910 analyzes the received HTTP request message, determines that the received HTTP request message is the session control response, and extracts only body information excluding an HTTP header. - Next, the
HTTP scheduler 910 transmits control response information to acontrol handler 900 and transmits a dummy HTTP response to the received HTTP request message, to theHTTP server 920. TheHTTP server 920 transmits the received dummy HTTP response message to theHTTP client 930. TheHTTP client 930 transmits the received dummy HTTP response message to thedispatcher 940. Thedispatcher 940 determines whether the received message is the dummy HTTP response, and when the received message is the dummy HTTP response, simply drops the dummy HTTP message. -
FIG. 10 is a signal flow diagram of a client for transmitting a control request from the client to a server according to another exemplary embodiment of the present invention. - Referring to
FIG. 10 , similar toFIGS. 5 to 9 , the left of a chain line represents the server, and the right thereof represents the client. In addition, thick lines represent the control connection. - When a
session synthesizer 1040 needs session control, thesession synthesizer 1040 requests anhandler 1030 of a session control request. Thecontrol handler 1030 converts the session control request. To do this, thecontrol handler 1030 converts a corresponding request to a control request in an HTTP level. In this case, the control request message in the HTTP level includes a session ID and sequence information. Nest, thecontrol handler 1030 transmits the converted control request message to adispatcher 1020. - The
HTTP dispatcher 1020 converts the control request to a complete HTTP request message, and in order to transmit the HTTP request message through the control connection, selects anHTTP client 1010 which manages the control connection to transmit the HTTP request message to theHTTP client 1010. TheHTTP client 1010 transmits the HTTP request message to theHTTP server 1000. - Here, the HTTP request message transmitted from the
HTTP client 1010 has a format as follows. -
POST /path/to/control HTTP/1.1\r\n HTTP headers\r\n Content-Length=ddd\r\n \r\n type=sessioncontrol\r\n cmd=fastforward\r\n sessionid=1234567\r\n sequence=102\r\n speed=x16\r\n \r\n -
FIG. 11 is a signal flow diagram of a server for receiving a control request from a client to the server according to another exemplary embodiment of the present invention. - Referring to
FIG. 11 , similar toFIGS. 5 to 10 , the left of a chain line represents the server, and the right thereof represents the client. In addition, thick lines represent the control connection. - An
HTTP server 1130 receives an HTTP request from anHTTP client 1140. Here, the HTTP request message appears to be an HTTP request, however, in fact, means a session control request from the client to the server. TheHTTP server 1130 transmits the HTTP request to anHTTP scheduler 1120. - The
HTTP scheduler 1120 analyzes the HTTP request message, and determines that the received HTTP request message means session control, and extracts important control information excluding an HTTP header. TheHTTP scheduler 1120 transmits the converted control request to acontrol handler 1110. In addition, theHTTP scheduler 1120 constructs a dummy HTTP response message and transmits the dummy HTTP response message to anHTTP server 1130. - The
control handler 1110 which receives the control request from theHTTP scheduler 1120 converts the control request into a control message in a session level, calls callback of acorresponding session manager 1100, and calls a registered session control callback. - The
HTTP server 1130 which receives the dummy HTTP response from theHTTP scheduler 1120 transmits the dummy HTTP response to anHTTP client 1140 through the control connection. TheHTTP client 1140 transmits the dummy HTTP response to adispatcher 1150. Thedispatcher 1150 determines whether the received message is the dummy HTTP response, and when the received message is the dummy HTTP response, simply drops the dummy HTTP response. -
FIG. 12 is a signal flow diagram of a server for transmitting a response to a control request from a client to the server according to another exemplary embodiment of the present invention. - Referring to
FIG. 12 , similar toFIGS. 5 to 11 , the left of a chain line represents the server, and the right thereof represents the client. In addition, dotted lines represent the streaming connection. - First, a
session manager 1200 transmits a session response to acontrol handler 1210. More specifically, thesession manager 1200 processes a session control request from the client to the server, and transmits a response message to the session control request to thecontrol handler 1210. Thecontrol handler 1210 converts the session control response. More specifically, thecontrol handler 1210 converts the session control response message in a session level into a message in a chunk-extension level. Here, a sessionid is added to a message ID. - Next, the
control handler 1210 transmits the converted session control response chunked encoding to anHTTP scheduler 1230. TheHTTP scheduler 1230 performs buffering on the session control response chunked encoding. Here, theHTTP scheduler 1230 checks whether current chunk transmission is being performed. When the current chunk transmission is being performed, theHTTP scheduler 1230 does not immediately transmit the session control response chunked encoding and performs buffering until a next chunk is transmitted. Astreaming server 1220 transmits multimedia data to theHTTP scheduler 1230 to request theHTTP scheduler 1230 to transmit the multimedia data to the client. Next, theHTTP scheduler 1230 multiplexes the session control response chunked encoding transmitted from thecontrol handler 1210 and the multimedia data transmitted from thestreaming server 1220. More specifically, theHTTP scheduler 1230 multiplexes a session change notification message currently stacked in a buffer, a session control request message from the server to the client, a response message to a control request from the client to the server, and multimedia content data, into a chunk data message. - Next, the
HTTP scheduler 1230 transmits the multiplexed chunk data through the streaming connection to anHTTP server 1240, and theHTTP server 1240 transmits the multiplexed chunk data to anHTTP client 1250. Here, a message format of the chunk data may be constructed as follows. - chunk-size; timestamp=1234568.0234; type=multiple; number of msgs; start; type=sessioncontrolresponse; \cmd=fastforwardresponse, \sessionid=1234567; sequence=102; speed=×16; result=0K, end \r \n
- AV content-data . . . \r\n
- The format of the chunk data is similar to the message format shown in
FIG. 5 . However, the format of the chunk data is different from the message format shown inFIG. 5 in that a type value of each individual message is “sessioncontrolresponse”, and “cmd” means a type of a response. For example, other fields except for a fastforwardresponse-sessionid field and a sequence field can be different. -
FIG. 13 is a signal flow diagram of a client for receiving a response to a control request from the client to a server according to another exemplary embodiment of the present invention. - Referring to
FIG. 13 , similar toFIGS. 5 to 12 , the left of a chain line represents the server, and the right thereof represents the client. In addition, dotted lines represent the streaming connection. - An
HTTP client 1310 which receives chunk data from anHTTP server 1300 through the streaming connection transmits the chunk data to anHTTP dispatcher 1320. Here, the chunk data is multiplexed session control response information and multiplexed multimedia content data. - The
HTTP dispatcher 1320 demultiplexes session control response chunked encoding and the multimedia content. More specifically, theHTTP dispatcher 1320 divides the chunk data into session control response information and multimedia content information. Next, theHTTP dispatcher 1320 transmits the divided session control response chunk-extension information to acontrol handler 1330, and transmits the divided multimedia content data to astreaming client 1340. - The
control handler 1330 converts the received session control response chunked encoding. More specifically, thecontrol handler 1330 converts the session control response chunked encoding information to a control response message in a session level. Next, thecontrol handler 1330 transmits the converted session control response message to asession synthesizer 1350. - Accordingly, bidirectional communication between a client and a server is possible by using HTTP without modifying an existing HTTP protocol, so that there is an advantage in that real-time transmission can be implemented.
- In addition, a problem which occurs during real-time streaming using HTTP is solved, so that it is possible to apply the HTTP to the real-time streaming.
- The invention can also be embodied as computer readable codes on a computer readable recording medium. The computer readable recording medium is any data storage device that can store data which can be thereafter read by a computer system. Examples of the computer readable recording medium include read-only memory (ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, and optical data storage devices. The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. Also, functional programs, codes, and code segments for accomplishing the present invention can be easily construed by programmers skilled in the art to which the present invention pertains.
- While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those skilled in the art that various changes in format and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. The exemplary embodiments should be considered in descriptive sense only and not for purposes of limitation. Therefore, the scope of the invention is defined not by the detailed description of the invention but by the appended claims, and all differences within the scope will be construed as being included in the present invention.
Claims (12)
1. A communication method using hypertext transfer protocol (HTTP), the method comprising:
at a control handler, receiving session information from a session manager, converting the session information into a chunk-extension message, and transmitting, from the control handler, the chunk-extension message to an HTTP scheduler;
at the HTTP scheduler, checking whether chunk transmission to an HTTP client is being performed, and if the chunk transmission is being performed, buffering the chunk-extension message until the next chunk is transmitted;
at the HTTP scheduler, generating chunk data by multiplexing multimedia content received from a streaming server and the chunk-extension message, and transmitting the chunk data to an HTTP server; and
at the HTTP server, transmitting the chunk data to the HTTP client through a streaming connection.
2. The method of claim 1 , wherein the session information comprises a session change notification message, a session control request message from the HTTP server to the HTTP client, and a control response message for a session control request from the HTTP client to the HTTP server.
3. The method of claim 1 , wherein the chunk-extension message comprises a session identification.
4. A communication method using hypertext transfer protocol (HTTP), the method comprising:
at a hypertext transfer protocol (HTTP) client, receiving chunk data from an HTTP server through a streaming connection and transmitting the chunk data to an HTTP dispatcher, wherein the chunk data is obtained by multiplexing multimedia content and a chunk-extension message;
at an HTTP dispatcher, demultiplexing the chunk data into the multimedia content and the chunk-extension message, transmitting the chunk-extension message to a control handler, and transmitting the multimedia content to a streaming client; and
at the control handler, converting the chunk-extension message into session information and transmitting the session information to a session synthesizer.
5. The method of claim 4 , wherein the session information comprises a session change notification message from the HTTP server to the HTTP client, a session control request message from the HTTP server to the HTTP client, and a control response message for a session control request from the HTTP client to the HTTP server.
6. A communication method using hypertext transfer protocol (HTTP), the method comprising:
at a control handler, receiving a session control request from a session synthesizer, converting the session control request into an HTTP control request, and transmitting the HTTP control request to an HTTP dispatcher;
at the HTTP dispatcher, constructing an HTTP request by adding an HTTP header to the HTTP control request and transmitting the HTTP request to an HTTP client which manages a control connection; and
transmitting the HTTP request from the HTTP client to an HTTP server through the control connection.
7. The method of claim 6 , wherein the HTTP control request comprises a session identification and sequence information.
8. A communication method using hypertext transfer protocol (HTTP), the method comprising:
(a) at an HTTP server, receiving an HTTP request from an HTTP client through a control connection and transmitting the HTTP request to an HTTP scheduler;
(b) at the HTTP scheduler, analyzing the HTTP request, and based on a result of the analyzing, extracting a control request excluding an HTTP header from the HTTP request, and transmitting the control request to a control handler; and
(c) at the control handler, converting the control request to a session control message and retrieving and calling callback, of a session manager, corresponding to the session control message.
9. The method of claim 8 wherein (b) further comprises:
at the HTTP scheduler, constructing a dummy HTTP response to the HTTP request and transmitting the HTTP response to the HTTP server; and
at the HTTP server, transmitting the dummy HTTP response to the HTTP client through the control connection.
10. A communication method using hypertext transfer protocol (HTTP), the method comprising:
(a) at a control handler of a client, receiving a session control response from a session synthesizer, converting the session control response into an HTTP message, and transmitting the HTTP message to an HTTP dispatcher;
(b) at the HTTP dispatcher, generating an HTTP request by adding an HTTP header to the HTTP message, selecting an HTTP client which manages a control connection, and transmitting the HTTP request to the HTTP client;
(c) at the HTTP client, transmitting the HTTP request through the control connection to an HTTP server, and the HTTP server transmitting the HTTP request to an HTTP scheduler; and
(d) at the HTTP scheduler, analyzing the HTTP request, and based on a result of the analyzing, extracting the session control response from the HTTP request, and transmitting the extracted session control response to a control handler of a server.
11. The method of claim 10 , wherein (d) further comprises:
at the HTTP scheduler, constructing a dummy HTTP response to the HTTP request and transmitting the dummy HTTP response to the HTTP server;
at the HTTP server, transmitting the HTTP response to the HTTP client through the control connection;
at the HTTP client, transmitting the dummy HTTP response to the HTTP dispatcher; and
at the HTTP dispatcher, analyzing the dummy HTTP response, and if the dummy HTTP response is detected, dropping the dummy HTTP response.
12. A communication apparatus using hypertext transfer protocol (HTTP), the apparatus comprising:
a client which is connected with a server through a streaming connection and a control connection;
wherein the client requests an HTTP streaming request through the streaming connection and transmits an HTTP post request to the server through the control connection, and
wherein the HTTP post request includes a control request and a response to a query of a state of the client from the server to the client.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/292,913 US9270723B2 (en) | 2007-04-16 | 2011-11-09 | Communication method and apparatus using hypertext transfer protocol |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070037151A KR101366803B1 (en) | 2007-04-16 | 2007-04-16 | Communication method and apparatus using hyper text transfer protocol |
KR10-2007-0037151 | 2007-04-16 | ||
US11/967,289 US8078744B2 (en) | 2007-04-16 | 2007-12-31 | Communication method and apparatus using hypertext transfer protocol |
US13/292,913 US9270723B2 (en) | 2007-04-16 | 2011-11-09 | Communication method and apparatus using hypertext transfer protocol |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/967,289 Division US8078744B2 (en) | 2007-04-16 | 2007-12-31 | Communication method and apparatus using hypertext transfer protocol |
Publications (2)
Publication Number | Publication Date |
---|---|
US20120102157A1 true US20120102157A1 (en) | 2012-04-26 |
US9270723B2 US9270723B2 (en) | 2016-02-23 |
Family
ID=39854779
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/967,289 Active 2029-06-16 US8078744B2 (en) | 2007-04-16 | 2007-12-31 | Communication method and apparatus using hypertext transfer protocol |
US13/292,913 Active 2028-11-05 US9270723B2 (en) | 2007-04-16 | 2011-11-09 | Communication method and apparatus using hypertext transfer protocol |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/967,289 Active 2029-06-16 US8078744B2 (en) | 2007-04-16 | 2007-12-31 | Communication method and apparatus using hypertext transfer protocol |
Country Status (3)
Country | Link |
---|---|
US (2) | US8078744B2 (en) |
KR (1) | KR101366803B1 (en) |
CN (1) | CN101291324B (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130132507A1 (en) * | 2011-02-28 | 2013-05-23 | Viswanathan Swaminathan | System and Method for Low-Latency Content Streaming |
US10142397B2 (en) | 2016-04-05 | 2018-11-27 | International Business Machines Corporation | Network file transfer including file obfuscation |
US20190158555A1 (en) * | 2017-11-17 | 2019-05-23 | Embrionix Design Inc | Standardized hot-pluggable transceiving unit providing a cloud gateway functionality |
CN110324677A (en) * | 2018-03-30 | 2019-10-11 | 武汉斗鱼网络科技有限公司 | A kind of barrage server connection method, client and readable storage medium storing program for executing |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090307312A1 (en) * | 2008-06-10 | 2009-12-10 | Vianix Delaware, Llc | System and Method for Signaling and Media Protocol for Multi-Channel Recording |
US8914835B2 (en) * | 2009-10-28 | 2014-12-16 | Qualcomm Incorporated | Streaming encoded video data |
WO2011070552A1 (en) | 2009-12-11 | 2011-06-16 | Nokia Corporation | Apparatus and methods for describing and timing representations in streaming media files |
WO2011139305A1 (en) * | 2010-05-04 | 2011-11-10 | Azuki Systems, Inc. | Method and apparatus for carrier controlled dynamic rate adaptation and client playout rate reduction |
EP2604012B1 (en) | 2010-08-10 | 2017-10-04 | Telefonaktiebolaget LM Ericsson (publ) | A method in a media client, a media client, a control entity and a method in a control entity |
WO2012032502A1 (en) * | 2010-09-10 | 2012-03-15 | Nokia Corporation | A method and apparatus for adaptive streaming |
CN103210642B (en) * | 2010-10-06 | 2017-03-29 | 数码士有限公司 | Occur during expression switching, to transmit the method for the scalable HTTP streams for reproducing naturally during HTTP streamings |
US9420022B2 (en) | 2010-12-17 | 2016-08-16 | Microsoft Technology Licensing, Llc | Media requests to counter latency and minimize network bursts |
US9276989B2 (en) | 2012-03-30 | 2016-03-01 | Adobe Systems Incorporated | Buffering in HTTP streaming client |
CN102694864A (en) * | 2012-05-30 | 2012-09-26 | 安科智慧城市技术(中国)有限公司 | Method for achieving streaming media function by utilizing HTTP, streaming media server and system |
CN103582012B (en) * | 2012-08-07 | 2018-06-01 | 中兴通讯股份有限公司 | A kind of data distributing method and device |
CN103685387B (en) * | 2012-09-12 | 2017-05-03 | 中国移动通信集团公司 | Method for scheduling HTTP (hyper text transport protocol) request and browser device |
CN103686202B (en) * | 2012-09-18 | 2018-06-19 | 中兴通讯股份有限公司 | Transcoding live transmission method and system based on HTTP under a kind of DLNA |
FR3000336A1 (en) * | 2012-12-20 | 2014-06-27 | France Telecom | MECHANISM FOR MANAGING A COMMUNICATION SESSION |
CN103929447B (en) * | 2013-01-11 | 2017-07-07 | 中国科学院声学研究所 | A kind of method of the parsing HTTP chunked coded datas based on PEEK operations |
CN103929404B (en) * | 2013-01-11 | 2017-02-15 | 中国科学院声学研究所 | Method for analyzing HTTP chunked code data |
US9124568B2 (en) * | 2013-03-15 | 2015-09-01 | Disney Enterprises, Inc. | Device and method for asset protection scheme |
WO2014173252A1 (en) * | 2013-07-26 | 2014-10-30 | 中兴通讯股份有限公司 | Session management method, application function entity, policy server and protocol converter |
US9596281B2 (en) * | 2014-03-18 | 2017-03-14 | Qualcomm Incorporated | Transport accelerator implementing request manager and connection manager functionality |
CN104038555A (en) * | 2014-06-25 | 2014-09-10 | 珠海市君天电子科技有限公司 | Data interaction method performed on server side and terminal device, and server side and terminal device data interaction device |
WO2016056013A1 (en) * | 2014-10-07 | 2016-04-14 | Routier Ltd. | Systems and methods for http message content modification streaming |
CN107294913B (en) * | 2016-03-31 | 2021-08-27 | 阿里巴巴集团控股有限公司 | Secure communication method based on HTTP, server and client |
CN107770230B (en) * | 2016-08-23 | 2020-11-03 | 平安科技(深圳)有限公司 | Method and device for processing hypertext transfer protocol request and Web server |
US10264044B2 (en) | 2016-08-29 | 2019-04-16 | Comcast Cable Communications, Llc | Apparatus and method for sending content as chunks of data to a user device via a network |
CN109428919B (en) * | 2017-08-28 | 2022-02-25 | 阿里巴巴集团控股有限公司 | Webpage processing request processing method and device and electronic equipment |
KR102335670B1 (en) | 2017-09-13 | 2021-12-06 | 한화테크윈 주식회사 | Method for video streaming via intermediate server using WebSocket |
US20220174521A1 (en) * | 2019-05-31 | 2022-06-02 | Apple Inc. | Systems and methods for performance data streaming, performance data file reporting, and performance threshold monitoring |
CN112187858B (en) * | 2020-08-24 | 2023-04-18 | 浙江百应科技有限公司 | Method for matching pipeline type http request and response |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5050161A (en) * | 1989-12-04 | 1991-09-17 | Bell Communications Research, Inc. | Congestion management based on multiple framing strategy |
US6026439A (en) * | 1997-10-28 | 2000-02-15 | International Business Machines Corporation | File transfers using playlists |
US6122668A (en) * | 1995-11-02 | 2000-09-19 | Starlight Networks | Synchronization of audio and video signals in a live multicast in a LAN |
US20020097724A1 (en) * | 2001-01-09 | 2002-07-25 | Matti Halme | Processing of data packets within a network element cluster |
US20030154244A1 (en) * | 2002-02-13 | 2003-08-14 | Zellers Mark H. | Method and system to provide flexible HTTP tunnelling |
US20030236907A1 (en) * | 2002-06-24 | 2003-12-25 | Stewart James C. | Communicating via a connection between a streaming server and a client without breaking the connection |
US20050120132A1 (en) * | 2003-11-14 | 2005-06-02 | Ingo Hutter | Method for discontinuous transmission, in sections, of data in a network of distributed stations, as well as a network subscriber station as a requesting appliance for carrying out a method such as this, and a network subscriber station as a source appliance for carrying out a method such as this |
US20060004910A1 (en) * | 2000-05-18 | 2006-01-05 | Microsoft Corporation | Postback input handling by server-side control objects |
US20060209731A1 (en) * | 2005-03-01 | 2006-09-21 | Ibm Corporation | Method and apparatus for in-kernel application-specific processing of content streams |
US20070003251A1 (en) * | 2003-05-10 | 2007-01-04 | Chung Hyun-Kwon | Multimedia data reproducing apparatus, audio data receiving method and audio data structure therein |
US7206932B1 (en) * | 2003-02-14 | 2007-04-17 | Crystalvoice Communications | Firewall-tolerant voice-over-internet-protocol (VoIP) emulating SSL or HTTP sessions embedding voice data in cookies |
US7209972B1 (en) * | 1997-10-30 | 2007-04-24 | Commvault Systems, Inc. | High speed data transfer mechanism |
US20070168542A1 (en) * | 2006-01-06 | 2007-07-19 | Google Inc. | Media Article Adaptation to Client Device |
US20080114889A1 (en) * | 2006-11-09 | 2008-05-15 | Deshpande Sachin G | Methods and Systems for HTTP Streaming Using Server-Side Pacing |
US20080133766A1 (en) * | 2006-05-05 | 2008-06-05 | Wenjun Luo | Method and apparatus for streaming media to a plurality of adaptive client devices |
US20080215883A1 (en) * | 2006-12-05 | 2008-09-04 | Qualcomm Incorporated | Providing secure inter-application communication for a mobile operating environment |
US7587509B1 (en) * | 2003-02-13 | 2009-09-08 | Adobe Systems Incorporated | Real-time priority-based media communication |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100228405B1 (en) | 1996-12-21 | 1999-11-01 | 이계철 | Method for searching service menu using hyper text transfer protocol in video on demand system |
US20020198943A1 (en) * | 2001-06-20 | 2002-12-26 | David Zhuang | Web-enabled two-way remote messaging facility |
JP2003058496A (en) | 2001-08-10 | 2003-02-28 | Seiko Epson Corp | Multimedia information terminal system and computer program |
US8156248B2 (en) * | 2003-10-09 | 2012-04-10 | International Business Machines Corporation | Image distribution for dynamic server pages |
KR100535709B1 (en) | 2004-04-21 | 2005-12-09 | 주식회사 케이티프리텔 | Method and apparatus for recognizing a pair of HTTP request and HTTP response in wireless data service |
-
2007
- 2007-04-16 KR KR1020070037151A patent/KR101366803B1/en active IP Right Grant
- 2007-12-31 US US11/967,289 patent/US8078744B2/en active Active
-
2008
- 2008-01-18 CN CN2008100030868A patent/CN101291324B/en not_active Expired - Fee Related
-
2011
- 2011-11-09 US US13/292,913 patent/US9270723B2/en active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5050161A (en) * | 1989-12-04 | 1991-09-17 | Bell Communications Research, Inc. | Congestion management based on multiple framing strategy |
US6122668A (en) * | 1995-11-02 | 2000-09-19 | Starlight Networks | Synchronization of audio and video signals in a live multicast in a LAN |
US6026439A (en) * | 1997-10-28 | 2000-02-15 | International Business Machines Corporation | File transfers using playlists |
US7209972B1 (en) * | 1997-10-30 | 2007-04-24 | Commvault Systems, Inc. | High speed data transfer mechanism |
US20060004910A1 (en) * | 2000-05-18 | 2006-01-05 | Microsoft Corporation | Postback input handling by server-side control objects |
US20020097724A1 (en) * | 2001-01-09 | 2002-07-25 | Matti Halme | Processing of data packets within a network element cluster |
US20030154244A1 (en) * | 2002-02-13 | 2003-08-14 | Zellers Mark H. | Method and system to provide flexible HTTP tunnelling |
US20030236907A1 (en) * | 2002-06-24 | 2003-12-25 | Stewart James C. | Communicating via a connection between a streaming server and a client without breaking the connection |
US7587509B1 (en) * | 2003-02-13 | 2009-09-08 | Adobe Systems Incorporated | Real-time priority-based media communication |
US7206932B1 (en) * | 2003-02-14 | 2007-04-17 | Crystalvoice Communications | Firewall-tolerant voice-over-internet-protocol (VoIP) emulating SSL or HTTP sessions embedding voice data in cookies |
US20070003251A1 (en) * | 2003-05-10 | 2007-01-04 | Chung Hyun-Kwon | Multimedia data reproducing apparatus, audio data receiving method and audio data structure therein |
US20050120132A1 (en) * | 2003-11-14 | 2005-06-02 | Ingo Hutter | Method for discontinuous transmission, in sections, of data in a network of distributed stations, as well as a network subscriber station as a requesting appliance for carrying out a method such as this, and a network subscriber station as a source appliance for carrying out a method such as this |
US20060209731A1 (en) * | 2005-03-01 | 2006-09-21 | Ibm Corporation | Method and apparatus for in-kernel application-specific processing of content streams |
US20070168542A1 (en) * | 2006-01-06 | 2007-07-19 | Google Inc. | Media Article Adaptation to Client Device |
US20080133766A1 (en) * | 2006-05-05 | 2008-06-05 | Wenjun Luo | Method and apparatus for streaming media to a plurality of adaptive client devices |
US20080114889A1 (en) * | 2006-11-09 | 2008-05-15 | Deshpande Sachin G | Methods and Systems for HTTP Streaming Using Server-Side Pacing |
US20080215883A1 (en) * | 2006-12-05 | 2008-09-04 | Qualcomm Incorporated | Providing secure inter-application communication for a mobile operating environment |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130132507A1 (en) * | 2011-02-28 | 2013-05-23 | Viswanathan Swaminathan | System and Method for Low-Latency Content Streaming |
US11025962B2 (en) * | 2011-02-28 | 2021-06-01 | Adobe Inc. | System and method for low-latency content streaming |
US11622134B2 (en) | 2011-02-28 | 2023-04-04 | Adobe Inc. | System and method for low-latency content streaming |
US10142397B2 (en) | 2016-04-05 | 2018-11-27 | International Business Machines Corporation | Network file transfer including file obfuscation |
US10826969B2 (en) | 2016-04-05 | 2020-11-03 | International Business Machines Corporation | Network file transfer including file obfuscation |
US20190158555A1 (en) * | 2017-11-17 | 2019-05-23 | Embrionix Design Inc | Standardized hot-pluggable transceiving unit providing a cloud gateway functionality |
US10560507B2 (en) * | 2017-11-17 | 2020-02-11 | Embrionix Design Inc. | Standardized hot-pluggable transceiving unit providing a cloud gateway functionality |
US20200128059A1 (en) * | 2017-11-17 | 2020-04-23 | Embrionix Design Inc. | Standardized hot-pluggable transceiving unit providing a cloud gateway functionality |
US10834159B2 (en) * | 2017-11-17 | 2020-11-10 | Riedel Communications Canada Inc. | Standardized hot-pluggable transceiving unit providing a cloud gateway functionality |
CN110324677A (en) * | 2018-03-30 | 2019-10-11 | 武汉斗鱼网络科技有限公司 | A kind of barrage server connection method, client and readable storage medium storing program for executing |
Also Published As
Publication number | Publication date |
---|---|
CN101291324A (en) | 2008-10-22 |
KR101366803B1 (en) | 2014-02-24 |
US20080256254A1 (en) | 2008-10-16 |
KR20080093330A (en) | 2008-10-21 |
US8078744B2 (en) | 2011-12-13 |
CN101291324B (en) | 2013-03-20 |
US9270723B2 (en) | 2016-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9270723B2 (en) | Communication method and apparatus using hypertext transfer protocol | |
EP2383941B1 (en) | Client terminal, method and system for downloading streaming media | |
JP2005110244A (en) | System and method for multimedia streaming service | |
US8806048B2 (en) | Method and apparatus for transmitting and receiving streaming data based on real-time streaming protocol (RTSP) session | |
WO2008061416A1 (en) | A method and a system for supporting media data of various coding formats | |
CN103004133A (en) | Proxy server, relay method, communication system, relay control program, and recording medium | |
CN103369305B (en) | Realize the method for speech talkback synchronization and playback in video monitoring system | |
US10924524B2 (en) | Communication devices, communication data generation method, and communication data processing method | |
WO2011153842A1 (en) | Message transmission method between media gateways, media gateway and radio communication system thereof | |
CN101854286A (en) | UDP (User Datagram Protocol)-based data stream sending-receiving method and device | |
WO2015012063A1 (en) | Information processing device | |
EP3973677A1 (en) | Methods and systems for codec detection in video streams | |
US8416786B2 (en) | Data transport container for transferring data in a high speed internet protocol network | |
CN108810475A (en) | A kind of Android video monitoring apparatus based on Onvif standards and Sip agreements | |
WO2023217188A1 (en) | Livestream data transmission method, apparatus and system, device and medium | |
US8412840B2 (en) | Live media serving system and method | |
KR100919216B1 (en) | Method and apparatus for transmitting and receiving data | |
US20070130358A1 (en) | Faster Than Real Time Streaming in a Playlist Context | |
CN112153022B (en) | RTMP rapid publishing and subscribing method | |
EP3352077A1 (en) | Method for synchronously taking audio and video in order to proceed one-to-multi multimedia stream | |
US20080133656A1 (en) | Reproducer and content reproduction method | |
KR100315310B1 (en) | Multiple data synchronizing method and multiple multimedia data streaming method using the same | |
WO2014073202A1 (en) | Information-processing device, information-processing method, content distribution system, and computer program recording medium | |
TWI600319B (en) | A method for capturing video and audio simultaneous for one-to-many video streaming | |
CN108924573A (en) | Data Stream Processing, playback method, server, playing device, system and medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |