[네트워크] UDP

xoey·2024년 11월 15일

네트워크

목록 보기
4/10
post-thumbnail

1. 개요

1.1. IP(Internet Protocol)의 한계

IP는 인터넷에서 Host to Host 간의 데이터를 전달하는 기본적인 프로토콜이다. 여기서 중요한 점은, IP는 데이터가 목적지에 도착할 때까지의 경로를 책임지는 역할은 하지만, 그 이후에 수많은 프로그램들이 어떻게 통신할지에 대한 정보는 제공하지 않는다는 것이다.

즉, IP는 장비 간의 통신만을 지원할 뿐, 그 장비 내부에서 어떤 애플리케이션이 데이터를 받을지에 대한 처리를 할 수 없다.

🚨 ICMP(Internet Control Message Protocol)와 IP의 오류 처리

IP가 제공하는 통신 과정에서 오류가 발생할 때는 ICMP가 오류를 알려준다. 예를 들어, 목적지에 데이터가 도착하지 못했거나, 라우터에서 문제가 발생하면 ICMP는 송신 측에 오류 메세지를 보내 네트워크 문제를 감지하게 한다.

하지만, ICMP는 그저 오류를 알리는 역할만 할 뿐, 문제를 해결하거나 데이터를 재전송하는 등의 대처는 하지 못한다.

1.2. 포트 번호와 상위 프로토콜의 등장

1.2.1. 포트 번호(Port Number)

여러 애플리케이션이 한 장비 안에서 동시에 통신하는 상황을 해결하기 위해 등장한 개념이 포트 번호다.

IP는 장치 간의 통신만 해결할 수 있기 때문에, 장비 내부에서 어떤 애플리케이션이 데이터를 받을지 식별하기 위해 포트 번호가 필요하다. 이를 통해 같은 장치 내에서 여러 프로그램이 동시에 네트워크 통신을 할 수 있게 되었다.

1.2.2. TCP와 UDP

TCP와 UDP는 IP 위에서 동작하는 전송 계층 프로토콜이다. 이 프로토콜들이 등장한 이유는 오류 처리와 프로그램 간의 데이터 통신을 좀 더 효율적으로 하기 위해서다.

  • TCP(Transmission Control Protocol): 신뢰성 있는 데이터 전송을 보장한다. 데이터 분실, 중복, 순서 뒤바뀜 등을 해결해 송신 측에서 수신 측으로 정확하게 데이터를 전달할 수 있도록 한다. 이를 위해 연결 설정(3-Way Handshake), 재전송, 흐름 제어, 혼잡 제어와 같은 복잡한 메커니즘을 사용한다.
  • UDP(User Datagram Protocol): 간단한 IP 상위 계층 프로토콜로, TCP와 달리 에러 처리나 재전송을 하지 않는다. 즉, UDP는 데이터 전송 시 오류가 발생할 수 있고, 순서가 뒤바뀔 수 있으며, 신뢰성이 보장되지 않지만 그만큼 빠르고 간단하게 데이터를 전송할 수 있다.

2. UDP(User Datagram Protocol)

TCP와 UDP의 등장 배경을 살펴봤으니, 오늘은 UDP에 대해 알아보자.

UDP는 TCP와 함께 OSI 모델 4계층인 전송 계층에 포함되는 프로토콜이다. IP를 사용하는 네트워크 내에서 컴퓨터 간 메시지들이 교환될 때 제한된 서비스만 제공하는 프로토콜이다.

UDP는 데이터를 전송할 때 IP 프로토콜을 통해 데이터그램이라는 단위로 데이터를 전송한다. TCP와 달리 메시지를 데이터그램으로 나누고, 반대편에서 재조립, 순서 조정 등의 서비스는 하지 않는다.

UDP는 IP 계층에서 제공하지 않는 서비스도 제공하는데, IP 내 사용자 구분을 위한 포트 번호 부여와 데이터 손상 여부 확인에 쓰이는 체크섬 서비스다.

2.1. 특징

  • 비연결형(Connectionless): TCP처럼 연결을 설정하지 않고, 데이터를 보내기 전에 세션을 확립하지 않는다. 송신자는 데이터를 바로 전송하고, 수신자는 받는 즉시 처리한다.
  • 빠른 속도: 연결 설정이나 오류 제어 같은 추가 작업이 없기 때문에 데이터 전송 속도가 빠르다. 실시간 응답이 필요한 애플리케이션에서 많이 사용된다.
  • 신뢰성 없음: TCP와 달리 데이터 전송의 신뢰성을 보장하지 않는다. 즉, 패킷이 손실되거나, 순서가 바뀌거나, 중복되더라도 UDP는 이를 감지하지도, 처리하지도 않는다. 오류 처리는 애플리케이션이 직접 해야한다.
  • 작은 오버헤드: TCP보다 헤더가 간단해서 네트워크에 부하를 덜 주고, 자원 소모가 적다.

2.2. UDP를 사용하는 이유

2.2.1. 데이터의 신속성

UDP의 가장 큰 장점은 데이터 전송의 신속성이다. TCP는 연결 설정과 확인 응답, 흐름 제어 등의 과정을 거쳐야 하기 때문에 전송 속도가 느리지만, UDP는 이런 과정 없이 데이터를 바로 전송하므로 빠르게 데이터를 주고받을 수 있다.

이로 인해 실시간 통신이 중요한 상황(e.g. 실시간 스트리밍, 온라인 게임 등)에서 UDP가 많이 사용된다.

2.2.2. DNS에서의 UDP

DNS(Domain Name System)는 도메인 이름을 IP 주소로 변환하는 작업을 하는데, 이때 UDP를 사용한다.

DNS 쿼리와 응답은 대부분 짧은 데이터이지만, 매우 많은 요청이 들어온다. UDP는 TCP와 달리 오버헤드가 적고, 데이터를 전송하기 위한 세션 확립 과정이 없기 때문에, 빠르게 요청과 응답을 처리하고 네트워크 리소스를 절약할 수 있다.

하지만, 512바이트를 넘는 데이터를 전송하거나 DNS 서버 간의 영역 전송(Zone Transfer) 같은 작업을 할 때는 TCP를 사용한다. TCP는 더 큰 데이터 전송이나 신뢰성이 중요한 작업에 적합하다.

2.3. 헤더 구조

UDP는 간단한 프로토콜이기 때문에 헤더도 매우 단순하다. 헤더는 총 8바이트로, 아래와 같이 구성된다.

  • Source Port(2바이트): 송신 측의 포트 번호
  • Destination Port(2바이트): 수신 측의 포트 번호
  • Length(2바이트): 전체 UDP 패킷의 길이(헤더와 데이터 포함)
  • Checksum(2바이트): 오류 검출을 위한 값(필수는 아님)

Reference

profile
[Roman 8:18] consider that our present sufferings are not worth comparing with the glory that will be revealed in us.

0개의 댓글