본문 바로가기

CS/네트워크

TCP와 UDP

TCP, UDP는 왜 나오게 됐나?

  • IP의 역할은 Host to Host(장치 to 장치)만을 지원. 장치에서 장치로 이동은 IP로 해결된다. 하지만 하나의 장치 안에 수많은 프로그램들이 통신을 할 경우 IP만으로 한계. -> 포트 번호가 나오게 됨.
  • IP에서 오류가 발생한다면 ICMP에서 알려주지만, 알려주기만 할 뿐 대처를 못하기 때문에 IP보다 상위에서 처리를 해줘야 한다. -> 상위 프로토콜인 TCP와 UDP가 나오게 된다.

참고) ICMP: 인터넷 제어 메세지 프로토콜. 운영체제에서 오류 메세지를 전송받음.

 

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

  • TCP: 데이터 분실, 중복, 순서 바뀜 등을 자동으로 보정해줘서 송수신 데이터의 정확한 전달하도록 해준다.
  • UDP: IP가 제공하는 정도의 수준만을 제공하는 간단한 IP 상위 계층 프로토콜. 그래서 TCP와는 다르게 에러가 날 수도 있고, 재전송이나 순서가 뒤바뀔 수도 있다. -> 어플리케이션에서 처리하는 번거로움이 존재할 수도 있음

UDP (User Datagram Protocol)

  • 비연결 지향적 프로토콜. 신뢰성 < 속도 중시!
  • TCP와 다르게 연결을 설정하지 않고 데이터를 전송하며 전송한 후에도 연결을 해지하지 않음. 즉 연결, 연결 해지 X
  • 신뢰성 보장 X. 데이터 전송 과정에서 오류 검출은 하지만 복구는 하지 않는다.
  • 데이터를 순차적으로 전송 X. 데이터그램 단위로 전송. -> 데이터 도착 순서 보장 X, 데이터 손실 발생 가능
  • UDP 헤더에는 송신자/수신자의 포트 번호 포함.
  • 실시간 통신이 요구되는 애플리케이션에 주로 사용 -> 실시간 방송, 영상 스트리밍, 게임, DNS같은 속도 중시 서비스

DNS(Domain Name System)에서 UDP 사용하는 이유

  • DNS request는 UDP segment에 딱 들어갈 정도로 양이 작음. 
  • 3way handshaking으로 연결 유지할 필요 없음. 그래서 오히려 프로토콜 Overhead가 TCP에 비해 적음. 즉, connection을 유지할 필요가 없기 때문에 UDP 사용.
  • Request의 손실은 Application Layer에서 제어 가능
  • DNS는 UDP를 Port 53번에서 사용.
  • 하지만 TCP를 사용할 때도 있음. 크기가 512 bytes(UDP 제한)이 넘을 때, Zone transfer 사용해야할 때.

참고) Zone Transfer:  DNS 서버 간의 요청을 주고 받을 때 사용하는 transfer

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