
UDP(User Datagram Protocol)는 IP 네트워크를 통한 통신에 사용되는 전송 계층 프로토콜이다. 비연결형 프로토콜로, 데이터를 전송하기 전에 발신자와 수신자 사이에 전용 종단 간 연결을 설정하지 않는 것이 특징이다.
UDP는 속도와 효율성이 신뢰성보다 중요한 애플리케이션에 사용되는 간단하고 가벼운 프로토콜이다. TCP와 달리 모든 패킷이 올바른 순서로 수신되도록 보장하거나 안정적인 데이터 전달을 위한 메커니즘을 제공하지 않는다. 따라서 UDP는 패킷 손실, 복제, 또는 순서가 뒤바뀌는 상황이 발생할 수 있다.
그러나 UDP는 이러한 신뢰성 메커니즘이 없는 대신, 온라인 게임, 스트리밍 미디어, VoIP(Voice over Internet Protocol)와 같은 애플리케이션에서 뛰어난 속도와 효율성을 제공한다. 이와 같은 애플리케이션은 짧은 대기 시간과 높은 처리량이 요구되며, 일부 패킷 손실이나 지연을 허용할 수 있는 환경에 적합하다.
UDP 패킷은 헤더와 페이로드로 구성되어 있다. 헤더에는 소스 및 대상 포트 번호, 패킷 길이 등의 정보가 포함되며, 페이로드에는 전송되는 실제 데이터가 담겨 있다. TCP가 흐름 제어를 위해 슬라이딩 윈도우 메커니즘을 사용하는 것과 달리, UDP는 흐름 제어를 수행하지 않고 사용 가능한 최대 네트워크 대역폭에서 패킷을 전송한다.
결론적으로, UDP는 안정성보다 속도와 효율성이 중요한 응용 프로그램에 적합한 경량의 연결 없는 전송 계층 프로토콜이다. 안정성 메커니즘은 제공하지 않지만, 낮은 대기 시간과 높은 처리량이 필요한 온라인 게임, 스트리밍 미디어, VoIP와 같은 애플리케이션에서 매우 유용하게 사용된다.
장점
1. 빠른 데이터 전송 속도
단점
1. 신뢰성 부족
UDP를 주로 사용하는 사례
- 실시간 스트리밍 (유튜브, 넷플릭스)
- 온라인 게임 (빠른 응답이 중요한 환경)
- VoIP(Voice over IP), 화상 통화
- DNS 조회, DHCP
--> UDP는 신뢰성보다는 속도와 실시간 처리가 중요한 애플리케이션에 적합하며, TCP와 비교해 적절한 상황에서 사용해야 한다
UDP 체크섬은 데이터 전송 중 발생할 수 있는 오류를 검출하기 위해 사용되는 메커니즘이다. UDP는 비신뢰성 프로토콜이지만 기본적인 데이터 무결성을 검증하기 위해 체크섬을 사용한다.
UDP 체크섬은 전송된 데이터그램이 손상되지 않았는지 확인하는 데 사용된다.
송신 측에서 계산된 체크섬 값과 수신 측에서 계산된 체크섬 값이 일치하지 않으면 해당 데이터그램이 전송 중에 손상되었음을 의미한다.
1) 송신하는 메시지(데이터 그램)을 정해진 길이(16비트)의 데이터 단위로 나눈다.
2) 모든 데이터 단위를 1의 보수 연산으로 더하여 합을 구한다.
3) 합의 1의 보수를 체크섬으로 생성하고 데이터그램에 추가하여 전송한다.
1) 수신된 메시지(데이터 그램)을 정해진 길이(16비트)의 데이터 단위로 나눈다.(checksum 포함)
2) 모든 데이터 단위를 1의 보수 연산으로 더하여 합을 구한다.
3) 합이 0이면 데이터그램의 무결성이 보장된 성공적 수신, 아니라면 정확히 어떤 것이 문제인지는 모르나 오류가 발생했다고 판단한다.
UDP 체크섬은 기본적인 오류 검출만을 제공한다.
패킷 손실이나 순서 왜곡 같은 문제는 검출할 수 없고 오류 발생 시에도 데이터 재전송이 자동으로 이루어지지 않는다.
따라서 UDP는 신뢰성이 중요한 애플리케이션보다는 실시간 전송이 중요한 애플리케이션에 적합하다.
UDP 체크섬은 데이터 전송의 기본적인 무결성을 보장하지만 복잡한 오류 수정 기능을 제공하지 않는다는 점에서 경량 프로토콜의 특성을 유지한다.