[CS] TCP vs UDP의 차이점과 사용 사례

2025. 7. 22. 10:41·개발/CS
728x90
반응형

TCP vs UDP의 차이점과 사용 사례

목차

  1. 개요
  2. TCP (Transmission Control Protocol)
  3. UDP (User Datagram Protocol)
  4. TCP vs UDP 비교
  5. 실제 사용 사례
  6. 정리

개요

네트워크 통신에서 데이터를 전송하는 방법은 크게 두 가지로 나뉩니다: TCP(Transmission Control Protocol) 와 UDP(User Datagram Protocol) 입니다.

이 두 프로토콜은 각각 다른 특성을 가지고 있어서, 용도에 따라 적절한 프로토콜을 선택하는 것이 중요합니다.

TCP (Transmission Control Protocol)

특징

  • 연결 지향적 (Connection-oriented): 통신 전에 연결을 먼저 설정
  • 신뢰성 보장: 데이터 손실, 중복, 순서 보장
  • 흐름 제어: 수신 측의 처리 능력에 맞춰 데이터 전송 속도 조절
  • 혼잡 제어: 네트워크 상황에 따라 전송 속도 조절

동작 과정

1. 3-way handshake (연결 설정)
   Client → SYN → Server
   Client ← SYN + ACK ← Server
   Client → ACK → Server

2. 데이터 전송
   Client ↔ 데이터 ↔ Server

3. 4-way handshake (연결 해제)
   Client → FIN → Server
   Client ← ACK ← Server
   Client ← FIN ← Server
   Client → ACK → Server

장점

  • 데이터 무결성 보장
  • 순서 보장
  • 자동 재전송
  • 흐름 제어

단점

  • 오버헤드가 큼
  • 속도가 상대적으로 느림
  • 실시간성이 떨어짐

UDP (User Datagram Protocol)

특징

  • 비연결형 (Connectionless): 연결 설정 없이 바로 데이터 전송
  • 신뢰성 없음: 데이터 손실 가능성 있음
  • 순서 보장 없음: 패킷 순서가 바뀔 수 있음
  • 빠른 전송: 오버헤드가 적어 빠름

동작 과정

1. 연결 설정 없음
2. 데이터 전송
   Client → 데이터 → Server
   (재전송, 순서 보장 없음)
3. 연결 해제 없음

장점

  • 빠른 전송 속도
  • 실시간성 보장
  • 오버헤드가 적음
  • 단순한 구조

단점

  • 데이터 손실 가능성
  • 순서 보장 없음
  • 신뢰성 없음

TCP vs UDP 비교

구분 TCP UDP
연결 방식 연결 지향적 비연결형
신뢰성 높음 (재전송, 순서 보장) 낮음 (손실 가능)
속도 상대적으로 느림 빠름
오버헤드 높음 낮음
실시간성 낮음 높음
사용 포트 1-65535 1-65535
헤더 크기 20-60 bytes 8 bytes

실제 사용 사례

TCP 사용 사례

1. 웹 브라우징 (HTTP/HTTPS)

# 웹사이트 접속 시 TCP 사용
curl -v https://www.google.com
# TCP 3-way handshake 후 데이터 전송

2. 이메일 (SMTP, POP3, IMAP)

# 이메일 서버와의 통신
telnet smtp.gmail.com 587

3. 파일 전송 (FTP)

# 파일 업로드/다운로드
ftp ftp.example.com

4. SSH (원격 접속)

# 서버 원격 접속
ssh user@server.com

UDP 사용 사례

1. 실시간 스트리밍

# 예시: 실시간 비디오 스트리밍
import socket

# UDP 소켓 생성
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(video_frame, ('192.168.1.100', 5000))

2. 온라인 게임

# 게임 패킷 전송 예시
game_packet = {
    'player_id': 123,
    'position': {'x': 100, 'y': 200},
    'action': 'move'
}
sock.sendto(json.dumps(game_packet).encode(), (server_ip, game_port))

3. DNS 조회

# DNS 쿼리 (UDP 사용)
nslookup google.com

4. DHCP (IP 주소 할당)

# DHCP 서버로부터 IP 주소 요청
dhclient eth0

5. VoIP (음성 통화)

# 음성 데이터 전송
audio_data = capture_audio()
sock.sendto(audio_data, (remote_ip, voice_port))

정리

TCP

  • 데이터 무결성이 중요한 경우

    • 파일 전송
    • 이메일 전송
    • 웹 페이지 로딩
    • 데이터베이스 연결
  • 순서가 중요한 경우

    • 텍스트 메시지
    • 문서 전송
    • 로그 데이터

UDP

  • 실시간성이 중요한 경우

    • 실시간 비디오 스트리밍
    • 온라인 게임
    • VoIP 통화
  • 빠른 전송이 필요한 경우

    • DNS 조회
    • DHCP
    • 실시간 모니터링
  • 일부 데이터 손실이 허용되는 경우

    • 실시간 센서 데이터
    • 로그 데이터 (실시간성 우선)

TCP와 UDP는 각각의 장단점이 있어서, 용도에 맞는 프로토콜을 선택하는 것이 중요합니다.

  • TCP: 신뢰성이 중요한 웹, 이메일, 파일 전송 등
  • UDP: 실시간성이 중요한 스트리밍, 게임, VoIP 등
728x90
반응형

'개발 > CS' 카테고리의 다른 글

[CS] 대칭키 vs 비대칭키  (0) 2025.06.22
[CS] DNS란 무엇인가?  (1) 2024.02.02
'개발/CS' 카테고리의 다른 글
  • [CS] 대칭키 vs 비대칭키
  • [CS] DNS란 무엇인가?
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    erc20
    js
    CSS
    30일챌린지
    go언어
    프로그래머스
    html
    nodejs
    node
    mysql
    React
    명령어
    node.js
    30일 챌린지
    컨테이너
    블록체인
    ERC721
    하이퍼레저
    도커
    go
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[CS] TCP vs UDP의 차이점과 사용 사례
상단으로

티스토리툴바