TCP vs UDP
CS

TCP vs UDP

1. 개요

TCP와 UDP는 OSI(또는 TCP/IP) 모델의 전송(Transport) 계층에 속하는 프로토콜로서,

전송할 데이터를 패킷 단위로 나누고 IP를 이용해 데이터를 전송한다.

 

전송 계층은 네트워크 통신의 신뢰성을 보장하기 위한 역할을 수행하며 통신을 제어하고 관리한다.

패킷(Packet)
효율적인 전송을 위해 데이터를 작은 조각으로 나눈 단위를 의미한다.

데이터를 패킷 단위로 나누어 전송하면 일부가 유실되더라도 재전송할 수 있어서 신뢰성을 보장할 수 있고,
대용량 데이터를 전송할 때 작게 나누어 전송하므로 전송 속도를 높일 수 있다.

네트워크 계층의 PDU인 패킷(IP 패킷)과는 다른 의미이다.

2. TCP (Transmission Control Protocol)

1) 개요

TCP는 네트워크 환경에서 데이터 전송에 사용되는 연결 지향 프로토콜이다.

이름에서도 알 수 있듯이 제어를 통해 통신의 신뢰성을 보장한다는 특징을 가지고 있다.

2) 특징

A. 3-way handshake

TCP는 3-way handshake 과정을 통해 서버와 클라이언트의 신뢰성있는 연결을 설정한다.

즉, 데이터 전송을 위한 가상의 논리적 경로를 유지함으로써 통신 제어를 가능하게 한다.

 

클라이언트가 SYN 패킷을 보내면, 이를 수신한 서버가 클라이언트로 SYN, ACK 패킷을 보내고

최종적으로 패킷을 수신한 클라이언트가 ACK 패킷을 보내 연결을 설정한다.

 

이 과정에서 서버와 클라이언트는 무작위로 정해진 초기 시퀀스 넘버(ISN)를 SYN 패킷에 포함시킨다.

이를 수신한 각 호스트는 (시퀀스 넘버+1) 값을 ACK 패킷에 포함시켜 응답한다.

ISN을 무작위로 설정하는 이유는 악의적인 사용자가 연결을 위조하거나 공격하는 것을 방지하기 위함이다.

연결 이후 시퀀스 넘버를 부여한 패킷을 전송할 때 ISN에서부터 수를 증가시키며 부여한다.

B. 통신 제어

TCP 헤더에 포함되는 정보

세그먼트의 시퀀스 넘버를 통해 송신자는 수신자의 요청에 따라 데이터 전송을 제어할 수 있다.

 

TCP는 데이터를 세그먼트(Segment, TCP의 PDU) 단위로 분할하여 전송하는데,

세그먼트는 분할된 데이터 조각(패킷)에 TCP 헤더를 붙인 것을 의미한다.

 

헤더에는 시퀀스 넘버가 포함돼있어 송신자와 수신자가 데이터의 전송 순서를 파악할 수 있도록 도와준다.

수신자는 세그먼트의 시퀀스 넘버를 통해 데이터 손실 여부를 파악하고 재전송 요청을 한다.

수신한 세그먼트의 시퀀스 넘버와 이전의 시퀀스 넘버를 비교하여 이어지지 않으면 재전송 요청을 한다.

또한 TCP는 흐름제어 및 혼잡제어 기능을 갖고 있다.

  • 흐름 제어: 수신측의 데이터 처리 속도를 고려해서 송신측의 전송 속도를 조절한다.
  • 혼잡 제어: 네트워크 내의 데이터 혼잡도에 따라 데이터 전송 속도를 조절한다.

C. 4-way handshake

4-way handshaking 과정

TCP에서 데이터 전송을 완료하고 연결을 해제할 때 거치는 과정을 의미한다.

 

클라이언트가 연결 해제를 위해 FIN 패킷을 서버로 보내면, 서버는 응답으로 ACK 패킷을 보낸다.

서버의 데이터 전송이 끝나면 서버는 클라이언트로 FIN 패킷을 보내고,

클라이언트는 이에 대한 ACK 패킷을 보내 연결을 해제한다.


3. UDP (User Datagram Protocol)

1) 개요

UDP는 데이터 패킷을 데이터그램 단위로 전송하는 비연결형 프로토콜이다.

TCP와 다르게 연결을 설정하지 않으므로 비교적 신뢰성이 낮다.

2) 특징

TCP 헤더와 UDP 헤더 비교

UDP는 연결을 설정하지 않기 때문에 흐름제어 및 혼잡제어 같은 통신 제어를 수행하지 않으며,

데이터 손실에 대한 재전송 요청 기능이 없다.

대신 UDP 헤더의 체크섬 필드를 사용해 손실 및 손상된 데이터를 검사한다.

즉, 신뢰성이 떨어진다는 단점이 있지만 속도가 빠르다는 장점이 있다.

 

UDP는 연결 및 제어 과정이 없고 오류 검사도 최소한으로 수행하므로 빠르게 데이터를 전송할 수 있다.

또한 TCP 헤더보다 UDP 헤더의 크기가 작아서 네트워크 부하가 적다.

 

이런 특징으로 인해, UDP는 데이터 손실에 크게 민감하지 않고 빠른 속도를 요구하는 서비스에 이용된다.

Ex) 실시간 스트리밍 서비스, 온라인 게임, DNS 서비스에서 도메인에 대한 IP 주소를 찾는 작업 등


4. TCP vs UDP 정리

UDP

  • 비연결형 프로토콜
  • 데이터 그램 형태로 전송
  • 오류 검사는 체크섬을 사용, 복구 기능 X
  • 신뢰성 보장 X
  • 데이터 순서 보장 X
  • 헤더 크기 8바이트

TCP

  • 연결형 프로토콜
  • 세그먼트 형태로 전송
  • 오류 검사는 체크섬과 시퀀스 넘버, 응답 번호, 타이머 등을 사용, 복구 기능 O
  • 신뢰성 보장 O
  • 데이터 순서 보장 O
  • 헤더 크기 최소 20바이트

참고 문서

TCP와 UDP의 특징과 차이

TCP와 UDP의 차이를 자세히 알아보자

'CS' 카테고리의 다른 글

HTTP 메시지와 구성 요소  (0) 2023.03.01
HTTP vs HTTPS (feat. 대칭키, 공개키)  (0) 2023.02.28
OSI 7계층에 대하여  (0) 2023.02.24
데드락(Deadlock)에 대하여  (0) 2023.02.22
동기/비동기와 블록킹/논블록킹에 대하여  (2) 2023.02.21