네트워크
RTSP
Keisa
2025. 2. 4. 11:23
RTSP (Real Time Streaming Protocol)
개요
- 목적: RTSP는 클라이언트가 스트리밍 미디어 서버와 상호작용하면서 재생, 일시정지, 중지 등 스트리밍 제어 기능을 수행할 수 있도록 설계된 프로토콜입니다.
- 역할: 미디어 스트림(영상, 오디오 등)의 제어 명령을 전송하며, 실제 데이터 전송(RTP/UDP 등)은 별도의 채널에서 이루어집니다.
- 표준:
- RTSP/1.0: RFC 2326에 정의되어 있으며, 가장 널리 알려진 버전입니다.
- RTSP/2.0: RFC 7826에 정의되어 있으며, 일부 기능이 개선되었지만 기본 개념은 유사합니다.
메시지 형식
RTSP 메시지는 HTTP와 유사한 텍스트 기반 메시지 형식을 따릅니다.
- 요청 메시지 (Request Message)
- 요청 라인:
METHOD <request-URI> RTSP/1.0\r\n
예시: OPTIONS rtsp://example.com/media.mp4 RTSP/1.0
-
- 헤더:
요청에 대한 부가 정보를 전달합니다. 대표적인 헤더는 다음과 같습니다.- CSeq: 요청의 순번을 나타내며, 서버가 응답할 때 동일한 순번을 포함해야 합니다.
- Transport: SETUP 명령 시 사용되며, 클라이언트가 RTP 스트림을 수신할 포트, 전송 방식(UDP, TCP 등) 등을 지정합니다.
- User-Agent: 클라이언트 정보(옵션) 등
- 본문 (Body):
필요에 따라 포함될 수 있으며, 보통 DESCRIBE 요청 시 SDP 정보를 요구하는 경우에는 본문 없이 헤더만 포함되거나, 본문에 별도의 데이터가 들어갑니다.
- 헤더:
- 응답 메시지 (Response Message)
- 상태 라인:
RTSP/1.0 <Status-Code> <Reason-Phrase>\r\n
예시: RTSP/1.0 200 OK
-
- 헤더:
응답의 상세 정보를 제공합니다.- CSeq: 요청에 포함된 CSeq와 동일해야 합니다.
- Content-Base: 스트림의 기본 URL을 나타냅니다.
- Content-Type: 본문에 포함된 데이터의 타입을 나타냅니다(예: application/sdp).
- Content-Length: 본문의 길이를 명시합니다.
- Session: 스트리밍 세션을 식별하는 값 (SETUP 이후 PLAY/PAUSE/TEARDOWN에서 사용)
- 본문 (Body):
DESCRIBE 명령에 대한 응답으로 SDP 정보가 포함될 수 있습니다.
- 헤더:
주요 RTSP 메서드
RTSP는 스트리밍 세션을 제어하기 위해 여러 메서드를 정의합니다. 표준 규격에 의해 그 의미와 형식이 정해져 있습니다.
- OPTIONS
- 목적: 서버가 지원하는 RTSP 메서드(예: DESCRIBE, SETUP, PLAY, TEARDOWN 등)를 질의합니다.
예시 요청:
OPTIONS rtsp://example.com/ RTSP/1.0\r\n
CSeq: 1\r\n\r\n
예시 응답:
RTSP/1.0 200 OK\r\n
CSeq: 1\r\n
Public: DESCRIBE, SETUP, PLAY, TEARDOWN\r\n\r\n
- DESCRIBE
- 목적: 클라이언트가 미디어 세션에 대한 설명(SDP)을 요청합니다.
- 예시 요청:
DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0\r\n
CSeq: 2\r\n
Accept: application/sdp\r\n\r\n
- SETUP
- 목적: 클라이언트와 서버 간의 스트리밍 전송 채널(RTP 등)의 설정을 협상합니다.
- 예시 요청 (클라이언트가 수신할 포트를 지정):
SETUP rtsp://example.com/media.mp4 RTSP/1.0\r\n
CSeq: 3\r\n
Transport: RTP/UDP;unicast;client_port=5000-5001\r\n\r\n
- PLAY
- 목적: 스트리밍 세션을 시작하도록 지시합니다.
- 예시 요청:
PLAY rtsp://example.com/media.mp4 RTSP/1.0\r\n
CSeq: 4\r\n
Session: 12345678\r\n\r\n