리얼 타임 메시징 프로토콜

위키百科, 우리 모두의 百科事典.

리얼 타임 메시징 프로토콜 ( Real Time Messaging Protocol , 흔히 줄여서 RTMP )은 어도비 시스템즈 社의 獨占 컴퓨터 通信 規約이다. RTMP는 오디오, 비디오 및 其他 데이터를 인터넷을 통해 스트리밍할 때 쓰인다. RTMP는 어도비 플래시 플레이어와 서버 사이의 通信에 利用된다.

RTMP 種類는 다음과 같다.

  • RTMP (基本): 1935番 포트 使用, 暗號化되지 않은 RTMP, 或是나 1935番 포트로 試圖해서 失敗하면 443 포트(RTMPS)나 80 포트(RTMPT)로 再試圖함.
  • RTMPT (RTMP Tunneled): RTMP 데이터를 HTTP로 감싼 것. 基本 포트는 80番. HTTP 헤더 때문에 RTMP보다는 크기가 큼.
  • RTMPS (RTMP Secure): RTMP 데이터를 HTTPS로 감싼 것. 플래시 再生機는 SSL 入出力을 支援하므로 그 機能을 使用함.
  • RTMPE (Encrypted RTMP): 128비트로 暗號化된 RTMP. SSL보다는 가볍지만 SSL 引證같은게 없음. 暗號化 채널을 使用하기 때문에 基本 RTMP보다 若干 性能에 影響을 줄 수 있음.
  • RTMPTE (Encrypted RTMP Tunneled): 80番 포트 使用. RTMPT, RTMPE 섞어 놓은 形態. 플래시 플레이어 9,0,115,0 必要. 서버 性能에 影響을 줌.
  • RTMFP (Real Time Media Flow Protocol): UDP에서 動作. 基本 RTMP는 TCP에서 動作. 恒常 暗號化 된 狀態로 데이터를 電送.

처음 目標는 오직 플래시 에만 쓰이는 것이었다. 그러나 現在는 플래시뿐 아니라 어도비 라이브사이클 데이터 鉏非시즈 ES 와 같은 다른 應用 프로그램에서 RTMP이 쓰이고 있다. 그리고 RTMP 規格은 2009年 1月 20日에 어도비에서 發表했다. [1]

動作 [ 編輯 ]

純粹 TCP 基盤의 RTMP 프로토콜은 接續을 持續的으로 維持하는 데 寄與한다. 또, 實時間 通信을 한다. 더 큰 덩어리의 情報를 보낼 수 있는 能力을 維持하는 동안, 附加的으로 비디오 및 오디오 스트림을 부드럽게 傳達하기 爲해, 이 프로토콜은 비디오 및 데이터를 여러 조각들(fragments)로 나누기도 한다. 이 彫刻들의 크기는 클라이언트와 서버 間에 流動的으로 決定된다. 動的 크기 調節은 비활성화될 수 있다. 비디오 및 其他 데이터에 對한 스트림 彫刻들의 基本 크기는 128 바이트이다. 오디오에 對한 스트림 彫刻들의 基本 크기는 64 바이트이다. 여러 個의 스트림이 있을 때, 各各의 스트림으로부터 꺼내온 彫刻들은 인터리빙(interleaving)되며, 한 接續 內에서 多重化 된다. 데이터 덩어리(chunk) 크기가 클 境遇, RTMP 프로토콜은 조각 黨 1 바이트의 헤더만을 실어 보내기도 한다. 그렇게 함으로써 部下를 相當 部分 줄일 수 있다. 그러나 實際로는 彫刻들은 普通 인터리빙되지 않는다. 代身, 인터리빙과 多重化는 패킷 水準에서 遂行된다. 活性化된 여러 다른 채널에 실린 RTMP 패킷들은 各各의 채널의 帶域幅 및 레이턴視, 그리고 其他 QoS 要求에 맞게 인터리빙된다. 이렇게 인터리빙된 패킷들은 다시 나눌 수 없으며 彫刻 水準에서 다시 인터리빙되지 않는다.

