KR101366803B1 - Http를 이용한 통신 방법 및 장치 - Google Patents

Http를 이용한 통신 방법 및 장치 Download PDF

Info

Publication number
KR101366803B1
KR101366803B1 KR1020070037151A KR20070037151A KR101366803B1 KR 101366803 B1 KR101366803 B1 KR 101366803B1 KR 1020070037151 A KR1020070037151 A KR 1020070037151A KR 20070037151 A KR20070037151 A KR 20070037151A KR 101366803 B1 KR101366803 B1 KR 101366803B1
Authority
KR
South Korea
Prior art keywords
http
client
server
control
request
Prior art date
Application number
KR1020070037151A
Other languages
English (en)
Other versions
KR20080093330A (ko
Inventor
김윤수
조준호
최상훈
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020070037151A priority Critical patent/KR101366803B1/ko
Priority to US11/967,289 priority patent/US8078744B2/en
Priority to CN2008100030868A priority patent/CN101291324B/zh
Publication of KR20080093330A publication Critical patent/KR20080093330A/ko
Priority to US13/292,913 priority patent/US9270723B2/en
Application granted granted Critical
Publication of KR101366803B1 publication Critical patent/KR101366803B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing 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/2381Adapting the multiplex stream to a specific network, e.g. an Internet Protocol [IP] network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/142Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/63Control 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/643Communication protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/63Control 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/643Communication protocols
    • H04N21/64322IP

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 네트워크상에서 HTTP를 이용하여 실시간 스트리밍을 구현하기 위한 통신 방법에 관한 것으로, HTTP 1.1의 청크 인코딩(Chunked Encoding)을 활용하여 HTTP 요청이 진행되는 중간에도 서버와 클라이언트 간에 정보를 교환할 수 있도록 함으로써, 기존 HTTP 프로토콜의 수정 없이 HTTP를 이용하여 클라이언트와 서버 간에 양방향 통신이 가능하게 하여 실시간 전송을 구현할 수 있도록 하였다.
클라이언트, 서버, HTTP, 스트리밍

Description

HTTP를 이용한 통신 방법 및 장치{Communication method and apparatus using hyper text transfer protocol}
도 1은 종래기술에 따른 HTTP를 이용한 실시간 스트리밍을 설명하기 위한 클라이언트 서버 간의 신호 흐름도이다.
도 2는 본 발명의 일 실시 예에 따른 HTTP를 이용한 실시간 스트리밍을 설명하기 위한 클라이언트-서버 간의 신호 흐름도이다.
도 3은 도 2에 도시된 클라이언트(200)의 개략적인 구성에 대한 블록도이다.
도 4는 도 2에 도시된 서버(210)의 개략적인 구성에 대한 블록도이다.
도 5는 본 발명의 다른 실시 예에 따른 서버에서 클라이언트로 통지(Notification)를 전송하기 위한 서버 측 신호 흐름도이다.
도 6은 본 발명의 또 다른 실시 예에 따른 서버에서 클라이언트로 통지(Notification)를 수신하기 위한 클라이언트 측 신호 흐름도이다.
도 7은 본 발명의 또 다른 실시 예에 따른 서버에서 클라이언트로 제어 요청(Control Request)을 전송하기 위한 서버 측 신호 흐름도이다.
도 8은 본 발명의 또 다른 실시 예에 따른 서버에서 클라이언트로 제어 요청(Control Request)을 수신하기 위한 클라이언트 측 신호 흐름도이다.
도 9는 본 발명의 또 다른 실시 예에 따른 서버에서 클라이언트로 제어 요 청(Control Request)에 대한 응답(Response)을 설명하기 위한 신호 흐름도이다.
도 10은 본 발명의 또 다른 실시 예에 따른 클라이언트에서 서버로 제어 요청(Control Request)을 전송하기 위한 클라이언트 측 신호 흐름도이다.
도 11은 본 발명의 또 다른 실시 예에 따른 클라이언트에서 서버로 제어 요청(Control Request)을 수신하기 위한 서버 측 신호 흐름도이다.
도 12는 본 발명의 또 다른 실시 예에 따른 클라이언트에서 서버로 제어 요청(Control Request)에 대한 응답(Response)을 전송하기 위한 서버 측 신호 흐름도이다.
도 13은 본 발명의 또 다른 실시 예에 따른 클라이언트에서 서버로 제어 요청(Control Request)에 대한 응답(Response)을 수신하기 위한 클라이언트 측 신호 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
200: 클라이언트 210: 서버
300: HTTP 클라이언트 310: HTTP 디스패처
320: 클라이언트 측 제어 핸들러 330: 스트리밍 클라이언트
340: 세션 합성부 400: HTTP 서버
410: HTTP 스케줄러 420: 서버 측 제어 핸들러
430: 스트리밍 서버 440: 세션 관리부
본 발명은 HTTP를 이용한 통신 방법 및 시스템에 관한 것으로, 더 상세하게는 네트워크상에서 HTTP를 이용하여 실시간 스트리밍을 구현하기 위한 통신 방법, 및 이를 위한 클라이언트와 서버에 관한 것이다.
스트리밍(streaming)은 인터넷과 같은 네트워크를 통해 서버에서 클라이언트로 비디오 또는 오디오를 전송하는 것을 의미한다. 서버는 비디오를 네트워크로 보낼 수 있도록 패킷으로 쪼갠다. 클라이언트는 그 패킷들을 다시 모아서 원래 형태로 만든 후 재생한다. 이때, 재생과 패킷 수신은 동시에 일어난다. 여기서 연관된 일련의 패킷들을 스트림(stream)이라고 한다.
스트리밍은 클라이언트가 비디오 데이터를 받으면서 재생한다는 점에서, 전체 비디오를 받은 후 재생하는 단순한 파일 전송과 구별된다. 스트리밍 클라이언트 패킷을 받으면서 재생을 하고, 재생된 데이터는 버린다. 파일을 스트리밍하는 데 다음과 같은 프로토콜을 사용할 수 있는데, 여기에는 HTTP(Hiper Text Transport Protocol), FTP(File Transfer Protocol), RTP(Realtime Transport Protocol), RTSP(Real Time Streaming Protocol) 등을 포함한다. 여기서, HTTP와 FTP는 본질적으로 파일 전송 프로토콜이지만, RTP와 RTSP는 실시간 파일 스트리밍을 위한 프로토콜이다.
도 1은 종래기술에 따른 HTTP를 이용한 실시간 스트리밍을 설명하기 위한 클라이언트 서버 간의 신호 흐름도이다.
도 1을 참조하면, 기존 HTTP 프로토콜은 HTTP 요청(Request)이 처리되고 있는 중간에 클라이언트와 서버 간에 정보를 주고 받을 수 없어 계속해서 변하는 세션 상황에 대처할 수 없어 실시간 스트리밍에는 부적합하였다.
종래의 HTTP에서는 위와 같이 항상 HTTP 클라이언트는 요청을 보내고, HTTP 서버는 그에 대한 응답을 보내는 방식으로 작동하게 되어 있다. 이와 같은 작동 방식으로 인해 HTTP 서버 측에 어떤 상태 변화가 발생했을 때, 이를 통지할 수 있는 방법이 없으며, 또한 HTTP 서버가 HTTP 클라이언트 측으로 응답이 아닌 요청을 보낼 수 있는 방법이 없다. 또한, HTTP 클라이언트는 이전 HTTP 요청(Request)이 진행되는 중간에는 HTTP 서버로부터 새로운 HTTP 요청(Request)에 대한 응답을 받을 수 없다. 마지막으로 HTTP 응답(Response)을 여러 패킷(packet)으로 나누어 전송할 때, 각각의 패킷에 대해 타임스탬핑(timestamping)을 할 수 있는 방법이 없다. 이러한 제약점으로 인해 HTTP는 실시간 전송을 지원하기에는 부족한 면이 있었다.
기존에 실시간 전송(Real-Time Transport)을 지원하는 프로토콜로는 RTP(Real-time Transport Protocol)이 있었으나, 최근 UPnP AV/DLNA 등에서는 HTTP의 단순성과 편리성으로 인해 HTTP를 기본 스트리밍 프로토콜로 지정하고 있는 상황이다. 이런 상황에서 HTTP에 대한 확장만으로 실시간 전송을 가능하게 할 필요성이 있다. 또한, 기존 코드에 최소한의 수정만으로 실시간 전송을 가능하게 하는 것도 중요한 문제이다.
다음은 HTTP 1.1의 청크 인코딩(Chunked Encoding)의 형식을 BNF(Backus Naur Form)으로 나타낸 것이다.
Figure 112007028979365-pat00001
여기에서 *는 앞에 있는 숫자만큼 뒤에 따라오는 부분이 반복된다는 뜻이며, 토큰(token)은 일반 ASCII 문자로 구성된 문자열을 뜻이고, HEX는 16진수를 의미하는 것이다. '[', ']' 에 포함된 부분은 생략될 수 있다는 뜻이며, '(', ')' 에 포함된 부분은 안에 있는 내용들을 합하여 하나로 다루라는 의미이다. CRLF는 '\r' , '\n'을 의미한다.
이러한 규칙에 따라 상기 BNF를 해석하면 청크-바디(Chunked-Body)는 0개 이상의 청크가 반복되다가 "last-chunk trailer CRLF"가 나오면 청크-바디가 완료된다는 뜻이다. 여기에서 청크는 "chunk-size chunk-extension CRLF chunk-data CRLF"로 구성되며, "chunk-extension"은 생략 가능함을 뜻한다. chunk-size는 16진수로 표현된 크기를 뜻하고, "chunk-extension"은 "chunk-ext-name=chunk-ext-val"와 같이 이름과 값의 쌍이 반복되며, ';'로 구분되어 있는 형식을 갖는다. last-chunk는 1개 이상의 "0"로 구성된 필드와 생략 가능한 chunk-extension, CRLF로 구성되어 있다. trailer는 0개 이상의 엔터티-헤더(entity-header), 예를 들면 HTTP 헤더로 구성된다. 이상의 청크-바디 형식의 예시를 들면 다음과 같다.
Figure 112007028979365-pat00002
상기 청크-바디의 예시에서, 앞의 숫자와 ':'는 라인 넘버를 뜻하는 것이다. 1라인에서, "100"은 다음에 따라오는 청크-데이터의 크기가 "100 바이트"라는 것을 뜻하며, "cen1=...cen3"는 "chunk-extension"이다. 청크 헤더 정보가 완료되었다는 것을 \r\n으로 나타낸다. 그리고, 2라인에서, 청크-데이터가 전송되고, 청크-데이터의 끝에 \r\n을 전송한다. 3번째 라인에서는 "200"이라는 숫자 다음에 바로 \r\n이 나오는데, 이는 "chunk-extension"이 생략된 경우를 예시한 것이다. 4라인은 2라인과 마찬가지로 실제 청크-데이터가 전송되는 것을 의미하며, 5라인은 마지막 청크로서 "0"이라는 숫자가 먼저 전송된 후에 \r\n이 전송된다. 마지막-청크 다음에는 6라인과 같이 엔터티-헤더(entity-header)로 구성된 "trailer"가 전송되고 마지막으로 7라인처럼 \r\n이 전송된다. 위와 같은 청크-바디를 전송하는 완전한 HTTP 응답의 예시를 들면 다음과 같다.
Figure 112007028979365-pat00003
HTTP 서버는 2라인에서, "Transfer-Encoding: chunked"라는 HTTP 헤더를 통해 청크 인코딩으로 데이터를 전송한다는 것을 나타낸다.
본 발명은 전술한 종래기술의 문제점을 극복하기 위해 안출된 것으로, HTTP 1.1의 청크 인코딩(Chunked Encoding)을 활용하여 HTTP Request가 진행되는 중간에도 스트리밍 서버와 클라이언트 간에 정보를 교환할 수 있는 방법을 제공하는 데 목적이 있다.
또한, HTTP 서버 상태 변화를 통지할 수 있는 방법, HTTP 요청 진행 중간에도 클라이언트와 서버 간 정보를 교환할 수 있는 방법, 개별 HTTP 응답 패킷에 타임 스탬핑(timestamping)을 할 수 있는 방법을 제공하는데 다른 목적이 있다.
또한, 이러한 HTTP를 이용한 통신 방법을 구현하기 위한 클라이언트와 서버를 제공하는 데 또 다른 목적이 있다.
본 발명의 기술적 과제를 달성하기 위한 HTTP를 이용한 통신 방법은 클라이언트가 서버와 스트리밍 커넥션 및 제어 커넥션을 설정하는 단계; 상기 클라이언트가 HTTP 스트리밍 요청을 상기 서버에 전송하는 단계; 상기 서버가 상기 HTTP 스트리밍 요청에 대한 청크 인코딩(Chunked Encoding)을 구성하고, 상기 스트리밍 커넥션을 통해 제1 청크 응답을 상기 클라이언트에 전송하는 단계; 및 상기 서버가 제2 청크 응답에 상기 서버 측 통지(Nortification)를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 단계를 포함한다.
본 발명의 다른 기술적 과제를 달성하기 위한 HTTP를 이용한 통신 방법은 제어 핸들러가 세션 관리부로부터 세션 정보를 전달받아 청크-익스텐션(chunk-extension) 메시지로 변환하여 HTTP 스케줄러에 전달하는 단계; 상기 HTTP 스케줄러가 HTTP 클라이언트로의 청크 전송이 진행중인지 체크하고, 청크 전송이 진행중인 경우, 다음 청크를 전송할 때까지 상기 청크-익스텐션 메시지를 버퍼링하는 단계; 상기 HTTP 스케줄러가 스트리밍 서버로부터 전달받은 멀티미디어 컨텐츠와 상기 청크-익스텐션 메시지를 다중화한 청크 데이터를 생성하고, 상기 청크 데이터를 HTTP 서버에 전달하는 단계; 및 상기 HTTP 서버가 상기 청크 데이터를 스트리밍 커넥션을 통해 HTTP 클라이언트에 전송하는 단계를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 HTTP를 이용한 통신 방법은 HTTP 클라이언트가 HTTP 서버로부터 멀티미디어 컨텐츠와 청크-익스텐션 메시지를 다중화한 청크 데이터를 스트리밍 커넥션을 통해 전송받아 HTTP 디스패처에 전달하는 단계; 상기 HTTP 디스패처가 상기 청크 데이터를 상기 멀티미디어 컨텐츠와 상기 청크-익스텐션 메시지로 역 다중화하고, 상기 청크 익스텐션 메시지를 제어 핸들러에 전달하고, 상기 멀티미디어 컨텐츠를 스트리밍 클라이언트에 전달하는 단계; 및 상기 제어 핸들러가 상기 청크 익스텐션 메시지를 세션 정보로 변환하여 세션 합성부에 전달하는 단계를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 HTTP를 이용한 통신 방법은 제어 핸들러가 세션 합성부로부터 세션 제어 요청을 전달받아 상기 세션 제어 요청을 HTTP 제어 요청(Control Request)으로 변환하여 HTTP 디스패처에 전달하는 단계; 상기 HTTP 디스패처가 상기 HTTP 제어 요청에 HTTP 헤더를 추가한 HTTP 요청(Request)을 구성하고, 제어 커넥션을 담당하는 HTTP 클라이언트에 전달하는 단계; 및 상기 HTTP 클라이언트가 상기 HTTP 요청을 상기 제어 커넥션을 통해 HTTP 서버에 전송하는 단계를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 HTTP를 이용한 통신 방법은HTTP 서버가 HTTP 클라이언트로부터 제어 커넥션을 통해 HTTP 요청을 전송받아 HTTP 스케줄러에 전달하는 단계; 상기 HTTP 스케줄러가 상기 HTTP 요청을 분석하고, 상기 분석 결과, 상기 HTTP 요청 중 HTTP 헤더를 제외한 제어 요청을 추출하고, 상기 제어 요청을 제어 핸들러에 전달하는 단계; 및 상기 제어 핸들러가 상기 제어 요청을 세션 제어 메시지로 변환하고, 상기 세션 제어 메시지에 상응하는 세션 관리부의 콜백(callback)을 검색하여 호출하는 단계를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 HTTP를 이용한 통신 방법은 클라이언트 측 제어 핸들러가 세션 합성부로부터 세션 제어 응답을 전달받아 HTTP 메시지로 변환하여 HTTP 디스패처에 전달하는 단계; 상기 HTTP 디스패처가 상기 HTTP 메시지에 HTTP 헤더를 추가한 HTTP 요청을 생성하고, 제어 커넥션을 담당하는 HTTP 클라이언트를 선택하여 상기 HTTP 요청을 전달하는 단계; 상기 HTTP 클라이언트가 상기 제어 커넥션을 통해 상기 HTTP 요청을 HTTP 서버에 전송하고, 상기 HTTP 서버가 상기 HTTP 요청을 HTTP 스케줄러에 전달하는 단계; 및 상기 HTTP 스케줄러 가 상기 HTTP 요청을 분석하고, 상기 분석 결과에 따라 상기 HTTP 요청 중 세션 제어 응답을 추출하여 서버 측 제어 핸들러에 전달하는 단계를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한, 서버와 스트리밍 커넥션 및 제어 커넥션이 설정되고, 상기 스트리밍 커넥션을 통해 HTTP 스트리밍 요청을 전송하는 클라이언트는 HTTP 포스트 요청에 제어 요청(Control Request)을 포함하여 상기 제어 커넥션을 통해 상기 서버에 전송하고, 상기 HTTP 포스트(Post) 요청에 상기 서버에서 상기 클라이언트 방향의 클라이언트 상태 조회에 대한 응답을 포함하여 상기 제어 커넥션을 통해 상기 서버에 전송하는 것을 특징으로 한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한, 클라이언트와 스트리밍 커넥션 및 제어 커넥션을 설정되고, 상기 클라이언트로부터 상기 스트리밍 커넥션을 통해 HTTP 스트리밍 요청을 전송받는 서버는 상기 HTTP 스트리밍 요청에 대한 청크 인코딩(Chunked Encoding)을 구성하고, 상기 스트리밍 커넥션을 통해 제1 청크 응답을 상기 클라이언트에 전송하고, 제2 청크 응답에 상기 서버 측 통지(Nortification)를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 것을 특징으로 한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한, 상기 방법들을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
본 발명의 세부 및 개선 사항들은 종속항에 개시된다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
도 2는 본 발명의 일 실시 예에 따른 HTTP를 이용한 실시간 스트리밍을 설명하기 위한 클라이언트-서버 간의 신호 흐름도이다.
도 2를 참조하면, 굵은 선은 클라이언트(200)와 서버(210) 간의 제어 커넥션(Control connection)을 나타내고, 점선은 클라이언트(200)와 서버(210) 간의 스트리밍 커넥션(Streaming connection)을 나타낸다.
클라이언트(200)는 스트리밍 요청(Streaming Request)을 보낼 때, 먼저 서버(210)와 스트리밍 커넥션(Streaming connection)을 맺는다. 또한, 클라이언트(200)는 스트리밍 커넥션과는 독립적인 제어 커넥션(Control Connection)을 설정한다.
서버(210)는 스트리밍 커넥션 상에서 HTTP 1.1의 청크 인코딩(Chunked Encoding)의 새로운 청크(Chunk)를 이용하여 클라이언트(200)의 상태에 대한 조회(Query) 요청을 보내거나, 스트리밍 데이터 상의 변화 등을 클라이언트(200)에 알려준다.
또한, 클라이언트(200)는 스트리밍 커넥션 상에서 HTTP 스트리밍이 이루어지는 중간에, 제어 커넥션 상에서 서버(210)에 새로운 요청을 보내거나 또는 서버(210) 측 요청에 대한 응답을 보낼 수 있다.
여기서, 클라이언트(200)와 서버(210)는 서로 요청을 주고 받을 때, 특정 스트리밍 세션(Session)을 참조하도록, 세션 아이디(Session ID) 정보를 요청 및 응답 메시지에 추가한다. 또한, 커맨드(Command) 및 통지(Notification)에 대한 시퀀스 번호를 추가한다. 여기서, 시퀀스 번호는 하나의 세션 내에서 유일하여야 한 다.
서버(210)는 실제 스트리밍 데이터를 전송하기 위해 청크를 구성할 뿐만 아니라, 현재 진행 중인 청크가 완료되는 대로 클라이언트(200)로 통지 메시지 또는 조회 메시지를 보낼 때마다, 그리고 클라이언트(200)의 제어 요청에 대한 응답 메시지를 보낼 때마다 새로운 청크를 시작한다. 서버(210)는 각각의 청크를 보낼 때, 각 청크에 대해 청크-익스텐션(chunk-extension)을 이용하여 타임스탬핑(timestamping)을 한다.
도 2에 도시된 것처럼, 서버(210)는 스트리밍 커넥션 상에서 HTTP 청크 응답을 HTTP 제1 청크 응답, HTTP 제2 청크 응답, HTTP 제3 청크 응답 및 HTTP 제4 청크 응답으로 나누어 전송하면서, 통지, 클라이언트 상태 조회, 서버 제어 응답 메시지를 청크-익스텐션에 추가하여 전송한다. 또한, 클라이언트(200)는 제어 커넥션상에서 HTTP 포스트(Post) 요청에 클라이언트 상태 조회 응답 메시지, 클라이언트 제어 요청 메시지를 추가하여 전송한다.
도 3은 도 2에 도시된 클라이언트(200)의 개략적인 구성에 대한 블록도이다.
도 3을 참조하면, HTTP 클라이언트(300), HTTP 디스패처(Dispatcher, 310), 제어 핸들러(Control Handler, 320), 스트리밍 클라이언트(330), 세션 합성부(Session Synthesizer, 340), 세션(350) 및 스트리밍 애플리케이션(360)이 도시되어 있다.
HTTP 클라이언트(300)는 HTTP 1.1 프로토콜의 클라이언트 측 로직을 처리하는 모듈이다.
HTTP 디스패처(310)는 스트리밍 커넥션상에서 서버 측의 서버에서 클라이언트 방향의 제어 요청(Control Request), 서버에서 클라이언트 방향의 통지(Notification), 클라이언트에서 서버 방향의 제어 요청에 대한 서버에서 클라이언트 방향의 응답을 각 청크 데이터에서 분리하여 제어 핸들러(320)로 전달하는 기능을 수행하는 모듈이다.
구체적으로, HTTP 디스패처(310)는 HTTP 클라이언트(300)로부터 전달된 각 개별 청크의 타임스탬프(timestamp)를 제어 핸들러(320)에 전달하고, 각 청크에서 스트리밍에 필요한 멀티미디어 데이터만을 꺼내어 스트리밍 클라이언트(330)에 전달한다. 또한, HTTP 디스패처(310)는 제어 핸들러(320)의 클라이언트에서 서버 방향의 스트림 제어 요청(Stream Control Request)을 제어 커넥션을 통해 서버 측으로 전송하고, 개별 스트림 제어 요청의 타임아웃을 처리한다. 또한, HTTP 디스패처(310)는 제어 핸들러(320)의 서버에서 클라이언트 방향의 제어 요청에 대한 응답을 제어 커넥션을 통해 서버 측으로 전송한다.
제어 핸들러(320)는 스트리밍 수준의 제어 명령을 HTTP 수준의 제어 명령으로 변환하고, 이러한 제어 명령에 대한 서버 측의 응답을 HTTP 디스패처(310)로부터 전달받아 세션 합성부(340)가 이해하는 형식으로 변환하여 전달한다.
구체적으로, 서버 측의 서버에서 클라이언트 방향의 통지를 HTTP 디스패처(310)로부터 전달받아 세션 합성부(340)가 이해하는 형식으로 변환하여 통지하고, 서버 측의 서버에서 클라이언트 방향의 제어 요청에 대해 세션 합성부(340)가 등록한 콜백(callback)을 호출하고, 이에 대한 스트리밍 세션 수준의 응답을 HTTP 수준의 응답으로 변환한다.
스트리밍 클라이언트(330)는 HTTP 디스패처(310)로부터 청크-데이터를 제공받아 버퍼링하고, 스트리밍 애플리케이션(360)에 데이터를 제공한다. 또한, 세션 합성부(340)에 각 청크의 수신 상태와 수신 시간, 타임스탬프(timestamp) 시간, 버퍼 통계 정보 등을 제공한다. 또한, 세션 합성부(340)의 명령에 따라 버퍼의 개수를 조정한다.
세션 합성부(340)는 스트리밍 세션을 종합하여 제어 기능을 수행하는 모듈이다. 구체적으로, 제어 핸들러(320)를 이용하여 세션 수준의 제어를 수행하고, 제어 핸들러(320)를 통해 통보된 스트리밍 데이터 상의 변화에 대응하여 스트리밍 클라이언트(330)를 제어한다. 또한, 제어 핸들러(320)를 통해 요청된 서버에서 클라이언트 방향의 세션 제어에 응답한다. 또한, 스트리밍 클라이언트(330)를 통해 스트리밍 상황을 모니터링하고, 스트리밍 클라이언트(330)의 버퍼를 스트리밍 애플리케이션(360)에 연결해 주는 기능을 한다.
스트리밍 애플리케이션(360)은 세션 합성부(340)를 이용하여 멀티미디어 컨텐츠를 실제 렌더링(Rendering)하는 모듈이다.
도 4는 도 2에 도시된 서버(210)의 개략적인 구성에 대한 블록도이다.
도 4를 참조하면, HTTP 서버(400), HTTP 스케줄러(410), 제어 핸들러(420), 스트리밍 서버(430), 세션 관리부(Session Manager, 440), 세션(450) 및 컨텐츠 소스(460)가 도시되어 있다.
HTTP 서버(400)는 HTTP 1.1 프로토콜의 서버 측 로직을 처리하는 모듈이다.
HTTP 스케줄러(410)는 다음과 같은 기능을 수행한다. 제어 핸들러(420)로부터 서버에서 클라이언트 방향의 스트리밍 데이터 상의 변화 통지 요청이 있을 때, 이를 버퍼링했다가, 현재 전송중인 청크 데이터가 완료되고, 새로운 청크가 전송되는 시점에서 새로운 청크에 해당 통지를 전송한다. 또한, 제어 핸들러(420)로부터 서버에서 클라이언트 방향의 제어 요청이 있을 경우, 이를 버퍼링 했다가 현재 전송중인 청크 데이터가 완료되고, 새로운 청크가 전송되는 시점에서 새로운 청크에 해당 제어 요청을 삽입하여 전송한다. 또한, 제어 핸들러(420)로부터 클라이언트에서 서버 방향의 제어 요청에 대한 응답을 버퍼링했다가, 현재 전송중인 청크 데이터가 완료되고 새로운 청크가 전송되는 시점에서 새로운 청크에 해당 제어 요청에 대한 응답을 삽입하여 전송한다. 또한, 각 개별 청크에 타임스탬프를 삽입하고, 청크 헤더 정보, 본 발명의 바람직한 실시 예에 따른 통지 메시지, 제어 요청 메시지, 제어 요청 응답 메시지 또는 타임스탬프를 나타내는 메타 정보와, 청크 데이터, 예를 들면 멀티미디어 데이터를 다중화(muxing)한다.
또한, HTTP 스케줄러(410)는 제어 커넥션 상에서 클라이언트에서 서버 방향의 제어 요청을 수신했을 때, 이에 대한 ACK(HTTP/1.1 200 OK)를 전송하고, 서버에서 클라이언트 방향의 제어 요청에 대해 클라이언트 측 응답을 수신했을 때, 이에 대한 ACK(HTTP/1.1 200 OK)를 전송한다.
제어 핸들러(420)는 서버에서 클라이언트 방향의 스트리밍 세션 수준의 통지를 청크 익스텐션 수준의 통지로 변환하여 HTTP 스케줄러(410)에 전송을 요청한다. 또한, 스트리밍 세션 수준의 서버에서 클라이언트 방향의 요청이 있을 때, 이를 청 크 익스텐션 수준의 제어 명령으로 변환하여 HTTP 스케줄러(410)에 전송을 요청하고, 이 요청에 대한 타임아웃을 처리한다.
또한, 제어 핸들러(420)는 제어 커넥션상에서 클라이언트 측의 클라이언트에서 서버 방향의 제어 요청을 수신했을 때, 세션 관리부(440)가 등록한 콜백(callback)을 호출하고, 이에 대한 스트리밍 세션 수준의 응답을 청크 익스텐션 수준의 응답으로 변환하여 HTTP 스케줄러(410)에 전송을 요청한다.
스트리밍 서버(430)는 실제 스트리밍 데이터를 컨텐츠 소스(460)로부터 읽어 들이고 버퍼링하여 HTTP 스케줄러(410)에 전송을 요청한다. 스트리밍 서버(430)는 스트리밍을 위해 각 청크 데이터의 타이밍을 유지하면서 전송하는 역할을 수행한다. 또한, 스트리밍 서버(430)는 단위 시간당 필요한 데이터로 청크를 나누어 전송한다. 또한, 세션 관리부(440)의 요청에 따라 내부 전송 버퍼의 개수를 조정하는 역할을 수행한다.
세션 관리부(440)는 스트리밍 세션을 종합하여 제어 기능을 수행하는 모듈로서 상세하게는 다음과 같은 기능을 수행한다. 세션 관리부(440)는 제어 핸들러(420)를 이용하여 세션 수준의 제어를 수행한다. 또한, 제어 핸들러(420)를 통해 클라이언트 및 네트워크 상태를 감시하고, 스트리밍 서버(430)를 통해 서버 측 상태를 감시할 뿐만 아니라, 스트리밍 서버(430)를 제어한다.
컨텐츠 소스(460)는 스트리밍 서버(430)에 실제 스트리밍하고자 하는 컨텐츠를 제공하는 모듈이다.
도 5는 본 발명의 다른 실시 예에 따른 서버에서 클라이언트로 통 지(Notification)를 전송하기 위한 서버 측 신호 흐름도이다.
도 5에서, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 점선은 스트리밍 커넥션을 의미한다.
먼저, 세션 관리부(500)가 세션 변경을 제어 핸들러(510)에 전달하는데, 세션 관리부(500)는 세션 상태 변경을 감지하고, 이를 통지 메시지로 보낸다. 이러한 통지를 받은 제어 핸들러(510)는 세션 변경을 변환하는데, 세션 수준의 세션 변경 메시지를 청크 익스텐션 수준의 메시지로 변환한다. 이때, 메시지 아이디(ID)에 세션 아이디(sessionid)를 추가한다.
이어, 제어 핸들러(510)는 변환된 세션 변경 청크 인코딩을 HTTP 스케줄러(530)에 전달한다. HTTP 스케줄러(530)는 세션 변경 청크 인코딩을 버퍼링한다. 여기서, HTTP 스케줄러(530)는 현재 청크 전송이 진행중인지 체크하고, 만약 진행 중이라면 세션 변경 청크 인코딩을 바로 보내지 않고, 다음번 청크를 전송할 때까지 버퍼링을 한다. 한편, 스트리밍 서버(520)는 멀티미디어 데이터를 HTTP 스케줄러(530)에 전송하여 클라이언트 측으로 전송할 것을 요청한다. 이어, HTTP 스케줄러(530)는 제어 핸들러(510)로부터 전달받은 세션 변경 청크 인코딩과, 스트리밍 서버(520)로부터 전달받은 멀티미디어 데이터를 다중화한다. 즉, HTTP 스케줄러(530)는 현재까지 버퍼에 쌓여 있는 세션 변경 통지 메시지, 서버에서 클라이언트 방향으로 세션 제어 요청 메시지, 클라이언트에서 서버 방향으로 제어 요청에 대한 응답 메시지와 멀티미디어 컨텐츠 데이터를 청크 데이터 메시지로 다중화한다.
이어, HTTP 스케줄러(530)는 스트리밍 커넥션상에서 다중화된 청크 데이터를 HTTP 서버(540)에 전송하고, HTTP 서버(540)는 다시 HTTP 클라이언트(550)에 다중화된 청크 데이터를 전송한다. 여기서, 청크 데이터의 메시지 형식을 다음과 같이 구성할 수 있다.
Figure 112007028979365-pat00004
상기 메시지 형식은 서버에서 클라이언트로 통지를 위한 청크 데이터 메시지 형식의 일 예이다.
여기서, "timestamp" 는 현재 청크를 전송한 시간을 의미한다. "type=multiple" 은 여러 개의 메시지가 한 청크에 다중화되었다는 것을 의미한다. 그 다음 "number of msgs"는 현재 청크에 몇 개의 서버 측 메시지가 다중화되었는지를 의미한다. "start"와 "end"는 각 개별 메시지의 시작과 끝을 나타낸다. 각 개별 메시지에는 항상 "type", "cmd", "sessionid", "sequence" 등이 포함되고, 나머지 필드들은 각 메시지 종류별로 그 내용이 달라진다. 이렇게 서버 측에서 보내는 메시지에 대해서는 여러 개의 메시지가 포함될 수 있도록 정의하는 것은 현재 청크를 전송하는 동안에는 요청된 세션 변경, 서버에서 클라이언트로 세션 제어 요청, 클라이언트에서 서버로 세션 제어 응답 메시지를 보낼 수 없기 때문에 버퍼링했다가 다음 청크를 보내기 시작할 때, 그때까지 버퍼링 된 메시지들을 청크 데이 터로 다중화해야하기 때문이다. 이 메시지 형식은 서버에서 클라이언트로 세션 변경, 서버에서 클라이언트로 세션 제어 요청, 클라이언트에서 서버로 세션 제어 응답에 대해서 동일하게 적용될 수 있다.
도 6은 본 발명의 또 다른 실시 예에 따른 서버에서 클라이언트로 통지(Notification)를 수신하기 위한 클라이언트 측 신호 흐름도이다.
도 5와 마찬가지로, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 점선은 스트리밍 커넥션을 의미한다.
스트리밍 커넥션상에서 HTTP 서버(600)로부터 청크 데이터를 전송받고, HTTP 클라이언트(610)는 다시 HTTP 디스패처(620)로 청크 데이터를 전달한다. 여기서, 청크 데이터는 세션 변경 정보와 멀티미디어 컨텐츠 데이터가 다중화된 것이다.
HTTP 디스패처(620)는 세션 변경 청크 인코딩 및 멀티미디어 컨텐츠를 역 다중화한다. 즉, HTTP 디스패처(620)는 청크 데이터를 세션 변경 정보와 멀티미디어 컨텐츠 정보로 분리한다. 이어, HTTP 디스패처(620)는 분리된 세션 변경 청크 익스텐션 정보를 제어 핸들러(630)에 전달하고, 분리된 멀티미디어 컨텐츠 데이터를 스트리밍 클라이언트(640)로 전달한다.
제어 핸들러(630)는 전달받은 세션 변경 청크 인코딩을 변환하는데, 세션 변경 청크 인코딩 정보를 세션 수준의 통지 메시지로 변환한다. 이어, 제어 핸들러(630)는 변환된 세션 변경 통지 메시지를 세션 합성부(650)로 전달한다.
도 7은 본 발명의 또 다른 실시 예에 따른 서버에서 클라이언트로 제어 요청(Control Request)을 전송하기 위한 서버 측 신호 흐름도이다.
도 5 및 6과 마찬가지로, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 점선은 스트리밍 커넥션을 의미한다.
세션 관리부(700)는 세션을 제어할 필요성이 있을 때, 제어 핸들러(710)에 세션 제어 요청(session control request)을 한다. 세션 제어 요청을 받은 제어 핸들러(710)는 세션 제어를 변환하는데, 세션 수준의 제어 메시지를 청크 수준의 세션 제어 메시지로 변환한다. 이어, 제어 핸들러(710)는 변환된 청크 수준의 세션 제어 청크 인코딩 메시지를 HTTP 스케줄러(730)에 전달한다. HTTP 스케줄러(730)는 세션 제어 청크 인코딩을 버퍼링한다. 여기서, HTTP 스케줄러(730)는 현재 청크 전송이 진행 중인지 체크하고, 만약 진행 중이라면 세션 제어 청크 인코딩 메시지를 바로 보내지 않고, 다음번 청크를 전송할 때까지 버퍼링을 한다. 한편, 스트리밍 서버(720)는 HTTP 스케줄러(730)에 멀티미디어 컨텐츠 데이터 전송을 요청한다.
HTTP 스케줄러(730)는 세션 제어 청크 인코딩 메시지와 멀티미디어 컨텐츠를 다중화하는데, HTTP 스케줄러(730)는 현재까지 버퍼에 쌓여 있는 세션 변경, 서버에서 클라이언트 방향의 세션 제어 요청, 클라이언트에서 서버 방향의 세션 제어 요청에 대한 응답 메시지와 멀티미디어 컨텐츠 데이터를 청크 메시지로 다중화한다. HTTP 스케줄러(730)는 다중화한 청크 데이터를 HTTP 서버(740)에 전송하고, HTTP 서버(740)는 스트리밍 커넥션을 통해 청크 데이터를 HTTP 클라이언트(750)에 전송한다.
여기서, HTTP 서버(740)가 전송하는 청크 데이터 메시지의 형식은 도 5를 참 조하여 설명한 메시지 형식과 동일하나, 각 개별 메시지의 type값이 "sessioncontrol"이라는 것과 "cmd"는 제어 명령어 종류를 의미한다는 점에서 차이가 있다. 예를 들면,"sessionstatusquery-sessionid", sequence 필드 외에 다른 필드들은 달라질 수 있다는 점이 다르다.
도 8은 본 발명의 또 다른 실시 예에 따른 서버에서 클라이언트로 제어 요청(Control Request)을 수신하기 위한 클라이언트 측 신호 흐름도이다.
도 8을 참조하면, 도 5 내지 7과 마찬가지로, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 점선은 스트리밍 커넥션을 의미한다.
스트리밍 커넥션상에서 HTTP 서버(800)로부터 청크 데이터를 전송받고, HTTP 클라이언트(810)는 다시 HTTP 디스패처(820)로 청크 데이터를 전달한다. 여기서, 청크 데이터는 세션 제어 요청과 멀티미디어 컨텐츠 데이터가 다중화된 것이다.
HTTP 디스패처(820)는 세션 변경 청크 인코딩 및 멀티미디어 컨텐츠를 역 다중화한다. 즉, HTTP 디스패처(820)는 청크 데이터를 세션 제어 요청 정보와 멀티미디어 컨텐츠 정보로 분리한다. 이어, HTTP 디스패처(820)는 분리된 세션 제어 청크 익스텐션 정보를 제어 핸들러(830)에 전달하고, 분리된 멀티미디어 컨텐츠 데이터를 스트리밍 클라이언트(840)로 전달한다.
제어 핸들러(830)는 전달받은 세션 제어 청크 인코딩을 변환하는데, 세션 제어 청크 인코딩 정보를 세션 수준의 제어 요청 메시지로 변환한다. 이어, 제어 핸들러(830)는 변환된 세션 제어 요청에 대한 세션 합성부(850)의 콜백(callback)을 호출한다.
도 9는 본 발명의 또 다른 실시 예에 따른 서버에서 클라이언트로 제어 요청(Control Request)에 대한 응답(Response)을 설명하기 위한 신호 흐름도이다.
도 9를 참조하면, 도 5 내지 8과 마찬가지로, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 굵은 선은 제어 커넥션을 의미한다.
클라이언트 측의 세션 합성부(960)는 서버 측으로부터의 세션 제어 요청을 처리하고나서, 세션 제어 요청에 대한 응답을 제어 핸들러(950)에 전달한다. 제어 핸들러(950)는 전달받은 세션 제어 응답을 변환한다. 여기서 세션 제어 응답을 HTTP 수준의 메시지로 변환한다. 여기서, 세션 제어 응답 메시지에는 세션 아이디, 시퀀스 정보 등이 포함된다.
이어, 제어 핸들러(950)는 변환된 HTTP 수준의 응답 메시지를 HTTP 디스패처(940)에 전달한다. HTTP 디스패처(940)는 변환된 응답 메시지를 수신한 후, 이를 제어 커넥션상에 보낼 수 있도록, 제어 커넥션을 담당하는 HTTP 클라이언트(930)에 완전한 HTTP 요청 메시지를 구성한다. 여기에서, HTTP 요청 메시지는 HTTP 헤더 정보를 포함한다. 그리고, HTTP 디스패처(940)는 제어 커넥션을 담당하는 HTTP 클라이언트(930)를 선택하여 제어 커넥션 상에서 HTTP 요청 메시지를 전달한다.
여기서, HTTP 클라이언트(930)가 전송하는 HTTP 요청 메시지는 다음과 같은 형식을 갖는다.
Figure 112007028979365-pat00005
위에서 보는 바와 같이, 응답 메시지는 HTTP 요청 메시지의 형태를 갖추고 있으나, 의미상으로는 서버에서 클라이언트 방향의 세션 제어 요청에 대한 응답메시지를 의미한다. 왜냐하면, 의미상으로는 세션 제어 응답이지만 형태상으로는 HTTP 요청이기 때문에, 이후에, HTTP 스케줄러(910)가 더미 HTTP 응답 메시지를 보내게 된다. 이와 같이 구성해야만 HTTP 규칙에 맞게 된다.
HTTP 클라이언(930)는 변환된 HTTP 요청 메시지를 HTTP 서버(920)에 전송한다. HTTP 서버(920)는 수신된 메시지를 HTTP 스케줄러(910)에 전달한다. HTTP 스케줄러(910)는 수신된 HTTP 요청 메시지를 분석하여 세션 제어 응답인 것을 알아내고, HTTP 헤더를 제외한 바디(body) 정보만을 추출한다.
이어, HTTP 스케줄러(910)는 제어 응답 정보를 제어 핸들러(900)에 전달하고, 수신한 HTTP 요청 메시지에 대해 HTTP 서버(920)에 더미(dummy) HTTP 응답 전송을 요청한다. HTTP 서버(920)는 전달받은 더미 HTTP 응답 메시지를 HTTP 클라이언트(930)에 전송한다. HTTP 클라이언트는 전달받은 더미 HTTP 응답 메시지를 디스패처(940)에 전달하고, 디스패처(940)는 더미 HTTP 응답인지 판단하여, 더미 HTTP 응답인 경우, 단순히 드롭(drop)시킨다.
도 10은 본 발명의 또 다른 실시 예에 따른 클라이언트에서 서버로 제어 요청(Control Request)을 전송하기 위한 클라이언트 측 신호 흐름도이다.
도 10을 참조하면, 도 5 내지 9와 마찬가지로, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 굵은 선은 제어 커넥션을 의미한다.
세션 합성부(1040)가 세션 제어가 필요할 때, 세션 제어 요청을 제어 핸들러(1030)에 요청한다. 제어 핸들러(1030)는 세션 제어 요청을 변환하는데, 해당 요청을 HTTP 수준의 제어 요청으로 변환한다. 이때, HTTP 수준의 제어 요청 메시지는 세션 아이디 및 시퀀스 정보 등을 포함한다. 이어, 제어 핸들러(1030)는 변환된 제어 요청 메시지를 디스패처(1020)에 전달한다.
HTTP 디스패처(1020)는 제어 요청을 완전한 HTTP 요청 메시지로 변환하고, 제어 커넥션상에서 HTTP 요청 메시지를 보낼 수 있도록, 제어 커넥션을 담당하는 HTTP 클라이언트(1010)을 선택하여 HTTP 요청 메시지를 전송한다. HTTP 클라이언트(1010)는 HTTP 요청을 HTTP 서버(1000)에 전송한다.
여기서, HTTP 클라이언트(1010)이 전송하는 HTTP 요청 메시지는 다음과 같은 형식을 갖는다.
Figure 112007028979365-pat00006
도 11은 본 발명의 또 다른 실시 예에 따른 클라이언트에서 서버로 제어 요청(Control Request)을 수신하기 위한 서버 측 신호 흐름도이다.
도 11을 참조하면, 도 5 내지 10과 마찬가지로, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 굵은 선은 제어 커넥션을 의미한다.
HTTP 서버(1130)는 HTTP 클라이언트(1140)로부터 HTTP 요청을 수신한다. 여기서, HTTP 요청 메시지는, 형식적으로는 HTTP 요청이나, 실질적으로는 클라이언트에서 서버 방향의 세션 제어 요청을 의미한다. HTTP 서버(1130)는 HTTP 요청을 HTTP 스케줄러(1120)에 전달한다.
HTTP 스케줄러(1120)는 HTTP 요청 메시지를 분석하여, 세션 제어라는 것을 알아내고, HTTP 헤더를 제외한 중요 제어 정보를 추출한다. HTTP 스케줄러(1120)는 변환된 제어 요청을 제어 핸들러(1110)에 전달한다. 또한, HTTP 스케줄러(1120)는 더미 HTTP 응답 메시지를 구성하여 HTTP 서버(1130)에 더미 HTTP 응답 메시지를 HTTP 서버(1130)에 전달한다.
HTTP 스케줄러(1120)로부터 제어 요청을 전달받은 제어 핸들러(1110)는 세션 수준의 제어 메시지로 변환하고, 대응하는 세션 관리부(1100)의 콜백을 호출하여, 등록된 세션 제어 콜백을 호출한다.
한편, HTTP 스케줄러(1120)로부터 더미 HTTP 응답을 전달받은 HTTP 서버(1130)는 제어 커넥션상에서 HTTP 클라이언트(1140)에 더미 HTTP 응답을 전송한다. HTTP 클라이언트(1140)는 디스패처(1150)에 더미 HTTP 응답을 전달하고, 디스패처(1150)는 더미 HTTP 응답인지 판단하여, 더미 HTTP 응답인 경우, 단순히 드롭(drop)시킨다.
도 12는 본 발명의 또 다른 실시 예에 따른 클라이언트에서 서버로 제어 요청(Control Request)에 대한 응답(Response)을 전송하기 위한 서버 측 신호 흐름도이다.
도 12를 참조하면, 도 5 내지 11과 마찬가지로, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 점선은 스트리밍 커넥션을 의미한다.
먼저, 세션 관리부(1200)가 세션 응답을 제어 핸들러(1210)에 전달하는데, 세션 관리부(1200)는 클라이언트에서 서버 방향의 세션 제어 요청을 처리하고, 이에 대한 응답 메시지를 제어 핸들러(1210)에 전달한다. 제어 핸들러(1210)는 세션 제어 응답을 변환하는데, 세션 수준의 세션 제어 응답 메시지를 청크 익스텐션 수준의 메시지로 변환한다. 이때, 메시지 아이디(ID)에 세션 아이디(sessionid)를 추가한다.
이어, 제어 핸들러(1210)는 변환된 세션 제어 응답 청크 인코딩을 HTTP 스케줄러(1230)에 전달한다. HTTP 스케줄러(1230)는 세션 제어 응답 청크 인코딩을 버퍼링한다. 여기서, HTTP 스케줄러(1230)는 현재 청크 전송이 진행중인지 체크하 고, 만약 진행 중이라면 세션 제어 응답 청크 인코딩을 바로 보내지 않고, 다음번 청크를 전송할 때까지 버퍼링을 한다. 한편, 스트리밍 서버(1220)는 멀티미디어 데이터를 HTTP 스케줄러(1230)에 전송하여 클라이언트 측으로 전송할 것을 요청한다. 이어, HTTP 스케줄러(1230)는 제어 핸들러(1210)로부터 전달받은 세션 제어 응답 청크 인코딩과, 스트리밍 서버(1220)로부터 전달받은 멀티미디어 데이터를 다중화한다. 즉, HTTP 스케줄러(1230)는 현재까지 버퍼에 쌓여 있는 세션 변경 통지 메시지, 서버에서 클라이언트 방향으로 세션 제어 요청 메시지, 클라이언트에서 서버 방향으로 제어 요청에 대한 응답 메시지와 멀티미디어 컨텐츠 데이터를 청크 데이터 메시지로 다중화한다.
이어, HTTP 스케줄러(1230)는 스트리밍 커넥션상에서 다중화된 청크 데이터를 HTTP 서버(1240)에 전송하고, HTTP 서버(1240)는 다시 HTTP 클라이언트(1250)에 다중화된 청크 데이터를 전송한다. 여기서, 청크 데이터의 메시지 형식을 다음과 같이 구성할 수 있다.
Figure 112007028979365-pat00007
여기서, 청크 데이터의 형식은 도 5에 도시된 메시지 형식과 동일하나, 각 개별 메시지의 타입 값이 "sessioncontrolresponse"이라는 것과 "cmd"는 응답(response) 종류를 의미한다는 점에서 차이가 있다. 예를 들면, fastforwardresponse-sessionid, sequence 필드 외에 다른 필드들은 달라질 수 있다는 점이 다르다.
도 13은 본 발명의 또 다른 실시 예에 따른 클라이언트에서 서버로 제어 요청(Control Request)에 대한 응답(Response)을 수신하기 위한 클라이언트 측 신호 흐름도이다.
도 13을 참조하면, 도 5 내지 12와 마찬가지로, 일 점 쇄선의 좌측은 서버 측이고, 우측은 클라이언트이다. 또한, 점선은 스트리밍 커넥션을 의미한다.
스트리밍 커넥션상에서 HTTP 서버(1300)로부터 청크 데이터를 전송받고, HTTP 클라이언트(1310)는 다시 HTTP 디스패처(1320)로 청크 데이터를 전달한다. 여기서, 청크 데이터는 세션 제어 응답 정보와 멀티미디어 컨텐츠 데이터가 다중화된 것이다.
HTTP 디스패처(1320)는 세션 제어 응답 청크 인코딩 및 멀티미디어 컨텐츠를 역 다중화한다. 즉, HTTP 디스패처(1320)는 청크 데이터를 세션 제어 응답 정보와 멀티미디어 컨텐츠 정보로 분리한다. 이어, HTTP 디스패처(1320)는 분리된 세션 제어 응답 청크 익스텐션 정보를 제어 핸들러(1330)에 전달하고, 분리된 멀티미디어 컨텐츠 데이터를 스트리밍 클라이언트(1340)로 전달한다.
제어 핸들러(1330)는 전달받은 세션 제어 응답 청크 인코딩을 변환하는데, 세션 제어 응답 청크 인코딩 정보를 세션 수준의 제어 응답 메시지로 변환한다. 이어, 제어 핸들러(1330)는 변환된 세션 제어 응답 메시지를 세션 합성부(1350)로 전달한다.
한편 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스 템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이제까지 본 발명에 대하여 바람직한 실시 예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이다. 그러므로 상기 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.
본 발명은 기존 HTTP 프로토콜의 수정 없이 HTTP를 이용하여 클라이언트와 서버 간에 양방향 통신이 가능하게 하여 실시간 전송을 구현할 수 있는 효과가 있 다.
또한, HTTP를 이용하여 실시간 스트리밍을 하는데 있어서의 문제점을 해결함으로써, HTTP를 실시간 스트리밍에 적용 가능하도록 하였다.

Claims (23)

  1. 클라이언트가 서버와 스트리밍 커넥션 및 제어 커넥션을 설정하는 단계;
    상기 클라이언트가 HTTP 스트리밍 요청을 상기 서버에 전송하는 단계;
    상기 서버가 상기 HTTP 스트리밍 요청에 대한 청크 인코딩(Chunked Encoding)을 구성하고, 상기 스트리밍 커넥션을 통해 제1 청크 응답을 상기 클라이언트에 전송하는 단계; 및
    상기 서버가 제2 청크 응답에 상기 서버 측 통지(Nortification) - 상기 서버 측 통지는 세션 제어 메시지 및 세션 변경 요청 메시지 중 하나를 포함함 - 를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 단계를 포함하는 HTTP를 이용한 통신 방법.
  2. 클라이언트가 서버와 스트리밍 커넥션 및 제어 커넥션을 설정하는 단계;
    상기 클라이언트가 HTTP 스트리밍 요청을 상기 서버에 전송하는 단계;
    상기 서버가 상기 HTTP 스트리밍 요청에 대한 청크 인코딩(Chunked Encoding)을 구성하고, 상기 스트리밍 커넥션을 통해 제1 청크 응답을 상기 클라이언트에 전송하는 단계;
    상기 서버가 제2 청크 응답에 상기 서버 측 통지(Nortification)를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 단계; 및
    상기 서버가 제3 청크 응답에 상기 클라이언트 상태 조회(Query)를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 단계를 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  3. 제 2 항에 있어서,
    상기 클라이언트가 HTTP 포스트(Post) 요청에 상기 클라이언트 상태 조회에 대한 응답을 포함하여 상기 제어 커넥션을 통해 상기 서버에 전송하는 단계; 및
    상기 서버가 상기 HTTP 포스트 요청에 대한 더미(dummy) HTTP 응답을 상기 제어 커넥션을 통해 상기 클라이언트에 전송하는 단계를 더 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  4. 클라이언트가 서버와 스트리밍 커넥션 및 제어 커넥션을 설정하는 단계;
    상기 클라이언트가 HTTP 스트리밍 요청을 상기 서버에 전송하는 단계;
    상기 서버가 상기 HTTP 스트리밍 요청에 대한 청크 인코딩(Chunked Encoding)을 구성하고, 상기 스트리밍 커넥션을 통해 제1 청크 응답을 상기 클라이언트에 전송하는 단계;
    상기 서버가 제2 청크 응답에 상기 서버 측 통지(Nortification)를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 단계;
    상기 클라이언트가 HTTP 포스트 요청에 제어 요청(Control Request)을 포함하여 상기 제어 커넥션을 통해 상기 서버에 전송하는 단계; 및
    상기 서버가 상기 HTTP 포스트 요청에 대한 더미(dummy) HTTP 응답을 상기 제어 커넥션을 통해 상기 클라이언트에 전송하는 단계를 더 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  5. 제 4 항에 있어서,
    상기 서버가 제4 청크 응답에 상기 제어 요청에 대한 응답을 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 단계를 더 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  6. 클라이언트가 서버와 스트리밍 커넥션 및 제어 커넥션을 설정하는 단계;
    상기 클라이언트가 HTTP 스트리밍 요청을 상기 서버에 전송하는 단계;
    상기 서버가 상기 HTTP 스트리밍 요청에 대한 청크 인코딩(Chunked Encoding)을 구성하고, 상기 스트리밍 커넥션을 통해 제1 청크 응답을 상기 클라이언트에 전송하는 단계; 및
    상기 서버가 제2 청크 응답에 상기 서버 측 통지(Nortification)를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 단계를 포함하고,
    상기 제1 청크 응답 및 상기 제2 청크 응답을 전송하는 경우, 각각의 청크에 대해 청크-익스텐션(chunk-extension)을 이용하여 타임스탬핑(timestamping)하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  7. 제어 핸들러가 세션 관리부로부터 세션 정보를 전달받아 청크-익스텐션(chunk-extension) 메시지로 변환하여 HTTP 스케줄러에 전달하는 단계;
    상기 HTTP 스케줄러가 HTTP 클라이언트로의 청크 전송이 진행중인지 체크하고, 청크 전송이 진행중인 경우, 다음 청크를 전송할 때까지 상기 청크-익스텐션 메시지를 버퍼링하는 단계;
    상기 HTTP 스케줄러가 스트리밍 서버로부터 전달받은 멀티미디어 컨텐츠와 상기 청크-익스텐션 메시지를 다중화한 청크 데이터를 생성하고, 상기 청크 데이터를 HTTP 서버에 전달하는 단계; 및
    상기 HTTP 서버가 상기 청크 데이터를 스트리밍 커넥션을 통해 HTTP 클라이언트에 전송하는 단계를 포함하는 HTTP를 이용한 통신 방법.
  8. 제 7 항에 있어서,
    상기 세션 정보는,
    서버에서 클라이언트 방향의 세션 변경 통보 메시지, 상기 서버에서 상기 클라이언트 방향의 세션 제어 요청 메시지, 또는 상기 클라이언트에서 상기 서버 방향의 세션 제어 요청에 대한 제어 응답 메시지를 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  9. 제 7 항에 있어서,
    상기 청크-익스텐션(chunk-extension) 메시지는,
    세션 아이디(sessionid)를 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  10. HTTP 클라이언트가 HTTP 서버로부터 멀티미디어 컨텐츠와 청크-익스텐션 메시지를 다중화한 청크 데이터를 스트리밍 커넥션을 통해 전송받아 HTTP 디스패처에 전달하는 단계;
    상기 HTTP 디스패처가 상기 청크 데이터를 상기 멀티미디어 컨텐츠와 상기 청크-익스텐션 메시지로 역 다중화하고, 상기 청크 익스텐션 메시지를 제어 핸들러에 전달하고, 상기 멀티미디어 컨텐츠를 스트리밍 클라이언트에 전달하는 단계; 및
    상기 제어 핸들러가 상기 청크 익스텐션 메시지를 세션 정보로 변환하여 세션 합성부에 전달하는 단계를 포함하는 HTTP를 이용한 통신 방법.
  11. 제 10 항에 있어서,
    상기 세션 정보는,
    서버에서 클라이언트 방향의 세션 변경 통보 메시지, 상기 서버에서 상기 클라이언트 방향의 세션 제어 요청 메시지, 또는 상기 클라이언트에서 상기 서버 방향의 세션 제어 요청에 대한 제어 응답 메시지를 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  12. 제어 핸들러가 세션 합성부로부터 세션 제어 요청을 전달받아 상기 세션 제어 요청을 HTTP 제어 요청(Control Request)으로 변환하여 HTTP 디스패처에 전달하는 단계;
    상기 HTTP 디스패처가 상기 HTTP 제어 요청에 HTTP 헤더를 추가한 HTTP 요청(Request)을 구성하고, 제어 커넥션을 담당하는 HTTP 클라이언트에 전달하는 단계; 및
    상기 HTTP 클라이언트가 상기 HTTP 요청을 상기 제어 커넥션을 통해 HTTP 서버에 전송하는 단계를 포함하는 HTTP를 이용한 통신 방법.
  13. 제 12 항에 있어서,
    상기 HTTP 제어 요청은,
    세션 아이디(sessionid) 및 시퀀스 정보를 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  14. HTTP 서버가 HTTP 클라이언트로부터 제어 커넥션을 통해 HTTP 요청을 전송받아 HTTP 스케줄러에 전달하는 단계;
    상기 HTTP 스케줄러가 상기 HTTP 요청을 분석하고, 상기 분석 결과, 상기 HTTP 요청 중 HTTP 헤더를 제외한 제어 요청을 추출하고, 상기 제어 요청을 제어 핸들러에 전달하는 단계; 및
    상기 제어 핸들러가 상기 제어 요청을 세션 제어 메시지로 변환하고, 상기 세션 제어 메시지에 상응하는 세션 관리부의 콜백(callback)을 검색하여 호출하는 단계를 포함하는 HTTP를 이용한 통신 방법.
  15. 제 14 항에 있어서,
    상기 제어 요청을 제어 핸들러에 전달하는 단계는,
    상기 HTTP 스케줄러가 상기 HTTP 요청에 대한 더미(dummy) HTTP 응답을 구성하여, 상기 더미 HTTP 응답을 상기 HTTP 서버에 전달하는 단계; 및
    상기 HTTP 서버가 상기 더미 HTTP 응답을 상기 제어 커넥션을 통해 상기 HTTP 클라이언트에 전송하는 단계를 더 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  16. 클라이언트 측 제어 핸들러가 세션 합성부로부터 세션 제어 응답을 전달받아 HTTP 메시지로 변환하여 HTTP 디스패처에 전달하는 단계;
    상기 HTTP 디스패처가 상기 HTTP 메시지에 HTTP 헤더를 추가한 HTTP 요청을 생성하고, 제어 커넥션을 담당하는 HTTP 클라이언트를 선택하여 상기 HTTP 요청을 전달하는 단계;
    상기 HTTP 클라이언트가 상기 제어 커넥션을 통해 상기 HTTP 요청을 HTTP 서버에 전송하고, 상기 HTTP 서버가 상기 HTTP 요청을 HTTP 스케줄러에 전달하는 단계; 및
    상기 HTTP 스케줄러가 상기 HTTP 요청을 분석하고, 상기 분석 결과에 따라 상기 HTTP 요청 중 세션 제어 응답을 추출하여 서버 측 제어 핸들러에 전달하는 단계를 포함하는 HTTP를 이용한 통신 방법.
  17. 제 16 항에 있어서,
    상기 제어 핸들러에 전달하는 단계는,
    상기 HTTP 스케줄러가 상기 HTTP 요청에 대한 더미(dummy) HTTP 응답을 구성하여 상기 HTTP 서버에 전달하는 단계;
    상기 HTTP 서버가 상기 제어 커넥션을 통해 상기 더미 HTTP 응답을 상기 HTTP 클라이언트에 전송하는 단계;
    상기 HTTP 클라이언트가 상기 더미 HTTP 응답을 상기 HTTP 디스패처에 전달하는 단계; 및
    상기 HTTP 디스패처가 상기 더미 HTTP 응답을 분석하여, 상기 더미 HTTP 응답인 경우, 상기 더미 HTTP 응답을 드롭시키는 단계를 더 포함하는 것을 특징으로 하는 HTTP를 이용한 통신 방법.
  18. 제 1 항 내지 제 17 항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체.
  19. 서버와 스트리밍 커넥션 및 제어 커넥션이 설정되고, 상기 스트리밍 커넥션을 통해 HTTP 스트리밍 요청을 전송하는 클라이언트에 있어서,
    상기 클라이언트는,
    HTTP 포스트 요청에 제어 요청(Control Request)을 포함하여 상기 제어 커넥션을 통해 상기 서버에 전송하고, 상기 HTTP 포스트(Post) 요청에 상기 서버에서 상기 클라이언트 방향의 클라이언트 상태 조회에 대한 응답을 포함하여 상기 제어 커넥션을 통해 상기 서버에 전송하는 것을 특징으로 하는 클라이언트.
  20. 클라이언트와 스트리밍 커넥션 및 제어 커넥션을 설정되고, 상기 클라이언트로부터 상기 스트리밍 커넥션을 통해 HTTP 스트리밍 요청을 전송받는 서버에 있어서,
    상기 서버는,
    상기 HTTP 스트리밍 요청에 대한 청크 인코딩(Chunked Encoding)을 구성하고, 상기 스트리밍 커넥션을 통해 제1 청크 응답을 상기 클라이언트에 전송하고, 제2 청크 응답에 상기 서버 측 통지(Nortification) - 상기 서버 측 통지는 세션 제어 메시지 및 세션 변경 요청 메시지 중 하나를 포함함 - 를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 서버.
  21. 클라이언트와 스트리밍 커넥션 및 제어 커넥션을 설정되고, 상기 클라이언트로부터 상기 스트리밍 커넥션을 통해 HTTP 스트리밍 요청을 전송받는 서버에 있어서,
    상기 서버는,
    상기 HTTP 스트리밍 요청에 대한 청크 인코딩(Chunked Encoding)을 구성하고, 상기 스트리밍 커넥션을 통해 제1 청크 응답을 상기 클라이언트에 전송하고, 제2 청크 응답에 상기 서버 측 통지(Nortification)를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하고,
    제3 청크 응답에 상기 클라이언트 상태 조회(Query)를 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 것을 특징으로 하는 서버.
  22. 제 21 항에 있어서,
    상기 서버는,
    상기 클라이언트로부터의 상기 클라이언트 상태 조회에 대한 응답 또는 제어 요청(Control Request)을 포함하는 HTTP 포스트 요청에 대한 더미(dummy) HTTP 응답을 상기 제어 커넥션을 통해 상기 클라이언트에 전송하는 것을 특징으로 하는 서버.
  23. 제 21 항에 있어서,
    상기 서버는,
    제4 청크 응답에 상기 클라이언트로부터의 제어 요청에 대한 응답을 포함하여 상기 스트리밍 커넥션을 통해 상기 클라이언트에 전송하는 것을 특징으로 하는 서버.
KR1020070037151A 2007-04-16 2007-04-16 Http를 이용한 통신 방법 및 장치 KR101366803B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020070037151A KR101366803B1 (ko) 2007-04-16 2007-04-16 Http를 이용한 통신 방법 및 장치
US11/967,289 US8078744B2 (en) 2007-04-16 2007-12-31 Communication method and apparatus using hypertext transfer protocol
CN2008100030868A CN101291324B (zh) 2007-04-16 2008-01-18 使用超文本传输协议的通信方法和设备
US13/292,913 US9270723B2 (en) 2007-04-16 2011-11-09 Communication method and apparatus using hypertext transfer protocol

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070037151A KR101366803B1 (ko) 2007-04-16 2007-04-16 Http를 이용한 통신 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20080093330A KR20080093330A (ko) 2008-10-21
KR101366803B1 true KR101366803B1 (ko) 2014-02-24

Family

ID=39854779

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070037151A KR101366803B1 (ko) 2007-04-16 2007-04-16 Http를 이용한 통신 방법 및 장치

Country Status (3)

Country Link
US (2) US8078744B2 (ko)
KR (1) KR101366803B1 (ko)
CN (1) CN101291324B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190030039A (ko) 2017-09-13 2019-03-21 한화테크윈 주식회사 웹소켓을 이용하여 중간 서버를 경유하는 미디어 스트리밍 방법

Families Citing this family (31)

* Cited by examiner, † Cited by third party
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
CN102687518B (zh) 2009-12-11 2016-06-01 诺基亚技术有限公司 用于流媒体文件内表示的描述和定时的装置及方法
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
MX2013001513A (es) 2010-08-10 2013-02-27 Ericsson Telefon Ab L M Control de sesion para transmision de flujo continuo de medios.
WO2012032502A1 (en) * 2010-09-10 2012-03-15 Nokia Corporation A method and apparatus for adaptive streaming
EP2627082A4 (en) * 2010-10-06 2014-04-09 Humax Co Ltd METHOD FOR TRANSMITTING A SCALABLE HTTP DATA STREAM FOR NATURAL REPRODUCTION WHEN OCCURRENCE OF EXPRESSION SWITCHING DURING THE HTTP DATA STREAM
US9420022B2 (en) 2010-12-17 2016-08-16 Microsoft Technology Licensing, Llc Media requests to counter latency and minimize network bursts
US11025962B2 (en) 2011-02-28 2021-06-01 Adobe Inc. System and method for low-latency content streaming
US9276989B2 (en) * 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
CN102694864A (zh) * 2012-05-30 2012-09-26 安科智慧城市技术(中国)有限公司 利用http协议实现流媒体功能的方法、流媒体服务器及系统
CN103582012B (zh) 2012-08-07 2018-06-01 中兴通讯股份有限公司 一种数据分发方法及装置
CN103685387B (zh) * 2012-09-12 2017-05-03 中国移动通信集团公司 一种调度http请求的方法和浏览器装置
CN103686202B (zh) * 2012-09-18 2018-06-19 中兴通讯股份有限公司 一种dlna下基于http的转码实时传输方法及系统
FR3000336A1 (fr) * 2012-12-20 2014-06-27 France Telecom Mecanisme de gestion d'une session de communication
CN103929447B (zh) * 2013-01-11 2017-07-07 中国科学院声学研究所 一种基于PEEK操作的解析HTTP chunked编码数据的方法
CN103929404B (zh) * 2013-01-11 2017-02-15 中国科学院声学研究所 一种解析HTTP chunked编码数据的方法
US9124568B2 (en) * 2013-03-15 2015-09-01 Disney Enterprises, Inc. Device and method for asset protection scheme
WO2014173252A1 (zh) * 2013-07-26 2014-10-30 中兴通讯股份有限公司 会话管理方法、应用功能实体、策略服务器和协议转换器
US9596281B2 (en) * 2014-03-18 2017-03-14 Qualcomm Incorporated Transport accelerator implementing request manager and connection manager functionality
CN104038555A (zh) * 2014-06-25 2014-09-10 珠海市君天电子科技有限公司 在服务端及终端设备上执行的数据交互方法、服务端及终端设备数据交互装置
WO2016056013A1 (en) * 2014-10-07 2016-04-14 Routier Ltd. Systems and methods for http message content modification streaming
CN107294913B (zh) * 2016-03-31 2021-08-27 阿里巴巴集团控股有限公司 基于http的安全通信方法、服务端及客户端
US10142397B2 (en) 2016-04-05 2018-11-27 International Business Machines Corporation Network file transfer including file obfuscation
CN107770230B (zh) * 2016-08-23 2020-11-03 平安科技(深圳)有限公司 超文本传输协议请求的处理方法、装置及Web服务器
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 (zh) * 2017-08-28 2022-02-25 阿里巴巴集团控股有限公司 网页处理请求的处理方法和装置以及电子设备
US10560507B2 (en) * 2017-11-17 2020-02-11 Embrionix Design Inc. Standardized hot-pluggable transceiving unit providing a cloud gateway functionality
CN110324677B (zh) * 2018-03-30 2021-09-07 武汉斗鱼网络科技有限公司 一种弹幕服务器连接方法、客户端及可读存储介质
WO2020243533A1 (en) * 2019-05-31 2020-12-03 Apple Inc. Systems and methods for performance data streaming, performance data file reporting, and performance threshold monitoring
CN112187858B (zh) * 2020-08-24 2023-04-18 浙江百应科技有限公司 一种匹配管线式http请求与响应的方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070003251A1 (en) * 2003-05-10 2007-01-04 Chung Hyun-Kwon Multimedia data reproducing apparatus, audio data receiving method and audio data structure therein

Family Cites Families (21)

* Cited by examiner, † Cited by third party
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
KR100228405B1 (ko) 1996-12-21 1999-11-01 이계철 주문형 비디오 시스템에서 하이퍼 텍스트 전송 프로토콜을 이용한 서비스 메뉴 검색방법
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
US7013340B1 (en) * 2000-05-18 2006-03-14 Microsoft Corporation Postback input handling by server-side control objects
US7280540B2 (en) * 2001-01-09 2007-10-09 Stonesoft Oy Processing of data packets within a network element cluster
US20020198943A1 (en) * 2001-06-20 2002-12-26 David Zhuang Web-enabled two-way remote messaging facility
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
JP2003058496A (ja) 2001-08-10 2003-02-28 Seiko Epson Corp マルチメディア情報端末システム及びコンピュータプログラム
US20030154244A1 (en) * 2002-02-13 2003-08-14 Zellers Mark H. Method and system to provide flexible HTTP tunnelling
US7644172B2 (en) * 2002-06-24 2010-01-05 Microsoft Corporation Communicating via a connection between a streaming server and a client without breaking the connection
US7272658B1 (en) * 2003-02-13 2007-09-18 Adobe Systems Incorporated Real-time priority-based media communication
US8156248B2 (en) * 2003-10-09 2012-04-10 International Business Machines Corporation Image distribution for dynamic server pages
DE10353564A1 (de) * 2003-11-14 2005-06-16 Deutsche Thomson-Brandt Gmbh Verfahren zur abschnittsweisen, diskontinuierlichen Übertragung von Daten in einem Netzwerk verteilter Stationen sowie Netzwerkteilnehmerstation als Anforderungsgerät bei der Durchführung eines solchen Verfahrens als auch Netzwerkteilnehmerstation als Quellgerät bei der Durchführung eines solchen Verfahrens
KR100535709B1 (ko) 2004-04-21 2005-12-09 주식회사 케이티프리텔 무선 데이터 서비스에서 http 요청/응답 쌍 인식 방법및 장치
US7577759B2 (en) * 2005-03-01 2009-08-18 International Business Machines Corporation Method and apparatus for in-kernel application-specific processing of content streams
US8214516B2 (en) * 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
US20080133766A1 (en) * 2006-05-05 2008-06-05 Wenjun Luo Method and apparatus for streaming media to a plurality of adaptive client devices
US7779146B2 (en) * 2006-11-09 2010-08-17 Sharp Laboratories Of America, Inc. Methods and systems for HTTP streaming using server-side pacing
US8225093B2 (en) * 2006-12-05 2012-07-17 Qualcomm Incorporated Providing secure inter-application communication for a mobile operating environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070003251A1 (en) * 2003-05-10 2007-01-04 Chung Hyun-Kwon Multimedia data reproducing apparatus, audio data receiving method and audio data structure therein

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190030039A (ko) 2017-09-13 2019-03-21 한화테크윈 주식회사 웹소켓을 이용하여 중간 서버를 경유하는 미디어 스트리밍 방법

Also Published As

Publication number Publication date
CN101291324A (zh) 2008-10-22
KR20080093330A (ko) 2008-10-21
CN101291324B (zh) 2013-03-20
US9270723B2 (en) 2016-02-23
US20120102157A1 (en) 2012-04-26
US8078744B2 (en) 2011-12-13
US20080256254A1 (en) 2008-10-16

Similar Documents

Publication Publication Date Title
KR101366803B1 (ko) Http를 이용한 통신 방법 및 장치
EP2383941B1 (en) Client terminal, method and system for downloading streaming media
US20130124683A1 (en) Data distribution system, data distribution method, data relay device on distribution side, and data relay device on reception side
KR20080108568A (ko) 서버로부터 클라이언트로의 스트리밍
EP2472799B1 (en) Method, apparatus and system for rapid acquisition of multicast realtime transport protocol sessions
WO2008061416A1 (fr) Procédé et système permettant d&#39;accepter des données media de divers formats de codage
JPWO2012011449A1 (ja) プロキシサーバ、中継方法、通信システム、中継制御プログラム、および記録媒体
CN105308974A (zh) 传输装置、传输方法、再现装置、再现方法以及接收装置
CN106233735A (zh) 多播流传输
KR102085192B1 (ko) 렌더링 시간 제어
EP1806870A1 (en) Method for providing data and data transmission system
US10924524B2 (en) Communication devices, communication data generation method, and communication data processing method
EP2099193B1 (en) Data transport container for transferring data in a high speed internet protocol network
WO2010075725A1 (zh) 终端、资讯插播系统及方法
KR20140066208A (ko) 서버상의 파일에 콘텐츠를 저장하는 방법 및 대응하는 디바이스
KR100919216B1 (ko) 데이터 송신 방법, 수신 방법 및 그 장치
CN112153022B (zh) 一种rtmp快速发布和订阅方法
KR100640918B1 (ko) 인터넷 스트리밍 서비스를 위한 스트림 파일 제작 방법
WO2014073202A1 (ja) 情報処理装置、情報処理方法、コンテンツ配信システム及びコンピュータプログラム記録媒体
KR102272335B1 (ko) Udp기반의 멀티캐스트로 컨텐츠를 제공하는 방법, 서버 그리고 사용자 단말
KR20130070330A (ko) 모바일 환경에서 에이치티티피 라이브 스트리밍 프토토콜을 알티에스피 프로토콜로 변환하는 시스템 및 그 방법
CN117527922A (zh) 流媒体多协议的转换方法、流媒体服务器、设备和介质
Ho Mobile Multimedia Streaming Library

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170117

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180117

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200120

Year of fee payment: 7