TCP와 UDP, 포트
쉽게 말하면
데이터를 보내는 두 방식이에요. TCP는 받았는지 하나하나 확인하고 잃어버리면 다시 보내는 등기우편, UDP는 확인 없이 빠르게 보내는 전단지 같아요. 정확해야 하면 TCP, 빨라야 하면 UDP예요.
시험용 정의
TCP는 연결을 먼저 맺고 순서·재전송·흐름 제어로 신뢰성을 보장하는 연결형 전송 프로토콜이다. UDP는 연결 없이 바로 보내는 비연결형 프로토콜로, 신뢰성 보장이 없는 대신 빠르고 가볍다. 둘 다 포트 번호로 프로그램을 구분한다.
비유로 이해하기
TCP는 등기우편(받았다는 확인을 받고, 분실되면 다시 보냄), UDP는 전단지 배포(보내고 끝, 대신 빠르고 쌈)다.
자세히
TCP vs UDP
| TCP | UDP | |
|---|---|---|
| 연결 | 연결형 (3-way handshake) | 비연결형 |
| 신뢰성 | 순서 보장, 재전송, 흐름·혼잡 제어 | 보장 안 함 |
| 속도·헤더 | 상대적으로 느림, 헤더 20바이트 이상 | 빠름, 헤더 8바이트 |
| 전송 방식 | 1:1 (유니캐스트) | 1:1, 1:N (브로드캐스트·멀티캐스트) |
| 쓰는 서비스 | HTTP, FTP, SSH, Telnet, SMTP | DNS 질의, DHCP, SNMP, NTP, TFTP, 스트리밍 |
3-way handshake (연결 설정)
① 클라이언트 → SYN ② 서버 → SYN+ACK ③ 클라이언트 → ACK. 이후 ESTABLISHED. 연결 종료는 FIN·ACK를 주고받는 4-way handshake.
포트 번호 범위
| 0 ~ 1023 | 잘 알려진 포트(well-known). 22 SSH, 80 HTTP 등. 여는 데 root 권한 필요 |
| 1024 ~ 49151 | 등록된 포트(registered). 3306 MySQL 등 |
| 49152 ~ 65535 | 동적·사설 포트. 클라이언트가 임시로 씀 |
같은 계층의 친구들
ICMP(오류·진단, ping), ARP(IP → MAC), RARP(MAC → IP)는 포트 없이 동작한다. 서비스 이름과 포트 대응은 /etc/services에 있다.
시험에 이렇게 나와요
- 3-way handshake 순서 → SYN → SYN+ACK → ACK, 첫 패킷 → SYN, 연결 완료 상태 → ESTABLISHED
- 연결 없이 보내는 프로토콜 → UDP, UDP를 쓰는 서비스 → DNS(질의), DHCP, SNMP
- 잘 알려진 포트 범위 → 0~1023
확인 문제
Q1. 실시간 영상 통화에서 패킷 몇 개가 사라졌다. 사라진 패킷을 끝까지 다시 받아 오는 게 좋을까?
- 그렇다. 그래서 영상 통화는 TCP만 쓴다
- 그렇다. 모든 데이터는 반드시 재전송해야 한다
- 아니다. 늦게 온 화면은 쓸모없으니 빠르게 다음 것을 보내는 게 낫다
- 아니다. 영상 통화는 ICMP를 쓰기 때문에 손실이 없다
정답 보기
3번 아니다. 늦게 온 화면은 쓸모없으니 빠르게 다음 것을 보내는 게 낫다
실시간 서비스는 조금 잃더라도 지연이 없는 게 중요하다. 그래서 확인·재전송 없이 빠른 UDP를 주로 쓴다. 파일 전송·웹처럼 한 바이트도 틀리면 안 되는 서비스는 TCP를 쓴다.
Q2. TCP 연결을 요청할 때 보내는 첫 번째 패킷은?
- RST
- FIN
- ACK
- SYN
정답 보기
4번 SYN
SYN이다. 3-way 핸드셰이크는 SYN → SYN+ACK → ACK 순서다. FIN은 연결을 끝낼 때 보낸다.
Q3. netstat에서 TCP 연결이 맺어져 데이터를 주고받을 수 있는 상태는?
- LISTEN
- TIME_WAIT
- ESTABLISHED
- SYN_SENT
정답 보기
3번 ESTABLISHED
ESTABLISHED다. LISTEN은 연결을 기다리는 중, SYN_SENT는 연결 요청을 보낸 중, TIME_WAIT는 연결을 끝낸 뒤 잠시 기다리는 상태다.
Q4. TCP의 특징이 아닌 것은?
- 흐름 제어
- 브로드캐스트 전송 지원
- 순서 보장
- 연결 지향
정답 보기
2번 브로드캐스트 전송 지원
브로드캐스트·멀티캐스트는 UDP의 특징. TCP는 1:1 연결.
Q5. 주로 UDP를 사용하는 서비스는?
- SSH
- FTP
- DHCP
- SMTP
정답 보기
3번 DHCP
DHCP(67/68), DNS 질의, SNMP, NTP, TFTP 등이 UDP.
Q6. TCP 연결 설정 과정의 두 번째 단계에서 서버가 보내는 것은?
- ACK
- SYN
- SYN+ACK
- FIN
정답 보기
3번 SYN+ACK
SYN → SYN+ACK → ACK.
헷갈리기 쉬운 O·X
UDP는 수신 확인과 재전송으로 신뢰성을 보장한다.
정답 보기
X 그건 TCP. UDP는 보장하지 않는다.
TCP 헤더는 UDP 헤더보다 크다.
정답 보기
O TCP 기본 20바이트, UDP 8바이트.
0~1023번 포트를 well-known 포트라고 한다.
정답 보기
O 리눅스에선 이 포트를 열려면 root 권한이 필요하다.
ICMP는 TCP 위에서 동작한다.
정답 보기
X ICMP는 IP와 같은 계층(인터넷 계층)이다.