[네트워크] UDP

hyyyynjn·2021년 11월 2일
0

면접대비

목록 보기
29/31
post-thumbnail

udp 통신

데이터를 데이터그램 단위로 처리하는 프로토콜이다.

  • 비연결형, 신뢰성이 없는 전송 프로토콜중 하나이다.
  • 데이터그램 단위로 데이터를 쪼개어 전송한다
  • 전송 계층에서 사용하는 프로토콜이다.

데이터그램

독립적인 관계를 지니는 패킷이다.

  • udp는 tcp와 다르게 연결을 위해 할당되는 논리적 경로가 없다. 그렇기에 각각의 패킷은 서로 독립적으로 각자 다른 경로로 전송되고, 독립적으로 처리된다.

tcp와 udp는 왜 나오게 되었을까?

IP는 host to host 만 지원하기에, 장치에서 장치로의 이동은 ip로 해결되지만, 하나의 장비 안에서 많은 프로그램들이 통신할 경우 ip만으로 한계가 있다
-> 포트 번호를 통해 이를 해결

ip에서 오류가 발생하면 ICMP를 통해 이 오류를 알려준다.
하지만 오류에 대한 대처를 하지 못하기
에 IP보다 윗단에서 오류를 처리해야하는 부담이 있다
-> 상위 프로토콜인 TCP와 UDP가 나오게 되었다.

tcp의 오류 해결 방법

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

udp의 오류 해결 방법

ip가 제공하는 정도의 수준만 제공하는 간단한 ip 상위 계층의 프로토콜이다.
tcp와 다르게 에러가 발생할 수 있고, 재전송이나 순서가 뒤바뀔 수 있으므로 어플리케이션 단에서 이를 처리해야하는 부담이 있다.

udp를 왜 사용할까?

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

  • 데이터 처리가 tcp보다 빠르다.
    그렇기에 실시간 방송, 온라인 게임에서 사용된다.
    (네트워크 환경이 안좋을 경우 끊기는 현상을 생각하면 된다)

udp header

source port : 송신자의 포트
destination port : 수신자의 포트
length : 길이
checksum : 오류 검출에 사용되는 정보

  • 이처럼 udp header는 간단하기 때문에 tcp보다 용량이 가볍고 송신속도가 빠르다.

DNS 에서 udp를 사용한다. 그 이유는?

  • udp segment에 담을 수 있을 정도로 dns request 의 양이 작다.
  • 3 way handshaking을 통해 연결을 유지할 필요가 없다
    (만약 이를 통해 유지하게 되면 오버헤드 발생)
  • udp의 비신뢰성으로 인한 request의 손실이 발생할 수 있지만
    request에 대한 손실은 응용계층에서 제어할 수 있다. (timeout 추가 , resend 작업)
  • 만약 request의 크기가 512바이트보다 커지면 tcp를 사용해야한다.
    (udp의 header 제한보다 크기 때문)
  • dns는 udp를 53번 포트에서 사용한다.

zone transfer

zone transfer를 사용해야하는 경우 dns에서 tcp를 사용해야한다.

  • zone transfer : dns서버 간에 요청을 주고받을 때 사용하는 transfer이다.
  • 전송 데이터의 크기가 512byte가 넘어갈 경우나, 응답을 받지 못할 경우 이때는 udp가 아닌 tcp를 사용한다.

0개의 댓글