"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
🌐 TCP 3-way Handshake 완벽 이해하기
🚀 1. TCP는 무엇이고 왜 중요한가?
인터넷에서 데이터가 오가는 방식은 크게 두 가지로 나뉩니다: TCP와 UDP.
이 중 TCP(Transmission Control Protocol)는 신뢰성 있는 통신을 위해 필수적인 프로토콜로, 우리가 흔히 사용하는 웹 접속(HTTP/HTTPS), 이메일(POP/SMTP), 파일전송(FTP) 등 대부분의 서비스가 TCP 위에서 동작합니다.
TCP는 데이터를 순서대로, 손실 없이, 중복 없이 전달해주는 프로토콜이며, 이를 위해 보내는 쪽(sender)과 받는 쪽(receiver)이 서로 연결(connection) 을 맺은 뒤 통신을 시작합니다.
이 연결(Connection)을 맺는 과정이 바로 3-way Handshake (3단계 핸드셰이크) 입니다.
🤝 2. TCP 3-way Handshake란?
3-way Handshake는 말 그대로 3번에 걸쳐 데이터를 주고받으며 연결을 성립시키는 과정입니다.
이 과정을 통해 송신자와 수신자는 다음 두 가지를 서로 확인합니다.
- 서로 연결 의사가 있는가?
- 데이터를 송수신할 준비(초기 Sequence Number 설정 등)는 되었는가?
즉, “이제 안정적인 통신을 시작해도 되는지” 확인하는 TCP 접속 수립 절차입니다.
🔑 3. Handshake에 사용되는 주요 플래그
핸드셰이크 과정에서는 TCP헤더 안에 있는 플래그(flag)를 사용합니다. 핵심 플래그는 다음과 같습니다.
- SYN (Synchronize) : 연결을 요청하는 신호
- ACK (Acknowledge) : 요청을 확인했다는 응답
- Seq (Sequence Number) : 처음 보낼 데이터의 순서 번호
🔄 4. 연결 성립 과정 – 3단계의 흐름
✅ Step1 – SYN (연결 요청)
클라이언트가 서버에게
“연결하고 싶어요!” 라는 의미의 SYN 패킷을 보냅니다.
이때 클라이언트는 초기 시퀀스 번호 (client_isn) 도 함께 보냅니다.
✅ Step2 – SYN+ACK (연결 수락)
서버는 연결 요청을 받아들이면
“좋아요, 연결하겠습니다.” 라는 의미의 SYN + ACK 패킷을 클라이언트에게 보냅니다.
- 자신의 초기 시퀀스번호(server_isn)를 보내며,
- 클라이언트가 보낸 SYN에 대한 ACK 응답도 포함
✅ Step3 – ACK (연결 완료)
클라이언트는 서버의 SYN+ACK 패킷을 받으면
“네! 이제 연결됐어요.” 라는 의미로 ACK 패킷을 서버에 보냅니다.
이 순간 연결이 성립되고 클라이언트와 서버는 데이터 전송 시작!
📈 5. 왜 3단계나 걸릴까?
- 서로의 시퀀스 번호 교환 → 데이터 순서 주고받기 용도
- 서로 “진짜 살아있는지” 확인 → 유령연결 방지
- 데이터 전송 전 동기화 완료 → 안정적인 채널 확보
즉, 3-way Handshake는 입구단에서 통신의 신뢰성을 확보하는 준비운동 단계라고 이해하면 쉽습니다.
⚠️ 6. 보안 위협: SYN Flooding 공격이란?
공격자가 악의적으로 수천~수만 개의 SYN 패킷을 서버로 보내고
마지막 ACK를 보내지 않음 → 서버는 연결이 완료되지 않았음에도 메모리(대기큐)를 점유 → 결국 정상적인 연결을 받지 못하고 마비!
이를 SYN Flooding (DDoS 공격) 이라고 하며, TCP 3-way Handshake의 원리를 악용한 전형적인 공격기법입니다.
대응 방식으로는 아래와 같은 기술이 활용됩니다.
- SYN Cookies
- Connection Limit
- 방화벽 & IPS 설정
🧪 7. Wireshark로 보는 패킷 예시
실제 패킷 캡처툴(Wireshark)로 확인해보면 다음과 같은 형태로 표시됩니다.
1. Client → Server : SYN, Seq=100
2. Server → Client : SYN,ACK, Seq=230, Ack=101
3. Client → Server : ACK, Seq=101, Ack=231
이후에 HTTP GET 등의 실제 데이터 전송이 시작됩니다.
학습 시 Wireshark를 켜고 google.com 접속 후 tcp.port==80 필터링을 통해 패킷을 보면 잘 보입니다.
🔍 8. 연결 종료 과정 (TCP 4-way Handshake)
3-way Handshake는 “연결을 여는 과정”입니다. 반대로 연결을 닫을 때는 4단계 절차를 밟게 되며 이를 4-way Handshake 또는 Graceful Close라고 부릅니다.
- FIN → ACK → FIN → ACK 순서로 4단계가 이루어지는데
이는 전송 완료된 데이터를 재확인하고 오류 없이 닫기 위한 단계입니다.
3-way Handshake와 4-way Handshake는 TCP의 안정적인 통신을 위한 “양 날개의 로직”이라고 할 수 있습니다.
🧭 9. 정리 – TCP 연결의 시작은 Handshake로부터!
TCP는 UDP보다 속도는 느리지만 신뢰성·순서성·에러제어 기능이 강력하며,
이 모든 기능이 3-way Handshake를 기반으로 구현됩니다.
연결 → 데이터 전송 → 종료
그 핵심은 바로 SYN → SYN+ACK → ACK 순서입니다.
네트워크 공부를 시작할 때 TCP 3-way Handshake를 정확히 이해하면
패킷 분석, 보안공격 대응, 프로토콜 개발 등 다음 단계 학습이 매우 수월해집니다.
'네트워크,IT' 카테고리의 다른 글
서브넷 마스크란? 완벽 이해 가이드 (4) | 2025.08.13 |
---|---|
프록시 서버란? (2) | 2025.08.13 |
VPN이란 무엇인가? (6) | 2025.08.13 |
IPv4 vs IPv6의 차이 (1) | 2025.08.13 |
IP주소란 무엇일까? (0) | 2025.08.13 |