파일 전송 프로토콜

1.FTP (File Transfer Protocol)

FTP
파일 전송 프로토콜(FTP, File Transfer Protocol)은 하나의 호스트에서 다른 호스
트로 파일을 복사하기 위해 TCP/IP에 의해 제공되는 표준 기능이다.
FTP는 호스트 간에 두 개의 연결을 설정한다는 점에서 다른 클라이언트 서버 응용
과 다르다. 하나의 연결은 데이터 전송을 위하여 사용되고, 또 다른 하나는 명령과
응답 등의 제어 정보를 위하여 사용한다. 이러한 제어와 데이터 전송의 분리는
파일 전송 프로토콜을 좀 더 효율적으로 사용할 수 있도록 만들어 준다.

FTP는 두 개의 잘 알려진 (well-known) TCP 포트를 사용한다.
포트 21번은 제어 연결을 위해 사용되고,
포트 20번은 데이터 연결을 위해 사용된다.

클라이언트는 사용자 인터페이스와 클라이언트 제어 프로세스, 클라이언트 데이터 전송 프로세스 등 세 가지 부분으로 구성되어 있다. 서버는 서버 제어 프로세스와 서버 데이터 전송 프로세스 등 두 가지로 구성되어 있다.

제어 연결은 전체 상호 작용적인 FTP세션 동안 연결된 상태로 유지된다. 데이터 연
결은 전송되는 각 파일마다 열렸다 닫힌다. 이 연결은 파일 전송에 관련된 명령이 사용될 때마다 설정되고, 파일 전송이 끝나면 폐쇄된다.

제어 연결(control connection)

  • 클라이언트에서 서버로의 명령
    과 서버의 응답을 위한 연결이다.
  • 21번 포트를 사용한다.
  • 21번 포트는 명령 또는 옹답형
    태의 제어정보를 전송한다.
  • 전체 FTP세션 동안 계속 연결
    상태를 유지한다.

데이터 연결(data connection)

  • 파일이 전송될 때 생성되는 데이터를 연결한다.
  • 20번 혹은 1024번 이후 포트를 사용한다.
  • 각각의 파일 전송 때마다 설정되며 전송이 완료되면 폐쇄된다.

2.FTP(파일 전송 프로토콜) 연결 방법

파일 전송 프로토콜 연결 방법에는 크게 두 가지가 있다.
능동 모드 (active mode)와 수동 모드 (passive mode)가 있다.

FTP(파일 전송 프로토콜) 능동 모드의 특징

일반적으로 능동 모드가 FTP 클라이언트의 기본 값으로 설정된다. 클라이언트에서
서버측 21번 포트로 접속하여 제어 채널을 생성하고 데이터는 서버에서 클라이언트로 접속하여 데이터를 보내는 방식이다.
만약 클라이언트 PC에 방화벽이 설치되어 외부에서의 접속을 허용하지 않는다면
FTP 접속은 되지만 , 즉 제어 채널은 연결되지만 이후 데이터채널 연결이 불가능하여 파일을 받을 수 없는 문제가 발생할 수 있다.

FTP(파일 전송 프로토콜) 능동 모드의 동작 방식

파일 전송 프로토콜 능동 모드
파일 전송 프로토콜 : FTP active mode

FTP 클라이언트는 파일 전송 프로토콜 서버의 21번 포트로 연결을 설정하여 제어 채널을
생성한다.
사용자가 파일 목록을 보기 위해 ls 명령을 입력하면 FTP 클라이언트는 사용할
임시포트 (1024번 이상 포트, 위 예에서는 5001) 를 결정하여 FTP 서버에게 알린다.
FTP 서버는 FTP 클라이언트가 알려준 포트(5001)로 연결을 설정하여 데이터 채널을 생성한다.
데이터 채널을 통해 데이터를 송신한 후 데이터 채널의 연결을 종료한다.

FTP 수동 모드의 특징

클라이언트에서 서버측 21번 포트로 접속하여 제어 채널을 생성하고 데이터 채널도 클라이언트에서 서버로 접속하여 데이터를 보내는 방식이다.

FTP 수동 모드의 동작 방식

파일 전송 프로토콜 수동모드
FTP passive mode

클라이언트는 서버의 21번포트로 연결을 설정하여 제어 채널을 생성한다.
사용자가 파일 목록을 보기 위해 ls 명령을 입력하면 FTP 클라이언트는
수동모드로 연결을 하기 위해 PASV 명령을 전송하고 이 명령을 받은 FTP 서버는 사용할 임시 포트(1024번 이상 포트, 위 예에서는 4900)를 결정하여 FTP 클라이언트에게 알려준다.
파일 전송 프로토콜 클라이언트는 FTP 서버가 알려준 포트로 연결을 설정하여 데이터 채널을 생성한다. 데이터 채널을 통하여 데이터를 송신한 후 데이터 채널 연결을 종료한다.

