진짜 개발자
본문 바로가기

CS(Computer Science)/Network

Network - Application 계층 FTP 프로토콜

728x90

FTP(File Transfer Protocol) 프로토콜이란

- TCP/IP 프로토콜을 통해 서버와 클라이언트 사이에 파일을 전송하기 위한 프로토콜



제어연결, 데이터연결

1. 제어연결

- 제어연결은 두호스트간 제어정보, 즉 사용자 계정, 비밀번호, 디렉터리 변경 명령어, 

  파일전송(put), 파일 받기(get) 등의 제어정보를 보내는데 사용된다


2. 데이터 연결

- 데이터 연결은 실제 데이터를 주고 받는데 사용된다.



PORT (FTP Server)

1. 제어연결 : 21 PORT / TCP


2. 데이터연결 : 20 PORT / TCP



과정

1. 로컬 호스트의 FTP 클라이언트 프로세스가 원격 호스트에 있는 FTP 서버 프로세스와 21 PORT로 TCP 제어연결을 설정

2. FTP 클라이언트는 TCP 제어연결을 통해 사용자계정 , 비밀번호를 전송

3. FTP 클라이언트에서 파일전송을 위한 제어명령어를 보낸다

4. FTP 서버 측은 제어명령을 받고 클라이언트에게 TCP 데이터 연결을 초기화 한다

5. 데이터 연결을 통해 파일만을 보내고 데이터연결을 닫는다.



특징

- FTP 서버는 사용자와 제어연결은 유지하나 데이터 연결은 파일이 전송될 때마다 새로 수립된다.

- 사용자의 현 위치를 추적해야 하므로 FTP 서버가 유지할 수 있는 세션 수를 상당히 제한하게 된다.



Client의 ACTIVE 모드 PASSIVE 모드

1. Active 모드 

- Active 모드는 사용자가 FTP 서버와 데이터 연결을 수립할 PORT를 정하여 서버에게 알리는 것이다.

- *FTP 클라이언트가 알려준 데이터연결 포트로 서버측에서 -> 클라이언트로 접속한다.


과정

1. FTP 클라이언트가 FTP서버의 21 PORT로 제어 연결을 수립하면서 자신의 데이터 연결 PORT(5151)를 알려준다.

2. FTP 서버는 FTP 클라이언트로 부터 전달받은 데이터 연결 PORT(5151)로 접속한다.


문제점

1. FTP 클라이언트가 데이터연결 Port를 정하고 FTP 서버가 그 Port로 접속하는 형태여서 사용자 측의 방화벽을 열어야 한다.

2. 사용자가 직접 Port를 정하지는 못하여 단하나의 방화벽을 해제하는 것이 아닌 모든 방화벽을 열어야 한다

  (FTP 프로그램에 의해 자동적으로 데이터 연결 포트를 정하여 FTP 서버에게 통보)


2. Passive 모드

- 서버 -> 클라이언트 연결 수립이라는 점을 보완하기 위해 나온 모드

- 클라이언트가 서버에 접속한다

- 서버가 데이터 연결을 위한 PORT를 정하여 Client에게 알려준다.


과정

1. FTP 클라이언트가 21 PORT로 제어 연결을 수립한다.

2. 제어연결 수립과정에서 FTP서버가 FTP 클라이언트에게 데이터 연결 PORT를 알려준다.

3. FTP 클라이언트는 FTP 서버가 알려준 PORT로 데이터 연결을 수립한다


장점

- FTP 서버가 FTP 클라이언트로 접속하는 것이 아니기 때문에 FTP 클라이언트측 방화벽을 열 필요가 없다.