Connectless Transport

KVV·2024년 12월 2일

UDP는 Connectless Transport이다.

  • Transport layer protocol이 할 수 있는 최소한의 기능으로만 동작한다.
  • Multiplexing, Demultiplexing과 간단한 오류 검사 기능을 제외하면 IP에 아무 것도 추가하지 않는다.
  • 수신 Transport layer에서 UDP는 Destination port number를 이용하여 데이터를 해당하는 애플리케이션 프로세스에 전달한다.
  • EX) DNS - 간단한 작업으로, 빠른 응답이 필요하기 때문이다.

Q) Connectless인 이유

UDP가 TCP와는 다르게 송수신 transport layer간에 Handshake를 사용하지 않기 때문이다.

Q) Application 개발자가 TCP보다 UDP를 선호하는 이유

  1. 어떤 데이터를 언제 보낼지에 대해 Application level에서 더욱 정교한 제어가 가능하다.

    • TCP는 신뢰적인 데이터 전송때문에 재전송되는 데이터가 많아져 실시간 application에 불리하다.
    • TCP는 혼잡 제어 서비스로 인해 Transport layer 송신자가 제한될 수 있다.
  2. 연결 설정이 없다.

    • UDP는 TCP와 다르게 Handshake 과정이 없어 연결을 설정하기 위한 어떠한 지연도 없다.
    • DNS가 주로 UDP에서 동작하는 이유
  3. 연결 상태가 없다.

    • 연결 상태를 유지하지 않고, TCP에서는 사용해야하는 파라미터를 따로 기록하지 않는다.
  4. 작은 패킷 헤더 오버헤드 (추가적인 데이터)

    • TCP: Segment마다 20 byte Header
    • UDP: Segment마다 8 byte의 Header
    • Overhead: 데이터를 전송하기 위해 추가적으로 사용되는 자원이나 데이터량

Transport Layer Protocol의 사용

  • 메일, 파일 전송 등: TCP (신뢰적인 데이터 전송 필요)
  • 혼잡한 경우에도 동작 해야하는 애플리케이션: UDP
  • 보안이 중요시되는 애플리케이션: TCP

UDP segment 구조

UDP 헤더는 2 byte씩 구성된 단 4개의 필드만을 갖는다.

UDP checksum

Segment가 출발지로부터 목적지로 이동했을 때, UDP segment 안의 비트에 대한 변경사항이 있는지 오류 검출을 위한 필드

기본적인 Data Integrity를 보장한다.

  • 송신자 UDP: segment 안에 있는 모든 16 bit (2 byte) 워드의 합산을 수행하며, 이때 발생하는 overflow는 wrap around 한다.

    -Carry bit을 더한다.

  • 위의 결과값의 1의 보수가 checksum field에 삽입된다.

  • 그러나 이 방법은 비트가 특정 방법으로 변하는 경우 (A: 01 -> 10 / B: 10 -> 01) 오류를 감지하지 못하는 한계점이 있다.

  • Link layer protocol이 오류 검사를 제공한다는 보장이 없기 때문이다.
  • 추가적으로, End-end principle에 따르면 하위 레벨에 있는 기능들을 상위 레벨에서 제공하더라도 가치가 있다.
  • IP는 어떠한 2계층 프로토콜에서도 동작해야하므로, Transport layer에서 안전장치로써 오류 검사를 제공하는 것이 유용하다.

0개의 댓글