TCP와 UDP

Jun_k·2026년 4월 26일

TCP (Transmission Control Protocol): "신뢰가 제일이다"

TCP는 데이터의 신뢰성을 최우선으로 설계된 프로토콜이다.
이를 위해 데이터를 보내기 전 상대방과 연결을 설정하고,
데이터가 잘 도착했는지 매번 확인한다.

왜 신뢰할 수 있는가?

  • 연결 지향 (3-way Handshake): 데이터를 보내기 전
    "준비됐니?" -> "응, 너는?" -> "나도 준비됐어"라는
    3단계 과정을 거쳐 연결을 확립한다.

  • 순서 보장: 데이터에 번호(Sequence Number)를 매겨서 보낼 때
    받는 쪽에서 순서가 뒤섞여도 원래대로 조립할 수 있다.

  • 흐름 제어 & 혼잡 제어: 받는 쪽의 처리 속도가 느리면 보내는 속도를 줄이고, 네트워크가 막히면 데이터 양을 조절한다. (데이터 폭주 방지)

  • 재전송: 상대방이 데이터를 못 받았다고 하면(ACK를 못 받으면) 다시 보내준다.

단점

  • 확인 과정이 많기 때문에 UDP보다 느리고,
    연결을 계속 유지해야 하므로 서버 자원을 더 많이 소모한다.

UDP (User Datagram Protocol): "빠른 게 장땡이다"

  • UDP는 복잡한 절차를 다 생략하고, 속도와 효율성에 올인한 프로토콜이며 "보냈으니까 알아서 받아라"라는 식의 비연결형 방식이다.

왜 빠른가?

  • 비연결형: 3-way handshake 같은 사전 작업이 없이
    그냥 목적지 주소 찍고 바로 전송한다.

  • 확인 안 함: 데이터가 도착했는지, 순서가 맞는지 확인하지 않는다.

  • 가벼운 헤더: TCP는 확인을 위해 헤더 정보가 많은데
    UDP는 최소한의 정보만 담겨 있어서 오버헤드가 매우 적다.

단점

  • 데이터 유실 가능성이 있고, 도착 순서가 바뀔 수도 있다. (신뢰성 낮음)

언제 무엇을 써야 할까?

TCP를 선택해야 하는 상황

  • "단 1바이트의 오차도 허용할 수 없을 때"

  • HTTP/HTTPS (웹 브라우징): 페이지 구성 요소 중 하나라도 빠지면
    화면이 깨지거나 보안 이슈가 생길 수 있음.

  • 파일 전송 (FTP): 파일의 끝부분이 유실되면 파일 실행이 안 됨.

  • 이메일 (SMTP): 내용이 일부 누락되면 의미 전달이 안 됨.

UDP를 선택해야 하는 상황

  • "데이터가 조금 유실되어도 실시간성이 중요할 때"

  • 실시간 스트리밍 (유튜브/치지직 라이브): 화면이 0.1초 끊기는 것보다
    끊김 없이 계속 재생되는 게 중요함.

  • 온라인 게임 (FPS/RPG): 내 캐릭터 위치 정보가 0.1초 늦게 전달되는 것보다
    현재 위치를 빠르게 갱신하는 게 중요함.

  • 보이스 톡 (VoIP): 목소리가 약간 지지직거려도
    실시간 대화가 끊기지 않는 것이 우선임.

  • DNS: 주소를 빨리 찾는 게 우선이라 가벼운 UDP를 주로 사용함.

profile
개발을 즐겨보자.

0개의 댓글