Home FTP Active vs Passive
Post
Cancel

FTP Active vs Passive

FTP(File Transfer Protocol)란

FTP는 하나의 호스트에서 다른 호스트로 파일을 복사 하기위해 TCP/IP에 의해 제공되는 표준 기능이다.

FTP 호스트 간에 두개의 연결을 설정한다는 점에서 다른 클라이언트 서버 응용들과 다르다. 이러한 제어와 데이터 전송의 분리는 FTP를 좀 더 효율적으로 사용할 수 있다.

클라이언트와 서버가 Control Session을 맺고 dir, get, put등의 명령을 수행하면 실제 데이터를 전송할 Data Session을 생성한다.

이 때 Active ModePassive Mode냐에 따라 통신 구조가 달라진다.



Active 모드

image

  1. FTP Client에서는 FTP Server의 21번 포트로 인증 요청을 한다. 그리고 Client 자신의 DATA 전송 포트번호(2223)를 패킷에 포함하여 서버에 전송한다.
  2. FTP Server에서는 FTP Client에게 OK 응답을 보낸다.
  3. FTP Server에서 생성한 20번 포트에서 -> Client의 2223포트로 데이터 채널 연결을 요청한다.
  4. FTP Client는 Server에게 OK 응답을 보내고, 이로서 데이터 채널 연결까지 완료한다.
  • Client PC에서 사용되는 포트번호 222, 2223은 PC에서 생성된 포트번호입니다.
  • Client에서 생성되는 포트번호 “1024이상” 중에서 사용 가능한 임의의 포트로 사용됩니다.
  • FTP의 21/tcp, 20/tcp는 사용자가 마음대로 설정 가능합니다.



Passive Mode

image

  1. FTP Client에서는 FTP Server의 21 포트로 인증 요청을 한다. 그리고 Client 자신이 연결하려는 서비스가 Passive Mode로 연결 할 것임을 알린다.
  2. FTP Server에서는 FTP Client에게 OK 응답을 보낸다. 그리고 FTP Server는 데이터 채널 포트번호가 1025라는 것을 Client에게 알려준다.
  3. FTP Client에서 생성한 2223번 포트에서 -> Server의 1025포트로 데이터채널 연결을 요청한다.
  4. FTP SErver는 Client에게 OK응답을 보내고, 이로서 데이터 채널 연결까지 완료한다.
  • Client PC에서 사용되는 포트번호 222, 2223은 PC에서 생성된 포트번호입니다.
  • Client에서 생성되는 포트번호 “1024이상” 중에서 사용 가능한 임의의 포트로 사용됩니다.
  • FTP의 21/tcp, 20/tcp는 사용자가 마음대로 설정 가능합니다.
  • Passive Mode에서는 데이터 채널 포트번호를 특별하게 지정하지 않을 경우, “1023 < x < 65536” 중에서 사용가능한 임의의 포트로 자동 사용된다.



방화벽 설정 주의

Active Mode

Active Mode에서는 데이터 채널 요청을 Server -> Client 방향으로 접속 한다.

그래서 Client PC에서 20번 포트가 차단되어 있을 경우 데이터 채널 연결이 불가능하다.

따라서 Server에서는 20번 포트가 OUTPUT 방향으로 허용, Client에서는 20번 포트가 INPUT 방향으로 허용 되어야 한다.


Passive Mode

Passive Mode는 데이터 채널 요청을 Client -> Server 방향으로 접속 한다.

그래서 Server에서 데이터채널 포트가 차단 되어있을 경우에는 데이터 채널 연결이 불가능하다.

별도로 지정하지 않을 경우 Server에서 1023 < x < 65535 포트들을 INPUT방향으로 허용되어야 한다.

Client PC에서는 1024~65534 범위를 모두 OUTPUT 방향으로 허용되어야 한다.

언어별 Default 모드

  • C# : Passive Mode
  • Java : Active Mode
  • Python : Passive Mode

참조

This post is licensed under CC BY 4.0 by the author.