■ 3-way Handshake & 4-way Handshake
- 실제 Packet을 확인해 보기 위해, Wireshark로 FTP Server와 Client 간의 통신 Packet 확인
• 3-way Handshake
- 3-way handshaking은TCP/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를 사용하는 것을 유추할 수 있다.
참고
'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 |