FTP 능동 대 수동

FTP(파일 전송 프로토콜)란

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

FTP 호스트 간에 두 개의 연결을 설정한다는 점에서 다른 클라이언트-서버 응용 프로그램과 다릅니다.

이러한 제어 및 데이터 전송의 분리를 통해 FTP를 보다 효율적으로 사용할 수 있습니다.

클라이언트와 서버가 제어 세션을 설정합니다.

dir, get, put등으로 실제 데이터를 전송하기 위한 Data Session이 생성된다.

이때 Active Mode무엇 Passive Mode위치에 따라 통신 구조가 다릅니다.

활성 모드


FTP 능동 대 수동 1

  1. FTP 클라이언트는 FTP 서버의 포트 21에 인증 요청을 합니다.

    그러면 클라이언트 자신의 DATA 전송 포트 번호(2223)가 패킷에 포함되어 서버로 전송된다.

  2. FTP 서버는 FTP 클라이언트에 OK 응답을 보냅니다.

  3. FTP 서버에 생성된 20번 포트에서 -> 클라이언트의 2223번 포트로 데이터 채널 연결을 요청한다.

  4. FTP 클라이언트는 데이터 채널 연결을 완료하는 서버에 OK 응답을 보냅니다.

  • 클라이언트 PC에서 사용하는 포트 번호 222, 2223은 PC에서 생성된 포트 번호입니다.

  • 클라이언트에서 생성한 “1024 이상” 포트 번호 중 사용할 수 있는 랜덤 포트로 사용합니다.

  • FTP의 21/tcp와 20/tcp는 사용자가 자유롭게 설정할 수 있습니다.

패시브 모드


FTP 능동 대 수동 2

  1. FTP 클라이언트는 FTP 서버의 포트 21에 인증 요청을 합니다.

    그리고 클라이언트는 연결하려는 서비스가 수동 모드로 연결될 것임을 알립니다.

  2. FTP 서버는 FTP 클라이언트에 OK 응답을 보냅니다.

    그리고 FTP 서버는 클라이언트에게 데이터 채널 포트 번호가 1025임을 알려줍니다.

  3. FTP 클라이언트에서 생성한 2223번 포트에서 -> 서버의 1025번 포트로 데이터 채널 연결을 요청합니다.

  4. FTP 서버는 클라이언트에 OK 응답을 보내 데이터 채널 연결을 완료합니다.

  • 클라이언트 PC에서 사용하는 포트 번호 222, 2223은 PC에서 생성된 포트 번호입니다.

  • 클라이언트에서 생성한 “1024 이상” 포트 번호 중 사용할 수 있는 랜덤 포트로 사용합니다.

  • FTP의 21/tcp와 20/tcp는 사용자가 자유롭게 설정할 수 있습니다.

  • 패시브 모드에서 데이터 채널 포트 번호를 특별히 지정하지 않으면 “1023 < x < 65536" 중 사용 가능한 포트가 자동으로 사용됩니다.

방화벽 설정에 주의

활성 모드

활성 모드에서 데이터 채널 요청은 Server -> Client 방향으로 연결

따라서 클라이언트 PC에서 20번 포트가 막히면 데이터 채널 연결이 불가능합니다.

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


패시브 모드

패시브 모드는 데이터 채널 요청을 전송합니다.

Client -> Server 방향으로 연결

따라서 서버에서 데이터 채널 포트가 차단되어 있으면 데이터 채널 연결이 불가능합니다.

지정하지 않으면 서버 1023 < x < 65535 포트는 INPUT 방향으로 허용되어야 합니다.

클라이언트 PC에서는 OUTPUT 방향으로 1024~65534 범위를 모두 허용해야 합니다.

언어별 기본 모드

  • 씨# : 패시브 모드
  • 자바 : Active Mode
  • 파이썬 : 패시브 모드

참조