문서의 각 단락이 어느 리비전에서 마지막으로 수정되었는지 확인할 수 있습니다. 왼쪽의 정보 칩을 통해 작성자와 수정 시점을 파악하세요.

FTP | |
이름 | FTP (File Transfer Protocol) |
한글명 | 파일 전송 프로토콜 |
분류 | |
목적 | 클라이언트-서버 모델 기반 파일 전송 |
기본 포트 | 21 (제어 연결), 20 (데이터 연결) |
전송 모드 | 액티브 모드, 패시브 모드 |
보안 | |
기술 상세 정보 | |
개발 | 1971년 Abhay Bhushan이 제안 (RFC 114) |
표준 | RFC 959 (1985) |
동작 방식 | 별도의 제어 연결(명령)과 데이터 연결(파일 전송) 사용 |
인증 방식 | 기본 사용자명/비밀번호 (일반 텍스트 전송) |
주요 명령어 | USER, PASS, LIST, RETR, STOR, QUIT 등 |
대체 기술 | |
사용 예시 | 웹사이트 파일 업로드, 대용량 파일 공유 |
장점 | 간단하고 널리 지원됨, 대용량 파일 전송에 적합 |
단점 | 보안 취약, 방화벽 통과 문제, 상태 비저장 프로토콜 아님 |
관련 프로토콜 | |

FTP는 파일 전송 프로토콜(File Transfer Protocol)의 약자로, 네트워크 상의 컴퓨터들 간에 파일을 주고받기 위해 설계된 표준 통신 프로토콜이다. 인터넷의 초기부터 널리 사용되었으며, 서버와 클라이언트 구조를 기반으로 한다. FTP는 TCP/IP 프로토콜을 사용하며, 일반적으로 제어용 포트 21번과 데이터 전송용 포트를 활용하여 동작한다.
이 프로토콜의 주요 목적은 원격 호스트에 접속하여 파일 목록을 조회하거나, 파일을 업로드 및 다운로드하는 것이다. 사용자는 FTP 클라이언트 프로그램을 통해 FTP 서버에 접속하여 인증(사용자명과 암호)을 거친 후 파일 전송 작업을 수행한다. 또한 익명 접속(anonymous FTP)을 지원하는 서버도 있어, 특정 계정 없이 공개 파일을 내려받을 수 있게 한다.
FTP는 단순하고 직관적인 명령어 체계를 가지고 있어 초보자도 비교적 쉽게 사용할 수 있었다. 그러나 기본적인 FTP는 전송 중인 데이터와 인증 정보(사용자명, 암호)를 암호화하지 않는 평문으로 전송하기 때문에 보안상의 취약점을 안고 있다[1].

FTP는 ARPANET의 초기 네트워크 환경에서 파일 공유의 필요성에 의해 탄생했다. 1971년 아비 바이탄이 제안한 초기 사양은 RFC 114로 발표되었으며, 이는 네트워크를 통해 호스트 간에 파일을 전송하기 위한 최초의 표준이었다. 당시 네트워크는 매우 제한적이었고, FTP는 이러한 환경에서 신뢰할 수 있는 데이터 전송을 보장하는 핵심 도구로 자리 잡았다.
1980년대에 FTP는 TCP/IP 프로토콜 스위트의 공식적인 구성 요소가 되었다. 1985년 RFC 959이 발표되면서 현재 알려진 FTP의 대부분의 핵심 기능과 구조가 표준화되었다. 이 표준은 명령 채널과 데이터 채널의 분리, 다양한 데이터 표현 형식(아스키, 이진), 그리고 액티브/패시브 모드의 기본 개념을 정의했다. FTP는 인터넷의 보급과 함께 가장 널리 사용되는 파일 전송 방법이 되었다.
1990년대 중반부터는 보안 문제가 대두되기 시작했다. 표준 FTP는 사용자 이름, 비밀번호, 데이터를 모두 암호화하지 않은 평문으로 전송했기 때문에 보안에 취약했다. 이에 대한 대응으로 FTPS가 등장했으며, 이는 FTP에 SSL/TLS 암호화 계층을 추가한 확장 프로토콜이었다. 비슷한 시기에 SSH 프로토콜을 기반으로 한 SFTP도 개발되어 보안 파일 전송의 또 다른 대안으로 자리 잡았다.
아래 표는 FTP의 주요 발전 단계를 요약한 것이다.
연도 | 주요 사건 | 설명 |
|---|---|---|
1971 | RFC 114 발표 | 아비 바이탄이 작성한 최초의 FTP 사양 |
1973 | RFC 354 발표 | FTP의 기능이 보다 상세히 정의됨 |
1985 | RFC 959 발표 | 현대 FTP의 표준이 확립된 결정적 문서 |
1990년대 후반 | FTPS (RFC 2228) 등장 | FTP over SSL/TLS로 보안 강화 |
2000년대 초반 | SFTP 보급 | SSH-2 프로토콜의 일부로 널리 사용됨 |

