FTP란 파일 전송 프로토콜(File Transfer Protocol)의 약자. FTP는 TCP/IP 네트워크(인터넷)상의 장치가 파일을 전송할 때 사용하는 규칙입니다. 파일을 이동할 때 사용하는 프로토콜
FTP 서버란 파일을 하나의 장치에서 다른 장치로 전송하는 소프트웨어 애플리케이션을 말한다. 파일을 업로드하면 업로드된 파일이 내 개인용 장치에서 서버로 전송되고, 파일을 다운로드하면 다운로드된 파일이 서버에서 개인용 장치로 전송. 따라서 기본적인 관점에서 보면 FTP 서버는 수신자와 전송자 사이에 위치한 중간 지점과 같다.
FTP는 클라이언트-서버 프로토콜. 클라이언트가 파일을 요청하면 서버가 요청된 파일을 제공. 따라서 FTP의 연결 설정을 위해서는 2개의 기본 채널이 필요하다. 하나는 명령을 내리고 어떤 파일에 액세스할 수 있는지 등의 기본 정보를 전달하는 명령 채널이고, 다른 하나는 2개의 장치 간에 파일 데이터를 전송하는 데이터 채널이다.
연결을 설정하려면 사용자는 FTP 서버로의 로그인 정보를 제공해야 하는데, 일반적으로는 21번 포트를 기본 통신 모드로 사용
FTP에 관해 알아야 할 또 다른 점은 FTP의 연결 모드에는 능동 모드, 수동 모드 2가지가 있다
능동 모드에서는 서버가 데이터 요청을 승인하는 능동적인 역할을 합니다. 하지만 능동 모드에서는 방화벽으로 인한 문제가 종종 발생. 권한이 없는 세션에 액세스하려고 하면 해당 세션이 차단
https://madplay.github.io/img/post/2019-03-09-ftp-active-passive-1.png
수동 모드에서는 서버가 능동적으로 연결을 유지하지 않는다. 즉, 사용자가 데이터 채널과 명령 채널 모두를 설정. 서버는 기본적으로 '듣기만' 할 뿐, 적극적으로 관여하지 않음으로써 다른 장치가 대부분의 작업을 처리
https://madplay.github.io/img/post/2019-03-09-ftp-active-passive-2.png
vsftpd는 보안 부분을 특히 강조한 데몬으로 Redhat, Suse, Open-BSD에서 기본 FTP로 채택하고 잇으며 보안, 빠른 퍼포먼스, 안정성을 주요 특징으로 소개하고 있다.
또한 config 파일의 설정 문법도 아주 간단해서 FTP 서버 관리를 쉽게 할 수 있다.