TCP(Transmission Control Protocol)는 인터넷을 통한 신뢰성 있는 데이터 전송을 보장하는 핵심 프로토콜입니다. TCP는 패킷이 손실되지 않고 올바른 순서대로 전달되도록 설계되었으며, 이를 위해 연결 설정(3-way 핸드셰이크)과 연결 해제(4-way 핸드셰이크) 과정을 거칩니다.
본 장에서는 TCP 연결 설정 및 해제의 과정과 원리, 실용적인 예시 및 패킷 분석 방법을 자세히 살펴보겠습니다.
📌 1. TCP 연결 설정: 3-Way Handshake
TCP는 신뢰성을 보장하기 위해 데이터 전송을 시작하기 전에 클라이언트와 서버 간의 연결을 설정하는 과정을 수행합니다.
이 과정은 3-way handshake(3단계 핸드셰이크)라고 불리며, 상대방과의 통신이 가능한지 확인하고 데이터를 안정적으로 전송할 준비를 마치는 역할을 합니다.
🔹 3-Way Handshake 과정
1️⃣ SYN (Synchronize) – 클라이언트 → 서버
- 클라이언트가 서버와의 연결을 요청하는 첫 번째 단계.
- TCP 헤더의 SYN 플래그를 활성화한 패킷을 서버로 전송.
- 초기 시퀀스 번호(Initial Sequence Number, ISN)가 포함됨.
2️⃣ SYN-ACK (Synchronize + Acknowledge) – 서버 → 클라이언트
- 서버가 클라이언트의 요청을 수락하고 SYN-ACK 패킷을 응답.
- 서버의 초기 시퀀스 번호(ISN)를 포함하며, 클라이언트의 SYN에 대한 확인 응답(ACK)도 함께 전송.
3️⃣ ACK (Acknowledge) – 클라이언트 → 서버
- 클라이언트가 서버의 SYN-ACK에 대해 ACK 패킷을 응답.
- 이제 클라이언트와 서버 간 정상적인 데이터 전송이 가능한 상태가 됨.
📌 3-Way Handshake의 흐름 (Wireshark 분석 예시)
Wireshark에서 아래와 같은 패킷 흐름을 확인할 수 있습니다.
1. 클라이언트 → 서버 : SYN (SEQ=100, WIN=8192)
2. 서버 → 클라이언트 : SYN-ACK (SEQ=300, ACK=101, WIN=8192)
3. 클라이언트 → 서버 : ACK (SEQ=101, ACK=301)
💡 즉, 3번의 패킷 교환을 통해 TCP 연결이 확립되며, 이후 본격적인 데이터 전송이 이루어질 수 있습니다.
🎯 2. TCP 연결 설정의 실용 사례
✅ 웹사이트 접속 (HTTP/HTTPS 요청)
- 사용자가 브라우저에서 웹사이트 URL을 입력하면,
- 웹 브라우저(클라이언트)는 웹 서버와 TCP 연결을 설정한 후 HTTP 요청을 전송.
- TCP 연결이 설정되기 전에 3-way 핸드셰이크가 반드시 수행됨.
✅ 게임 서버 접속
- 온라인 게임을 실행하면 게임 클라이언트가 게임 서버와 TCP 연결을 설정.
- 데이터 패킷이 안정적으로 송수신되도록 보장.
✅ FTP 파일 전송
- FTP 클라이언트가 서버에 연결할 때도 3-way 핸드셰이크가 수행됨.
- 신뢰성 있는 파일 업로드/다운로드를 위해 TCP 연결을 설정.
🚀 3. TCP 연결 해제: 4-Way Handshake
TCP 연결 해제는 4-way handshake(4단계 핸드셰이크) 과정을 거칩니다.
이는 양쪽이 데이터 전송이 끝났음을 확인하고, 안전하게 연결을 종료하는 과정입니다.
🔹 4-Way Handshake 과정
1️⃣ FIN (Finish) – 클라이언트 → 서버
- 클라이언트가 더 이상 데이터를 보낼 필요가 없음을 알림.
- TCP 헤더의 FIN 플래그를 활성화한 패킷을 서버로 전송.
2️⃣ ACK (Acknowledge) – 서버 → 클라이언트
- 서버가 클라이언트의 FIN 요청을 확인하고 ACK 패킷을 응답.
- 그러나 이 시점에서 서버는 아직 데이터를 보낼 수 있음.
3️⃣ FIN (Finish) – 서버 → 클라이언트
- 서버도 더 이상 보낼 데이터가 없을 경우 FIN 플래그가 활성화된 패킷을 클라이언트로 전송.
4️⃣ ACK (Acknowledge) – 클라이언트 → 서버
- 클라이언트가 서버의 FIN을 확인하고 ACK 패킷을 마지막으로 전송.
- 이제 연결이 완전히 종료됨.
📌 4-Way Handshake의 흐름 (Wireshark 분석 예시)
1. 클라이언트 → 서버 : FIN (SEQ=400)
2. 서버 → 클라이언트 : ACK (SEQ=500, ACK=401)
3. 서버 → 클라이언트 : FIN (SEQ=500)
4. 클라이언트 → 서버 : ACK (SEQ=401, ACK=501)
💡 이 과정을 통해 TCP 연결이 정상적으로 종료됩니다.
🎯 4. TCP 연결 해제의 실용 사례
✅ 사용자가 웹사이트에서 로그아웃할 때
- 웹 브라우저는 서버와의 TCP 연결을 닫기 위해 4-way handshake를 수행.
- 정상적으로 세션을 종료하고 리소스를 해제.
✅ 파일 다운로드가 완료되었을 때
- FTP 또는 HTTP 다운로드가 끝나면,
- 클라이언트와 서버 간 TCP 연결이 해제됨.
✅ VoIP 통화 종료 시
- 인터넷 전화(VoIP) 통화가 끝나면 TCP 연결이 해제됨.
- 통화가 끝났음을 양쪽이 확인한 후 안전하게 연결 종료.
🔍 5. TCP 연결 설정 및 해제의 중요성
✅ 신뢰성 있는 데이터 전송 보장
- 3-way 핸드셰이크를 통해 데이터 전송 전 양측이 통신 준비가 되었음을 확인.
✅ 안정적인 연결 종료
- 4-way 핸드셰이크를 통해 데이터 손실 없이 연결이 종료됨.
✅ 보안 및 네트워크 최적화
- 정상적인 연결 해제를 수행하지 않으면 타임아웃으로 인해 서버 리소스가 낭비될 수 있음.
- 보안 공격(예: TCP RST 공격, SYN Flooding 등)을 방지하는 데도 중요한 역할을 함.
🔥 6. 결론
TCP의 연결 설정과 해제 과정은 인터넷에서 신뢰성 있는 데이터 통신을 위한 필수적인 과정입니다.
🔹 3-Way Handshake → 안정적인 연결 설정
🔹 4-Way Handshake → 안전한 연결 종료
이 과정이 없다면 데이터가 손실되거나, 연결이 불안정해지는 문제가 발생할 수 있습니다.
따라서 네트워크 엔지니어나 보안 전문가라면 TCP 핸드셰이크 과정을 철저히 이해하고, 이를 기반으로 최적화 및 보안 강화 전략을 마련해야 합니다. 🚀"
'네트워크 > TCP' 카테고리의 다른 글
고급 TCP 개념: 혼잡 제어(Congestion Control) (0) | 2025.03.10 |
---|---|
고급 TCP 개념: 흐름 제어 (Flow Control) (0) | 2025.03.10 |
최신 TCP 기술: Multipath TCP (MPTCP) – 다중 경로를 활용한 고성능 네트워크 기술 (0) | 2025.03.10 |
최신 TCP 기술: TCP Fast Open (TFO) (0) | 2025.03.10 |
TCP 실습: TCP 연결 실습과 네트워크 통신 원리 이해 (0) | 2025.03.10 |