FTP는 TCP/IP 기반 네트워크에서 파일을 전송하기 위해 설계된 클라이언트-서버 프로토콜이다. 기본 동작 원리는 두 개의 별도 TCP 연결, 즉 명령 채널과 데이터 채널을 사용하여 제어 정보와 실제 파일 데이터를 분리하여 전송하는 데 있다. 클라이언트는 일반적으로 포트 21을 통해 서버에 연결하여 명령 채널을 수립하고, 이 채널을 통해 로그인, 디렉터리 탐색, 파일 전송 명령 등을 텍스트 기반으로 주고받는다. 실제 파일 목록이나 파일 내용의 전송은 별도로 열리는 데이터 채널을 통해 이루어진다.
이 데이터 채널의 연결 방식에는 Active Mode와 Passive Mode 두 가지가 존재한다. 액티브 모드에서는 클라이언트가 데이터 채널을 위한 임시 포트를 열어 서버에 알리고, 서버가 해당 포트로 접속을 시도한다. 이 방식은 클라이언트 측에 방화벽이나 NAT이 존재할 경우 연결 실패가 빈번하게 발생할 수 있다. 반면, 패시브 모드는 이 문제를 해결하기 위해 서버 측이 데이터 채널용 포트를 열어 대기하고, 클라이언트가 그 포트로 접속하는 방식을 사용한다. 현대 네트워크 환경에서는 클라이언트 측 방화벽 제약을 피하기 위해 패시브 모드가 더 널리 사용된다.
모드 | 연결 주체 (데이터 채널) | 클라이언트 포트 | 서버 포트 | 방화벽 친화성 |
|---|---|---|---|---|
액티브 모드 | 서버 → 클라이언트 | 임시 포트 (클라이언트 열기) | 20 (기본) | 낮음 (클라이언트 측 방화벽 차단 가능성 높음) |
패시브 모드 | 클라이언트 → 서버 | 임시 포트 (클라이언트 열기) | 임시 포트 (서버가 지정) | 높음 (서버 측 포트만 열리면 됨) |
이러한 이중 채널 구조는 FTP의 핵심 설계 특징이지만, 동시에 복잡성과 보안 취약점의 원인이 되기도 한다. 특히 명령 채널은 암호화되지 않은 평문으로 통신이 이루어지기 때문에, 사용자 아이디와 비밀번호, 전송되는 명령이 네트워크 상에서 쉽게 노출될 수 있다는 심각한 문제점을 내포하고 있다.
FTP는 파일 전송을 위해 두 개의 별도 TCP 연결을 사용한다. 하나는 명령을 주고받는 제어 채널(일반적으로 포트 21)이고, 다른 하나는 실제 데이터를 전송하는 데이터 채널이다. 연결 모드는 이 데이터 채널을 어떻게 설정하느냐에 따라 능동 모드(Active Mode)와 수동 모드(Passive Mode)로 나뉜다.
능동 모드에서는 클라이언트가 데이터 채널 연결을 수신 대기하는 역할을 한다. 클라이언트는 제어 채널을 통해 서버에 연결한 후, 자신의 IP 주소와 임의의 포트 번호를 서버에 알린다(PORT 명령). 그러면 서버가 클라이언트가 지정한 IP와 포트로 데이터 채널 연결을 능동적으로 시작한다. 이 모드는 클라이언트 측 방화벽이 외부에서 들어오는 연결을 차단할 경우 문제가 발생할 수 있다.
모드 | 데이터 채널 연결 시작 주체 | 클라이언트 포트 | 서버 포트 | 일반적인 문제점 |
|---|---|---|---|---|
능동 모드(Active) | 서버 | 임의의 높은 번호 포트(>1023) | 20 | 클라이언트 측 방화벽 차단 |
수동 모드(Passive) | 클라이언트 | 임의의 높은 번호 포트 | 임의의 높은 번호 포트 | 서버 측 방화벽 차단 |
반면 수동 모드에서는 서버가 데이터 채널 연결을 수신 대기한다. 클라이언트가 PASV 명령을 보내면, 서버는 자신의 IP 주소와 열어둔 임의의 포트 번호를 클라이언트에 응답한다. 이후 클라이언트가 그 IP와 포트로 데이터 채널 연결을 시작한다. 이 방식은 클라이언트 측에서 외부 연결을 허용하지 않는 방화벽 환경에서 유리하지만, 서버 측 방화벽이 많은 포트를 열어야 할 수 있다는 단점이 있다. 현대의 대부분의 FTP 클라이언트는 기본적으로 수동 모드를 사용한다.
FTP는 파일 전송을 위해 두 개의 별도 TCP 연결, 즉 명령 채널과 데이터 채널을 사용하는 것이 가장 큰 특징이다. 이 이중 채널 구조는 제어 정보와 실제 데이터를 분리하여 효율성을 높인다.
명령 채널(Control Channel)은 클라이언트와 서버 간의 대화를 담당한다. 이 채널은 보통 서버의 21번 포트를 통해 연결되며, 사용자 인증, 디렉터리 변경, 파일 목록 요청, 파일 전송 시작/중지 명령 등의 제어 명령어가 오간다. 모든 통신은 일반적으로 사람이 읽을 수 있는 텍스트 형식의 FTP 명령어로 이루어진다. 예를 들어, USER로 사용자 이름을 보내고, LIST로 파일 목록을 요청한다. 이 채널은 전송 세션이 유지되는 동안 계속 열려 있다.
반면, 데이터 채널(Data Channel)은 실제 파일 내용이나 디렉터리 목록 데이터를 전송하는 데만 사용된다. 이 채널은 파일 전송이나 목록 조회와 같은 데이터 작업이 필요할 때마다 임시로 생성되었다가 작업이 끝나면 바로 닫힌다. 데이터 채널의 생성 방식은 연결 모드 (Active vs Passive)에 따라 달라진다. 데이터 채널은 명령 채널과는 별개의 포트를 사용하며, 이 분리는 특히 대용량 파일을 전송하는 동안에도 제어 명령을 계속 주고받을 수 있게 해 준다.
채널 유형 | 기본 포트 | 용도 | 연결 지속성 |
|---|---|---|---|
명령 채널 | 21 (서버) | 제어 명령 전송 (로그인, 명령어) | 세션 동안 지속 |
데이터 채널 | 동적 할당 (임시) | 실제 파일/데이터 전송 | 파일 전송 시에만 임시 생성 |
이러한 분리는 FTP가 초기 설계 당시 제한된 네트워크 자원 하에서도 안정적인 제어와 효율적인 데이터 전송을 가능하게 한 핵심 구조였다. 그러나 데이터 채널이 동적으로 포트를 열기 때문에 방화벽이나 NAT 환경에서 문제를 일으키는 주요 원인이 되기도 했다.

