1. 3-웨이 핸드셰이킹 이란? (3-way handshaking)
cmd 창에 $ netstat -an 명령어를 쳐보면 다음과 같이 나오는 것을 볼 수 있다.
특히 이 중에서 맨 마지막 '상태' 부분이 TCP의 연결 상태 정보이다.
TCP는 패킷을 주고 받기 전에 미리 연결을 맺어
가상 경로를 설정하는 연결 지향형 프로토콜이다.
TCP에는 연결을 설정하는 과정과, 연결을 종료하는 과정이 존재하는데,
이 중 연결 설정 과정을 '3-웨이 핸드셰이킹'이라고 한다.
2. 3-웨이 핸드셰이킹 과정 (연결 설정 과정)
1. 두 시스템이 통신을 하기 전에 클라이언트는 포트가 닫힌 Closed 상태이고,
서버는 언제나 해당 포트로 서비스 제공이 가능한 Listen 상태이다.
2. 클라이언트가 처음 통신을 하려고 하면 임의의 포트번호가 클라이언트에게 할당되고,
클라이언트는 서버에게 연결하고 싶다는 의사표시인, SYN sent 상태가 된다.
3. 클라이언트의 연결 요청을 받은 서버는 SYN Received 상태가 되고,
클라이언트에게 연결을 해도 좋다는 의미의 SYN + ACK 패킷을 보낸다.
4. 마지막으로 클라이언트는 연결요청에 대한 서버의 응답을 확인했다는 표시로
ACK 패킷을 보낸다.
3. 연결 해제 과정
1. 통신을 하는 동안에는 클라이언트와 서버 모두 Established 상태이다.
2. 통신을 끊고 싶은 클라이언트가 서버에게 FIN(finish) 패킷을 보낸다.
그리고 클라이언트는 Close Wait 상태가 된다.
3. 서버는 클라이언트의 요청을 확인했다는 뜻으로 ACK 패킷을 보낸다.
그리고 서버도 연결을 종료하겠다는 의미로 FIN 패킷을 보내고, Close Wait 상태가 된다.
4. 클라이언트는 연결 종료에 대한 서버의 응답을 확인했다는 표시로 ACK 패킷을 보낸다.
cf. 양대일, 『정보보안개론』, 한빛아카데미
'네트워크' 카테고리의 다른 글
[네트워크] access 모드에서 trunk 모드로 변경하기 - 패킷 트레이서를 이용한 실습 (2) (0) | 2023.09.27 |
---|---|
[네트워크] Trunk가 필요한 이유 - 패킷 트레이서를 이용한 실습 (1) (0) | 2023.09.27 |
VLAN의 필요성 및 동작원리 (0) | 2023.09.25 |
Native VLAN 이해 (0) | 2023.09.25 |
Trunk 동작원리 (0) | 2023.09.25 |
댓글