FTP(파일 전송 프로토콜)란
FTP는 한 호스트에서 다른 호스트로 파일을 복사하기 위해 TCP/IP에서 제공하는 표준 기능입니다.
FTP 호스트 간에 두 개의 연결을 설정한다는 점에서 다른 클라이언트-서버 응용 프로그램과 다릅니다.
이러한 제어 및 데이터 전송의 분리를 통해 FTP를 보다 효율적으로 사용할 수 있습니다.
클라이언트와 서버가 제어 세션을 설정합니다.
dir, get, put
등으로 실제 데이터를 전송하기 위한 Data Session이 생성된다.
이때 Active Mode
무엇 Passive Mode
위치에 따라 통신 구조가 다릅니다.
활성 모드
- FTP 클라이언트는 FTP 서버의 포트 21에 인증 요청을 합니다.
그러면 클라이언트 자신의 DATA 전송 포트 번호(2223)가 패킷에 포함되어 서버로 전송된다. - FTP 서버는 FTP 클라이언트에 OK 응답을 보냅니다.
- FTP 서버에 생성된 20번 포트에서 -> 클라이언트의 2223번 포트로 데이터 채널 연결을 요청한다.
- FTP 클라이언트는 데이터 채널 연결을 완료하는 서버에 OK 응답을 보냅니다.
- 클라이언트 PC에서 사용하는 포트 번호 222, 2223은 PC에서 생성된 포트 번호입니다.
- 클라이언트에서 생성한 “1024 이상” 포트 번호 중 사용할 수 있는 랜덤 포트로 사용합니다.
- FTP의 21/tcp와 20/tcp는 사용자가 자유롭게 설정할 수 있습니다.
패시브 모드
- FTP 클라이언트는 FTP 서버의 포트 21에 인증 요청을 합니다.
그리고 클라이언트는 연결하려는 서비스가 수동 모드로 연결될 것임을 알립니다. - FTP 서버는 FTP 클라이언트에 OK 응답을 보냅니다.
그리고 FTP 서버는 클라이언트에게 데이터 채널 포트 번호가 1025임을 알려줍니다. - FTP 클라이언트에서 생성한 2223번 포트에서 -> 서버의 1025번 포트로 데이터 채널 연결을 요청합니다.
- 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
- 파이썬 : 패시브 모드