RTMP 프로토콜은 패킷들을 주고 받을 수 있는 여러 個의 채널들을 定義한다. 各 채널들은 다른 채널에 對해 獨立的으로 動作한다. 例를 들어, RPC 要請과 應答에 割當된 채널이 있고, 또 비디오 스트림 데이터에 對한 채널이 있고, 오디오 스트림 데이터에 對한 채널이 있고, 아웃-오브-밴드(out-of-band) 制御 메시지(彫刻 크기 決定 等)들에 對한 채널이 있는 式이다. 一般的으로 하나의 RTMP 세션 內에, 어떤 時點에서 여러 個의 채널이 同時에 活性化될 수 있다. RTMP 데이터가 패킷化될 때, 패킷 헤더가 生成된다. 패킷 헤더는 채널의 아이디(id), 패킷의 타임스탬프(必要한 境遇에는), 패킷 페이로드 크기 等을 담고 있다. 패킷 헤더 다음에는 패킷 페이로드가 온다. 패킷 페이로드는 現在 클라이언트와 서버 間 約束된 조각 크기만큼씩 조각으로 쪼개진다. 패킷 헤더 自體가 조각나는 境遇는 없다. 패킷의 첫 番째 조각 크기에 헤더 크기가 더해지지 않는다. 다시 말해 實際 패킷 페이로드만이 조각으로 쪼개진다.

더 上位 레벨에서, RTMP 프로토콜은 MP3 플래시 비디오 멀티미디어 스트림을 캡슐化한다. 액션 메시지 포맷 을 利用하여 RPC 를 遂行하기도 한다. [2]

HTTP 터널링 [ 編輯 ]

RTMP 패킷들은 두 種類의 HTTP 터널링 프로토콜 을 통해 交換될 수 있다.

  • RTMP Tunneled (RTMPT): RTMPT에서 RTMP 데이터는 HTTP로 通信하기 爲해서 HTTP에 맞게끔 캡슐化된다. 클라이언트(미디어 플레이어)에서 나오는 메시지는 HTTP 基本 포트인 서버의 80番 포트로 들어간다.
  • RTMP Secure (RTMPS): RTMPS에서 RTMP 데이터는 HTTPS 로 交換된다. 클라이언트(미디어 플레이어)에서 나오는 메시지는 HTTPS 基本 포트인 서버의 443番 포트로 들어간다.

RTMPT와 RTMPS는 HTTP 헤더가 붙어서 터널링하지 않은 패킷보다는 相當히 더 크다. 그리고 RTMPT와 RTMPS는 防火壁을 通過하기 위해서 HTTP/HTTPS를 使用할 뿐, 터널링하지 않은 프로토콜과 大同小異하다.

RTMP 클라이언트 소프트웨어 [ 編輯 ]

第一 有名한 RTMP 클라이언트는 어도비 플래시 플레이어이다. RTMP 서버에서 비디오 및 오디오를 스트리밍 받아 보여준다. 最近, XBMC 라고 이름이 붙은 오픈 소스 미디어 플레이어가 RTMP를 支援하고 있다. ( 패치 ). 人氣있는 크로스-플랫폼 미디어 플레이어인 비디오랜 (VLC)도 RTMP를 支援하고 있다. 有名게임 리그오브 레전드의 클라이언트度 RTMP로 데이터를 주고받는다.

RTMP 서버 소프트웨어 [ 編輯 ]

現在까지 完璧하게 具現된 RTMP 서버는 어도비 플래시 미디어 서버 , Wowza 미디어 서버, WebORB 統合 서버(無料. .NET 및 Java 그리고 ColdFusion 버전)이다.

Red5 Archived 2013年 3月 31日 - 웨이백 머신 라고 불리는 리버스 엔지니어링 오픈 소스 프로젝트가 있기도 하다. 자바 (프로그래밍 言語) 로 만들었고, 2007年, 主要한 部分의 機能은 具現되어 있다. 이 프로젝트는 아직 베타 段階 이다. 그리고 Google Code Archived 2008年 12月 16日 - 웨이백 머신 에 基本 機能만 하는 서버가 올라와 있기도 하다.

NGINX基盤의 RTMP 미디어 스트리밍 서버 오픈 소스 프로젝트가 있다. NGINX-RTMP

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. “Adobe to Open Flash Platform Messaging Protocol” . 2009年 2月 9日에 原本 文書 에서 保存된 文書 . 2009年 2月 7日에 確認함 .  
  2. “Using RPC services in Flex Data Services 2” . 2007年 4月 3日에 原本 文書 에서 保存된 文書 . 2007年 4月 16日에 確認함 .  

外部 링크 [ 編輯 ]