mojo's Blog

UDP 본문

Computer Science/네트워크

UDP

_mojo_ 2022. 3. 12. 18:20

UDP

 

UDP 통신이란?

 

UDP는 User Datagram Protocol 의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다.

connectionless, unreliable 한 전송 프로토콜로 TCP 와 대비된다.

Datagram 단위로 쪼개면서 전송을 해야하기 때문에 전송 계층(transport layer)이다.

그리고 Transport layer 의 대표 프로토콜 중 하나라고 볼 수 있다. (TCP, UDP)

 

 

TCP와 UDP가 나타난 이유는?

 

1. IP 의 역할은 Host-to-Host (장치-to-장치) 만을 지원한다. 

장치에서 장치로 이동은 IP로 해결되지만, 하나의 장비안에서 수많은 프로그램들이 통신을 할 경우에는 IP 만으로 한계가 있다.

 

2. IP 에서 오류가 발생한다면 ICMP 에서 알려준다. 

하지만 ICMP 는 알려주기만 할 뿐 대처를 못하기 때문에 IP 보다 위에서 처리를 해줘야 한다.

 

즉, 1번을 해결하기 위해 port 번호가 나타나게 됐고, 2번을 해결하기 위해 상위 프로토콜인 TCP, UDP 가 나오게 되었다.

ICMP는 Internet Control Message Protocol 의 약자로 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 주로 쓰인다.

 

 

TCP, UDP의 오류를 어떻게 해결하는지?

 

TCP : 데이터의 분실, 중복, 순서가 뒤바뀜 등을 자동으로 보정해줘서 송수신 데이터의 정확한 전달을 할 수 있도록 해준다.

UDP : IP 가 제공하는 정도의 수준만을 제공하는 간단한 IP 상위 계층의 프로토콜이다. 

TCP 와는 다르게 에러가 날 수 있으며 재전송이나 순서가 뒤바뀔 수도 있어서 이 경우 애플리케이션에서 처리하는 번거로움이 존재한다.

 

 

이러한 번거로움이 존재하는데도 UDP 를 사용하는 이유는?

 

UDP 의 결정적 장점은 데이터의 신속성이다.

즉, 데이터의 처리가 TCP 보다 빠르다는 점으로 주로 실시간 방송과 온라인 게임에서 사용된다.

 

 

DNS 에서 UDP 를 사용하는 이유는?

 

DNS 는 Domain Name System 의 약자로 Application Layer Protocol 이며 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다.

이때 TCP 를 사용하게 되면 데이터를 송신할 때까지 세션 확립을 위한 처리를 하고, 송신한 데이터가 수신되었는지 점검하는 과정이 필요하므로, Protocol overhead 가 UDP 에 비해서 크다.

 

DNS 에서 UDP 를 사용하는 이유는 다음과 같다.

 

  1. TCP가 3-way handshake를 사용하는 반면, UDP는 connection 을 유지할 필요가 없다.
  2. DNS request는 UDP segment에 꼭 들어갈 정도로 작다.
  3. UDP는 unreliable 하지만 reliability 는 application layer 에서 추가될 수 있다. (Timeout 추가 또는 resend 작업) 

 

DNS 는 UDP 를 53번 port 에서 사용한다.

그러나 TCP 를 사용하는 경우로 Zone transfer 을 사용해야 하는 경우와 데이터가 512 bytes 를 넘거나, 응답을 받지 못할 경우이다.

Zone transfer 같은 경우는 DNS 서버 간의 요청을 주고 받을 때 사용하는 transfer 을 의미한다.

 

 

※ UDP Header

 

  • Source port : 시작 포트
  • Destination port : 도착지 포트
  • Length : 길이
  • Checksum : 오류 검출, 중복 검사의 한 형태로 오류 정정을 통해 공간이나 시간 속에서 송신된 자료의 무결성을 보호하는 단순한 방법

 

TCP 보다 간단하며 용량이 가볍고 송신 속도가 빠르게 작동된다.

그러나 확인 응답을 못하므로 TCP 보다 신뢰성이 떨어진다는 단점이 존재한다.

즉, 확인 응답을 하는 TCP 같은 경우는 reliable 하지만 UDP 같은 경우는 확인 응답을 못하므로 unreliable 하다.

 

 

참고 : https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Network/UDP.md#20190826%EC%9B%94-bym-udp%EB%9E%80

 

GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

 

'Computer Science > 네트워크' 카테고리의 다른 글

네트워크 정리  (0) 2022.08.17
대칭키 & 공개키 / HTTP & HTTPS  (0) 2022.03.12
TCP/IP 흐름제어 및 혼잡제어  (0) 2022.03.06
OSI 7 계층  (0) 2022.03.02
Comments