[Network] 14. UDP

dnjstjt12·2024년 11월 10일

User Datagram Protocol(UDP)

  • transport layser에 속한다.

  • 데이터 전송 시 신뢰성보다 전송속도가 더 중요한 경우에 사용하는 프로토콜이다.

  • best-effort service이다. 데이터 전송 시 성공 여부는 보장하지 않지만, 최대한 데이터를 전달하려고 하는 방식을 뜻한다.
    성공여부를 보장하지 않기 때문에 데이터가 lost되거나 application에서 out-of-order가 발생할 수 있는 문제점이 있다.

  • connectionless이다. sender는 데이터를 전송하고, reciver는 별다른 과정없이 이를 수신한다.
    TCP와 다르게 handshake과정이 없고, 들어오는 순서대로 독립적으로 전달된다.
    이 덕분에 전송속도가 빠르지만 신뢰성이 낮을 수 있다.

  • 송신한 Packet의 순서를 보장하지 않는다. 그래서 패킷이 지연되거나 빠진 채 도착할 수 있고 데이터의 흐름의 순서가 유지되지 않을 수 있다.

  • Congestion control이 없다.

  • UDP는 신뢰성보다 전송속도가 중요해서 streaming multimedia apps에 많이 사용된다.

  • DNS에서 TCP를 사용할 시 송신한 데이터가 수신되었는지 확인하는 과정이 필요하여 Overhead가 크다. 그래서 DNS는 UDP를 사용한다.

UDP segment format

source/dest port: 송수신측 port 번호이다.
length: header와 데이터를 합한 데이터그램의 전체 길이다.
checksum: 데이터 오류 검사에 사용한다.

UDP Checksum

  1. UDP header, payload를 모두 16 bit로 분할한다.
  2. 분할한 16 bit들을 모두 더한다. 만약 보수가 나오면 보수를 다시 더한다. 모두 더한 값이 checksum 값이 되고 cheacksum 필드에 저장된다.
  3. 수신 측에서 이 과정을 다시 반복하여 checksum을 얻고 checksum 필드의 값과 비교하여 오류가 존재하는지 비교한다.
  • checksum 한계
    1. 오류 복구기능 없다. TCP처럼 재전송을 요구하지 않는다.
    2. 실제로 오류가 있어도, checksum 이 일치하면 오류가 없는 것으로 간주한다.

[참고] Computer Networking A Top-Down Approach EIGHTHEDITION/Kurose.Ross/Pearson

profile
안녕하세요!

0개의 댓글