2022.12.13. 최초 작성
TCP 프로토콜은 신뢰성 있는 통신을 제공한다.
그러기 위해서 가장 처음 하는 과정이 3 Way Handshake로 SYN과 ACK로 이루어져 있고 그 과정은 아래 그림과 같다.

1단계로 처음에 클라이언트가 서버에게 SYN 패킷을 보내는데 랜덤한 시퀀스번호를 보낸다. 그림에서는 임의로 1000으로 정했다.
2단계로 서버는 클라이언트가 보낸 SYN 패킷을 수신하고 SYN+ACK 패킷을 보낸다. ACK에는 클라이언트가 보낸 시퀀스번호에 1을 증가하고 자신의 새로운 시퀀스번호를 생성하여 보낸다. 그림에서는 임의로 2000으로 정했다.
마지막 3단계는 클라이언트가 서버로부터 받은 시퀀스번호에 1을 증가하여 ACK 패킷을 보낸다.
이렇게 3번의 과정을 거치면 두 호스트는 TCP 프로토콜로 데이터를 주고받을 수 있다.
이 과정을 와이어샤크로 패킷을 분석하면 아래처럼 확인된다.
그런데 위 그림에서 시퀀스번호는 0부터 시작한다. 우연히 0이 나올 가능성도 있지만 가능성은 아주 희박하다.
와이어샤크는 패킷 분석에 편리성을 위해 시퀀스번호를 0부터 보여주는 기능이 있다.
원래의 시퀀스번호를 확인하고 싶으면 설정에서 변경하면 된다.
Edit --> Preferences 메뉴를 클릭하여 설정 창을 띄운다.
Protocols --> TCP에서 Relative sequence numbers의 체크 박스를 해제한다.

원래의 시퀀스번호가 확인된다.
[결론]
TCP는 신뢰성 있는 통신을 제공하기 위해 복잡한 편이다. 처음부터 3 Way Handshake처럼 복잡한 과정을 거친다.
이런 과정이 신뢰성을 위해서는 좋지만 해야 하는 일이 많아서 상대적으로 이런 일을 안 하는 것보다 속도가 느리다.
그리고 이런 복잡한 과정을 거치는 동안 보안 취약점에 노출될 가능성이 있다. 실제로 TCP의 안전하게 통신하는 과정을 역으로 이용해서 공격하는 방법들이 생겨났다.
'네트워크' 카테고리의 다른 글
wireshark에서 SSL/TLS 패킷 복호화 (0) | 2022.12.15 |
---|---|
wireshark를 이용한 TCP 프로토콜 분석하기 3 (Finish 4 Way Handshake) (0) | 2022.12.13 |
wireshark를 이용한 TCP 프로토콜 분석하기 1 (Window Size Scaling) (0) | 2022.12.13 |
분석용 패킷 샘플 제공 사이트 소개 (0) | 2022.12.12 |
wireshark를 이용한 패킷 분석하기 2(Endpoints Map) (0) | 2022.12.09 |