비연결형 트랜스포트 : UDP

2024. 10. 3. 15:33·전공 공부/컴퓨터네트워크
728x90

UDP란 무엇인가?

UDP(User Datagram Protocol)는 트랜스포트 계층에서 사용되는 가장 기본적인 프로토콜로, 비연결형이고 신뢰성을 보장하지 않는 최선형 서비스입니다. 이 프로토콜은 데이터를 빠르고 간단하게 전송할 수 있도록 설계되었으며, 혼잡 제어나 오류 제어 같은 복잡한 기능은 제공하지 않습니다.

UDP의 주요 특징

  • 비연결형: 송신자와 수신자 간에 별도의 연결 설정 과정(핸드셰이킹)이 필요하지 않으며, 각 데이터그램은 독립적으로 처리됩니다.
  • 손실 가능성: 데이터가 전송 중에 손실될 가능성이 있으며, 수신된 데이터의 순서가 바뀔 수 있습니다.
  • RTT 지연 없음: 연결 설정 단계가 없으므로, **RTT(Round Trip Time)**로 인한 지연이 발생하지 않습니다.
  • 작은 헤더 크기: TCP보다 헤더가 작아 네트워크 부하가 적습니다.
  • 혼잡 제어 없음: 네트워크 혼잡 상황에서도 전송이 계속 이루어집니다.
  • 빠른 전송 속도: 복잡한 기능이 없기 때문에 빠르게 전송될 수 있습니다.

UDP의 용도와 장점

UDP는 다양한 실시간 애플리케이션에서 사용됩니다. 특히 멀티미디어 스트리밍이나 DNS와 같이 데이터의 신속한 전송이 중요하지만, 데이터 손실이 크게 문제가 되지 않는 경우에 적합합니다. 주요 용도는 다음과 같습니다:

  • 멀티미디어 스트리밍: 손실이 발생해도 스트리밍의 연속성이 더 중요하기 때문에 UDP가 유리합니다.
  • DNS: 짧은 요청과 응답을 처리하는 데 UDP가 사용됩니다.
  • SNMP: 네트워크 관리 프로토콜로, 네트워크 장치의 상태 정보를 빠르게 전송하기 위해 UDP를 사용합니다.

UDP는 HTTP/3에서도 사용되며, 신뢰성이 중요한 경우 애플리케이션 계층에서 에러 처리 및 복구 기능을 추가하여 사용할 수 있습니다.


UDP의 동작 과정

UDP의 동작을 송신자와 수신자의 관점에서 살펴보면 다음과 같습니다:

  • 송신자: 응용 계층에서 받은 메시지를 UDP 세그먼트로 변환하고, 이를 IP 계층으로 전달합니다. 이때 UDP 헤더가 추가되어 세그먼트가 형성됩니다.

  • 수신자: IP 계층에서 수신된 세그먼트의 체크섬을 확인하고, 메시지를 추출하여 응용 계층으로 전달합니다. 이 과정에서 소켓을 통해 적절한 애플리케이션으로 메시지가 전달됩니다.


UDP의 신뢰성 보장 방법: 체크섬

UDP는 신뢰성을 보장하지 않는 비연결형 프로토콜이지만, 전송 중 에러를 감지하기 위해 체크섬을 사용합니다. 체크섬은 송신자와 수신자 모두에서 계산되며, 수신자가 받은 세그먼트의 체크섬 값이 송신자와 일치하면 에러가 없다고 판단합니다. 체크섬은 UDP가 완벽한 신뢰성을 제공하지 않지만, 기본적인 오류 탐지를 할 수 있도록 돕는 중요한 요소입니다.


UDP는 빠르고 간단한 전송을 필요로 하는 애플리케이션에 매우 적합한 프로토콜입니다. 신뢰성이나 순서 보장이 필요하지 않은 상황에서 매우 효율적이며, 네트워크가 불안정한 상태에서도 잘 동작하는 강점을 가지고 있습니다. 이러한 특성 덕분에 UDP는 스트리밍, DNS, SNMP 같은 다양한 분야에서 널리 사용됩니다.

728x90

'전공 공부 > 컴퓨터네트워크' 카테고리의 다른 글

연결지향형 트랜스포트 : TCP  (2) 2024.10.03
신뢰기반 데이터 전송의 원리  (1) 2024.10.03
다중화와 역다중화  (0) 2024.10.03
트랜스포트 계층  (3) 2024.10.03
전자 메일 시스템 완전 정복: SMTP, POP3, IMAP 이해하기  (1) 2024.09.24
'전공 공부/컴퓨터네트워크' 카테고리의 다른 글
  • 연결지향형 트랜스포트 : TCP
  • 신뢰기반 데이터 전송의 원리
  • 다중화와 역다중화
  • 트랜스포트 계층
튼튼발자
튼튼발자
프론트엔드 개발자입니다. 헬스를 가끔해서인지 몸이 튼튼한거 같습니다. 그래서 튼튼한 개발자 => 튼튼발자입니다. 프론트엔드 및 관련 개발 내용 블로그 글로 정리해서 올려둡니다.
    250x250
  • 튼튼발자
    튼튼발자
    튼튼발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 튼튼발자의 끄적끄적 (10)
      • 웹개발 (94)
        • HTML (5)
        • CSS (2)
        • JavaScript (40)
        • TypeScript (5)
        • REACT (22)
        • Next.js (13)
        • GIt (7)
      • 기타 (3)
        • 일상 (3)
      • 프로젝트 (27)
        • Componique: UI 컴포넌트 라이브러리 (18)
        • GitHub Profile Viewer (8)
        • 잇핏 (1)
      • 프론트엔드 개발자로 취업준비 (1)
        • 기술 면접 (7)
        • 코딩 테스트 준비하기 (0)
        • 자기소개서&지원서&이력서 (0)
      • 컴퓨터과학 (12)
        • 운영체제 (6)
        • 알고리즘 (6)
      • 전공 공부 (37)
        • AI(인공지능) (2)
        • 컴퓨터네트워크 (19)
        • 네트워크프로그래밍 (3)
        • SW소프트웨어응용설계 (7)
        • 클라우드컴퓨팅 (3)
        • 웹서비스프로그래밍 (3)
      • PT (0)
      • 취준일기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바스크립트
    ui컴포넌트
    리액트
    프론트엔드
    NextJs
    tailwind
    트랜스포트계층
    웹개발
    코딩
    상태관리
    네트워크
    JS
    데이터전송
    프론트엔드개발
    TCP
    componique
    github
    JavaScript
    프로그래밍
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
튼튼발자
비연결형 트랜스포트 : UDP
상단으로

티스토리툴바