FTP 프로토콜은 클라이언트가 서버에 명령을 보내고 응답을 받는 일련의 텍스트 기반 명령어 집합으로 구성된다. 기본적인 세션은 사용자 인증, 파일 시스템 탐색, 파일 전송 및 세션 관리를 위한 명령어들로 운영된다.
주요 명령어는 다음과 같이 분류된다.
* 접속 및 인증 명령어: USER(사용자명 전송), PASS(비밀번호 전송), QUIT(연결 종료)가 있다.
* 디렉토리 탐색 명령어: PWD(현재 작업 디렉토리 출력), CWD(작업 디렉토리 변경), LIST(디렉토리 내용 목록 요청)가 대표적이다.
* 파일 전송 명령어: 파일 전송 모드를 지정하는 TYPE(A=ASCII, I=Binary)과, 실제 전송을 수행하는 RETR(서버→클라이언트 파일 다운로드), STOR(클라이언트→서버 파일 업로드)가 핵심이다.
* 기타 제어 명령어: 전송 모드를 설정하는 MODE(S=Stream, B=Block, C=Compressed)와 데이터 포트를 지정하는 PORT(능동 모드) 또는 PASV(수동 모드)가 있다.
서버는 세 자리 숫자 코드와 설명 텍스트로 구성된 응답을 클라이언트에 반환한다. 응답 코드의 첫 번째 숫자는 응답의 유형을 나타낸다.
첫 번째 숫자 | 의미 |
|---|---|
1xx | 긍정적인 예비 응답 (동작이 시작됨) |
2xx | 긍정적인 완료 응답 (동작 성공) |
3xx | 긍정적인 중간 응답 (추가 정보 필요) |
4xx | 일시적 부정 응답 (동작 실패, 재시도 가능) |
5xx | 영구적 부정 응답 (동작 불가, 명령 오류) |
예를 들어, 220은 서비스 준비 완료, 331은 사용자명은 OK, 비밀번호 필요, 226은 전송 완료 및 데이터 연결 닫힘을 의미한다. 이 명령어-응답 체계를 통해 FTP는 제어 채널을 통한 대화형 세션 관리를 가능하게 한다.

