by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

FTP




FTP (File Transfer Protocol)

FTP(File Transfer Protocol)란

  • FTP는 인터넷을 통한 파일 송수신 만을 위해 고안된 서비스(또는 프로토콜)
  • 장점 : WWW 방식보다 파일을 빠른 속도로 한꺼번에 주고 받을 수 있다는 것이 FTP의 가장 큰 장점
  • 단점
    • 빠른 파일 전송이 주된 목적이기에 보통의 경우 사진이나 음악, 동영상 등의 멀티미디어 콘텐츠는 내려 받기가 완료된 다음에 확인할 수 있다(WWW 환경에서는 내려 받으며 재생이 가능하다).
    • 기본적으로 명령어 기반의 통신 서비스이기 때문에, 별도의 FTP 클라이언트 프로그램을 사용하지 않으면 사용이 복잡하고 어렵다.

FTP 기본적인 동작 원리

<그림> FTP 기본적인 동작 원리, 출처:네이버 캐스트
FTP 기본적인 동작 원리
  • FTP 서버와 클라이언트 사이에 두 개의 연결(세션)을 가지고 통신한다.
    • 데이터 전송을 제어하기 위한 연결(21번 포트)
    • 실제 데이터 파일을 전송하기 위한 연결(20번 포트)
  • FTP 서버가 TCP/21 포트에 Listen
  • FTP 클라이언트가 서버의 TCP/21 포트에 접속 (Control Session)
    • Control Session 세션에서는 실제 파일의 전송이 이루어지지 않음
  • Control Session 상태에서 dir, get, put 등의 명령을 수행하면 실제 데이터 전송할 수 있는 Data Session을 생성
    • 이때 Active Mode, Passive Mode에 따라 통신 구조가 달라짐

Control Session과 Data Session

Control session(제어 연결)

  • 클라이언트가 서버에게 최초 접속 할 때 생성되어 로그아웃 될 때 까지 지속
  • 명령어를 서버로 보낼 때 사용

Data session(데이터 연결)

  • 데이터를 주고받는 세션이며, 데이터 전송시마다 연결 및 전송 후 끊어 버림
  • dir명령을 보내면 데이터를 서버가 만들어서 데이터 세션으로 보내고 끊는다

Active 모드와 Passive 모드

  • 실제 데이터(파일)를 전송하는 port가 다른 것이 가장 큰 차이

Active Mode (능동모드)

  • 서버와 클라이언트 간 네트워크 포트 20번(데이터 전송용)/21번(신호 제어용)을 사용하는 방식
    • Control session(제어 연결)은 클라이언트 → 서버로 연결 (사용포트번호 : 21번)
    • Data session은 (데이터 연결)은 서버 → 클라이언트 (사용포트번호: 20번)
  • 다만 일부의 네트워크 보안 장비(방화벽 등)에서 이들 포트(특히 20번)를 차단하는 경우 사용자가 FTP 서버에 접속하더라도 제대로 전송되지 않는 문제가 발생할 수 있다.

Passive Mode (수동모드)

  • 서버가 클라이언트에 알려주는 임의의 포트번호로 클라이언트가 접속하는 방식
    • 클라이언트가 Control session(제어 연결)로 서버에게 pasv명령 전송
    • 서버는 포트를 열고(ftp-data전송 위한), 클라이언트 접속 대기한 후, 이 포트번호를 클라이언트에게 전달
    • 클라이언트 서버에게 포트번호 받음(Control session)
    • 클라이언트 → 서버(사용포트번호: 서버가 준 포트번호로 연결)
    • 서버가 준 포트로 맺은 연결로 데이터 전송 (Data session)
  • 데이터 전송용 포트를 20번이 아닌 다른 임의의 번호로 할당하여 데이터 전송 기본 포트인 20번 외에?1024 이상의 포트 번호 중 임의의 포트를 따로 설정해서 데이터 전송을 진행
  • 서버측에서 클라이언트가 접속할 수 있도록 21번 포트외에 일정 범위의 포트를 Open 해주어야 한다.

SFTP(Secure File Transfer Protocol) : 보안 파일 전송 프로토콜

  • FTP에 암호화(SSH) 개념이 추가되어, 네트워크 레벨에서의 정보 유출을 방지한다. 즉 파일을 전송하기 위해 SSH를 이용 한다.
  • 서버와 클라이언트 간의 데이터 전송 시 계정 정보 등을 암호화하여 해킹이나 보안 상의 문제를 사전에 방지할 수 있다.
  • 접속하는 방법은 일반 FTP 접속 방식과 동일하지만, Control session 포트를 21번이 아닌 22번을 사용한다는 점이 다르다.

참고 문서

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.