네트워크

wireshark를 이용한 TCP 프로토콜 분석하기 3 (Finish 4 Way Handshake)

swedu 2022. 12. 13. 21:49
728x90
반응형

2022.12.13. 최초 작성

 

 

 

 

TCP 프로토콜은 신뢰성 있는 통신 제공한다.

그러기 위해서 가장 마지막에 종료 과정이 4 Way HandshakeFINACK로 이루어져 있고 그 과정은 아래 그림과 같다.

 

 

[그림1] 4 Way Handshake 과정

 

 

1단계로 TCP 연결을 종료하고자 하는 클라이언트 쪽에서 FIN 패킷을 보내는데 시퀀스번호는 이전 패킷의 ACK 번호이다. 그림에서는 1000이다. ACK 번호는 이전 패킷의 시퀀스번호이다. 그림에서는 2000이다.

 

2단계로 상대방인 서버는 받은 FIN 패킷의 응답으로 ACK 패킷을 보낸다. 이전 FIN 패킷의 시퀀스번호에 1을 증가한 값이다.

 

3단계로 서버는 2단계에 바로 이어 FIN 패킷을 보낸다. 2단계의 시퀀스번호와 ACK 번호가 같다.

 

4단계로 클라이언트는 바로 앞에 서버가 보낸 FIN 패킷의 시퀀스번호에 1 증가한 값을 ACK 패킷으로 보내고 TCP는 정상 종료된다.

 

 

이 과정을 와이어샤크로 패킷을 분석하면 아래처럼 확인된다.

 

[그림2] 와이어샤크에서 확인한 4 Way Handshake 과정

 

 

 

FIN 패킷이니 ACK 패킷이니 하는 것은 FlagsFinACK에 모두 1이 있느냐 ACK에만 1이 있느냐는 것으로 구분한다.

 

 

[그림3] Fin 패킷 (Fin과 ACK 모두 1로 세팅)

 

[그림4] ACK 패킷 (ACK만 1로 세팅)

 

 

 

 

[결론]

TCP는 신뢰성 있는 통신을 제공하기 위해 복잡한 편이다. 종료할 때의 과정인 4 Way Handshake 과정을 와이어샤크로 확인해볼 수 있었다.

 

이런 과정이 신뢰성을 위해서는 좋지만 해야 하는 일이 많아서 상대적으로 이런 일을 안 하는 것보다 속도가 느리다.

 

그리고 이런 복잡한 과정을 거치는 동안 보안 취약점에 노출될 가능성이 있다. 실제로 TCP의 안전하게 통신하는 과정을 역으로 이용해서 공격하는 방법들이 생겨났다.

 
 

 

728x90
반응형

 

728x90
반응형