FTP(File Transfer Protocol)
FTP(File Transfer Protocol)
- 파일 공유를 목적으로 개발 됐다.
- 네트워크 상에서 파일을 전송하기 위한 TCP 기반의 프로토콜
- 1971년에 최초로 공개 됐다.
- 파일 전송 시 데이터의 손실을 피하기 위해 TCP를 통해 전송 된다.
- 사용자 인증과 명령 전달을 위한 제어 연결과파일 전송을 위한 DATA 연결이 분리되어 있다.
- 제어 연결용 Port: TCP 21번 , Data 전송용 Port : TCP 20번 or Random Port
익명(anonymous) FTP
- 계정(ID/Password)이 없는 사용자가 서버 자원에 한정된 접근을 할 수 있는 권한을 제공한다.
- 일반적으로 공유해야 하는 정보공유 시 사용된다.
- 고객 지원, 파일 배포 등의 위한 목적으로 사용된다.
FTP 동작 방식
FTP 제어 연결(Control Connection)
제어 연결
- FTP 세션이 연결될 때 생성되는 TCP연결
- FTP 세션이 유지되는 동안 계속 연결 상태를 유지 한다.
- FTP 명령과 응답과 같은 제어 정보를 전달
- PI(Protocol Interpreter, 프로토콜 해석기)가 제어 연결을 관리하고 명령을 처리 한다.
- 허용된 사용자만 서버에 접근하도록 통제 한다. -> 자원 선별
동작 순서
- Client -> 서버로 TCP 연결 요청
- Server -> 클라이언트의 요청을 받고 220 “Ready” 응답을 전달
- Client -> 서버의 응답을 받고 사용자 명(USER) 전달
- Server -> 사용자 명을 전달 받고 331 “Need Password” 응답을 전달
- Client -> 서버의 응답을 받고 비밀번호(PASS) 전달
- Server -> 비밀번호를 전달 받고 인증 후 성공하면 230 “Greeting(환영 메시지)” 전달
- Client -> 서버의 응답을 받으면 제얻연결 수립 완료
데이터 연결
- 서버와 클라이언트칸 공유되는 데이터가 전달될 떄 마다 따로 생성되는 TCP연결
- 실제 파일을 보내고 받는 작업을 처리한다.
- DTP(Data Transfer Process, 데이터 전송 프로세스)가 실제 데이터를 전달하는 동작을 처리 한다.
- DTP 사이에서 연결을 수립 한다.
- 서버의 디렉터리 목록 출력 등의 데이터 전송에도 데이터 연결이 필요한다.
- 연결 방식
- ACTIVE 방식
- 클라이언트에서 데이터 전송port를 지정하여 서버에게 전달
- 서버에서 데이터 연결을 시도 한다.
- 클라이언트 측에서 방화벽이 동작 중이면 서버가 시도하는 데이터 연결 요청이 차단될 수 있다.
- PASSIVE 방식
- 서버에서 데이터 연결 port를 지정하여 클라이언트에게 전달
- 클라이언트에서 데이터 연결을 시도 한다.
- 연결 방식은 Client 측에서 결정한다.
Active Mode
- Client엣 Server로 FTP 제어 연결 요청
- Client에서 제어 연결을 통해 자신의 Data 전송 port(Random Port)를 Server 측에 알려준다.(Port)
- Server에서 Client로 Data 전송 연결 요청
Passive Mode
- Client에서 제어 연결을 통해 Server 측에 Passive 연결 요청(PASV)
- Server에서 제어 연결을 통해 자신의 Data 전송 Port를 Client 측에 알려준다.
- Client에서 Server로 Data 전송 연결 요청
FTP DATA 전송
스트림 모드(Stream Mode)
- 특별한 구조 없이 단순한 바이트의 연속으로 데이터를 전송 한다.
- TCP의 신뢰성, 연결에 의존 한다.
- 특정 헤더를 가지지 않는다. -> 오버헤드가 적다(헤더 크기 = 0byte)
- 일반적으로 사용되는 전송 모드(기본 모드)
- 구현이 쉽고 호환성이 좋다.
- 파일의 내용과 상관없이 단순 바이트의 연속 -> 범용적이다.
블록 모드(Block Mode)
- 데이터를 블록단위로 나워서 개별적인 FTP 블록, 레코드로 캡슐화 하여 전송한느 방식
- 헤더 크기 = 3byte
- 전송된 데이터를 기록하고 중단된 전송을 감지하여 재전송하기 위한 알고리즘이 사용된다.
압축 모드(Compression Mode)
- Run-Length Encoding(런-랭스 부호화) 압축방식을 사용 한다.
FTP Protocol
FTP Request
FTP Response