https://en.wikiversity.org/wiki/Wireshark/TCP
위 링크에 있는 방법을 그대로 따라했습니다.
먼저 telnet 명령어를 실행한다.
telnet [www.google.com](http://www.google.com/) 80
그 후 어떤 패킷들이 오고 갔는지, wireshark로 확인한다.
내 맥 컴퓨터가 구글 서버로 syn 패킷을 전송했다.
Observe the Source address.
→ 172.30.1.10
→ 링크 문서에 따르면 위 ip는 내 맥 컴퓨터의 맥 주소.
Observe the Destination address
→ 172.217.174.100
→ 링크 문서에 따르면 위 ip는 게이트웨이의 맥 주소.
Observe the Source port.
→ 50897
→ 맥 컴퓨터가 동적으로 결정한 포트.
Observe the Destination port.
→ 80
→ 도착지 서버의 포트
Observe the Sequence number.
→ 0이다. (상대적 시퀀스 번호)
→ 실제 클릭해서 보면 1e 49 8e 88 로 나온다.
구글 서버 → 내컴퓨터로 (syn, ack) 패킷을 보냈다.
Observe the Source address.
→ 게이트웨이의 맥 주소.
Observe the Destination address
→ 내 맥 컴퓨터의 맥 주소.
Observe the Sequence number.
→ 0 (상대적 번호)
→ 45 25 da 28 (절대 번호)
Observe the Acknowledgement number
→ 1 (상대적 번호)
→ 1e 49 8e 89 (절대 번호)
→ 첫번째 패킷 전송의 sequence 번호(1e 49 8e 88)보다 1 증가했다.
Observe the flag settings.
→ syn, ack이 1로 설정되었다.
내 맥 컴퓨터 → 구글 서버로 ack 패킷을 보냈다
Observe the Sequence number.
→ 1 (상대적 번호)
→ 1e 49 8e 89 (절대 번호)
→ 첫 번째 패킷(1)과 비교하여, 1 증가했다.
→ 두 번째 패킷(2)의 ackowledge number와 같은 값이다.
Observe the Acknowledgement number.
→ 1 (상대적 번호)
→ 45 25 da 29 (절대 번호)
→ 두 번째 패킷(2)의 sequence number에 1을 더한 값이다.
Observe the flag settings.
→ acknowledgement가 1로 설정됐다.
커넥션을 일정시간 이상 열었더니, 구글 서버가 먼저 연결을 끊었다.
구글 서버 → 내 컴퓨터로 fin, ack 전송
Observe the Sequence number.
→ 1 (상대 번호)
→ 45 25 da 29 (절대 번호)
→ 연결을 맺는 과정((3) 내 맥 컴퓨터 → 구글 서버로 ack 패킷을 보낸다)에서의 마지막 패킷 acknowledge number와 같다.
Observe the Acknowledgement number.
→ 1 (상대 번호)
→ 1e 49 8e 89 (절대 번호)
→ 연결을 맺는 과정에서의 마지막 패킷((3) 내 맥 컴퓨터 → 구글 서버로 ack 패킷을 보낸다) sequence number와 같다.
내 컴퓨터 → 구글 서버로 ack 패킷을 전송했다.
Observe the Sequence number.
→ 1 (상대 번호)
→ 1e 49 8e 89 (절대 번호)
→ 직전 구글 서버 → 내 컴퓨터로 fin, ack 전송에서의 acknowledge number와 같다.
Observe the Acknowledgement number.
→ 2 (상대 번호)
→ 45 25 da 2a (절대 번호)
→ 직전 구글 서버 → 내 컴퓨터로 fin, ack 전송에서의 sequence number에 1 더한 값이다.
내 컴퓨터에서 구글 서버로 (fin, ack) 패킷을 전송했다.
Observe the Sequence number.
→ 1 (상대 번호)
→ 1e 49 8e 89 (절대 번호)
→ 직전 내 컴퓨터 → 구글 서버로 ack 패킷 전송 의 sequence number와 같다.
Observe the Acknowledgement number.
→ 2 (상대 번호)
→ 45 25 da 2a (절대 번호)
→ 직전 내 컴퓨터 → 구글 서버로 ack 패킷 전송 의 ackowledge number와 같다.
구글 서버 → 내 컴퓨터로 ack 패킷을 전송했다.
Observe the Sequence number.
→ 2 (상대 번호)
→ 45 25 da 2a (절대 번호)
→ 직전 (3) 내 컴퓨터에서 구글 서버로 (fin, ack) 패킷 전송 의 ackowledge 번호와 같다.
→ (2) 내 컴퓨터 → 구글 서버로 ack 패킷 전송 의 ackowledge number와 같다.
Observe the Acknowledgement number.
→ 2 (상대 번호)
→ 1e 49 8e 8a (절대 번호)
→ 직전 (3) 내 컴퓨터에서 구글 서버로 (fin, ack) 패킷 전송 의 sequence 번호에 1 더한 값이다.
tcp 패킷의 sequence number는 전에 수신한 패킷의 acknowledge number와 같다.
tcp 패킷의 acknowledge number는 전에 수신한 패킷의 sequence number에 1을 더한 값이다.
단, 연결 종료의 시작에서 acknowledge number는 전에 수신한 패킷의 sequence number와 같다.
시퀀스 번호와 ack 번호는 다음 규칙을 가진다.
-- 책 '보안 실무자를 위한 네트워크 공격패킷 분석', 39P
https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake