ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TCP와 UDP의 특징과 차이점
    개발공부 2023. 6. 20. 03:06

    TCP(Transmission Control Protocol), UDP(User Datagram Protocol) 는 OSI 7계층의 전송계층에서 사용되는 프로토콜이다.

    전송 계층이란 송신자와 수신자를 연결하는 통신 시스템, 서비스를 제공하는 계층이다. 다시말해 이 계층에서 다루는 주된 일은 데이터의 전달이다. 그리고 프로토콜의 뜻은 조약, 규약이다. 즉, TCP와 UDP라는 프로토콜은 통신 회선을 이용한 데이터 교환/전송에 대한 규약중 하나라 할 수 있다. 이 두가지는 포트번호를 이용해 주소를 지정하는것처럼 공통된 부분도 존재하지만, 다른 부분이 많이 존재하는 방식이다.

    TCP (Transmission Control Protocol)

    TCP는 연결 지향적인 프로토콜이다. 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜이다. 클라이언트에서 연결 요청을 하고, 서버가 수락하면 고정된 통신 선로를 통해 순차적으로 전달된다. 그렇기 때문에 데이터가 정확하고 안정적이다. 또한 TCP는 데이터를 송신할때 마다 확인 응답을 주고받기 때문에 TCP는 신뢰성있는 데이터 통신을 필요로 할때 사용된다.

     

    TCP의 특징을 정리하면

    • 연결 지향적이다
    • 3-way handshaking*)으로 연결을 성정하고 4-way handshaking으로 연결을 해제한다.
    • 높은 신뢰성을 가지고 있다.
    • UDP보다 속도가 느리다.
    • 데이터의 전송 순서를 보장한다

    *) 3-way handshaking 방식은 통신을 확인하고 연결하기 위해 3번의 요청, 응답후 연결하는 것을 의미한다.

     

    등이 있다.

    UDP (User Datagram Protocol)

    UDP는 비연결 지향적인 프로토콜이다. 비연결 지향은 데이터를 전송할때 TCP처럼 연결하는 절차가 없이 보내는 측에서 일방적으로 데이터를 보내는 방식을 의미한다. 연결 과정이 없는만큼 TCP보다 빠른 전송이 가능하지만, 데이터의 신뢰성이 떨어지게 된다. 또한 데이터 패킷이 제대로 가는지, 순서가 맞게 가는지 확인을 하지 않는 만큼 유실이나 변조될 가능성도 존재한다.

     

    UDP의 특징은

    • 비연결형 서비스로 연결 없이 통신이 가능하며 데이터그램 방식*)을 제공한다.
    • 데이터를 주고받을때 절차가 없다.
    • 데이터 재전송, 순서유지를 위한 작업이 없기 때문에 데이터가 신뢰성이 없다.
    • 패킷 관리가 필요하다.
    • 패킷 오버헤드가 없기 때문에 네트워크 부하가 적음
    • 상대적으로 TCP보다 전송속도가 빠르다.

    *) 데이터 그램 방식은 데이터 전송 전에 송/수진자 사이에 가상 회선이라 불리는 논리적 경로를 설정하지 않고, 패킷들이 각기 독립적으로 전송되는 방식이다.

     

    등이 있다.

     

    정리

      TCP UDP
    연결 방식 연결형 서비스
    (패킷 교환)
    비연결형 서비스
    (데이터 그램)
    전송 순서 전송 순서 보장됨 전송 순서 보장하지 않음
    수신 확인 수신 여부를 확인하며 교환 일방적으로 전송함
    통신 방식 1:1 통신 1:1/1:다/다:다 통신
    신뢰성 높다 낮다
    속도 느리다 빠르다

    일반적으로 TCP는 이메일, 파일전송 등 '데이터 신뢰성'이 중요한 프로그램은 TCP 통신을 기반으로 통신하며, UDP는 실시간 스트리밍, 인터넷 전화 등 '실시간성'을 중요시 하는 프로그램에 사용된다고 한다.

     

    사족

    현재는 UDP 소켓에서 TCP 소켓보다 효율적인 제어 알고리즘을 구현해 UDP의 장점에 TCP의 기능(흐름제어, 신뢰성)을 구현하는 경우(μTP라던가, HTTP/3, QUIC 등)도 있다고 한다.

    이렇게 UDP가 주로 사용되게 된 이유는 게임이던 스트리밍이던 실시간으로 데이터를 주고받아야 하는 서비스가 늘어난것과, UDP가 TCP와 달리 커스터마이징이 가능하기 때문이라고 생각한다.

     

     

Designed by Tistory.