본문 바로가기

Computer Science/네트워크

[쉽게 배우는 데이터 통신과 네트워크] CH10. 전송 계층

반응형
SMALL

01. UDP 프로토콜

  • 비연결형 서비스를 제공한다.
  • 헤더와 전송 데이터에 대한 체크섬 기능을 제공한다.
  • Best Effort 전달 방식을 지원한다.

 

1. UDP 헤더 구조

UDP 헤더의 구조

  • Source Port / Desination Port (송신 포트 / 수신 포트)
    • 송수신 프로세스에 할당된 네트워크 포트 번호
    • 호스트에서 실행되는 프로세스를 구분하는 데 이용한다.
    • UDP 포트 번호는 TCP 포트 번호와 독립적으로 관리되고 할당된다.
  • Length (길이)
    • 프로토콜 헤더를 포함한 UDP 데이터그램의 전체 크기
  • Checksum (체크섬)
    • 프로토콜 헤더와 데이터에 대한 체크섬 값을 제공하여 수신 프로세스가 데이터그램 변형 오류를 감지할 수 있다.
    • UDP는 데이터까지 체크섬을 계산한다. (IP 프로토콜은 헤더만 계산)
    • 필드 값이 0이면 오류 검출 기능을 수행하지 않는다. (Optional, 0일 경우 체크섬 계산을 하지 않음을 의미)

 


2. UDP의 데이터그램 전송

UDP를 사용해 데이터그램을 전송할 때는 오류 발생 가능성을 항상 염두에 두어야 한다.

 

2.1. UDP에서의 데이터그램 분실

데이터그램 분실

  • UDP는 분실 오류를 복구하는 기능을 수행하지 않으므로, 수신 프로세스에는 1, 2, 4번 데이터그램만 도착했다.
  • 데이터 순서 번호 기능을 제공하지 않으므로, 데이터그램 분실 여부를 확인할 수 없다. (데이터 분실을 감지하려면 순서 번호와 유사한 기능을 프로그램 내부에 구현해야 함)

 

2.2. UDP에서의 데이터그램 도착 순서 변경

도착 순서 변경

  • UDP는 각 데이터그램을 개별 전송 경로를 선택하여 전송한다.
  • 도착 순서 변경 오류를 해결하려면 UDP를 사용하는 응용 프로그램의 내부에서 순서 번호 기능이 구현되어야 한다.

 


02. RTP 프로토콜

TCP와 UDP를 근간으로 인터넷 환경에서 실시간 서비스를 제공하는 가장 현실적인 방법 중 하나는 UDP에 데이터그램의 순서 번호 기능을 추가하는 것이다. 이러한 프로토콜의 대표적인 예가 실시간 멀티미디어 데이터의 전송을 지원하는 RTP(Real Time Protocol)이다.

  • 불규칙하게 수신되는 데이터의 순서를 정렬하기 위해 타임스탬프 방식을 사용한다.
  • 응용 환경이 요구하는 알고리즘에 따라 버퍼 크기를 개별적으로 조절할 수 있다.

 

1. 실시간 요구 사항

1.1. 버퍼의 역할

실시간 전송

  • 전송된 데이터는 데이터그램 사이의 시간 간격이 일정하다가 인터넷을 거쳐 수신 프로세스에 전달되는 과정에서 간격이 불규칙해진다.
  • 수신 측에서는 지연 버퍼를 사용해 데이터의 시간 간격을 일정하게 보정한다.

 

1.2 지터

지터 분포

  • 지터 분포는 데이터그램의 도착 시간을 측정했을 때 각 데이터그램의 도착 시간이 불규칙적으로 도착하는 정도를 나타낸다.
  • (a) 전송 간격이 균일했던 송신 데이터그램이 수신 프로세스에 도착할 때 간격이 일정하지 않음을 보여준다.
  • (b) 이러한 송수신 프로세스 사이의 데이터그램 간격 차이를 표시했다.

 


2. RTP의 데이터 전송

