TCP와 UDP

이진석·2023년 1월 19일

오늘은 이전에 정리했던 OSI 7계층 중에 4계층인 Transport Layer, TCP/IP 계층에서 사용되는 프로토콜인 TCP와 UDP에 대해서 정리해보자. 전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층이다. 이 계층에서는 데이터의 전달을 담당하며 전송 패킷의 오류를 검사하고 재전송을 요구하는 등의 제어 작업을 담당한다.

패킷(Paccket)이란?

  • 인터넷 내에서 데이터를 보내기 위해 경로를 지정(라우팅) 할 때 효율적인 전송을 위해 데이터를 여러개의 조각으로 나누어 전송하는데 이 때 이 조각을 패킷이라고 한다.

TCP(Transmission Control Protocol)

TCP는 연결 지향적 프로토콜로써 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받는다.

장치들 사이에는 논리적인 접속을 성립하기 위해 3-Way Handshake 같은 프로세스를 진행하고, 이를 통해 신뢰성을 보장하는 연결형 서비스이다. 이와 같은 일련의 작업이 필요하기 때문에 UDP에 비해 속도가 느리다. 그렇기 때문에 TCP는 연속성, 속도보다는 신뢰성 있는 전송이 필요한 서비스에 적합한 프로토콜이다. (EX. 파일전송 등)

TCP 특징

  • 연결형 서비스로 가상의 회선을 연결하는 방식을 사용

    • 3-Way Handshake 과정을 통해 연결
    • 4-Way Handshake 과정을 통해 연결 해제
    • 서버 소켓은 회선의 연결만을 담당
    • 서버와 클라이언트가 1대1로 연결
  • 흐름 제어

    • 데이터 처리 속도를 조절하여 수신자의 오버 플로우를 방지
  • 혼합 제어

    • 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
  • 패킷에 대한 응답을 해야하기 때문에 성능이 상대적으로 낮음

  • 손실된 경우 재전송 요청을 해야하기 때문에 스트리밍 같은 서비스에 불리

TCP의 패킷 추적

어떤 데이터를 보낼 때 TCP는 여러개로 나뉜 패킷 단위로 전송을 하는데, 이 과정에서 어떤 패킷이 손실됐다고 가정 했을 때, 받는 쪽에서는 다 온 것이 맞는지 알 수가 없기 때문에 패킷에 번호를 부여하고 패킷이 분실 됐는지 확인하는 작업을 목적지에서 수행하여 재조립한다. 이런 방식으로 패킷을 추적하며 손실된 데이터가 있을 경우에는 재전송 요청을 하게 된다.


UDP(User Datagram Protocol)

UDP는 비연결형 프로토콜로, 연결을 위해 할당하는 논리적 경로가 없으며 각각의 패킷은 다른 경로로 전송이 되고 서로 독립적인 관계를 가진다.

데이터를 데이터그램 단위로 처리하는데 여기서 데이터그램이란 독립적인 관계를 가지는 패킷을 뜻한다.

UDP 특징

  • 비연결형 서비스로 데이터그램 방식으로 데이터를 전송
  • 정보를 주고 받을 때 어떤 확인 절차를 거치지 않음
  • UDP 헤더의 CheckSum 필드를 통한 최소한의 검사 절차만을 가짐
  • 흐름 제어가 없어 제대로 전송되었는지, 오류가 없는지 확인 할 수 없음
  • 상대적으로 TCP보다 속도가 빠름
  • 1:1에서부터 N:N까지의 통신이 가능
  • 신뢰성보다는 연속성이 중요한 전송 방식에 사용되는 프로토콜 (EX. 스트리밍 서비스 등)

참고 자료

profile
고양이 두마리의 집사이자 행복 코딩을 추구하는 주니어 개발자입니다!

0개의 댓글