핵심 인사이트 (3줄 요약)
- 본질: RTCP(RTP Control Protocol)는 앞서 배운 맹목적인 배달부 RTP의 뒤를 졸졸 따라다니며, "지금 영상이 얼마나 끊기나요? 패킷 유실률이 몇 %인가요?"라며 통신 품질(QoS)을 끊임없이 감시하고 모니터링하여 서버에 보고서를 올리는 그림자 감사관이다.
- 피드백(Report) 시스템: 수신자(시청자)는 RTP로 영상을 보면서, 5초마다 한 번씩 RTCP 패킷을 만들어 서버로 던진다. 이 안에는 "지금 지연율(Jitter) 쩔어요, 100개 중 5개 버려졌어요"라는 수신자 보고서(Receiver Report)가 들어있다.
- 화질 자동 조절의 핵심: 서버는 전 세계에서 날아오는 이 RTCP 보고서들을 종합하여, "어? 지금 인터넷망이 좀 꼬였네? 4K 영상을 1080p로 화질을 낮춰서 쏴야겠다!"라고 실시간으로 영상 송출 용량을 조절하는 똑똑한 두뇌 역할을 수행한다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념: RTP 세션과 쌍을 이루어 동작하며, 참여자 간의 데이터 전송 품질(QoS) 피드백, 참가자 식별, 세션 제어 정보를 교환하는 모니터링 전용 프로토콜 (RFC 3550).
-
필요성: RTP는 UDP를 타고 가니까 서버(송신자)는 지가 쏜 영상이 시청자 화면에 4K로 쨍쨍하게 나오는지, 다 찢어져서 깍두기가 됐는지 알 턱이 없었다. 시청자는 화면이 멈춰서 욕을 하고 있는데 서버는 계속 고화질 데이터를 쏟아부어 대역폭만 더 망가뜨린다. "야! 시청자들이 지금 렉이 걸리는지 쾌적한지, 5초에 한 번씩 시청률과 화면 상태를 앙케트 조사(Feedback)해서 서버로 보내라! 서버가 그 앙케트 결과를 보고 화질을 올리든 내리든 판단하게 만들자!"
-
💡 비유: RTCP는 방송국의 **"실시간 시청자 모니터링 요원"**과 같습니다.
- RTP: 본 방송국에서 전파로 냅다 쏘는 "드라마 본방송" 자체입니다.
- RTCP: 시청자 거실에 숨어 있는 모니터링 요원입니다. 드라마가 나올 때 화면에 노이즈가 끼면, 요원이 즉시 본사에 전화를 걸어 **"국장님, 지금 부산 지역 화면 엄청 깨집니다!(Receiver Report)"**라고 보고합니다. 국장님은 이 보고를 받고 부산 쪽 전파 송출소의 출력을 조절합니다.
📢 섹션 요약 비유: RTCP는 온라인 게임의 **"우측 상단 핑(Ping)과 FPS 표시기"**입니다. 내 총알(RTP)이 얼마나 빨리 나가는지 화면 구석에 계속 숫자로 띄워주어, 내가 게임 옵션(화질)을 타협할지 계속 진행할지를 판단하게 해주는 핵심 참고 자료입니다.
Ⅱ. RTCP의 동작 룰과 5가지 보고서 (Deep Dive)
1. 영혼의 짝꿍 (홀수 포트)
RTP와 RTCP는 실과 바늘이다. 통신이 시작되면 무조건 같이 열린다.
- 영상(RTP)이 **UDP 5000번(짝수)**으로 날아가면, 품질 보고서(RTCP)는 무조건 **UDP 50001번(홀수)**으로 날아간다.
- 팁: 방화벽 엔지니어가 사내 인터넷 전화망(VoIP)을 뚫어줄 때, RTP 포트(예: 10000)만 달랑 허용(Allow)해주고 RTCP 포트(10001)를 까먹고 안 열어주면, 전화 통화는 잘 되는데 화질/음질 조절이 안 돼서 통화가 뚝뚝 끊기는 미친 장애가 터진다. 반드시 $+1$ 포트를 같이 열어야 한다.
2. RTCP의 트래픽 점유율 제한 (5% 룰)
10만 명이 동시에 축구 중계를 보고 있다. 10만 명이 1초마다 "화질 구려요!"라고 RTCP 보고서를 서버로 쏘면? 옛날 TCP ACK 폭풍처럼 서버가 보고서를 받다 뻗어버린다.
- 5% 룰의 천재성: "모든 RTCP 보고서 트래픽의 총합은, 전체 영상(RTP) 트래픽 대역폭의 딱 5%를 절대 넘지 못하게 해라!"
- 10명 볼 때는 1초마다 보고서를 쓰다가, 시청자가 10만 명으로 늘어나면 스스로 눈치를 챈 시청자 PC들이 **"아, 사람 많으니까 나 혼자 보고서를 1시간에 1번씩만 써서 내야겠다"**라며 자발적으로 보고 빈도를 미친 듯이 확 늦춰버린다. 서버가 절대 죽지 않는 갓벽한 설계다.
3. RTCP의 5대 메시지 (편지 종류)
와이어샤크로 까보면 이 5가지 중 하나의 편지가 날아다닌다.
- SR (Sender Report): 영상을 쏘는 쪽(서버)이 보내는 보고서. "나 여태까지 패킷 100만 개 쐈어~"
- RR (Receiver Report) ★가장 중요: 시청자(PC)가 쏘는 보고서. "나 100만 개 중에 90만 개밖에 못 받았어! (유실률 10%) Jitter(지연)는 15ms 나옴 ㅠㅠ"
- SDES (Source Description): 참가자의 신상 정보. CNAME(이름, 이메일 주소 등)이 적혀 있어, "아! 이 목소리는 김대리 목소리구나!"라고 화면에 이름을 띄워주는 역할을 한다.
- BYE: "나 이제 방송 다 봤어. 방 나갈게 ㅂㅂ" (통신 종료).
- APP: 개발자가 맘대로 만들어 쓰는 특수 기능용 엽서.
┌─────────────────────────────────────────────────────────────┐
│ RTP와 RTCP의 실시간 대역폭 핑퐁 도식 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 넷플릭스 서버 ] [ 스마트폰 ] │
│ │
│ (RTP) "4K 쥑이는 화질 발사!!!" ──────────(1Gbps)─────────▶ │
│ │
│ * 스마트폰 상황: 지하실로 들어가서 전파가 구려짐. 패킷 막 터져 나감! │
│ │
│ (RTCP) ◀─── "국장님! 지금 패킷 20%가 증발했습니다 ㅠㅠ (RR)" ── │
│ │
│ * 서버의 판단 (Adaptive Bitrate): │
│ "헐 길 막혔네? 야, 당장 4K 멈추고 720p로 화질 낮춰서 쏴!!" │
│ │
│ (RTP) "720p 찰흙 화질 발사!" ───────────(10Mbps)─────────▶ │
│ │
│ ▶ "이 RTCP의 조언 덕분에, 우리는 지하실에 들어가도 영상이 아예 │
│ 멈추지 않고, 화질만 살짝 구려진 채로 방송을 계속 볼 수 있다!" │
└─────────────────────────────────────────────────────────────┘
📢 섹션 요약 비유: RTCP는 배달앱의 **"실시간 평점 리뷰"**입니다. 배달원(RTP)이 음식을 무작정 쏟아부을 때, 손님(시청자)은 계속해서 "음식이 늦어요, 다 식었어요(Jitter)"라고 1점짜리 리뷰(RR)를 남깁니다. 사장님(서버)은 리뷰를 보고 배달 방식을 오토바이에서 퀵으로 바꾸거나(화질 조절) 대처 방안을 마련합니다.