RTP
IT위키
더 많은 작업
Real-time Transport Protocol; 실시간 전송 프로토콜
음성·영상처럼 실시간성이 중요한 데이터를 네트워크로 전달하기 위한 프로토콜
- RFC 3550
- 주로 UDP 위에서 동작한다. 재전송으로 지연이 생기는 것보다 약간의 손실이 낫기 때문이다.
- 인터넷 전화(VoIP), 화상회의, 스트리밍의 전송 계층 역할을 한다.
- 순서 번호(Sequence Number) : 패킷 순서를 복원하고 손실을 감지한다.
- 타임스탬프(Timestamp) : 재생 시점을 맞춘다. 지터를 흡수하는 버퍼 계산에 쓰인다.
- 페이로드 타입 : 어떤 코덱으로 인코딩했는지 표시한다.
- SSRC : 동기화 소스 식별자. 여러 참가자를 구분한다.
- 전송 보장, 순서 보장, 흐름 제어를 하지 않는다. 이런 기능은 응용에서 처리한다.
RTP 고정 헤더는 12바이트이고, 그 뒤에 CSRC 목록과 확장 헤더가 올 수 있다.
| 필드 | 크기 | 뜻 |
|---|---|---|
| V(Version) | 2비트 | 버전. 현재 2 |
| P(Padding) | 1비트 | 1 이면 패킷 끝에 페이로드가 아닌 채움 바이트가 붙어 있다. 마지막 바이트가 채움 길이다(암호화 블록 맞춤 등) |
| X(Extension) | 1비트 | 1 이면 고정 헤더 뒤에 확장 헤더가 하나 붙어 있다. 헤더 '앞'에 오는 것이 아니다 |
| CC(CSRC Count) | 4비트 | 뒤에 오는 CSRC 식별자 수 |
| M(Marker) | 1비트 | 프로파일이 정하는 특별한 경계를 표시한다. 영상은 한 프레임의 마지막 패킷, 음성은 말소리 구간의 시작 |
| PT(Payload Type) | 7비트 | 페이로드의 형식(코덱)을 지정한다 |
| 순서 번호 | 16비트 | 패킷마다 1 씩 증가. 손실 감지와 순서 복원 |
| 타임스탬프 | 32비트 | 첫 샘플의 표본화 시각. 재생 시점과 지터 계산 |
| SSRC | 32비트 | 동기화 소스 식별자 |
| CSRC 목록 | 0~15개 × 32비트 | 믹서가 합친 원래 소스들의 식별자 |
- RTP Control Protocol
RTP 와 짝을 이루어 품질 정보를 주고받는 제어용 프로토콜이다. RTP 가 짝수 포트를 쓰면 RTCP 는 바로 다음 홀수 포트를 쓴다.
- 수신 측이 패킷 손실률, 지터, 왕복 지연을 보고한다.
- 송신 측은 이 정보를 보고 전송률이나 코덱을 조정한다.
- 참가자 식별 정보(CNAME 등)를 교환한다.
| 프로토콜 | 역할 |
|---|---|
| SIP | 세션 개설·종료 (누구와 통화를 시작할지) |
| SDP | 세션 정보 기술 (어떤 코덱, 어떤 포트를 쓸지) |
| RTP | 실제 음성·영상 데이터 전달 |
| RTCP | 품질 보고와 제어 |
| RTSP | 스트리밍 재생 제어 (재생·정지·탐색) |
RTP 자체는 암호화하지 않아 도청이 가능하다. 암호화·인증을 더한 SRTP(Secure RTP, RFC 3711)를 사용하며, 키 교환은 SDES 나 DTLS-SRTP 로 한다.