RTP 구조

  • UDP의 데이터그램 분실이나 도착 순서 변경과 같은 전송 오류는 RTP 자체에서 해결한다.
  • RTP는 기능별로 개별적으로 구현된다. (RTP 모듈)
  • 다수의 사용자가 하나의 세션에 참여해 서로 실시간 데이터를 전송하도록 지원한다.
  • 두 종류의 RTP 릴레이를 지원한다.
    • 믹서: 여러 송신 프로세스로부터 RTP 데이터그램 스트림을 받아 조합하여 새로운 데이터그램 스트림을 생성한다.
    • 트랜슬레이터: 입력된 각 RTP 데이터그램을 하나 이상의 출력용 RTP 데이터그램으로 만들어주는 장치이다.

 


3. RTP 헤더 구조

RTP 고정 헤더의 구조

  • Version(버전)
    • RTP의 버전 번호로, 현재 2로 저장된다.
  • Padding(패딩)
    • RTP 페이로드의 마지막에 패딩 데이터가 존재하는지 여부를 나타낸다.
    • 응용 환경에서 페이로드의 크기가 특정 크기의 배수가 되어야 할 때 사용한다.
  • Extension(확장)
    • 고정 헤더의 마지막에 확장 헤더가 하나 더 이어짐을 의미한다.
  • CSRC Count(CSRC 개수)
    • CSRC 구분자의 개수를 표시한다.
  • Marker(표식)
    • 임의의 표식을 위해 이용하므로, 페이로드 유형에 따라 값의 의미가 결정된다.
    • 보통 데이터 스트림의 경계점을 표시하는 데 사용한다.
  • Payload Type(페이로드 유형)
    • 헤더 다음에 이어지는 RTP 페이로드의 유형을 나타낸다.
  • Sequence Number(순서 번호)
    • Timestamp 필드 값이 동일한 페이로드에 대해 패킷 손실이나 순서 변경과 같은 오류를 검출할 수 있도록 한다.
    • 일반적으로 동시에 생성된 일련의 연속 패킷들은 동일한 Timestamp 값을 가지며, 순서 번호는 RTP 패킷 단위로 1씩 증가한다.
  • Timestamp(타임스탬프)
    • RTP 페이로드에 포함된 데이터의 생성 시기를 나타낸다.
    • 시간 단위는 페이로드의 종류에 영향을 받으며, 송신 프로세스에서 사용하는 클록에 의해 발생한다.
  • SSRC Identifier(SSRC 구분자)
    • 임의의 세션 내에서 RTP 페이로드의 발신지가 어디인지를 구분하는 고유 번호이다.
    • 랜덤하게 생성되는 32비트 숫자이다.

 

  • RTP 세션을 이용해 데이터를 전송할 때는 각 미디어가 별도의 RTP 세션을 사용한다.
  • RTP 헤더는 오디오와 비디오 데이터의 동기에 필요한 시간 정보를 제공하며, 페이로드 유형 지정 방식을 사용하여 다양한 종류의 데이터와 압축 유형을 지정한다.

 


4. RTP 제어 프로토콜

  • RTP 제어 프로토콜을 RTCP(RTP Control Protocol)라 부른다.
  • 제어와 관련된 기능을 수행한다.
  • UDP를 하부 전송 계층으로 사용하며, 세션 참가자는 RTCP 패킷을 다른 모든 멤버에게 주기적으로 전송한다.

 

✔️ QoS(Quality of Service)와 혼잡 제어

  • RTCP는 세션에서의 데이터 분배 과정에서 발생하는 서비스 품질에 관한 피드백 기능을 지원한다.
  • 송신 프로세스의 보고서에는 전송률 등의 정보가 포함되고, 수신 프로세스의 보고서에는 수신 과정에서 발생하는 패킷 분실이나 지터 등의 정보가 포함된다.

 

✔️ Identification(구분자)

  • RTCP 패킷에는 RTCP 송신 프로세스에 관한 구분자 정보가 포함된다.
  • 서로 다른 세션에서 발신된 스트림 정보들을 서로 연관시키는 근거를 제공한다.

 

