본문 바로가기

Network, Security

FTP [Passive / Active]

FTP(File Tranfar Protocol) 란?

FTP는 서버와 클라이언트 사이에 파일을 전송하기 위한 프로토콜로 응용계층(7계층) 프로토콜이다. FTP는 TCP 20번 포트와 21번 포트를 자주 사용하는 것으로 알려져 있다. 20번 포트는 데이터 포트로 사용되고 21번 포트는 제어 포트로 사용된다.

데이터 포트 : 데이터가 전송되는 포트이다. 파일들이 전송될 때 해당 포트를 이용하여 전송된다.

제어 포트 : FTP 명령이 오가는 포트이다. 클라이언트가 서버측으로 명령 전달 시 해당 포트를 이용하여 명령이 전달된다.

연결 순서

  1. FTP는 TCP통신을 하기 때문에 3-way-handshaking 과정을 거친 후 연결이 된다.
  2. 연결 후 제어 포트를 통해 서버에 있는 필요한 파일들을 탐색  후 클라이언트 측으로 전송하는 명령을 수행한다.
  3. 서버측에서 전송 명령을 받으면 데이터 포트를 통해 데이터를 전송한다.
  4. 클라이언트는 모든 작업을 완료하면 FTP연결을 끊을 명령을 제어 포트로 전송한다.
  5. 연결된 세션은 4-way-handshaking 과정을 통해 연결이 종료 된다.

 

FTP의 Active 모드

FTP의 연결 모드에는 두 가지가 있다. Active 모드와 Passive 모드, 그 중 Active 모드는 서버에서 클라이언트의 포트로 접속을 하는 형태이다. Active 모드로 연결 시 문제점이 있는데 서버가 클라이언트로 접속을 요청하기 때문에 클라이언트에서 방화벽, 설정된 포트가 차단 된 경우 연결을 할 수 없다는 점이다. 대부분 개인용 PC는 Inbound 설정 즉, 외부에서 내부로 들어오는 접속은 차단이 되어있기 때문에 클라이언트 측에서 직접 열어주는 작업을 하지 않으면 정상적으로 통신을 할 수 없는 상황이 벌어진다.

FTP의 TCP 20, 21 포트는 어디까지나 잘 알려진포트로 해당 포트로 고정된 것이 아닌 해당 포트를 자주 사용한다는 쪽에 가깝다. 즉, FTP는 무조건 TCP 20, 21을 사용하는 것은 아니다. 서버측에서는 임의의 포트로 제어 포트와 데이터 포트를 지정할 수 있고 클라이언트도 마찬가지이다.

Active 모드의 연결 과정

  1. 먼저 클라이언트가 서버에 제어포트로 접속을 시도한다. 이때, 클라이언트의 제어 포트가 서버에도 알게 된다.
  2. 1번 과정이 진행될 때 클라이언트는 서버에게 클라이언트의 데이터 포트를 알려준다.
  3. 서버는 클라이언트의 제어 포트와 데이터 포트를 모두 알게되고 데이터 포트로 접속을 시도하게 된다. (FTP의 핵심은 파일 전송이기 때문에 데이터 포트가 중요하다. 이 과정에서 서버가 클라이언트의 포트에 접속을 시도하는데 만약 클라이언트에서 데이터포트에 대한 인바운드 설정을 안해줬다면 서버는 클라이언트의 포트에 접속할 수 없게 된다.)
  4. 서로의 포트에 접속이 완료되면 제어 포트를 통해 명령을 전달하고 데이터 포트를 이용하여 파일을 받을 수 있는 상태가 된다.
  5. 최종적으로 작업이 완료된 클라이언트는 서버와 연결을 끊는다.

FTP Active Mode 연결 과정

 

FTP의 Passive 모드

Passive 모드는 Active모드와 반대로 클라이언트가 서버측의 포트로 접속을 하는 형태이다. Passive 모드 형태로 연결을 하면 클라이언트는 Inbound 포트를 열지 않아도 되기 때문에 Active 모드에서의 문제가 어느정도 해결된다. 서버측에서는 데이터 전송에 사용할 포트를 따로 할당하여 클라이언트에게 알려주고 클라이언트는 서버에게 받은 포트로 데이터 포트를 연결하여 FTP 통신을 하게된다.

Passive 모드에서는 클라이언트가 서버의 포트로 접속한다. 서버는 FTP의 핵심인 데이터 포트를 범위 형태로 지정하여 클라이언트가 접근할 수 있게 열어둔다. 이때 클라이언트는 서버에 접속하는 입장이기 Inbound 설정을 할 필요가 없다.

Passive 모드의 연결 과정

  1. 먼저 클라이언트가 서버에 제어포트로 접속을 시도한다. 이때, 서버에서는 클라이언트가 Passive connection을 사용하는지 확인하는 작업을 한다. Active 모드에서도 동일하게 확인하며 Passive 모드를 사용하는게 확인되면 Passive 모드로 통신을 진행할 준비를 한다.
  2. 서버에서 클라이언트로 제어포트 접속에 대한 응답을 해주면서 서버의 데이터 포트의 범위를 알려준다.
  3. 클라이언트는 서버의 데이터 포트 범위를 알게되고 해당 범위의 포트들 중 하나로 접속을 시도한다. (여기가 Active 모드와 큰 차이점이다. FTP 통신에 중요한 데이터 포트를 클라이언트가 서버로 접속을 시도한다.)
  4. 최종적으로 연결 후 파일 전송 작업을 진행하고 완료되면 접속을 끊는다.

FTP Passive Mode 연결 과정

반응형