FTP : File Transfer Protocol
- 파일을 주고 받기 위한 표준 프로토콜
- FTP는 제어 연결과 데이터 연결을 분리하여 사용하는 것이 특징이다.
- 기본적으로 TCP 21번 포트를 사용하여 제어 연결을 수행한다.
- 파일 전송을 위한 데이터 연결은 Active Mode와 Passive Mode에 따라 달라진다.
- 암호화를 사용하지 않고 평문으로 전송됨.
- 파일 전송 전 사용자 인증을 수행한다.
- 파일업로드, 다운로드 가능
- 디렉터리 목록 조회 가능 (SSH같은 원격 컴퓨터 조작은 아님)
- 익명접속 가능 (로그인 시 아이디를 anonymous로 입력.)
FTP의 데이터 전송 방식
- FTP는 제어 연결과 데이터 연결을 분리하여 사용한다.
- 제어 연결은 TCP 21번 포트를 사용하며, 사용자 인증, 디렉터리 조회, 파일 전송 요청 등의 명령을 전달한다.
- 실제 파일 전송은 별도의 데이터 연결을 통해 수행되며, 이 데이터 연결을 생성하는 방식에 따라 Active Mode와 Passive Mode로 구분된다.
Active Mode
서버가 클라이언트에게 데이터 연결을 생성하는 방식
[동작과정]

1. 클라이언트 → 서버(21번 포트)로 제어 연결 생성
2. 사용자 인증(Login)
3. 클라이언트가 PORT 명령을 통해 데이터 수신 포트 번호 전달
4. 서버 → 클라이언트 TCP 20번 포트로 데이터 연결 생성
5. 파일 전송
구조
Client FTP Server
│------ TCP 21 ------->│
│ │
│<----- TCP 20 --------│
│ │
특징
- 서버가 클라이언트에게 직접 연결을 시도한다.
- FTP의 전통적인 방식이다.
- 클라이언트가 NAT 또는 방화벽 뒤에 있는 경우 연결이 차단될 수 있다.
- 이러한 이유로 최근에는 잘 사용하지 않는다.
Passive Mode
클라이언트가 서버에게 데이터 연결을 생성하는 방식

동작과정
1. 클라이언트 → 서버(21번 포트) 제어 연결 생성
2. 사용자 인증(Login)
3. 클라이언트가 PASV 명령 전송
4. 서버가 데이터 포트 번호 제공
5. 클라이언트 → 서버 해당 포트로 데이터 연결 생성
6. 파일 전송
구조
Client FTP Server
│------ TCP 21 ------->│
│------ TCP xxxx ----->│
│ (서버의 임의포트) │
특징
- 클라이언트가 직접 데이터 연결을 생성한다.
- NAT 및 방화벽 환경에서 동작하기 쉽다.
- 현재 대부분의 FTP클라이언트가 기본적으로 사용하는 방식이다.
TFTP(Trivial FTP)
Trivial = 단순한 = 간소화된
- UDP 69번 포트 사용
- FTP보다 기능이 매우 단순함
- 로그인 기능 없음
- 디렉터리 조회 없음
- 디렉터리 이동 없음
- 파일 업로드, 다운로드만 가능
- 네트워크 장비 설정 백업이나 IOS업로드에 자주 사용됨.