CS/네트워크

TCP vs UDP (전송 계층과 '가상 회선 방식'을 덧붙인)

개발자 May 2024. 8. 1.

TCP와 UDP는 TCP/IP 모델OSI 7 계층 모델에서 전송 계층에서 사용되는 대표적인 프로토콜이다.

전송 계층에서는 신뢰성 있는 데이터를 전달하기 위한 계층으로, TCP/UDP와 같은 전송 방식과 포트 번호 등을 결정한다.

웹 브라우저(응용 프로그램)를 사용해 www.google.com에 접속한다면, HTTP 프로토콜을 사용해서 GET 요청을 보내게 된다. GET 요청 또한 HTTP 헤더와 바디로 구성된 데이터로, 응용 계층의 데이터 단위인 메시지가 된다.

여기서, 이 데이터를 전송하려면 TCP 혹은 UDP를 사용하게 된다. HTTP 프로토콜은 웹 페이지를 올바르게 로드하고 표시하기 위해 TCP를 사용한다. 웹 페이지를 방문했는데, 검색한 데이터가 제대로 표시되지 않거나 이미지가 부분적으로 손실되어 나온다면? 방문한 의미가 사라질 것이다.

반면, 온라인 게임이나 실시간 스트리밍의 경우, 모두 완벽한 데이터를 받기 위해 계속해서 기다리는 것보다는 신속한 데이터 전송이 중요한 응용 프로그램이다.

아래에서 TCPUDP에 대해 조금 더 자세히 알아보자.


TCP (Transmission Control Protocol)

개요

TCP는 신뢰성 있는 데이터 전송을 보장하는 프로토콜이다. 데이터를 송수신하는 동안 데이터의 손실, 중복, 순서 뒤바뀜을 방지하기 위해 여러 가지 메커니즘을 사용한다.

주요 특징

  1. 연결 지향적 (Connection-oriented):
    • 통신을 시작하기 전에 송신자와 수신자 간에 연결을 설정해야 한다. 이 과정은 TCP 3-way 핸드셰이크 (Three-way Handshake)라고 불린다.
  2. 신뢰성 (Reliability):
    • TCP는 데이터가 손실되거나 손상되지 않고 도착하도록 보장한다. 이를 위해 흐름 제어, 혼잡 제어, 오류 제어 매커니즘을 수행한다.
  3. 오류 제어 (Error Control):
    • 오류 제어는 데이터 전송 중 발생할 수 있는 오류를 감지하고 수정하는 방법이다.
  4. 흐름 제어 (Flow Control):
    • 수신자의 버퍼가 오버플로우되지 않도록 데이터 전송 속도를 조절한다.
  5. 혼잡 제어 (Congestion Control):
    • 네트워크 혼잡을 감지하고 완화하여 효율적인 데이터 전송을 유지한다.

사용 사례

  • 웹 브라우징 (HTTP/HTTPS)
  • 이메일 (SMTP, IMAP, POP3)
  • 파일 전송 (FTP)
  • 원격 로그인 (SSH, Telnet)

3-way Handshake 과정

  1. SYN: 클라이언트가 서버에 연결 요청을 보내기 위해 SYN 패킷을 보낸다.
  2. SYN-ACK: 서버는 클라이언트의 요청을 확인하고, SYN-ACK 패킷을 보낸다.
  3. ACK: 클라이언트는 서버의 응답을 확인하고, ACK 패킷을 보낸다.

Wireshark를 통해 google.com을 접속할 때의 패킷을 확인해보았다.

위 사진의 윗부분을 보면, 구글 웹 서버(142.250.206.238)에 접속하기 위해 먼저 TCP프로토콜을 통해 3-way Handshake를 진행하는 것을 볼 수 있다. (TCP / TCP / TCP /  HTTP / ...)

하단의 상세 내용을 보면, 각 계층별로 캡슐화된 데이터를 확인할 수 있다.

가상 회선 방식 ?

현재 참고하고 있는 도서에서는 TCP가 가상회선 패킷 교환 방식을 사용한다고 되어 있고, UDP가 데이터그램 패킷 교환 방식을 사용한다고 되어 있다.

이 부분에서, TCP프로토콜을 사용하는 경우 물리적 네트워크 상에서 모든 패킷을 동일한 경로로 전송하는 것으로 이해했다.

하지만 인터넷 환경에서 일반적으로 사용되는 TCP/IP 모델에서 인터넷 계층에서는 IP 프로토콜을 사용한다. IP 프로토콜은 패킷을 라우팅을 통해 각각 최적의 경로로 전송한다.

그렇다면 왜 가상 회선 패킷 교환 방식을 사용했다고 표현했을까? Wikipedia와 커뮤니티의 한 답변에 따라 정리해 보자면,

  • 연결 설정: 두 방식 모두 데이터 전송 전에 논리적 연결을 설정한다.
  • 순서 보장: 2/3계층은 물리적 경로를 통해 순서를 보장하고, 4계층(TCP)은 시퀀스 번호를 통해 순서를 보장한다.
  • 신뢰성: TCP는 데이터의 신뢰성을 보장하며, 2/3계층의 일부 프로토콜(X.25 등)도 신뢰성을 제공한다.

UDP (User Datagram Protocol)

개요

UDP는 신뢰성보다는 빠른 데이터 전송을 우선하는 프로토콜이다. 데이터의 전송과 수신에 있어 최소한의 메커니즘만을 제공하며, 신뢰성 보장은 거의 없다.

주요 특징

  1. 비연결 지향적 (Connectionless):
    • 데이터 전송 전에 송신자와 수신자 간에 연결을 설정하지 않는다. 각 패킷은 독립적으로 전송된다.
  2. 신뢰성 부족 (Lack of Reliability):
    • 데이터가 손실되거나 중복되거나 순서가 뒤바뀔 수 있으며, 이를 감지하거나 수정하는 메커니즘이 없다.
  3. 순서 미보장 (No Ordered Delivery):
    • 데이터가 전송된 순서대로 도착하는 것을 보장하지 않는다.
  4. 경량 (Lightweight):
    • 오버헤드가 적고, 빠른 데이터 전송이 가능하다. 흐름 제어나 혼잡 제어와 같은 추가적인 메커니즘이 없다.
  5. 방송 가능 (Broadcasting):
    • 멀티캐스트 및 브로드캐스트 전송이 가능하다.

사용 사례

  • 실시간 스트리밍 (비디오, 오디오)
  • 온라인 게임
  • VoIP (Voice over IP)
  • DHCP (Dynamic Host Configuration Protocol)
  • DNS (Domain Name System)

UDP 데이터 전송 과정

  • 각 패킷은 독립적으로 전송되며, 송신자는 패킷을 보낸 후 확인을 기다리지 않는다. 수신자는 패킷을 수신할 때마다 처리한다.

비교 요약

특성 TCP UDP
연결 지향성 연결 지향적 (3-way Handshake) 비연결 지향적
신뢰성 신뢰성 보장 (재전송, 오류 검출) 신뢰성 보장 없음
데이터 순서 보장 전송된 순서 보장 순서 보장 없음
흐름 제어 흐름 제어 메커니즘 있음 흐름 제어 없음
혼잡 제어 혼잡 제어 메커니즘 있음 혼잡 제어 없음
전송 속도 상대적으로 느림 상대적으로 빠름
오버헤드 높음 낮음
사용 사례 HTTP, FTP, 이메일, SSH 등 스트리밍, 온라인 게임, VoIP, DNS 등

참고

네트워크 기초 - TCP/UDP

Quora - Does TCP use virtual circuit switching ?

WIKIPEDIA - Virtual circuit

댓글