FTP 서버를 구축하려고 보면 패시브에 대한 설정과 포트 옵션이 보입니다. 그리고 FTP 클라이언트를 사용하려고 보면 역시 패시브 모드라는 것이 있고 체크박스로 체크하게 되어있는데 그렇다면 FTP에서 액티브(Active) 모드와 패시브(Passive) 모드는 무엇이며 어떤 차이가 있는지 알아보겠습니다.

FTP 액티브(Active)모드

 

ftp_theory_diagram_active
이미지:넥스트라인

액티브 모드는 간략하게 위와 같은 다이어그램으로 나타낼수 있습니다. 다이어그램을 좀더 풀어보면

  1. 클라이언트가 FTP 프로그램으로 서버에 접속을 합니다. 이때 FTP 서버는 기본값인 21번 포트를 사용합니다.
  2. 클라이언트는 5151번 포트로 데이터를 받는다는 응답을 서버에게 보냅니다. 이때 FTP 서버에 접속하는 클라이언트의 포트는 5150 입니다.
  3. 서버는 5151번 포트로 데이터를 전송한다고 응답합니다.
  4. 클라이언트가 응답하고 데이터를 받습니다.

ftp_theory_active_firewall

서버와 클라이언트의 통신을 풀어 보면 중요한 점은  서버가 클라이언트의 해당 포트에 접속해 데이터를 보내준다는 것 입니다. 우리가 알고있는 상식과는 좀 다르죠. 클라이언트가 서버에 접속해서 사용하는데 서버가 클라이언트에 접속한다니.

이런 구조때문에 클라이언트에서는 방화벽에 해당 포트를 열어서 사용하거나 NAT 환경에 있는 네트워크라면 포트포워딩을 해줘야 하는 결과가 생깁니다.

그리고 클라이언트쪽에서 사용하는 포트를 별도로 설정할수 있다면 문제가 없지만 일반적으로 사용자들이 FTP를 사용하면서 클라이언트 단에서 사용할 포트를 지정해서 사용하지 않기 때문에 사용하는 포트 범위 또한 랜덤해서 초보자들이 직접 FTP 서버를 구축하고 클라이언트로 연결하려 했을때 문제점을 눈치채기 어렵다는 점입니다.

그리고 상용서비스(ex 웹호스팅)을 사용할때 액티브 모드로 접속하게 되면 모든 유저가 FTP에 대한 지식을 알고 있는것이 아니므로 접속에 차질이 생기게 됩니다.

이렇게 서버가 클라이언트를 접속하는 구조를 개선한 것이 패시브 모드입니다.

FTP 패시브(Passive) 모드

ftp_theory_diagram_passive
이미지:넥스트라인
  1. 클라이언트가 서버에 접속
  2. 서버에서 데이터 전송을 위한 포트를 클라이언트에게 알려줌
  3. 클라이언트는 데이터 전송을 위한 포트에 데이터 요청
  4. 서버의 응답과 함께 클라이언트는 서버측의 포트로 데이터를 넘겨받음

액티브 모드의 개선판이 패시브 모드로 클라이언트는 서버측에서 알려준 데이터 포트를 통해 서버에서 데이터를 내려 받습니다.

이때 클라이언트는 서버측의 데이터 포트를 사용하기 때문에 당연하게 클라이언트의 방화벽이나 네트워크 구조에 신경을 쓸 필요가 없습니다.

이처럼 실제적으로 FTP 서버가 21번 포트를 사용하더라도 이 21번 포트는 명령어를 위한 포트일 뿐 실제적인 데이터 전송은 다른 포트에서 이뤄지고 있습니다.

서버측에서 20번 포트를 통해 클라이언트에 접속하느냐, 서버측에서 알려준 데이터 포트를 통해 클라이언트에서 접속하느냐에 따라 액티브 모드와 패시브 모드의 차이가 생깁니다.

PG

익스트림 매뉴얼 주인장 PG입니다. 다방면의 디지털 기술에 관심이 많고 삽질을 즐겨합니다. 포스트 내용중 궁금한 점이 있다면 댓글로 남겨주세요.

익스트림 매뉴얼의 모든 내용은 불펌금지 입니다. 자세한 내용은 링크를 참조하세요.

댓글이 없습니다.