RTP 프로토콜
- RTP (Real Time Protocol)
- 이름에 맞게 실시간 멀티미디어 데이터 전송을 지원함
- 유니캐스팅뿐 아니라 멀티캐스팅도 지원함
특징
- 불규칙한 데이터의 순서를 정렬하기 위해 Timestamp 방식을 사용하여 데이터를 정렬함
- ALF (Application Level Framing) 방식으로 응용 환경이 요구하는 알고리즘에 따라 버퍼 크기를 개별적으로 조절 가능
(프로토콜 내부에 위치하는 버퍼를 각 응용 프로그램마다 개별적으로 조절 가능 )
RTP 실시간 요구 사항
- 데이터 변형 / 분실 오류를 복구하는 기능이 상대적으로 덜 중요함
막말로 화상통화를 하다가 끊겨도 끊긴 지점에 돌아가지 않음.
- 도착 순서, 패킷의 지연 간격, 데이터 압축 등이 필요함
실시간 서비스이기 때문에 도착 순서가 굉장히 중요함. 또한 실시간이기 때문에 지연 문제에 굉장히 민감함. 그리고
데이터 압축에 따라 실시간서비스에서의 화질과 음질을 결정하기 때문에 중요한 요소가 될 수밖에 없음
버퍼의 역할
실시간 서비스는 전송 지연문제에 굉장히 민감. 때문에, 수신 프로세스의 버퍼를 이용하여 일정한 시간 간격으로 데이터를 수신자에게 보내는 매커니즘을 이용함.
- 송신자가 일정한 간격으로 데이터를 전송해도 인터넷환경에 따라 데이터가 가변적(불규칙)으로 데이터 도착할수 있음.
- 이때, 불규칙적인 데이터가 수신자에 도착하기전에 버퍼를 두어 일정한 시간 간격으로 데이터를 수신자에게 보내줌
하지만, 데이터가 수신자에게 도착한 시간이 실시간으로 재생할때 요구되는 시간 간격보다 더 늦으면 해당 데이터를 폐기함
지터 (Jitter)
지터는 데이터그램의 도착 시간을 측정하였을 때 각 데이터그램의 도착 시간이 불규칙적으로 도착하는 정도를 나타냄
RTP 데이터 전송
1. 실시간 서비스를 위해 작고 빠른 전송 기능을 제공하는 UDP위에서 구현함
- 데이터그램 분실이나 도착 순서 변겨오가 같은 전송 오류는 RTP자체에서 해결
- 송수신 프로세스 간의 연결을 관리함
2. 하나의 완전한 프로그램 단위로 구현되지 않고, 기능별로 개별로 구현
3. 다수의 사용자가 하나의 세션에 참여, 서로 실시간 데이터 전송을 지원
4. 두 종류의 RTP Relay를 지원
- 릴레이는 데이터 전송 과정에서 송수신 프로세스가 데이터를 직접 전송할 수 없는 상황이 발생했을 때, 데이터를
중개하는 기능
- 믹서 (Mixer) : RTP 데이터그램 스트림을 받아 이들을 적절히 조합하여 새로운 데이터그램 스트림을 생성
- 트랜슬레이터 (Translator) : 입력된 각 RTP 데이터그램을 하나 이상의 출력용 RTP 데이터그램으로 만들어 주는 장치
RTP 헤더 구조
- 응용 환경과 관련된 가변 크기의 헤더를 추가할 수 있음
- CSRC 구분자 목록은 믹서에 의해 추가되는 경우에 사용
- 멀티캐스트 전송 기능
RTP 데이터 형식에 송신 구분자 (Source Identifier) 필드 존재
Timestamp 필드를 지원
Version (버전) : RTP의 버전 번호
Padding (패딩) : RTP 페이로드의 마지막에 패딩 데이터가 존재하는지 여부
Extension(확장) : RTP헤더 사진에 표기된 고정 헤더의 마지막에 확장 헤더가 하나 더 이어짐을 의미
CSRC Count (CSRC 개수) : CSRC 구분자의 개수를 표시
Marker (표식) : 임의의 표식, 페이로드 유형에 따라 값의 의미가 결정됨
Payload Type (페이로드 유형) : 헤더 다음에 이어지는 RTP 페이로드의 유형
Sequence Number (순서 번호) : Timestamp 필드 값이 동일한 페이로드에 대해 패킷 손실이나 순서 변경과 같은
오류 검출
Timestamp (타임스탬프) : RTP 페이로드에 포함된 데이터의 생성 시기
SSRC Identifier (SSRC 구분자) : 임의의 세션 내에서 RTP 페이로드의 발신지가 어디인지를 구분하는 고유 번호
고정 헤더 뒷부분에는 CSRC Identifier 필드가 여러개 존재할 수 있으며, 이는 믹서(Mixer)가 제공하는 구분자임
RTCP 프로토콜 (RTP Control Protocol : RTP 제어 프로토콜)
RTCP 프로토콜은 RTP 데이터 전송 프로토콜과 구분하기위해 사용함. RTP 데이터 전송 프로토콜은 세션 참가자 사이의
멀티캐스트 기능을 이용한 사용자 데이터의 전송을 담당하지만 RTCP는 제어와 관련된 기능을 수행함
RTCP는 RTP처럼 UDP를 하부 전송 계층으로 사용하며, 세션 참가자는 RTCP 패킷을 다른 모든 멤버에게 주기적으로 전송함
RTCP의 주요 기능
- QoS와 혼잡제어 : 데이터 분배 과정에서 발생하는 서비스 품질에 관한 피드백 기능을 지원
- Identification (구분자) : RTCP 송신 프로세스에 관한 구분자 정보가 포함, 서로 다른 세션에서 발신된 스트림 정보들을
서로 연관시키는 근거를 제공
- 세션 크기 : 통상적으로 RTCP기능이 올바로 동작하기위해서는 세션 참가자들 사이에 RTCP 패킷이 주기적으로 전송
되어야 함. 하지만 세션 참가자의 수가 증가할수록 RTCP 패킷의 전송률은 감소할 수밖에 없음.
이를 위해, 일반적으로 전체 세션 트래픽의 5% 이내로 유지되도록 알고리즘이 동작함.
RTCP의 패킷 종류와 역할
Sender Report (SR) : 데이터 전송 품질을 피드백하기 위한 용도로 사용함
Receiver Report (RR : ''
Source Description (SDES) : 송신 프로세스가 자신에 대한 정보를 더 많이 제공하는 용도로 이용
Goodbye (BYE) : 송신 프로세스가 더 이상 존재하지 않음을 의미. 이는 수신 프로세스가 송신 프로세스를 무한정 기다리
지 않도록 함.
ApplicationDefined Packet : 응용 환경에 따른 기능을 점검하기 위해 제공됨.
'Network > Computer Science' 카테고리의 다른 글
[Network] 표현 계층 (0) | 2021.12.10 |
---|---|
[Network] 세션 계층 (0) | 2021.12.10 |
[Network] UDP 프로토콜 (0) | 2021.12.09 |
[Network] TCP 프로토콜 (2) (0) | 2021.12.08 |
[Network] TCP 프로토콜 (0) | 2021.12.03 |