Server/Cent OS

3-way Handshake & 4-way Handshake

heyoon2j 2019. 7. 28. 19:05

■ 3-way Handshake & 4-way Handshake

 

- 실제 Packet을 확인해 보기 위해, Wireshark로 FTP Server와 Client 간의 통신 Packet 확인

 

 

• 3-way Handshake

- 3-way handshakingTCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 말한다.

 

[Step 1] Client가 접속을 위해 Server 쪽에 SYN 패킷을 보낸다. SYN 패킷을 보낸 Client는 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다

 

[Step 2] 연결 요청을 받은 Server는 응답(연결 수락)으로 SYN와 ACK 패킷을 Client에게 보내준다. SYN/ACK 패킷을 보낸 Server는 SYN_RECEIVED 상태가 된다.

 

[Step 3] 연결 수락을 받은 Client는 Server에게 ACK 패킷을 보내고, 연결이 된 상태가 된다.

 

 

• 4-way Handshake

- 4-way handshake는 3-way handshake와 반대로 세션을 종료하는 과정을 말한다.

 

[Step 1] Client는 연결 종료를 위한 FIN 패킷를 보낸다. 그리고 FIN WAIT 1 상태가 된다.

 

[Step 2] Server는 FIN 패킷을 받게 되면 응답으로 ACK 신호를 보내고, 해당 Server의 Application에서 연결이 CLOSE 할 때까지 CLOSE WAIT 상태가 된다.

 

[Step 3] ACK 패킷을 받은 Client는 FIN WAIT 2 상태가 되고, FIN 신호를 기다린다. Server 쪽에서 Application 연결이 종료되면 FIN 패킷을 보내고 LAST ACK 상태가 된다.

 

[Step 4] FIN 패킷을 받은 Client는 TIME WAIT 상태가 되고 ACK 패킷을 Server에게 보낸다. ACK 패킷을 받은 Server는 CLOSED로 완전히 종료 상태가 된다.

 

=> Client에서 세션을 종료시킨 후, 뒤늦게 도착하는 패킷이 있다면 이 패킷은 Drop 되고 데이터는 유실된다. 이러한 현상에 대비하여 Client는 Server로부터 FIN을 수신하더라도 일정시간(디폴트 240초) 동안 세션을 남겨놓고 패킷을 기다리는 과정을 거치게 되는데 이 과정을 "TIME_WAIT"라고 합니다.

 

 

*추가 - FTP Active / Passive Mode 확인

- Wireshark에서 Follow -> TCP Stream 클릭 위의 그림 같이 정보를 확인할 수 있다.

- 위의 그림에서 빨강은 Client, 파랑은 Server이다.

- PORT 172,16,1,1,246,1 => IP: 172.16.1.1, Port: 246*256 + 1 = 62976번을 사용하겠다는 의미이다.

 

 => 위 그림을 보게 되면, Client에서 Server 쪽으로 Port에 대한 정보를 보내는 것을 알 수 있다. 이 부분으로 추측할 수 있는 것은 해당 FTP Server는 Active Mode를 사용하는 것을 유추할 수 있다.

 

 

 

참고

[1] https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake

'Server > Cent OS' 카테고리의 다른 글

SSL 인증서, 키 생성  (0) 2019.08.02
Linux Server - HTTP SSL 설정  (0) 2019.07.17
Linux Server - FTP SSL 설정  (0) 2019.07.17
Linux Server - Mail SSL 설정  (0) 2019.07.17
Linux Server - NFS(설치 & 설정 + 고정 Port)  (0) 2019.07.09