Developer Jay

[Network] TCP/UDP 프로토콜의 특징과 차이

02 Aug 2022

Intro

TCP/UDP 프로토콜의 특징과 차이에 대해 알아보자


1. TCP/UDP 프로토콜 개요

  • TCP와 UDP는 전송 계층 프로토콜이라는 점에서 다음과 같은 공통점이 있다.
  • 포트 번호를 이용해 주소를 지정한다.
    두 응용 프로그램이 TCP 또는 UDP를 이용해 통신하려면 반드시 포트 번호를 결정해야 한다.
  • 데이터 오류를 체크한다.
    TCP와 UDP는 IP의 패킷 전송 기능을 기반으로 동작한다. 전송 중 여러 원인으로 오류가 발생할 수 있는데, IP는 프로토콜 동작에 필수적인 IP헤더에 대해서만 오류를 체크하고 데이터는 체크하지 않는다.
    반면에 TCP와 UDP는 헤더는 물론이고 데이터에 대한 오류도 체크한다.
  • 위와 같은 공통점을 제외하면 TCP와 UDP는 상당히 다른 차이점이 있다.
    TCP와 UDP의 차이점을 정리하면 다음과 같다.
TCP UDP
연결형 프로토콜로 연결 설정 후 통신이 가능하다. 비연결형 프로토콜로 연결 설정 없이 통신이 가능하다.
신뢰성 있는 데이터 전송(데이터를 재전송 한다.) 신뢰성 없는 데이터 전송(데이터를 재전송하지 않는다.)
일대일 통신(unicast) 일대일 통신(unicast)
일대다 통신(multicast, broadcast)
데이터의 경계를 구분하지 않는다.(byte-stream 서비스) 데이터의 경계를 구분한다.(datagram 서비스)


1.1 TCP 프로토콜

  • 서버는 먼저 실행하여 클라이언트가 연결하기를 기다린다.(listen)
  • 클라이언트는 서버에 접속(connect) 하여 데이터를 보낸다(send)
  • 서버는 클라이언트 접속을 수용하고(accept) 클라이언트가 보낸 메시지를 받아서(recv) 처리한다.
  • 서버는 처리한 데이터를 클라이언트에 보낸다.(send)
  • 클라이언트는 서버가 보낸 데이터를 받아서(recv) 처리한다.
  • 데이터를 주고받는 과정을 모두 마치면 접속을 끊는다.(closesocket)


1.2 UDP 프로토콜

  • 연결 설정을 하지 않으므로 connect() 함수를 사용하지 않는다.
  • 프로토콜 수준에서 신뢰성 있는 데이터 전송을 보장하지 않으므로, 필요하다면 응용 프로그램 수준에서 신뢰성 있는 데이터 전송 기능을 구현해야 한다.
  • 간단한 소켓 함수 호출 절차만 따르면 다자 간 통신을 쉽게 구현할 수 있다.
  • TCP와 달리 응용 프로그램이 데이터 경계 구분을 위한 작업을 별도로 할 필요가 없다.


  • TCP와 UDP의 차이점은 연결의 존재여부로부터 발생한다. 다음시간에는 네트워크에서의 연결개념에 대해 알아보겠다.