FTP 통신은 FTP 클라이언트와 FTP 서버라는 두 주체 간의 상호작용으로 이루어진다. 클라이언트는 파일 전송을 요청하는 사용자 측 프로그램이며, 서버는 이러한 요청을 수락하고 처리하여 파일을 제공하거나 저장하는 역할을 한다. 서버는 일반적으로 21번 포트를 통해 클라이언트의 연결 요청을 대기(listen)한다. 클라이언트가 서버에 접속하면, 사용자는 인증을 거친 후 서버의 파일 시스템을 탐색하고 파일을 업로드 또는 다운로드할 수 있다.
대표적인 FTP 클라이언트 소프트웨어에는 다음과 같은 것들이 있다. 이들은 주로 GUI 기반으로 사용자 친화적인 인터페이스를 제공한다.
소프트웨어명 | 주요 특징 |
|---|---|
무료 오픈 소스, 크로스 플랫폼 지원, 사이트 관리자 기능 제공 | |
macOS 및 Windows 지원, 다양한 클라우드 스토리지 프로토콜도 함께 지원 | |
상용 소프트웨어, 고급 스크립팅 및 자동화 기능 제공 |
FTP 서버를 구축하기 위해서는 vsftpd, ProFTPD, FileZilla Server와 같은 서버 소프트웨어를 설치하고 설정해야 한다. 설정 과정에서는 사용자 계정 생성, 접근 권한 설정, 익명 접속(anonymous FTP) 허용 여부, 사용 가능한 명령어 제한, 그리고 액티브 모드와 패시브 모드 관련 포트 범위 지정 등이 주요하게 다루어진다. 특히 방화벽이 있는 환경에서는 데이터 채널 연결을 위해 추가 포트를 열어야 할 필요가 있다[2].
FTP 클라이언트는 사용자가 FTP 서버에 접속하여 파일을 업로드하거나 다운로드할 수 있게 해주는 응용 프로그램이다. 초기에는 명령 줄 인터페이스(CLI) 기반의 클라이언트가 주로 사용되었으나, 그래픽 사용자 인터페이스(GUI)를 갖춘 클라이언트의 등장으로 접근성이 크게 향상되었다.
대표적인 GUI FTP 클라이언트로는 FileZilla가 있다. FileZilla는 무료 오픈 소스 소프트웨어로, Windows, macOS, Linux를 모두 지원하며 직관적인 이중 창 인터페이스와 강력한 기능을 제공한다. 비슷한 기능의 상용 소프트웨어로는 WinSCP(Windows 전용)와 Cyberduck(macOS 및 Windows)이 널리 알려져 있다. WinSCP는 SFTP와 SCP 프로토콜도 함께 지원하는 것이 특징이며, Cyberduck은 다양한 클라우드 스토리지 서비스 연결 기능도 포함한다.
명령줄 기반 클라이언트는 스크립트 작성과 자동화에 유리하다. 유닉스 계열 운영체제(리눅스, macOS)에는 기본적으로 ftp 명령어가 포함되어 있으며, 더욱 향상된 기능을 가진 lftp도 널리 사용된다. Windows 운영체제에도 ftp.exe 명령어가 내장되어 있다. 또한, 현대적인 통합 개발 환경(IDE)이나 텍스트 편집기(예: Visual Studio Code), 심지어 일반적인 웹 브라우저도 기본적인 FTP 클라이언트 기능을 수행할 수 있다.
FTP 서버를 구축하는 과정은 사용하는 운영 체제와 선택한 서버 소프트웨어에 따라 다르지만, 일반적인 단계는 유사하다. 가장 먼저 FTP 서버 소프트웨어를 설치해야 한다. 리눅스 계열 시스템에서는 vsftpd, ProFTPD, Pure-FTPd 등이 널리 사용되며, 마이크로소프트 윈도우 환경에서는 FileZilla Server나 IIS의 FTP 서비스 기능을 활용할 수 있다.
설치 후에는 서버의 주요 설정 파일을 편집하여 기본 동작을 구성한다. 일반적으로 설정해야 할 항목은 다음과 같다.
설정 항목 | 설명 |
|---|---|
익명 접속(Anonymous) 허용 여부 | 익명 사용자의 접속 및 작업 권한을 제어한다. |
로컬 사용자 접속 | 시스템 계정을 가진 사용자의 FTP 접속 허용 여부를 설정한다. |
루트 디렉토리 제한 | 사용자가 접근할 수 있는 최상위 디렉토리를 제한하여 시스템 파일 보호를 강화한다. |
연결 포트 | 기본 명령 채널 포트(21)와 패시브 모드 사용 시의 데이터 포트 범위를 지정한다. |
전송 로그 | 파일 업로드 및 다운로드 내역을 기록할지 여부를 설정한다. |
서버 구축 시 보안 설정이 매우 중요하다. 불필요한 익명 접속은 비활성화하고, 강력한 암호 정책을 적용하며, 정기적으로 소프트웨어를 업데이트하여 알려진 취약점을 패치해야 한다. 또한 방화벽을 구성하여 FTP 서버 포트(기본 21번)와 패시브 모드에서 사용하는 데이터 포트 범위에 대한 접근을 제어하는 것이 필수적이다. 최종적으로 설정이 완료되면 서버 소프트웨어를 시작(Start) 또는 재시작(Restart)하여 변경 사항을 적용하고, FTP 클라이언트를 이용해 실제로 접속과 파일 전송이 정상적으로 이루어지는지 테스트한다.

