[CS 스터디] 2. 네트워크 - UDP

채채·2023년 12월 19일
0

CS 스터디

목록 보기
15/21
  • UDP 통신이란?
    - User Datagram Protocol의 약자
    • 데이터를 데이터그램 단위로 처리하는 프로토콜
    • 비연결성, 비신뢰성 전송 프로토콜
    • 전송 계층(Transport layer): 데이터그램 단위로 쪼개면서 전송
  • TCP와 UDP가 나온 이유
  1. IP는 Host to Host (장치 to 장치) 만을 지원: 장치에서 장치로 이동은 IP로 해결되지만, 하나의 장비 안에서 수많은 프로그램들이 통신할 경우 IP로는 한계가 있음

  2. IP 에서 오류가 발생하면 ICMP 에서 알려줌
    하지만 ICMP는 알려줄 뿐, 대처를 못한다 => IP보다 위에서 처리

    1번 해결 => 포트 번호 탄생!
    2번 해결 => 상위 프로토콜 TCP/UDP 탄생!

    • ICMP: 인터넷 제어 메시지 프로토콜
      네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송 받는데 주로 쓰임
  • TCP와 UDP가 어떻게 오류를 해결하는가?
    • TCP
      데이터의 분실, 중복, 순서가 뒤바뀜 등을 자동으로 보정
      송수신 데이터의 정확한 전달 가능토록 해줌
    • UDP
      IP가 제공하는 정도의 수준만을 제공하는 간단한 IP 상위 계층 프로토콜
      TCP와는 다르게 에러가 날 수 있음
      재전송/순서 뒤바뀜 가능
      이 경우, 어플리케이션에서 처리해야 하는 번거로움 존재
  • UDP는 왜 사용할까?
    - UDP의 결정적 장점: 데이터의 신속성!
    • 데이터 처리가 TCP보다 빠름
    • 실시간 방송, 온라인 게임에서 사용
    • 네트워크 환경이 안 좋을 때 끊기는 현상
  • DNS(Domain Name System) 에서 UDP를 사용하는 이유
    - Request의 양이 작음 -> UDP Request 에 담길 수 있다.
    • 3 way handshaking으로 연결을 유지할 필요가 없다. (오버헤드 발생)
    • Request에 대한 손실은 Application Layer에서 제어가 가능하다.
    • DNS: port 53번
    • BUT, TCP 를 사용할 때가 있다! 크기가 512(UDP 제한)이 넘을 때, TCP 사용
  1. UDP Header
  • Source port: 시작 포트
  • Destination port: 도착지 포트
  • Length: 길이
  • Checksum: 오류 검출
    - 중복 검사의 한 형태
    • 오류 정정을 통해 공간/시간 속에서 송신된 자료의 무결성을 보호하는 단순한 방법

이렇게 간단하므로, TCP보다 용량이 가볍고 송신 속도가 빠르게 작동됨
그러나 확인 응답을 못하므로, TCP보다 신뢰도 떨어짐
UDP는 비연결성, TCP는 연결성

  • DNS와 UDP 통신 프로토콜을 사용
    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 를 사용할까?

사용하는 이유
1. TCP가 3-way handshake를 사용하는 반면, UDP는 connection을 유지할 필요가 없음
2. DNS request는 UDP segment에 꼭 들어갈 정도로 작음
DNS query는 single UDP request 와 server로부터의 single UDP reply로 구성되어 있음
3. UDP는 not reliable이나, reliability는 application layer에 추가될 수 있음. (Timeout 추가나, resend 작업을 통해)

DNS는 UDP를 53번 port에서 사용함

그러나 TCP를 사용하는 경우가 있음: Zone transfer를 사용해야 하는 경우

  • Zone Transfer

DNS 서버 간의 요청을 주고 받을 때 사용하는 transfer

만약 데이터가 512 bytes를 넘거나, 응답을 못 받은 경우 TCP로 함

출처

Tech Interview

profile
성장하는 사람

0개의 댓글