네트워크 기초

TCP와 UDP 차이 정리 — 3-way handshake부터 포트 번호까지

일하는 그물 2026. 9. 15. 20:06

4계층에는 사실상 두 개의 프로토콜만 있습니다. TCP와 UDP입니다. 둘의 차이를 "TCP는 신뢰성, UDP는 속도"로 외우고 넘어가는 경우가 많은데, 시험에서는 그보다 한 단계 더 들어간 것을 묻습니다.

최종 확인: 2026년 9월 13일 · 참고: RFC 793(TCP), RFC 768(UDP), IANA 포트 번호 등록부

결론 먼저

  • TCP는 연결을 먼저 만들고 데이터를 보냅니다. 순서를 맞추고, 빠진 것은 다시 보냅니다.
  • UDP는 연결 없이 그냥 던집니다. 도착 여부도, 순서도 보장하지 않습니다.
  • 둘의 차이는 헤더에 무엇이 들어 있느냐에서 나옵니다. TCP 헤더는 20바이트, UDP는 8바이트입니다.
  • UDP가 나쁜 게 아닙니다. 늦게 도착한 데이터가 쓸모없는 경우에는 UDP가 정답입니다.

1. 한눈에 비교

구분TCPUDP
연결연결 지향 — 3-way handshake비연결 — 바로 전송
신뢰성확인 응답(ACK), 재전송없음
순서 보장Sequence Number로 보장보장 안 함
흐름 제어Window 크기로 조절없음
혼잡 제어있음없음
헤더 크기20바이트 (옵션 제외)8바이트
속도상대적으로 느림빠름
전송 단위SegmentDatagram

2. TCP의 3-way handshake

TCP는 데이터를 보내기 전에 "준비됐나?"를 세 번 주고받아 확인합니다.

클라이언트                        서버
    │                              │
    │──── ① SYN ─────────────────▶│   "연결하자"
    │                              │
    │◀─── ② SYN + ACK ────────────│   "좋다, 나도 연결하자"
    │                              │
    │──── ③ ACK ─────────────────▶│   "확인했다"
    │                              │
    │◀════ 데이터 전송 시작 ═══════▶│

왜 두 번이 아니라 세 번일까요. 양쪽 모두 보내는 능력과 받는 능력을 서로 확인해야 하기 때문입니다. 두 번만 하면 서버는 자기 응답이 도착했는지 알 수 없습니다.

연결을 끊을 때는 네 번

① FIN  →   "보낼 거 다 보냈다"
② ACK  ←   "알겠다"
③ FIN  ←   "나도 다 보냈다"
④ ACK  →   "알겠다"

끊을 때 네 단계인 이유는, 한쪽이 다 보냈어도 반대쪽은 아직 보낼 게 남아 있을 수 있기 때문입니다. 그래서 방향별로 따로 닫습니다. 시험에 "연결은 3-way, 해제는 4-way"로 자주 나옵니다.

3. TCP가 신뢰성을 만드는 방법

  • Sequence Number — 각 세그먼트에 번호를 붙여 순서가 뒤바뀌어 도착해도 재조립합니다.
  • Acknowledgment Number — 받은 쪽이 "여기까지 잘 받았다"를 알려줍니다.
  • 재전송 — 일정 시간 안에 ACK가 오지 않으면 다시 보냅니다.
  • 흐름 제어(Flow Control) — 받는 쪽이 Window 크기로 "이만큼만 보내라"를 알립니다. 받는 쪽이 감당 못 하는 것을 막습니다.
  • 혼잡 제어(Congestion Control) — 네트워크가 막히면 전송 속도를 스스로 줄입니다. 위의 흐름 제어와 다른 개념이라 구분해 묻는 문제가 나옵니다.

흐름 제어는 수신자를 보호하고, 혼잡 제어는 네트워크를 보호합니다. 이 한 줄로 구분하면 헷갈리지 않습니다.

4. 어디에 무엇을 쓰나

프로토콜4계층포트왜 그 선택인가
HTTP / HTTPSTCP80 / 443한 글자라도 빠지면 안 됨
FTPTCP20, 21파일이 손상되면 안 됨
SMTPTCP25메일이 유실되면 안 됨
SSH / TelnetTCP22 / 23명령이 정확히 전달돼야 함
DNS주로 UDP53질의·응답이 짧음. 실패하면 다시 물으면 됨
DHCPUDP67, 68IP를 받기 전이라 연결을 못 맺음
TFTPUDP69단순 전송
SNMPUDP161상태 조회. 일부 유실돼도 무방
VoIP / 스트리밍UDP—늦게 온 음성은 이미 쓸모없음

DNS는 응답 크기가 512바이트를 넘거나 영역 전송(Zone Transfer)을 할 때는 TCP 53을 씁니다. "DNS는 UDP"라고만 외우면 이 예외를 묻는 문제에서 틀립니다.

5. 포트 번호 범위

범위이름설명
0 ~ 1023Well-known표준 서비스에 할당. HTTP 80, HTTPS 443 등
1024 ~ 49151Registered특정 소프트웨어에 등록된 번호
49152 ~ 65535Dynamic / Private클라이언트가 통신할 때 임시로 쓰는 번호

포트 번호는 16비트이므로 0 ~ 65535까지입니다. 왜 65535인지 묻는 문제가 나오면 2¹⁶ − 1을 떠올리면 됩니다.

6. 시험에서 자주 나오는 포인트

  • 연결 3-way, 해제 4-way. 순서는 SYN → SYN+ACK → ACK.
  • TCP 헤더 20바이트, UDP 헤더 8바이트.
  • 흐름 제어와 혼잡 제어는 다른 것 — 수신자 보호 대 네트워크 보호.
  • DNS는 기본 UDP 53, 예외적으로 TCP 53.
  • 전송 단위 이름 — TCP는 Segment, UDP는 Datagram, 3계층은 Packet, 2계층은 Frame.
  • 포트 번호는 16비트, 0~65535. Well-known은 1023까지.

외우는 법

TCP는 등기우편, UDP는 전단지로 기억하면 나머지가 따라옵니다.

  • 등기우편은 받는 사람 확인을 받습니다 → ACK
  • 못 받았다고 하면 다시 보냅니다 → 재전송
  • 봉투에 순번을 적습니다 → Sequence Number
  • 이 모든 절차가 봉투를 두껍게 만듭니다 → 헤더 20바이트
  • 전단지는 그냥 뿌립니다. 몇 장 못 받아도 상관없고, 그래서 빠릅니다 → UDP 8바이트

정리 기준 — RFC 793·768과 CCNA 시험 범위를 기준으로 정리한 학습 자료입니다. 포트 번호는 IANA 등록부를 기준으로 했으며, 실제 서비스는 다른 포트로 운영될 수 있습니다.

참고 자료

  • RFC 793 — Transmission Control Protocol
  • RFC 768 — User Datagram Protocol
  • IANA Service Name and Transport Protocol Port Number Registry
  • Cisco Networking Academy, CCNA: Introduction to Networks — Transport Layer 단원

이어서 읽기

  • 1편 — OSI 7계층 정리 및 외우는 법
  • 6편 — IP 주소와 서브넷팅 계산법

다음 글에서는 컴퓨터를 켜고 인터넷이 되기까지 뒤에서 돌아가는 DHCP와 DNS를 정리하겠습니다.