2015년 7월 14일 화요일

파일 전송 프로토콜(FTP)

TCP/IP에서 파일을 전송하는 데 쓰이는 대표적인 파일 전송 프로토콜은 파일 전송 프로토콜(FTP, File Transfer Protocol)이다. 이름에서도 알 수 있듯이 FTP는 범용 프로토콜이다.

FTP 개관과 역사, 표준문서
  • FTP의 개발과 표준화
    • 직접 연결 방식
      • 텔넷
      • 호스트 앞에서 직접 작업하는 것 같은 환상을 제공
    • 간접 연결 방식
      • FTP
      • 원격 호스트에서 리소스를 받아와 로컬 시스템에서 작업하고, 다시 원격 호스트로 전송하는 방식
    • 1971.04 - RFC 114 : 최초의 FTP 표준 문서, TCP나 IP가 개발되기 이전에 출간
    • 1971.07 - RFC 172
    • 1971.11 - RFC 265
    • 1972.07 - RFC 354 : 현대 TCP에서도 사용되는 통신 모델과 오늘날에도 사용되는 각종 기능을 처음으로 설명
    • 1973.08 - RFC 542 : NCP를 사용한다는 점만 제외하면 오늘날의 FTP와 비슷
    • 1980.06 - RFC 765 "File Transfer Protocol Specification)" 출판 : TCP/IP 기반
    • 1985.10 - RFC 959
  • FTP 동작의 개관
    • 주된 목적 : 파일을 옮기는 것에 관한 구현 내용을 사용자에게 숨김으로써 사용자가 쉽게 파일 전송을 할 수 있도록 돕는 것
    • 전송하는 두 시스템이 사용하는 파일 형식이 서로 달라서 생기는 문제를 자동으로 해결
    • 전송 계층에 TCP를 사용 - 데이터 손실 방지
    • 인증 시스템 사용 - 익명도 가능

FTP의 동작 모델과 구성요소, 주요 용어
  • 서버-FTP 프로세스와 사용자-FTP 프로세스
    • FTP에서 인간인 사용자가 직접 클라이언트를 다루기 때문에 클라이언트를 가끔 사용자 장비라고 부르기도 한다.
    • FTP 클라이언트 소프트웨어는 사용자-FTP 프로세스라고 부르고, 서버의 것은 서버-FTP 프로세스라고 부른다.
  • FTP 제어 연결과 데이터 연결
    • 제어연결
      • FTP 세션이 연결될 때 생기는 주된 TCP 연결이다.
      • FTP 세션 내내 연결된 상태로 있으며 FTP 명령과 응답 같은 제어 정보를 전달할 때만 사용된다.
      • 파일을 직접 전송하지는 않는다.
    • 데이터 연결
      • 서버에서 클라이언트로, 클라이언트에서 서버로 데이터가 전달될 때마다 따로 TCP 데이터 연결이 이루어진다.
      • 실제 데이터는 이 연결을 통해 전달된다.
      • 파일 전달을 완료하면 데이터 연결을 끊는다.
  • FTP 프로세스 구성요소와 주요 용어
    • 서버-FTP 프로세스의 구성요소
      • 서버 프로토콜 해석기(서버-PI, Server Protocol Interpreter)
        • 서버의 제어 연결을 담당
        • FTP 주포트에서 대기하면서 사용자로부터 들어오는 연결을 기다림
        • 서버 DTP를 관리
      • 서버 데이터 전송 프로세스(서버-DTP, Server Data Transfer Process)
        • 사용자 DTP와 데이터를 주고 받는 일을 담당
        • 서버의 파일 시스템에서 파일을 읽고 쓴다
    • 사용자-FTP 프로세스의 구성요소
      • 사용자 프로토콜 해석기(사용자-PI, User Protocol Interpreter)
        • 클라이언트의 제어 연결을 담당하고, 서버 PI로 요청 메시지를 보냄으로써 FTP 세션을 초기화 함
        • 연결이 수립되면 사용자 인터페이스로부터 명령을 받아 처리하고 서버-PI로 보내며, 응답을 기다림
        • 사용자 DTP를 관리
      • 사용자 데이터 전송 프로세스(사용자-DTP, User Data Transfer Process)
        • 서버-DTP와 데이터를 주고 받음
        • 클라이언트의 파일 시스템에서 파일을 읽고 씀
      • 사용자 인터페이스
        • 인간에게 친숙한 FTP 인터페이스를 제공
        • 난해한 FTP의 내부 명령어 대신 비교적 쉬운 사용자 중심 명령을 제공
  • 써드 파티 파일 전송 (프록시 FTP)
    • 한 컴퓨터에 있는 사용자가 한 서버에서 제 3의 컴퓨터인 다른 서버로 파일을 보낼 수 있는 모델도 소개
    • 보안 상 문제가 많아 거의 사용하지 않음

FTP 제어 연결의 수립, 사용자 인증과 익명 FTP 사용

  • FTP 로그인 순서와 인증