TCP 3-Way Handshake는 신뢰성 있는 연결을 설정하기 위해 클라이언트와 서버 간에 세 번의 패킷 교환을 수행하는 과정을 말한다.
📌 개요
TCP는 연결형 프로토콜로, 데이터 전송 전에 송신자와 수신자가 서로 연결을 설정해야한다.
이를 위해 TCP는 3 Way Handshake를 사용하여 다음을 보장한다.
- 양쪽이 데이터 전송 준비가 되었는지 확인
- 초기 시퀀스 번호( ISN )를 교환하여 데이터 순서를 유지
- 네트워크 상태를 점검하여 적절한 패킷 크기 및 흐름 제어 설정
📌 과정
Step 1 : 클라이언트 -> 서버 ( SYN )
클라이언트가 서버에 연결 요청을 보낸다.
- 클라이언트가 TCP 소켓을 열고, SYN 플래르가 설정된 패킷을 전송한다.
- 이 패킷에 초기 시퀀스 번호 ( ISN )가 포함된다.
- 윈도우 크기( Window Size), MSS, 윈도우 스케일( Window Scaling ) 등의 옵션 정보가 포함된다.
Step 2 : 서버 -> 클라이언트 ( SYN + ACK )
서버가 클라이언트의 요청을 수락하고 응답을 보낸다.
- 서버는 클라이언트의 SYN 요청을 수락한 후, SYN + ACK 플래그가 설정된 패킷을 전송한다.
- 이 패킷에 서버의 초기 시퀀스 번호( ISN ) 와 클라이언트의 SYN에 대한 응답 번호(ACK)가 포함된다.
Step 3 : 클라이언트 -> 서버 ( ACK )
클라이언트가 최종적으로 서버에 연결 완료를 알린다.
- 클라이언트는 서버가 보낸 SYN + ACK 패킷을 받은 후, ACK 플래그가 설정된 패킷을 다시 서버로 보낸다.
- 이 패킷에 서버의 SYN에 대한 응답 번호 ( ACK )가 포함된다.
📌 3 Way Handshake에서 설정되는 TCP 옵션
- MSS : 한 번에 전송할 수 있는 최대 세그먼트 크기
- 윈도우 크기 : 수신 가능한 버퍼 크기
- 윈도우 스케일링 : 윈도우 크기 확장 옵션
- 타임스탬프 : 패킷의 RTT 측정
📌 3 Way Handshake가 실패하는 경우
- SYN 패킷이 도착하지 않는 경우
- SYN + ACK 패킷이 도착하지 않는 경우
- ACK 패킷이 도착하지 않는 경우
📌 3 Way Handshake가 성공하고 나서 데이터 전송
- 클라이언트가 데이터를 전송한다 ( Sequence Number = 1001 )
- 서버가 응답한다. ( ACK = 1001 )
- 이후, Sliding Window를 활용하여 빠르게 데이터를 전송한다.
'IT' 카테고리의 다른 글
[IT] 4 Way Handshake ( TCP 연결 종료 ) (0) | 2025.04.09 |
---|---|
[IT] Sliding Window ( 슬라이딩 윈도우 ) (0) | 2025.04.08 |
[IT] 운영체제 명령어 삽입 ( OS Command Injection ) (0) | 2025.04.01 |
[IT] 크로스사이트 스크립트 (0) | 2025.04.01 |
[IT] 자원 삽입 ( Resource Injection ) (0) | 2025.04.01 |