0 / 4
액티브 모드(Active Mode)
클라이언트가 FTP 서버에서 파일을 내려받으려는 상황이다. FTP는 연결을 두 개 쓴다. 명령을 주고받는 제어 연결과 파일을 실어 나르는 데이터 연결이다. 액티브 모드에서는 서버가 클라이언트 쪽으로 데이터 연결을 건다.
데이터 연결을 거는 쪽: 서버
1 / 4
제어 연결 열기
클라이언트가 서버의 21번 포트로 먼저 연결해 로그인한다. 명령은 이 연결로 주고받으며 파일을 다 받을 때까지 열려 있다.
2 / 4
클라이언트가 자기 포트 알리기
클라이언트가 제어 연결로 서버에 PORT를 보낸다. PORT: 데이터를 받을 자기 포트(50001번)를 서버에 알리는 FTP 명령이다. 클라이언트는 그 포트를 열어 두고 서버가 오기를 기다린다.
3 / 4
서버가 데이터 연결 걸기
서버가 20번 포트에서 클라이언트의 50001번 포트로 연결을 건다. 클라이언트 쪽에서 보면 바깥에서 먼저 들어오는 연결이라서 방화벽이 막는 경우가 많다.
4 / 4
파일 전송
연결되면 서버가 이 데이터 연결로 파일 내용을 보낸다. 다 보내면 데이터 연결은 닫히고 제어 연결만 남는다.
1 / 4
제어 연결 열기
클라이언트가 서버의 21번 포트로 먼저 연결해 로그인한다. 명령은 이 연결로 주고받으며 파일을 다 받을 때까지 열려 있다.
2 / 4
서버가 데이터 포트 열고 알리기
클라이언트가 제어 연결로 서버에 PASV를 보낸다. PASV: 데이터 연결을 받을 포트를 열고 그 번호를 알려 달라는 FTP 명령이다. 서버는 비어 있는 포트(2024번)를 열고 번호를 답한 뒤 클라이언트가 오기를 기다린다.
3 / 4
클라이언트가 데이터 연결 걸기
클라이언트가 서버가 알려 준 2024번 포트로 연결을 건다. 클라이언트에서 바깥으로 나가는 연결이라 방화벽이 대체로 막지 않는다. 대신 서버는 데이터 포트로 쓸 번호 범위를 서버 쪽 방화벽에서 열어 둬야 한다.
4 / 4
파일 전송
연결되면 서버가 이 데이터 연결로 파일 내용을 보낸다. 연결을 건 쪽은 클라이언트지만 파일은 서버에서 클라이언트로 흐른다.