전송계층에는 두가지 서비스 프로토콜이 존재한다. 연결형 서비스를 지원하는 TCP와 비연결형 서비스를 지원하는 UDP
UDP는 TCP에 비해 매우 간단한 구조와 개념을 가진 프로토콜이다.
UDP
UDP는 비연결형 서비스를 지원하며 헤더와 데이터에 대한 checksum 기능을 제공한다.
비연결형 서비스이기 때문에 BestEffort 방식으로 데이터를 전송하며 이는 수신 프로세스가 데이터를 반드시 수신 받는 것을 보장하지 않는다. 다만 최선을 다해 전송할 뿐!!
이 말은 데이터가 도착했는지 확인하지 않는다는 것이고 그로인해 전송 속도가 빠른 프로토콜이다.
UDP 헤더에는 SourceAdd, DestAdd, Length, Checksum 4가지가 들어간다.
수신 프로세스가 UDP 헤더의 checksum에서 오류를 발견하면 해당 패킷을 버린다.
UDP의 전송속도가 빠른 이유 중 하나이다.
UDP 데이터그램은 전송경로가 독립적이고, BestEffort로 보내지며 흐름제어 없이 전송된다.
- 독립적인 경로 : 도착순서가 일정하지 않으며 순서번호기능이 없어 상위 계층에서 구현해야 함.
- BestEffort : 도착을 보장하지 않고 도착한 것을 확인하지 않지만 최선을 다해 전송함.
- 흐름제어기능 없음 : 버퍼 오버플로우 발생 가능
위와 같은 이유로 상위 계층 스스로가 분실오류 발생시 이를 확인한다.
실시간 전송 서비스
실시간 전송 서비스는 빠른 전송속도가 필요하다. 사용자가 데이터그램의 지연을 체감하는 순간 더이상 실시간이 아니기 때문이다.
그렇다면 UDP는 이런 실시간 전송 서비스에 사용하기에 적합한가? 아니다.
UDP는 순서번호를 지원하지 않기 때문에 의미 없는 빠른 전송이 이루어질 수 있다.
실시간 전송 서비스는 빠른 전송속도 뿐만아니라 데이터그램의 도착순서, 지터분포, 압축률이 중요하다.
이를 위해서 사용되는 새로운 프로토콜이 RTP이다.
RTP의 특징으로
- 유니캐스팅 + 멀티캐스팅 지원
- 순서 정렬을 위한 타임스탬프 기능 지원
- 프로토콜 동작이 라이브러리 형식의 ALF(Application Level Framing) 방식이기에 버퍼의 크기를 조절하기 쉽다.
제약사항으로 자원예약이나 QoS 보장기능이 없다.
이러한 RTP는 새로운 프로토콜이라기 보다 UDP에 기능이 추가된 것이라고 보는게 좋을 것 같다.
빠른 실시간 서비스를 위해 UDP 위에서 구현되며 나머지 데이터그램 분실이나 순서변경은 RTP 스스로 해결한다.
여러 종류의 실시간 서비스(ex 음성, 영상회의, 방송 등)가 존재하기에 RTP는 이 종류들에 맞춰서 헤더를 바꿔끼는 모듈형 프로토콜이다. 따라서 다양한 서비스에 요구사항을 맞추기 간편하다.
RTP는 다수의 사용자가 하나의 세션에 참가해 멀티캐스팅 기능을 지원할 수 있도록 한다.
RTP 릴레이
송수신 프로세스간 직접 데이터 전송이 어려울 때 데이터를 중개하는 기능이다.
1. 믹서
송신 프로세스가 보낸 데이터그램 스트림을 받아서 새로운 데이터그램 스트림을 형성한다.
여러 프로세스가 보낸 스트림의 시간 관계가 적절치 않을 경우 새로운 데이터그램 스트림에 시간정보를 제공하고 자신이 그 정보를 제공했다고 알린다.
2. 트렌스레이터
입력 RTP 데이터그램을 하나 이상의 출력용 RTP 데이터그램으로 변환하는 역할을 한다.
예를들어 수신자 그룹이 고해상 영상처리 능력이 없을 경우 데이터그램을 저해상도로 바꿔준다.
또 멀티캐스팅용 RTP 데이터그램을 복사해 유니캐스트로 다수의 수신자들에게 복사 후 전달해준다.
실시간 전송 서비스는 전송시간에 포커스를 맞춰야 한다.
전송시간이 얼마나 빠르냐 뿐만아니라 데이터그램간 도착 시간 간격이 얼마나 일정한가, 즉 트래픽 변동률이 얼마나 적은가 또한 중요하다.
데이터그램 도착 지연은 도착시간 - 출발시간으로 이러한 지연의 분산에 대한 개념을 지터라고 한다.
이러한 가변적인 시간 간격을 지닌 데이터그램은 지연 버퍼가 처음 받아서 시간간격을 조절해 프로세스에게 전달한다.
수신 프로세스는 시간간격이 일정 기준치보다 큰 간격이면 이 패킷을 버린다.
2021-12-12
'Computer Science > Computer Network' 카테고리의 다른 글
DNS (0) | 2021.12.18 |
---|---|
WWW (0) | 2021.12.15 |
TCP 프로토콜 (0) | 2021.12.05 |
네트워크 계층 (0) | 2021.11.30 |
IP 프로토콜 (0) | 2021.11.26 |