[Network] FTP(File Transfer Protocol)

Fabro·2021년 8월 28일
0
post-custom-banner

FTP(File Transfer Protocol)

FTP

  • 운영체제에서 그래픽환경을 지원하기 이전에 만들어진 파일을 전송하기 위한 프로토콜
  • TCP/IP 네트워크(인터넷)상의 장치가 파일을 전송할 때 사용하는 규칙
  • 동작 방식이 매우 단순하고 직관적이여서 사용하기 쉽고 편리
  • 대용량 파일을 빠르게 전송할 수 있지만 평문으로 전송(암호화X)하기 때문에 악의적인 사용자에게 노출될 위험 존재
  • FTP 내장명령을 통해 쉘에서 사용하는 ls, pwd, cd, mkdir와 같은 간단한 명령어 사용 가능

FTP 서버

  • 파일을 하나의 장치에서 다른 장치로 전송하는 소프트웨어 어플리케이션
  • 간단히 FTP 주소를 가지고 있고 FTP 연결을 수신하는 데 사용되는 컴퓨터라 할 수 있다.
  • 클라이언트는 FTP 서버로부터 파일을 '받거나', FTP 서버로 파일을 '보낸다'
  • 기본적인 관점에서 보면 FTP 서버는 수신자와 전송자 사이에 위치한 중간 지점

FTP 원리

FTP는 클라이언트 - 서버 프로토콜로서, 클라이언트가 파일을 요청하면 서버가 요청된 파일을 제공한다. 따라서 FTP의 연결 설정을 위해서는 명령을 내리고 어떤 파일에 접근할 수 있는지 등의 기본 정보를 전달하는 명령 채널(제어 채널)과 2개의 장치 간에 데이터를 전송하는 데이터 채널 2개의 기본 채널이 필요하다. 연결 설정을 위해선 사용자는 FTP 서버에게 로그인 정보를 제공해야 하는데, 일반적으로 21번 포트를 기본 통신 모드로 사용한다.

연결 포트

  • FTP가 기본적으로 사용하는 포트는 20번과 21번이며, 서로 다른 역할을 수행한다.
  • 20번 포트는 데이터 포트이며, 데이터 전송에 사용된다.
  • 21번 포트는 제어 포트이며, 클라이언트의 접속 및 제어에 사용된다.

21번 포트(제어 포트)

  • 상대방의 연결을 기다리거나 연결을 시도하고, 다른 장치와 연결을 맺고 명령어 입력 시에 해당 명령어를 전달하는 데에 사용
  • FTP가 사용되는 동안은 연결이 지속적으로 유지되고, 명령과 응답 방식으로 작동
  • 반이중(Half Duplex) 전송방식을 사용하기 때문에 단방향 통신만 가능

20번 포트(데이터 포트)

  • 데이터를 주고받는 용도로 사용하는 포트
  • 동작 모드에 따라 사용하는 포트가 다름
  • 액티브 모드 -> 20번 포트, 패시브 모드 -> 1024번 이상의 임의의 포트
  • 연결된 이후 파일을 전송할 때에만 연결하고 사용하지 않을경우 폐쇄
  • 전송하는 데이터는 파일의 종류, 데이터 구조, 전송 방식에 따라 달라짐
  • 전이중(Full Duplex) 전송방식을 사용하기 때문에 양방향 통신 가능

동작 모드

액티브 모드

  1. 21번 포트(제어 포트)를 이용하여 클라이언트에서 서버 측으로 연결 요청
    -> 클라이언트는 서버에 연결할 데이터 포트 정보를 서버에게 전달하며, 이 때 클라이언트가 사용하는 제어 포트와 데이터 포트는 Well Known Port가 아닌 1024번 이상의 포트 번호를 사용한다
  2. 서버가 클라이언트의 요청에 응답
  3. 서버가 20번 포트(데이터 포트)를 이용하여 클라이언트 측으로 직접 연결 시도
    -> 20번 포트를 통해 1. 과정에서 전달 받은 포트로 연결을 시도한다
  4. 클라이언트가 서버의 요청에 응답

액티브 모드의 가장 큰 특징 중 하나는 일반적인 TCP/IP의 서비스들과 달리 서버에서 클라이언트로 연결을 시도한다는 점이다. 이로 인하여 서버에 연결 할 때 서버의 방화벽뿐만 아니라 클라이언트의 방화벽에 의해 연결이 거부되는 경우도 많이 발생한다. 또한, 회사나 가정에서 널리 사용되는 공유기와 같이 외부에서의 접속을 허용하지 않거나 NAT를 이용한 통신은 액티브 모드의 FTP를 정상적으로 사용할 수 없다.

패시브 모드

  1. 21번 포트(제어 포트)를 이용하여 클라이언트에서 서버 측으로 연결 요청
    -> 액티브 모드와 같다
  2. 서버에서 클라이언트에게 서버가 사용할 데이터 포트 정보를 전달
    -> 서버가 클라이언트에게 전달하는 데이터 포트 정보는 서버에 등록된 포트 중 하나를 사용한다
  3. 클라이언트가 사용할 데이터 포트를 통해서 서버가 전달한 데이터 포트로 연결
  4. 서버가 클라이언트의 요청에 응답

패시브 모드는 액티브 모드의 문제점을 해결하기 위해 만들어진 방식으로 액티브 모드와 달리 FTP 서버에 연결할 때 클라이언트에서 서버로 연결한다는 차이가 있다. 하지만, 패시브 모드는 액티브 모드에서의 두 가지 문제점은 해결했지만, 서버의 모든 비특권 포트에 대한 방화벽 설정을 해제해야 하는 문제가 있다. 따라서 다양항 FTP 데몬들은 패시브 모드에서 사용하는 포트의 범위를 제한하는 것과 같은 추가적인 설정으로 이 문제를 해결한다.

SFTP(Secure FTP), FTPS(FTP Secure, FTP-SSL)

FTP는 데이터를 네트워크에 평문으로 전송하기 때문에 보안에 구멍이 존재한다. 그래서 기본으로 제공되는 FTP 이외에 보안적 요소가 추가된 SFTP, FTPS등을 사용하는 것이 권장된다. SFTP는 21번 포트 대신 22번 포트를 사용하고 SSH 프로토콜을 사용하여 연결하기 때문에 암호화된 데이터로 통신할 수 있으며, FTPS는 기존의 전송 방식에서 TLS 또는 SSL을 사용한 암호화 통신을 지원한다.


References

profile
엔지니어 유망주의 곡괭이질
post-custom-banner

0개의 댓글