컴퓨터과학/네트워크

[네트워크] TCP vs UDP: 특징과 차이

깃짱 2025. 9. 9. 14:00
반응형
반응형

🌏 TCP vs UDP

✅ TCP (Transmission Control Protocol)

TCP는 연결형 프로토콜로 3-way handshake를 통해 신뢰성을 보장하며, 데이터 순서와 재전송을 관리합니다. 대신 속도가 느리고 오버헤드가 큰 편입니다.

  • 특징
    • 연결형 (Connection-oriented) → 3-way handshake 필요
    • 신뢰성 보장: 데이터 손실 시 재전송, 순서 보장
    • 흐름 제어(Flow control), 혼잡 제어(Congestion control) 지원
    • 속도는 비교적 느림
  • 단위: 세그먼트 (Segment)
  • 장점
    • 보내는 쪽, 받는 쪽에 '커넥션'을 유지함
    • 에러 체킹 등 이 프로토콜 쓰면 데이터가 믿을 만 함 
    • 데이터를 특정 순서로 보낼 수 있음
  • 단점
    • UDP에 비해서 느림 (동시에 처리할 수 있는 처리량이 적음)
      • 특히 File Transfer 초기에 엄청나게 느림
    • 일부 데이터가 없으면 로딩을 안함, 예를 들어서 웹 페이지에 모든 데이터가 도착하기 전에는 페이지 자체 로딩을 안함 
    • 네트워크 혼잡하면 더더더더 악화되어 더더 느려짐
    • 멀티캐스팅이나 broadcasting은 못함
  • 어디에 사용하나?
    • 신뢰가 중요하고, 일관성이 중요한 서비스, 예를 들어-
    • 웹 브라우징 (HTTP/HTTPS)
    • 이메일 (SMTP, IMAP, POP3)
    • 파일 전송 (FTP, SFTP)

✅ UDP (User Datagram Protocol)

UDP는 비연결형으로 빠르고 가볍지만 신뢰성이 없어서, 스트리밍·게임·DNS 같은 실시간성이 중요한 서비스에 주로 사용됩니다.

  • 특징
    • 비연결형 (Connectionless) → handshake 없음
    • 신뢰성 없음: 순서·재전송 보장 안 함
    • 오버헤드 적음 → 빠른 전송 가능
    • 단순 구조, 실시간성에 유리
  • 단위: 데이터그램 (Datagram)
  • 장점
    • 커넥션 없어서 빠름 
    • broadcast, multicast 가능
  • 단점
    • 제대로 전달되었는지 알 수가 없음
    • 에러 검출은 되지만, 복구는 안함 (그냥 버려버림)
  • 어디에 사용하나?
    • 고속성, 실시간성이 중요한 서비스, 예를 들어-
    • 스트리밍 (영상/음성)
    • 온라인 게임
    • DNS, DHCP

✅ TCP vs UDP

구분 TCP UDP
연결 방식 연결형 (3-way handshake) 비연결형
신뢰성 보장 (재전송, 순서 유지) 보장 안 함
속도 상대적으로 느림 빠름
오버헤드 큼 (헤더 20바이트 이상) 작음 (헤더 8바이트)
사용 예시 웹, 메일, 파일 전송 스트리밍, 게임, DNS

🌏 TCP 과정을 간단히 보자면??

✅ 1. 연결 (Connection)

이미지 출처: https://afteracademy.com/blog/what-is-a-tcp-3-way-handshake-process/

  • TCP: 3-way handshake 과정을 거쳐 연결을 확정
    • 클라이언트 → 서버: SYN
    • 서버 → 클라이언트: SYN + ACK
    • 클라이언트 → 서버: ACK
    • → 이 과정을 통해 양쪽이 데이터 송수신 준비가 되었음을 확인
  • UDP: 이런 과정 없음. 그냥 데이터그램을 던짐. (상대가 받을지 말지는 모름)

✅ 2. 순서 보장

  • TCP: 각 세그먼트에 시퀀스 번호를 붙여서 수신자가 순서대로 조립
    • 중간에 하나라도 빠지면 재전송 요청
  • UDP: 순서 개념 없음. 받은 순서대로 처리

✅ 3. 신뢰성

  • TCP
    • 송신자는 데이터를 보내고 ACK(응답)를 기다림.
    • 일정 시간 내 ACK가 안 오면 재전송
    • 혼잡 시 전송 속도를 줄이는 혼잡 제어 알고리즘(CUBIC, Reno 등)까지 있음.
  • UDP: 재전송, 응답 확인 없음

✅ 4. 흐름 제어

  • TCP: 수신자가 처리 가능한 속도를 윈도우 크기로 알려주고, 송신자가 그에 맞춰 전송 속도를 조절.
  • UDP: 없음. 보내는 쪽이 무제한으로 보낼 수 있음

✅ 5. 헤더 크기

이미지 출처: https://afteracademy.com/blog/what-is-a-tcp-3-way-handshake-process/

  • TCP: 헤더가 20바이트 이상. (시퀀스 번호, ACK 번호, 윈도우 크기, 플래그 등 많은 필드 포함) ⇒ 오버헤드 BIG BIG BIG
  • UDP: 헤더가 8바이트. (소스 포트, 목적지 포트, 길이, 체크섬)만 있음.

 

🌏 참고 자료

 

 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 

반응형