[CS] 20)UDP

songh·2024년 3월 3일
0

CS지식

목록 보기
21/35
post-thumbnail

들어가기 전

UDP 통신

User Datagram Protocol의 약자로 데이터를 데이터그램 단위로 처리하는 프로토콜이다. 비연결형, 신뢰성없는 전송 프로토콜이다. 데이터그램 단위로 쪼개면서 전송을 해야하므로 전송계층에서 사용하는 프로토콜 중 하나다.

TCP와 UDP가 나오게 된 이유

  1. IP역할은 장치 to 장치만을 지원한다. 하지만 하나의 장비에서 수많은 프로그램이 통신할 경우 ip만으로는 한계가 있다.

➡️이를 해결하기 위해 포트번호가 나왔고

  1. IP에서 오류가 생기면 ICMP에서 알려주지만 ICMP에서는 알려주기만 하고 대처를 못하기 때문에 IP보다 위에서 처리를 해줘야한다.

➡️이를 해결하기 위해 상위 프로토콜인 TCP와 UDP가 나오게 되었다.

TCP와 UCP가 오류를 어떻게 해결하는지

TCP

데이터 분실, 중복, 순서변경 등 자동으로 보정해줘서 송수신 데이터의 정확한 전송을 보장한다.

UDP

IP가 제공하는 정보의 수준만 제공하는 간단한 IP 상위 계층 프로토콜이다. TCP와 다르게 에러가 날 수 있고 재전송이나 순서변경 등 발생할 수 있어서 어플레킹션에서 처리하는 번거로움이 존재한다.

UDP를 사용하는 이유

가장 큰 장점은 데이터의 신속성이다. 데이터 처리가 TCP보다 빠르고 주로 실시간 방송과 온라인 게임에서 사용된다. 네트워크 환경이 안좋을때 끊기는 현상을 생각하면 된다.

DNS에서 UDP를 사용하는 이유

요청하는 양이 적어서 UDP Request에 담길 수 있고,
3way handshake로 연결을 유지할 필요가 없다.
요청에 대한 손실은 응용계층에서 제어가 가능하다.
다만 크기가 UDP 최대인 512를 넘을 때 TCP를 사용해야 한다.

*DNS 포트번호는 53번이다.


1. UDP Header

Source Port(시작포트), Destination Port(목적지 포트), Length(길이), CheckSum(체크섬)으로 구성된다. 여기서 체크섬은 중복검사의 한 형태로 오류 정정을 통해 송신된 자료의 무결성을 보호하는 단순한 방법이다.

이렇게 간단해서 TCP보다 용량이 가볍고 송신속도가 빠르게 작동된다. 그러나 확인 응답을 못해서 tcp보다는 신뢰도가 떨어진다. UDP는 비연결성이고 TCP는 연결성으로 정의할 수 있다.

2. DNS와 UDP 통신

DNS는 데이터를 교환하는 경우에 사용한다. 만약 TCP를 사용한다면 데이터를 송신할때까지 연결성립을 위한 처리를 하고 송신한 데이터가 수신되었는지 확인하기 위한 과정이 필요하므로 프로토콜 오버헤드가 UDP에 비해 크다.

DNS는 응용계층의 프로토콜로 모든 응용 프로토콜은 TCP나 UDP 중 하나의 전송계층 프로토콜을 사용해야 한다.

UDP를 사용하는 이유

  1. TCP가 3way handshake를 사용하지만 udp는 연결성립을 유지할 필요가 없다.

  2. DNS 요청은 UDP 세그먼트에 들어갈 정도로 작고

  3. UDP는 not reliable하지만 reliability는 어플리케이션 layer에 추가될 수 있다.

*DNS는 UDP를 53번 포트에서 사용한다.

0개의 댓글

관련 채용 정보