1. FTP (File Transfer Protocol)
ㅇ 로컬 유닉스 시스템과 원격 유닉스 시스템 사이에서 화일을 복사하는 프로토콜
ㅇ [기타참고용어] : Anonymous FTP, TFTP
2. FTP의 특징
ㅇ 인터넷 프로토콜 초기부터 사용되기 시작
- 사용자 인증, 데이타의 전환, 디렉토리 검색 등과 같은 많은 기능 및 선택사항을 제공
ㅇ 동작 구조
- 클라이언트/서버 관계를 이루며 동작
ㅇ 표준 : RFC 959 에 그 자세한 내용이 기술되어있음
3. FTP의 동작 구분
ㅇ 2개의 TCP 연결을 생성하며, 서로다른 용도로 사용
* (하나는 명령어의 전달용 : FTP-CONTROL, 다른 하나는 데이터의 전송용 : FTP-DATA)
- ① 제어 연결 : 전체 FTP 세션 동안 상시 연결 유지 (ControlChannel, FTP-CONTROL)
. 명령과 응답 방식으로 동작
. 각 한 줄로 이루어지며, 그 끝은 `CR+LF`로 끝남
. 제어정보 전달용 => 포트 번호 : TCP 21번 (반이중 방식 연결)
- ② 데이터 연결 : 파일 전송시 마다, 연결 설정되고 바로 폐쇄됨 (DataChannel, FTP-DATA)
. 전송되는 데이터 형태가 `파일 종류`,`데이터 구조`,`전송 모드` 마다 달라짐
.. 파일 종류 : ASCII 파일 형태, EBCDIC 파일 형태, 2진 파일 형태(비트 흐름)
.. 데이터 구분 : 연속적인 바이트 구분, 레코드 구분, 페이지 구분
.. 전송 모드 : 스트림 모드, 블록 모드, 압축 모드
(한편, MS 윈도우용 FTP 서버 버젼은 스트림 모드 만 지원)
. 이들은 클라이언트측에서 정하게 됨
. 데이터 전달용 => 포트 번호 : TCP 20번 (전이중 방식 연결)
ㅇ 2개의 연결 모드 구분
- Active 모드 : (서버쪽에서 클라이언트로 접속 : 클라이언트가 능동적 포트 결정)
. 클라이언트가 1024번 이상의 임시 포트 N(ControlChannel)으로,
. 서버의 21번 포트로의 제어 연결 접속하면,
. 서버는 자심의 20번 포트(DataChannel)로부터 클라이언트의 N+1 포트로의 데이터 연결 구축
. (클라이언트측에서 PORT 명령 전송)
- Passive 모드 : (클라이언트쪽에서 서버로 접속 : 클라이언트에게 수동적 포트로 주어짐)
. 클라이언트가 1024번 이상의 임시 포트 N(ControlChannel)으로,
. 서버의 21번 포트에 제어 연결 접속하면,
. 서버가 1024번 이상의 정해진 포트 번호(DataChannel)를 클라이언트에 알려주고,
. 클라이언트는 N+1 포트(DataChannel)로부터 서버가 알려준 해당 포트로의 데이터 연결
. (클라이언트측에서 PASV 명령 전송)
4. FTP의 명령어 구분 (제어 연결에서)
ㅇ 접근제어 명령어
- 例) USER, PASS, ACCT, REIN, QUIT, ABOR
ㅇ 파일 관리 명령어
- 例) CWD, CDUP, DELE, LIST, NLIST, MKD, PWD, RMD, RNFR, RNTO, SMNT
ㅇ 전송 데이터 형태 정의 명령어
- 例) TYPE(A, E,I, N, T), STRU(F, R, P), MODE(S, B, C)
ㅇ 포트 정의 명령어
- 例) PORT, PASV
ㅇ 파일 전송제어 명령어
- 例) RETR(파일 읽기 : 서버 → 클라이언트), STOR(파일 저장 : 클라이언트 → 서버),
APPE, STOU, ALLO, REST, STAT
ㅇ 기타 부가적인 명령어
- 例) HELP, NOOP, SITE, SYST
※ [참고_웹] ☞ FTP: File Transfer Protocol (FTP 실제 동작 이해에 도움)
5. FTP의 보안 강화
ㅇ FTPS (FTP over SSL/TLS secured channel)
- 응용계층 FTP와 전송계층 TCP 사이에 보안 소켓계층(SSL)을 추가하여 사용하는 형태
. SSH 보안 채널 위에서 동작하는 구형 FTP 프로토콜
. FTPS 포트 : 990 (ControlChannel), 989 (DataChannel)
ㅇ SFTP (SSH File Transfer Protocol)
- SSH 프로토콜 일부인 SSH 응용요소로써, 쌍방향 파일 전송을 위한 인터페이스 명령어
세트를 사용하는 형태
. FTP와는 완전히 다르고, 독립된 파일 전송 어플리케이션로써 SFTP
. SFTP 포트 : SSH가 22번 사용