3-way-handshake
기술노트
🤝 3-way-handshake
3-way-handshake는 TCP (Transmission Control Protocol) 통신에서 클라이언트와 서버가 본격적으로 데이터를 주고받기 전에, 서로 연결을 설정하는 과정을 의미합니다. 세 번의 메시지 교환을 통해 연결의 신뢰성을 확보합니다.
⚙️ 3-way-handshake 동작 과정
1. SYN (Synchronize Sequence Numbers) : 클라이언트가 서버에게 연결을 요청하는 메시지를 보냅니다. 이 메시지에는 클라이언트가 생성한 초기 시퀀스 번호(ISN, Initial Sequence Number)가 포함됩니다.
* `클라이언트 → 서버 : SYN (seq=x)`
2. SYN-ACK (Synchronize-Acknowledge) : 서버가 클라이언트의 연결 요청을 수락한다는 메시지를 보냅니다. 이 메시지에는 서버가 생성한 초기 시퀀스 번호와, 클라이언트의 SYN에 대한 응답(ACK, x+1)이 포함됩니다.
* `서버 → 클라이언트 : SYN (seq=y), ACK (ack=x+1)`
3. ACK (Acknowledge) : 클라이언트가 서버의 SYN-ACK 메시지를 받았다는 확인 메시지를 보냅니다. 이 메시지에는 서버의 SYN에 대한 응답(ACK, y+1)이 포함됩니다.
* `클라이언트 → 서버 : ACK (ack=y+1)`
이 세 단계를 거치면 클라이언트와 서버 모두 상대방의 존재를 확인하고, 데이터를 주고받을 준비가 되었다는 것을 인지하게 됩니다. 이제부터 실제 데이터 통신이 시작됩니다.
💡 정보처리기사 핵심 Point
- 3-way-handshake는 TCP의 연결 지향성(Connection-oriented)을 보여주는 핵심적인 과정입니다.
- 정보처리기사 시험에서는 3-way-handshake의 각 단계에서 주고받는 메시지의 종류(SYN, ACK)와 시퀀스 번호의 변화를 묻는 문제가 자주 출제됩니다.
- 3-way-handshake가 완료되어야만 데이터 통신이 시작되며, 통신이 끝날 때는 4-way-handshake를 통해 연결을 해제합니다.