wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Computer Science/Computer Network

📡 [Network] 전송층에서의 UDP 통신 (Connectionless transport)

Kick_snare 2022. 10. 10. 21:54
728x90

본 포스팅은 < 컴퓨터 네트워킹 하향식 접근[8판] James F. Kurose, Keith W. Ross 저/최종원, 강현국, 김기태 > 을 참고하여 작성되었습니다.

Ch03 Transport Layer

3. 연결없는 전송 UDP : Connectionless transport: UDP

UDP : User Datagram Protocol

UDP는 군더더기 없고 기본 핵심만 있는 프로토콜이다.  
최선을 다하지만 데이터의 손상, 손실의 가능성 존재를 보장하지 않는다

  • 비연결성 (connectionless)
    • UDP 전송자, 수신자 끼리 핸드셰이킹이 없음
    • 각 UDP 세그먼트는 각각 독립적으로 다뤄진다

 

왜 UDP인가?

  • 연결을 맺지않음으로 RTT 지연이 존재하지 않는다 (빠르다)
  • 전송자, 수신자 간의 연결 상태가 없으므로 간단하다
  • 작은 헤더 오버헤드 (헤더번호, 체크썸 등 간단한 구성)
  • 혼잡 제어가 없음 ➡️ 상황에 따라 장점이 된다 (항상 full speed)

이러한 이유들로 단점에도 불구하고 많이 응용되고 있다.

UDP 활용 서비스

UDP가 사용되는 경우

  • 손실이 되어도 상관이 없는 멀티미디어 스트리밍 서비스 어플리케이션
  • 모든 통신의 시작점이기 때문에 불필요한 delay 를 줄이기 위한 DNS
  • SNMP (네트워크 관리 프로토콜)
  • HTTP/3
    • 어플리케이션층에 신뢰성을 추가
    • 어플리케이션 층에서 혼잡제어 등을 요청 가능

UDP 의 동작

전송자

  • 어플리케이션 층의 메세지를 가져옴
  • UDP 세그먼트 헤더를 결정
  • UDP 세그먼트를 생성
  • IP로 세그먼트를 전송

수신자

  • IP로 부터 세그먼트를 수신
  • UDP checksum을 검사
  • 어플레케이션층 메세지를 추출
  • 소켓으로 메세지를 역다중화

UDP 세그먼트 헤더

UDP 검사합 checksum

  • Checksum 검사합
    • 무결성(integrity)을 제공하기 위한 필드
    • 전송된 세그먼트의 에러를 검출한다
    • 전송 전에 sum을 저장해놓았다가 받고 난 후에 다시 검사

전송자의 동작

  • 헤더의 데이터를 16비트씩 쪼개어 합한후, 1의 보수를 취한다
  • 그리고 UDP checksum 헤더 필드에 추가

수신자의 동작

  • 받은 세그먼트이 checksum을 계산
  • 에러를 검출할 수 있지만 따로 복구는 하지않음
  • checksum이 같으면 오류가 없다고 본다 (통상적인 경우)

 

checksum은 무결성을 검사해주지만 공격을 감지할 수는 없다

 

 

728x90