3.익명 FTP (anonymous File Transfer protocol)

FTP를 사용하기 위하여 사용자는 원격 서버의 계정과 패스워드가 필요하다.
그러나 어떤 사이트는 공개된 접근이 가능한 파일을 가지고 있다.
이들 파일에 접근하기 위해 사용자는 계정이나 패스워드가 필요가 없다.
대신 사용자가 이름으로 anonymous 를 , 패스워드로 이메일 주소를 사용할 수 있다. 이 시스템에 대한 사용자 접근은 매우 제한적이다.
어떤 사이트는 익명 사용자에게 부분적인 명령어만 허용을 한다.

4.TFTP (Trivial File Transfer Protocol)

개념

TFTP는 소프트웨어 패키지를 읽기 전용 메모리나 디스크 없는 워크스테이션에 설치할 수 있을 정도로 매우 간단한다. 이는 부팅 시에 사용될 수 있다.
이것이 ROM에 들어갈 수 있는 이유는 오직 기본적인 와 IP와 UDP만을 필요로 하기문이다. 하지만 TFTP에는 보안 기능이 없다.TFTP는 클라이언트를 위해 파일을
읽거나 쓸 수 있다.
읽는 것은 서버 사이트에서 클라이언트 사이트로 파일을 복사하는 것을 의미한다.
쓰는것은 클라이언트 사이트에서 서버 사이트로 파일을 복사하는 것을 의미한다,

TFTP의 데이터 전송

개요

데이터 전송 단계는 연결 설정과 종료 사이에서 수행된다.
TFTP 는 신뢰성 없는 UDP 서비스를 사용한다.
파일은 데이터와 블록으로 나뉘고, 마지막 불록을 제외한 각 블록은
정확히 512바이트의 크기를 갖는다.
마지막 블록을 제외한 각 블록은 0에서 511바이트 크기를 갖는다.
UDP 는 흐름 제어와 오류 제어를 위한 기능이 없기 때문에 TFTP 는
연속적인 데이터 블록으로 파일을 전송하기 위하여 흐름 제어와 오류 제어
메커니즘을 생성 해야 된다.
TFTP 는 잘 알려진 포트 69로 UDP의 서비스를 이용한다.

마법사의 초보 버그 (sorcerer’s apprentice bug)

마법사의 초보 버그 개념

마법사의 초보 버그로 알려진 문제가 발생할 수 있다. 이 이름은 우연히 주문을 외워 연속적으로 복제되는 빗자루를 만드는 만화 주인공으로부터 유래되었다,
이 현상은 ACK 메시지가 유실되지 않고 단지 지연되는 경우에 발생할 수 있다. 이
상황에서 이후의 모든 데이터 블록과 응답이 두 번씩 송수신되게 된다.

TFTP에서 과도한 재전송을 유발할 수 있는 경우로. ACK 메시지
의 지연이 발생되면서 데이터 블록과 응답이 두 번씩 송수신되는
경우를 말한다. 이 문제를 해결하기 위해 송신측은 중복된 ACK 메시지를
받았을 때 DATA 패킷을 재전송하지 않도록 하고 있다.

TFTP 응용

TFTP는 보안이 중요하지 않은 기본적인 파일 전송에 매우 유용하다. 이는 브리지나 라우터와 같은 장치를 초기화하는 데 사용할 수 있다. 이의 주된 응용은 DHCP 프로토콜과 함께 사용하는 것이다.
TFTP는 적은 양의 메모리를 요구하며,UDP와 IP 서비스를 요구할 뿐이다. TFTP는
ROM에 쉽게 들어간다. 장치의 전원이 커지면, TFTP는 서버에 연결
되어 그로부터 구성 파일을 내려 받을 수 있다.
전원이 켜진 장치는DHCP 클라이언트를 사용하여 DHCP 서버로부터 구성 파일의
이름을 얻는다. 그리고 장치는 TFTP 서버로부터 구성 파일의 내용을 얻을 수 있도록그 파일 이름을 TFTP 클라이언트에 전달한다.

5.NFS (Network File System)

TCP/IP 프로토콜을 사용하여 네트워크상에서 파일시스템을 운영할 수 있도록 해주는 프로토콜이다.
데이터의 보안과 무결성을 보장하면서 인증된 네트워크 사용자가 공유된 네트워크 파일을 마치 자신의 저장 장치에 있는 것처럼 사용할 수 있는 방법을 제공한다.
여러 사람이 함께 사용하는 대용량 프로그램이나 데이터를 하나의 호스트에 넣어 두고 NFS 로 연결하여 사용하면 디스크 공간이 상당히 절약 된다.

6.Samba

SMB (Server Message Block) 프로토콜을 사용하여 유닉스 계열 시스템과 윈도우 시스템 간에 파일 및 프린터 자원을 공유할 수 있는 기능을 제공한다.