[CS Study] 4주차(1) - UDP의 체크섬과 오류 검출

bagt13·2025년 4월 22일
0

CS

목록 보기
21/27

UDP (User Datagram Protocol)

📈 UDP(User Datagram Protocol)란?

데이터를 데이터그램 단위로 처리하는 비연결형 프로토콜이다.

UDP에서 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 되는데 이렇게 데이터를 서로 다른 경로로 독립적으로 처리하게 된다.

  • 비연결형(connectionless) 서비스데이터그램 방식을 제공한다

  • 정보를 주고 받을 때 정보를 보내거나 받는다는 신호 절차를 거치지 않는다.

  • UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.

  • 신뢰성이 낮다

  • TCP보다 속도가 빠르다

  • 실시간 스트리밍 서비스나 VoIP(음성 통화)에 사용된다.


UDP는 비연결형 서비스이기 때문에, 연결을 설정하고 해제하는 과정이 존재하지 않는다. 서로 다른 경로로 독립적으로 처리함에도 패킷에 순서를 부여하여 재조립을 하거나, 흐름 제어 또는 혼잡 제어와 같은 기능도 처리하지 않기에 TCP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만 신뢰성있는 데이터의 전송을 보장하지는 못한다는 단점이 존재한다.

따라서 신뢰성보다는 연속성이 중요실시간 서비스(streaming)에 자주 사용된다.


📒 UDP의 특징

  • UDP에는 연결 자체가 없어서(connect 함수 불필요) 서버 소켓과 클라이언트 소켓의 구분이 없다.

  • 소켓 대신 IP를 기반으로 데이터를 전송한다.

  • 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.

  • 데이터그램(메세지) 단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.

  • 흐름제어(flow control)가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.

  • 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용된다.



🛠️ UDP의 체크섬(checkSum)과 오류 검출

UDP는 신뢰성을 보장하지 않는 프로토콜이지만, 체크섬(checkSum)을 통해 기본적인(최소한의) 오류 검출 기능은 제공한다. 이는 데이터가 전송 중에 손상되었는지 확인하는 데 사용된다.

UDP는 오류 검출을 오직 체크섬(checksum) 하나에 의존한다. 그래서 신뢰성과 정밀한 오류 처리는 응용 계층(애플리케이션 레벨)에서 처리하도록 맡긴다.


체크섬(checkSum)이란?

checksum은 데이터가 전송 도중 손상되지 않았는지를 검사하기 위해 UDP 해더에 존재하는 값(필드)이다.

UDP는 데이터를 전송할 때 UDP 헤더 + 데이터(payload)에 대한 체크섬을 계산해서 UDP 헤더에 포함시킨다.

수신 측에서는 받은 데이터에 대해 다시 체크섬을 계산하고, 전송된 체크섬과 비교해서 오류를 감지한다.


checksum의 계산 방법

체크섬 계산의 대상은 총 3가지이다.

  1. UDP header

  2. 데이터 (payload)

  3. 의사 헤더 (pseudo header) – IP 헤더의 일부로 오류 검출 강화용
    의사 헤더에는 다음 정보가 포함된다.

    • Source IP - 출발지 IP
    • Destination IP - 목적지 IP
    • Protocol- 프로토콜 번호 (UDP는 17)
    • UDP Length

이 모든 값을 16비트씩 끊어서 더한 다음, 그 결과의 1의 보수를 취한 값이 checksum 이다.


checksum의 오류 검출 기능

checksum은 단순한 오류를 검출하는 데 효과적이며, 수신 측에서 checksum이 다르면 해당 패킷은 손상된 것으로 판단되어 버려진다.

❌ UDP는 오류를 발견하더라도 복구는 하지 않는다

UDP는 단순히 손상 여부만 판단할 뿐, 손상된 데이터를 재전송하거나 수정하진 않아요.


checksum의 한계

  • 앞서 설명했듯이, checksum은 오류를 완벽하게 잡아낼 수 없다.

    • 예를 들어, 두 개의 비트가 우연히 서로 상쇄되게 바뀌면 체크섬이 같게 나올 수도 있다.
  • 그래도 대부분의 전송 오류는 검출이 가능하므로, 기본적인 데이터 무결성 확인은 가능하다.


✚ 참고

UDP checksum은 IPv4에서는 optional이다. 보내는 쪽이 0으로 설정하면 생략할 수 있다. (IPv6에서는 필수)

profile
백엔드 개발자입니다😄

0개의 댓글