UDP 통신이란?
- User Datagram Protocol의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다.
- 비연결형, 신뢰성 없는 전송 프로토콜이다.
- 데이터그램 단위로 쪼개면서 정송을 해야하기 때문에 전송 계층이다.
- Transport layer에서 사용하는 프로토콜.
ICMP : 인터넷 제어 메시지 프로토콜로 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 주로 쓰임
TCP
데이터의 분실, 중복, 순서가 뒤바뀜 등을 자동으로 보정해줘서 송수신 데이터의 정확한 전달을 할 수 있도록 해준다.
UDP
IP가 제공하는 정도의 수준만을 제공하는 간단한 IP 상위 계층의 프로토콜이다. TCP와는 다르게 에러가 날 수도 있고, 재전송이나 순서가 뒤바뀔 수도 있어서 이 경우, 어플리케이션에서 처리하는 번거로움이 존재한다.
UDP는 왜 사용할까?
**DNS(Domain Name Servie)에서 UDP를 사용하는 이유
간단한 방법을 통해 TCP보다 용량이 가볍고 송신 속도가 빠르게 작동
확인응답을 못하므로, TCP보다 신뢰도가 떨어짐.
UDP는 비연결성, TCP는 연결성으로 정의할 수 있음
DNS는 데이터를 교환하는 경우다.
이때, TCP를 사용하게 되면, 데이터를 송신할 때까지 세션 확립을 위한 처리를 하고, 송신한 데이터가 수신되었는지 점검하는 과정이 필요하므로, Protocol overhead가 UDP에 비해서 큼.
DNS는 Application layer protocol임.
모든 Application layer protocol은 TCP, UDP 중 하나의 Transport layer protocol을 사용해야 함.
(TCP는 reliable, UDP는 not reliable임)
여기서 DNS는 reliable해야할 것 같은데 왜 UDP를 사용할까?
사용하는 이유
TCP가 3-way handshake를 사용하는 반면, UDP는 connection 을 유지할 필요가 없음.
DNS request는 UDP segment에 꼭 들어갈 정도로 작음.
DNS query는 single UDP request와 server로부터의 single UDP reply로 구성되어 있음.
UDP는 not reliable이나, reliability는 application layer에 추가될 수 있음. (Timeout 추가나, resend 작업을 통해)
DNS는 UDP를 53번 port에서 사용함.
그러나 TCP를 사용하는 경우가 있음.
Zone transfer 을 사용해야하는 경우에는 TCP를 사용해야 함.
(Zone Transfer : DNS 서버 간의 요청을 주고 받을 떄 사용하는 transfer)
만약에 데이터가 512 bytes를 넘거나, 응답을 못받은 경우 TCP로 함.