2022.12.13. 최초 작성
TCP 프로토콜은 신뢰성 있는 통신 제공한다.
그러기 위해서 가장 마지막에 종료 과정이 4 Way Handshake로 FIN과 ACK로 이루어져 있고 그 과정은 아래 그림과 같다.
1단계로 TCP 연결을 종료하고자 하는 클라이언트 쪽에서 FIN 패킷을 보내는데 시퀀스번호는 이전 패킷의 ACK 번호이다. 그림에서는 1000이다. ACK 번호는 이전 패킷의 시퀀스번호이다. 그림에서는 2000이다.
2단계로 상대방인 서버는 받은 FIN 패킷의 응답으로 ACK 패킷을 보낸다. 이전 FIN 패킷의 시퀀스번호에 1을 증가한 값이다.
3단계로 서버는 2단계에 바로 이어 FIN 패킷을 보낸다. 2단계의 시퀀스번호와 ACK 번호가 같다.
4단계로 클라이언트는 바로 앞에 서버가 보낸 FIN 패킷의 시퀀스번호에 1 증가한 값을 ACK 패킷으로 보내고 TCP는 정상 종료된다.
이 과정을 와이어샤크로 패킷을 분석하면 아래처럼 확인된다.

FIN 패킷이니 ACK 패킷이니 하는 것은 Flags에 Fin과 ACK에 모두 1이 있느냐 ACK에만 1이 있느냐는 것으로 구분한다.
[결론]
TCP는 신뢰성 있는 통신을 제공하기 위해 복잡한 편이다. 종료할 때의 과정인 4 Way Handshake 과정을 와이어샤크로 확인해볼 수 있었다.
이런 과정이 신뢰성을 위해서는 좋지만 해야 하는 일이 많아서 상대적으로 이런 일을 안 하는 것보다 속도가 느리다.
그리고 이런 복잡한 과정을 거치는 동안 보안 취약점에 노출될 가능성이 있다. 실제로 TCP의 안전하게 통신하는 과정을 역으로 이용해서 공격하는 방법들이 생겨났다.
'네트워크' 카테고리의 다른 글
Cisco Packet Tracer 다운로드 및 설치 (0) | 2022.12.16 |
---|---|
wireshark에서 SSL/TLS 패킷 복호화 (0) | 2022.12.15 |
wireshark를 이용한 TCP 프로토콜 분석하기 2 (3 Way Handshake) (0) | 2022.12.13 |
wireshark를 이용한 TCP 프로토콜 분석하기 1 (Window Size Scaling) (0) | 2022.12.13 |
분석용 패킷 샘플 제공 사이트 소개 (0) | 2022.12.12 |