✔️ 세션 크기

  • RTCP 패킷의 트래픽이 많아지면 세션 전체의 트래픽도 증가하기 때문에 이를 제한한다.
  • 일반적으로 전체 세션 트래픽의 5% 이내로 유지되도록 알고리즘이 동작한다.
  • 세션 참가자의 수가 적은 경우에도 최대 5초당 1 패킷 이상이 전송되는 것은 허용되지 않는다.

 

종류 역할
Sender Report
Receiver Report
데이터 전송 품질을 피드백하기 위한 용도로 사용된다.
Source Description 송신 프로세스가 자신에 대한 정보를 더 많이 제공하는 용도로 이용된다.
Goodbye 송신 프로세스가 더 이상 존재하지 않음을 의미하고,
이는 수신 프로세스가 송신 프로세스를 무한정 기다리지 않도록 한다.
Applicationdefined Packet 응용 환경에 따른 기능을 점검하기 위해 제공된다.

🔼 패킷의 종류와 역할

 


03. OSI TP 프로토콜

클래스 제공하는 서비스
클래스 0 기본 기능
클래스 1 기본 오류 복구 기능
클래스 2 멀티플렉싱 기능
클래스 3 오류 복구, 멀티플렉싱 기능
클래스 4 오류 검출, 오류 복구, 멀티플렉싱 기능

🔼 OSI TP 프로토콜이 제공하는 서비스

  • 5개의 클래스로 서비스를 분류하여 지원한다.
    • 클래스 0이 구조가 가장 단순하고, 클래스 번호가 커질수록 기능이 추가된다.
  • 클래스 0과 1은 단일 포트를 지원한다.
    • 클래스 0은 기본 전송 기능만 제공한다.
    • 클래스 1은 패킷 손실 확인과 같은 간단한 오류 복구 기능을 지원한다.
  • 클래스 2, 3, 4는 목적지에서 다수 포트를 지원하는 멀티플렉싱 기능이 있다.
    • 클래스 2는 오류 복구 기능을 지원하지 않는다.
    • 클래스 3은 패킷 손실과 같은 간단한 오류를 확인할 수 있다.
    • 클래스 4는 16비트의 체크섬을 이용해 헤더 오류를 확인할 수 있다. (더 완전한 형태의 오류 복구 기능 지원)

 


1. OSI TP의 서비스 프리미티브

프리미티브 제공 서비스
T-CONNECT.request 연결 설정
T-CONNECT.indication 연결 설정
T-CONNECT.response 연결 설정
T-CONNECT.confirm 연결 설정
T-DISCONNECT.request 연결 해제
T-DISCONNECT.indication
연결 해제
T-DATA.request 데이터 전송
T-DATA.indication 데이터 전송
T-EXPEDITED-DATA.request 긴급 데이터 전송
T-EXPEDITED-DATA.indication 긴급 데이터 전송
T-UNITDATA.request 비연결형 데이터 전송
T-UNITDATA.indication 비연결형 데이터 전송

🔼 OSI TP의 서비스 프리미티브

 


2. OSI TP의 데이터 전송

OSI 프리미티브

  • 서비스 프리미티브를 이용한 연결형 서비스의 동작 과정을 설명한다.
  • 위에서부터 연결 설정, 데이터 전송, 연결 해제의 절차가 순서대로 표시된다.
  • 왼쪽에서 오른쪽으로 요구가 발생하는 경우를 가정했다.
  • T-CONNECT: 연결이 정상적으로 설정되는 경우를 가정 (연결 설정 요구를 받은 오른쪽에서 거부하면 연결 설정 X)
  • T-DISCONNECT: 한쪽의 요구에 의해 연결이 해제된다.
  • 송수신 프로세스의 의도와 상관없이 네트워크 내부의 특별한 상황(Ex. 네트워크의 특정 부분에 혼잡이 발생한 경우)이 발생하여 연결 해제 요구가 발생할 수도 있다.

 


Reference

쉽게 배우는 데이터 통신과 컴퓨터 네트워크

반응형
LIST