FTP는 설계 상 평문으로 데이터와 인증 정보를 전송한다. 이는 네트워크 상에서 패킷 스니핑을 통해 사용자명, 비밀번호, 전송 중인 파일 내용이 쉽게 노출될 수 있음을 의미한다. 또한, 서버와 클라이언트 간의 연결을 인증하지 않아 중간자 공격에 취약한 구조적 문제를 가지고 있다. 이러한 보안 취약점으로 인해, 민감한 데이터 전송에는 FTP를 사용하지 않는 것이 권장되며, 이를 보완하기 위한 보안 프로토콜이 개발되었다.
가장 일반적인 보안 대체 기술은 FTPS와 SFTP이다. FTPS는 기존 FTP 프로토콜에 SSL/TLS 암호화 계층을 추가한 방식으로, 명령 채널과 데이터 채널 모두를 암호화할 수 있다. 반면, SFTP는 FTP와 이름은 유사하지만 완전히 다른 프로토콜이다. SFTP는 SSH 프로토콜을 기반으로 하여 파일 접근, 전송, 관리를 하나의 암호화된 채널을 통해 수행한다.
프로토콜 | 기반 기술 | 기본 포트 | 주요 특징 |
|---|---|---|---|
FTP | TCP (평문) | 21(명령), 20(데이터) | 평문 전송, 보안 취약 |
FTPS | FTP + SSL/TLS | 990(암호화 제어), 989(데이터) | 명령/데이터 채널 암호화, FTP 호환성 유지 |
SFTP | SSH | 22 | 단일 암호화 채널, FTP와 프로토콜 호환 없음 |
이러한 보안 프로토콜 도입에도 불구하고, FTP는 여전히 내부 네트워크나 공개적인 대용량 파일 배포와 같이 보안이 중요하지 않은 특정 환경에서 사용된다. 그러나 인터넷을 통한 일반적인 파일 전송에는 보안이 강화된 FTPS나 SFTP, 또는 웹 기반 파일 전송 방식을 사용하는 것이 표준이 되었다.
FTPS는 FTP 프로토콜에 SSL/TLS 암호화 계층을 추가하여 보안을 강화한 프로토콜이다. 기존 FTP의 가장 큰 취약점인 평문 데이터 전송 문제를 해결하기 위해 개발되었다. FTPS는 명령 채널과 데이터 채널 모두에 암호화를 적용할 수 있으며, 서버와 클라이언트 간의 인증, 데이터 무결성, 기밀성을 보장한다. 이는 사용자 인증 정보와 전송되는 파일 내용이 네트워크 상에서 가로채는 것을 방지한다.
FTPS는 주로 두 가지 모드로 동작한다. 첫째는 '명시적 FTPS'라고 불리는 방식으로, 클라이언트가 기본 포트(21)로 연결한 후 AUTH TLS 또는 AUTH SSL 명령을 통해 암호화 연결을 협상한다. 둘째는 '암시적 FTPS' 방식으로, 이는 연결 시작부터 별도의 포트(기본 990)를 사용하여 암호화된 채널을 수립한다. 암시적 방식은 호환성 문제로 인해 현재는 명시적 방식이 더 널리 사용된다[3].
FTPS 구현은 서버 측에서 공개 키 인증서를 필요로 한다. 클라이언트는 서버의 인증서를 검증하여 연결 상대방의 신원을 확인할 수 있다. 또한, FTPS는 데이터 채널 암호화 방식을 선택할 수 있어, 보안 요구사항에 따라 명령 채널만 암호화하거나 데이터 채널까지 모두 암호화하는 정책을 설정할 수 있다. 주요 FTP 클라이언트 및 서버 소프트웨어 대부분은 FTPS 기능을 지원한다.
특징 | 설명 |
|---|---|
암호화 프로토콜 | |
주요 목적 | FTP 연결의 기밀성과 무결성 보장 |
표준 포트 (명시적) | 제어: 21, 데이터: 동적 |
인증 방식 | 서버 측 공개 키 인증서 (클라이언트 인증서 선택적) |
대표적 명령 |
|
FTPS는 기존 FTP 인프라를 유지하면서 보안을 강화해야 하는 환경에서 여전히 사용된다. 특히 금융이나 의료 분야와 같이 규제 준수가 필요한 내부 시스템 간의 파일 교환에 활용되기도 한다. 그러나 설정의 복잡성과 방화벽 통과 시의 어려움, 그리고 SFTP에 비해 덜 통합된 보안 모델이라는 비판도 존재한다.
SFTP는 SSH (Secure Shell) 프로토콜을 통해 파일을 안전하게 전송하기 위한 프로토콜이다. FTP와 이름이 유사하지만, 기술적으로는 완전히 다른 별개의 프로토콜이다. SFTP는 SSH의 보안 연결 위에서 파일 접근, 전송, 관리를 위한 단일 채널을 사용한다. 이는 FTPS와 달리 별도의 데이터 채널을 열 필요가 없으며, 기본적으로 SSH의 강력한 인증 및 암호화 메커니즘을 상속받는다.
SFTP의 주요 특징은 다음과 같다.
* 보안성: 모든 트래픽(명령과 데이터 모두)이 SSH 터널을 통해 암호화되어 전송된다. 이는 사용자 인증 정보와 파일 내용이 네트워크 상에서 노출되는 것을 방지한다.
* 방화벽 친화성: 표준 SSH 포트(22번) 하나만 사용하므로, 복잡한 방화벽 설정이 필요하지 않다. 이는 FTP의 능동(Active) 모드에서 발생하는 방화벽 문제를 근본적으로 해결한다.
* 기능 통합: 단순한 파일 전송을 넘어 파일 조회, 삭제, 권한 변경, 심볼릭 링크 생성 등 원격 파일 시스템 관리에 가까운 다양한 명령을 지원한다.
SFTP는 기술적 구현과 보안 측면에서 FTPS와 자주 비교된다. 다음 표는 주요 차이점을 보여준다.
특징 | SFTP (SSH File Transfer Protocol) | FTPS (FTP over SSL/TLS) |
|---|---|---|
프로토콜 기반 | SSH (Secure Shell) 프로토콜의 확장 | |
사용 포트 | 기본 22번 (SSH 포트) | 명령 채널: 21번, 데이터 채널: 동적 또는 989/990번(암호화된 데이터) |
연결 방식 | 단일 암호화된 연결 내에서 명령과 데이터 전송 | 별도의 명령 채널과 데이터 채널(각각 암호화 가능) |
방화벽 통과 | 비교적 용이 (단일 포트) | 수동(Passive) 모드 설정 시 복잡할 수 있음 |
인증 방식 | SSH 키 기반 인증, 호스트 키 검증 등 | SSL/TLS 인증서, FTP 사용자 인증 |
현대 시스템, 특히 유닉스 및 리눅스 서버 환경에서는 보안과 편의성으로 인해 SFTP가 파일 전송의 사실상 표준으로 널리 채택되었다. 많은 FTP 클라이언트 소프트웨어도 SFTP 연결을 지원하며, 클라우드 스토리지 서비스와 서버 관리 도구에서도 보안 파일 전송 수단으로 SFTP를 제공한다.

