FTP 정의

 

FTP란 File Transfer Protocol의 약자로써 네트워크 상에서 파일을 다른 시스템으로 전달하는 프로토콜입니다.

- FTP 제어 연결 포트 번호 : 21
- FTP 전송 연결 포트 번호 : 20

 

FTP 구조

 

1) 사용자 인터페이스

 

사용자가 원하는 서비스에 대해 명령을 내릴 수 있는 접속 인터페이스

 

2) 사용자 프로토콜 인터프리터

 

자신의 FTP 프로세스에서 할당된 포트를 통해 서버 프로세스로 제어 연결을 초기화하며, FTP 명령을 전달하고 수신한 응답 메시지를 해석

 

3) 사용자 데이터 전송 기능

 

데이터 연결 설정 및 데이터 송수신 기능 수행

 

4) 서버 프로토콜 인터프리터

 

사용자의 FTP 제어 명령을 처리하기 위해 해당 포트를 열고 대기 상태에서 머무르며 사용자 프로토콜 인터프리터로부터 표준 FTP 명령을 입력 받아 응답 메시지에 전달

 

5) 서버 데이터 전송 기능

 

데이터 연결 설정 및 데이터 송수신 기능

 

FTP 제어 연결

 

* 전송 시 제어 명령을 전달

 

* FTP 제어 연결 시 포트 번호는 21번 사용

 

* 데이터 연결 관련 제어 정보 : 데이터 전송 포트, 전송 모드, 데이터 표현 타입

 

* 파일 관련 명령 : 파일 저장, 첨부, 삭제

 

FTP 전송 연결

 

* FTP 전송 연결 시 포트 번호는 20번 사용

 

* 데이터(파일) 전송을 위한 열결

 

FTP 제어 연결 설정

 

1) 서버는 21번 포트를 사용하여 연결을 받아들인 준비가 된 수동적 오픈 상태로 대기한다.

 

2) 클라이언트는 일시 사용 포트를 이용하여 서버의 대기 중인 포트 21번에 능동적 오픈한다.

 

- 수동적 오픈 : 연결 수락을 기다리면서 서비스 준비 상태로 자신의 포트를 여는 것
- 능동적 오픈 : 자신의 포트를 열어 서비스 요청을 먼저 하는 상태

 

3) 초기 연결 후 서버는 자식 프로세스를 생성 후 해당 프로세스에 일시 사용 포트를 할당하여 클라이언트의 서비스를 제공하며 다시 서버 프로세스는 21번 포트를 통해 다른 클라이언트 요청을 받아들일 준비

 

- FTP 서버는 왜 자식 프로세스를 통해 서비스를 제공할까?
21번 포트는 Well-Known로써 많은 클라이언트가 필요로 하기 때문에 자식 프로세스를 통해 서비스를 제공하여 원활한 서비스를 제공한다.

 

FTP 전송 연결 설정

 

1) 클라이언트 측에서 일시 사용 포트를 사용하여 수동적 오픈 상태 대기

 

2) 서버는 클라이언트의 데이터 전송 포트 번호를 수신 후 공인된 21번 포트 번호를 사용해서 클라이언트로 능동적 오픈

 

3) 초기 연결 시 서버 프로세스를 자식 프로세스 생성

 

4) 서버 프로세스는 자식 프로세스에 데이터 전송 서비스 제공 후 20번 포트를 통해 다른 클라이언트의 데이터 전송을 위한 연결 실행

 

데이터 연결 설정을 통한 통신

 

1) 데이터 타입

 

* ASCII TYPE : Text 파일 전송여용
* EDCDIC TYPE : Text 파일 전송용
* IMAGE TYPE : 컴파일된 프로그램과 같은 이진 파일 전송용
* LOCAL TYPE : 서로 다른 바이트 크기를 갖는 호스트들 간에 데이터 전송용
- TYPE 명령을 통해 변경

 

2) 데이터 구조

 

* 파일 구조 모드 : 하나의 파일이 연속적인 데이터 바이트의 흐름으로 구성

* 레코드 모드 : 레코드 단위, 텍스트 파일에서 사용

* 페이지 모드 : 불연속적인 파일 전송
- STRU 명령을 통해 변경

3) 전송 모드

 

* 스트림 모드 : FTP 데이터는 연속적인 바이트 스트림 형태로 TCP에 전달하며 TCP는 세그먼트 단위로 데이터를 분할 후 전송한다. 이때 단순한 바이트 스크림 시 End Of File로 파일의 끝을 제공

* 블록 모드 : FTP 데이터를 TCP를 통해 블록 단위로 전달

* 압축 모드 : 용량이 큰 데이터에 대해 압축하여 전달
- MODE 명령을 통해 변경

 

 

 

 


수정이 필요하거나 궁금한 점 있으시면 댓글 달아주세요. 글 읽어주셔서 감사합니다. :D

+ Recent posts