2018. 7. 26. 16:55ㆍNetWork
오늘은 어제에 이어서 3 Way-Handshake의 예제를 보도록 하겠습니다.
그전에 오늘은 nc의 통신을 캡쳐해서 예제를 볼 거기에 TCP의 연결 종료 방식인 4 Way-Handshake에 대해 알아보겠습니다.
4 Way-Handshake
4 Way-Handshake 방식 설명
1. 클라이언트가 서버에게 FIN 신호의 패킷을 보내고 자기 자신은 FIN_WAIT_1 상태가 됩니다.
2. 서버는 FIN 패킷을 받고, ACK 패킷을 해당 클라이언트에게 보냅니다. 서버는 CLOSE_WAIT상태가 됩니다.
3. ACK 패킷을 받은 클라이언트는 서버가 FIN을 잘 받았다고 판단, 자신의 소캣상태를 FIN_WAIT_2로 변경합니다.
그리고 서버의 FIN 패킷을 기다립니다.
4. 서버는 FIN 패킷을 보내고 소캣의 상태를 LAST_ACK로 전환합니다.
5. FIN 패킷을 받은 클라이언트는 소캣 상태를 TIME_WAIT로 전환하고, ACK를 전송한다.
(TIME_WAIT 상태가 지속되면 CLOSED된다.)
6. 서버는 ACK 패킷을 받은 소캣의 상태를 CLOSED로 전환한다.
간단한 TCP 통신 예제
예제 환경
VMware
사용 OS
클라이언트 : 칼리 리눅스(192.168.0.128)
서버 : 윈도우 7(192.168.0.200)
통신 방법
Netcat
Netcat 서버 설정
Netcat 서버를 열어줍니다.
Netcat 접속
접속하기 전에 와이어 샤크를 켜고 접속합니다.(3 Way-Handshake 방식 확인을 위해)
접속해줍니다.
패킷 캡쳐가 됐는지 확인해줍니다.
메세지 보내기
메세지 보내기
도착확인
패킷 확인
접속 종료 후 패킷 확인
종료
패킷 확인
간단한 패킷 분석
간단하게 시퀀스 넘버가 오가는 것만 해서 분석해보겠습니다.
번호 |
출발지 IP |
도착지 IP |
FLAG |
Sequence number |
Acknowledgment number |
1 |
192.168.0.128 |
192.168.0.200 |
SYN |
3923049301 |
X |
2 |
192.168.0.200 |
192.168.0.128 |
SYN, ACK |
1355773071 |
3923049302 |
3 |
192.168.0.128 |
192.168.0.200 |
ACK |
3923049302 |
1355773072 |
4 |
192.168.0.128 |
192.168.0.200 |
PSH, ACK |
3923049302 |
1355773072 |
5 |
192.168.0.128 |
192.168.0.200 |
PSH, ACK |
3923049302 |
1355773072 |
6 |
192.168.0.200 |
192.168.0.128 |
ACK |
1355773072 |
3923049308 |
7 |
192.168.0.128 |
192.168.0.200 |
FIN,ACK |
3923049308 |
1355773072 |
8 |
192.168.0.200 |
192.168.0.128 |
ACK |
1355773072 |
3923049309 |
9 | 192.168.0.200 | 192.168.0.128 | FIN,ACK | 1355773072 | 3923049309 |
10 | 192.168.0.128 | 192.168.0.200 | ACK | 3923049309 | 1355773073 |
표를 보시면 1~3번은 지난 포스팅에서 보신대로 3 Way-Handshake 방식입니다.
4~6번을 보시면 PSH라는 게 보이는데 이것은 버퍼링된 데이터를 푸쉬 해주는 flag입니다.
여기서 주목하셔야할게 5~6번 시퀀스 넘버와 ACK 넘버를 보시면 클라이언트가 서버에게 PSH해주고 서버가 ACK를 할 때 6번에 ACK넘버에는 3923049308라는 값이 있습니다. 원래대로라면 +1 한 값이어야 하지만, 우리는
서버에게 Hello라는 문자열을 전송했습니다. Hello 자체로 보면 5바이트지만 뒤에 NULL값이 있어 총 6바이트입니다. 그래서 ACK넘버가 3923049303이 아닌 3923049308이 된 것입니다.
그리고 7~8번을 보시면 위에서 설명한 4 Way-Handshake 방식이 있습니다.
설명은 위를 참조하시기를 바랍니다.
'NetWork' 카테고리의 다른 글
[NetWork]3 Way-Handshake (0) | 2018.07.25 |
---|