본문 바로가기
전공과목/네트워크

[네트워크] 전송 계층 프로토콜 비교: TCP vs UDP의 특징 및 TCP 3-way Handshake 완벽 정리

by 아임코딩 2026. 9. 1.
반응형

"웹 서핑할 때는 TCP를 쓰는데, 유튜브나 온라인 게임에서는 왜 UDP를 활용할까요?"

"정보처리기사 및 CS 면접 단골 질문인 'TCP 3-way Handshake'와 '4-way Handshake'의 연결 제어 메커니즘은 어떻게 작동할까요?"

전송 계층(Transport Layer)은 송신지의 프로세스와 수신지의 프로세스 간 단대단(End-to-End) 통신 및 신뢰성 있는 데이터 전송을 책임지는 계층입니다.

이번 글에서는 전송 계층의 두 대표 프로토콜인 TCP와 UDP의 핵심 특징 비교, 그리고 TCP의 연결 설정(3-way Handshake) 및 해제(4-way Handshake) 과정을 한눈에 정리해 드립니다!

1. 전송 계층의 두 축: TCP vs UDP

전송 계층의 프로토콜은 데이터 전송 시 신뢰성을 보장하느냐, 아니면 속도를 최우선으로 하느냐에 따라 TCPUDP로 나뉩니다.

구분 TCP (Transmission Control Protocol) UDP (User Datagram Protocol)
연결 방식 연결 지향형 (Connection-oriented) 비연결형 (Connectionless)
신뢰성 높음 (오류 제어, 흐름 제어, 혼잡 제어) 낮음 (신뢰성 및 순서 보장 없음)
전송 단위 세그먼트 (Segment) 데이터그램 (Datagram)
전송 순서 보장됨 (Sequence Number 관리) 보장되지 않음
전송 속도 상대적으로 느림 매우 빠르고 가벼움
주요 사용 사례 웹(HTTP/HTTPS), 이메일(SMTP), 파일 전송(FTP) 실시간 스트리밍, 온라인 게임, DNS, VoIP

2. TCP 신뢰성의 핵심: 3-way & 4-way Handshake

TCP는 데이터를 주고받기 전, 두 기기 간에 논리적인 연결을 설정하고 정리하는 과정을 거칩니다.

① 연결 설정: TCP 3-way Handshake

데이터 전송 전 양방향 통신 통로를 확인하고 동기화하는 3단계 과정입니다.

1.1단계: SYN (Client -:

Server)">

클라이언트가 서버에 연결을 요청하며 SYN(Synchronize) 패킷을 보냅니다.

(클라이언트 상태: SYN_SENT)

2.2단계: SYN + ACK (Server -:

Client)">

서버가 클라이언트의 요청을 승인하는 **ACK(Acknowledge)**와, 자신도 연결을 확인하고자 SYN 패킷을 함께 보냅니다.

(서버 상태: SYN_RECEIVED)

3.3단계: ACK (Client -:

Server)">

클라이언트가 서버의 승인에 대해 ACK 패킷을 보내 응답합니다. 이후 양쪽 모두 연결이 완료되어 데이터를 주고받을 수 있습니다.

(상태: ESTABLISHED)

② 연결 해제: TCP 4-way Handshake

통신이 완료된 후 양쪽의 논리적 연결을 안전하게 종료하는 4단계 과정입니다.

  1. FIN (Client -> Server): 클라이언트가 데이터 전송 완료 후 연결 종료 요청(FIN 패킷)을 보냅니다. (클라이언트 상태: FIN_WAIT_1)
  2. ACK (Server -> Client): 서버는 일단 종료 요청을 확인했다는 ACK 패킷을 보냅니다. (서버 상태: CLOSE_WAIT)
  3. FIN (Server -> Client): 서버도 남은 데이터 전송을 모두 마친 뒤, 연결 종료 준비가 완료되면 클라이언트에게 FIN 패킷을 보냅니다. (서버 상태: LAST_ACK)
  4. ACK (Client -> Server): 클라이언트가 확인 ACK 패킷을 보내고 연결을 최종 종료합니다.

TIME_WAIT 상태: 클라이언트는 마지막 ACK를 보낸 후에도 혹시 나중에 도달할지 모르는 지연 패킷(잉여 패킷) 처리를 위해 일정 시간동안 TIME_WAIT 상태를 유지한 뒤 종료합니다.

3. 속도와 효율성의 승부사: UDP (User Datagram Protocol)

UDP는 신뢰성 확보를 위한 핸드셰이킹, 순서 번호, 흐름 제어/혼잡 제어 메커니즘을 전면 제거한 프로토콜입니다.

UDP의 작동 특징

  • 가벼운 헤더: TCP 헤더(최소 20바이트)에 비해 UDP 헤더는 8바이트로 매우 단순합니다.
  • 1:1, 1:N, N:N 통신 가능: 유니캐스트뿐만 아니라 브로드캐스트, 멀티캐스트 전송이 가능합니다.
  • 실시간성 중시: 데이터 일부가 손실되더라도 빠르게 연속 전송을 이어나가야 하는 실시간 음성/영상 스트리밍에 최적화되어 있습니다.

💡 한눈에 보는 TCP vs UDP 요약표 (시험 핵심!)

항목 TCP UDP
연결 방식 3-way Handshake 기반 연결 설정 연결 설정 없음 (바로 데이터 발송)
헤더 크기 20 ~ 60 바이트 8 바이트
플래그 비트 SYN, ACK, FIN, RST, PSH, URG 사용 없음
제어 기능 흐름 제어(슬라이딩 윈도우), 혼잡 제어 지원 지원하지 않음 (애플리케이션 계층에서 구현 필요)
전송 속도 신뢰성 확보 오버헤드로 인해 상대적 느림 오버헤드가 적어 매우 빠름

📌 시험 핵심 기출 포인트 체크

  1. TCP 플래그 비트:
    • SYN (Synchronize): 연결 요청 및 시퀀스 번호 동기화
    • ACK (Acknowledgment): 승인/확인 응답
    • FIN (Finish): 정상적인 연결 종료 요청
    • RST (Reset): 강제 연결 해제/초기화
  2. TIME_WAIT 목적: 4-way Handshake 종료 시 클라이언트가 일정 시간 TIME_WAIT을 유지하는 이유는 지연 전송된 유실 패킷 수신서버가 마지막 ACK를 받지 못해 FIN을 재전송할 경우에 대비하기 위함입니다.
  3. DNS가 UDP를 기본적으로 사용하는 이유: 요청 및 응답 데이터 크기가 작아 연결 설정 오버헤드 없이 빠른 응답을 얻을 수 있기 때문입니다. (단, 데이터가 크거나 존 트랜스퍼 시에는 TCP 사용)
반응형