FTP는 초기 인터넷의 핵심 파일 전송 수단으로, 단순한 구조와 광범위한 호환성 덕분에 오랫동안 사용되었다. 특히 웹사이트 호스팅 분야에서 서버에 HTML, CSS, 이미지 파일 등을 업로드하는 표준 방법으로 자리 잡았다. 또한 대용량 파일 배포, 소프트웨어 업데이트 파일 제공, 기업 내부의 배치 작업을 통한 정기적 데이터 교환 등 특정 분야에서 여전히 활용된다. 이는 거의 모든 운영 체제에 기본 명령줄 도구가 포함되어 있고, 설정이 비교적 간단하며, 수많은 레거시 시스템과의 호환성을 유지해야 하는 환경에서 그 가치를 인정받기 때문이다.
그러나 FTP는 설계상의 근본적인 보안 결함으로 인해 현대 네트워크 환경에서 심각한 한계를 보인다. 가장 큰 문제는 평문 통신을 사용한다는 점이다. 사용자 이름, 비밀번호, 전송되는 모든 데이터가 암호화되지 않은 채 네트워크를 통해 전송되므로, 패킷 스니핑 공격에 취약하다. 또한, 복잡한 방화벽과 NAT 환경에서 연결 설정이 어려울 수 있으며, 파일 전송 중 재개 기능이 표준화되지 않아 대용량 파일 전송 시 불편함이 있다.
이러한 보안 및 기능적 한계로 인해 FTP는 점차 더 안전한 프로토콜로 대체되고 있다. FTPS는 FTP에 SSL/TLS 암호화를 추가한 방식이며, SFTP는 SSH 프로토콜의 일부로 설계되어 강력한 암호화와 인증을 제공한다. HTTP 기반의 파일 공유 서비스와 클라우드 스토리지 서비스도 사용 편의성과 접근성 측면에서 FTP의 사용 영역을 크게 잠식했다. 결과적으로, 오늘날 FTP는 공개적이고 비중요한 데이터의 익명 전송이나, 내부적으로 격리된 보안 네트워크 내에서의 사용 등 제한된 범위에서만 권장된다.
