개요
- 목적: SDP는 멀티미디어 세션의 정보를 기술하는 데 사용됩니다.
예를 들어, 어떤 미디어 스트림이 존재하는지, 미디어 유형, 포맷, 전송 프로토콜, 네트워크 연결 정보 등을 기술합니다. - 표준: RFC 4566에서 정의됩니다.
- 특징: 텍스트 기반의 간단한 포맷으로, 사람이 읽기 쉽고 기계가 파싱하기도 용이합니다.
SDP 메시지 구성
SDP 메시지는 여러 개의 줄로 구성되며, 각 줄은 한 개의 문자(식별자)와 등호(=)로 시작한 뒤, 해당 값이 옵니다. 각 줄은 CRLF로 종료됩니다.
주요 필드는 다음과 같습니다:
- v= (버전)
- SDP 버전을 나타내며, 현재는 v=0이 사용됩니다.
- o= (Origin)
- 세션 생성자 및 세션 식별 정보를 포함합니다.
- 형식:
o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
예시: o=- 0 0 IN IP4 127.0.0.1
- s= (세션 이름)
- 세션의 이름을 지정합니다.
- 예시: s=RTSP Session
- i= (세션 정보) (옵션)
- 세션에 대한 추가 설명 정보를 제공할 수 있습니다.
- u= (URI) (옵션)
- 세션에 관련된 URI(예: 웹페이지 링크)를 명시할 수 있습니다.
- e= (이메일 주소) (옵션)
- 세션 관리자 또는 연락처 정보를 제공합니다.
- p= (전화번호) (옵션)
- 연락 가능한 전화번호 정보를 제공합니다.
- c= (연결 정보)
- 세션의 네트워크 연결 정보를 명시합니다.
- 형식:
c=<nettype> <addrtype> <connection-address>
예시: c=IN IP4 127.0.0.1
- b= (대역폭 정보) (옵션)
- 세션의 대역폭 정보를 나타냅니다.
- t= (시간 설명)
- 세션의 시작 및 종료 시간을 기술합니다.
- 형식:
t=<start-time> <stop-time>
예시: t=0 0 (영구 세션을 의미)
- m= (미디어 설명)
- 하나 이상의 미디어 스트림(예: 오디오, 비디오, 텍스트 등)을 기술합니다.
- 형식:
m=<media> <port> <proto> <fmt> ...
m=video 0 RTP/AVP 96
여기서 96은 동적으로 할당된 RTP 페이로드 타입 번호를 의미합니다.
- a= (속성)
- 미디어 또는 세션에 대한 추가 속성 정보를 제공합니다.
- 예시:
a=rtpmap:96 H264/90000
이는 페이로드 타입 96이 H.264 코덱을 사용하며, 90,000 Hz 타임스케일로 인코딩되었음을 나타냅니다.
SDP의 역할
- 세션 설명: 클라이언트는 DESCRIBE 명령을 통해 서버로부터 SDP 정보를 받고, 이를 통해 미디어 스트림의 코덱, 전송 프로토콜, 포맷 등을 이해하게 됩니다.
- 협상 기반: 클라이언트와 서버가 세션 정보를 공유함으로써, 클라이언트는 자신의 디코딩 능력과 네트워크 환경에 맞춰 스트리밍을 적절히 구성할 수 있습니다.