FTP(File Transfer Protocol)

FTP는 애플리케이션 계층의 프로토콜이며 TCP/IP 위에서 실행된다. (TCP/IP를 기반으로 동작한다는 것은… ) 클라이언트-서버 모델이다. 보통은 FTP 클라이언트에 의해 시작되고 FTP 서버가 응답한다. 클라이언트와 서버 간에 인증된 연결이 설정되면 연결된 두 컴퓨터 간에 파일과 폴더를 어느 방향으로든 전송할 수 있다.

시스템 관리자와 소프트웨어 개발자가 한 컴퓨터에서 다른 컴퓨터로 파일과 폴더를 이동하기 위해 널리 사용했던 프로토콜이다. FTP 전송은 사이버 보안 조치가 개발된 시기보다 앞선 1970년대에 개발되었다. 보안 프로토콜로 설계되지 않았기 때문에 파일을 암호화하지 않으며 오늘날의 네트워크에서 매우 일반적인 방화벽 및 주소 변환에서는 제대로 작동하지 않는다.

FTP 동작 방식

FTP의 연결 설정을 위해서는 2개의 기본 채널이 필요하다. 하나는 명령을 내리고 어떤 파일에 액세스할 수 있는지 등의 기본 정보를 전달하는 명령 채널이고, 다른 하나는 2개의 장치 간에 파일 데이터를 전송하는 데이터 채널이다. 연결을 설정하려면 사용자는 FTP 서버로의 로그인 정보를 제공해야 하며 일반적으로는 서버 21번 포트를 기본 통신 모드로 사용하고 데이터 송수신은 서버 20번 포트를 이용한다.

FTP client <-> FTP server
1) request : src port 2000 -> dst port 21
2) response : dst port 2000 <- src port 21
3) request : dst port 2001 <- src port 20 (*) 데이터 프로토콜 동작. 포트와 접속 방향 달라짐.
4) response : src port 2001 -> dst port 20

이렇게 동작하기 때문에 오늘날의 방화벽과 주소 변환에 제대로 작동하지 않는데, 방화벽은 client가 신호를 보낸 21번 포트 외의 포트를 허용하지 않기 때문이다. 20번 포트로 신호가 들어오면 차단된다. [[(완_1)23.09.05 IT 엔지니어를 위한 네트워크 입문#9.3.5 ALG 방화벽의 동작 방식은 다음과 같다.]]

FTPS

FTPS는 HTTPS와 동일한 원리이다. TLS/SSL을 거쳐 안전한 채널로 FTP 통신을 하는 것인데, TLS(SSL)을 거친다는 것은 공개키 암호화 방식을 이용하여 21, 20번 포트를 안전하게 암호화 했다는 말이다.