파일 전송 프로토콜

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
OSI/IP 모델
7. 응용 계층
NNTP  · SIP  · SSI  · DNS  · FTP  · 고퍼  · HTTP  · NFS  · NTP  · SMPP  · SMTP  · DHCP  · SNMP  · 텔넷  · (더 보기)
6. 표현 계층
MIME  · XDR  · TLS  · SSL
5. 세션 계층
지명 파이프  · NetBIOS  · SAP  · SIP
4. 전송 계층
TCP  · UDP  · SCTP  · DCCP
3. 네트워크 계층
IP  · ICMP  · IPsec  · IGMP  · IPX  · 애플토크
2. 데이터 링크 계층
ARP  · CSLIP  · SLIP  · 이더넷  · 프레임 릴레이  · ITU-T G.hn DLL  · L2TP  · PPP  · PPTP
1. 물리 계층

RS-232  · RS-449  · RS-485  · V.35  · V.34  · I.430  ·

I.431  · T1  · E1  · POTS  · SONET/SDH  · OTN  · DSL  · 802.11a/b/g/n PHY  · ITU-T G.hn PHY  · 이더넷  · USB  · 블루투스

v  d  e  h

파일 전송 프로토콜(File Transfer Protocol, FTP)은 TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다. 파일 전송 프로토콜은 TCP/IP 프로토콜 테이블의 응용 계층에 속하며, 역사는 오래 되었지만 지금도 인터넷에서 자주 사용된다.

HTTP와는 달리 연결의 종류는 2가지가 있다:

  • 명령 연결: 먼저 제어 포트인 서버 21번 포트로 사용자 인증, 명령을 위한 연결이 만들어지고, 여기를 통해 클라이언트에서 지시하는 명령어가 전달된다.
  • 데이터 전송용 연결: 실제의 파일 전송은 필요할 때 새로운 연결이 만들어진다.
    • 능동 모드(포토 모드): 서버가 자신의 데이터 포트인 20번 포트에서부터 클라이언트가 지정한 지점으로의 데이터 연결을 만든다. 클라이언트가 지정하는 포트는 주로 1023 보다 큰 번호가 매겨진 포트이다. 클라이언트가 방화벽, NAT(IP 마스킹) 등을 사용하는 환경일 때에 잘 동작하지 않을 수 있는데, 이때 수동 모드를 이용하면 된다.
    • 수동 모드: 클라이언트가 서버가 지정한 서버 포트로 연결할 수 있게 한다. 이 때에는 보통 양쪽 포트 모두 1023 보다 큰 포트를 사용한다.

어느 모드에서도 2개의 연결을 만드는 점은 다르지 않다. 하지만 FTP 포트를 변경하게 되고 방화벽이 있는 경우, 방화벽 Inspection 모드 설정에 따라 FTP 통신은 정상적이지만, get 명령이나 ls 명령 등 FTP-DATA포트를 이용한 통신은 정상적으로 이루어지지 않을 수 있다.

보안[편집]

파일 전송 프로토콜은 서버의 파일을 바꾸거나 지울 수 있기 때문에 전송하기 앞서 사용자 이름과 암호를 묻는 인증 과정이 필요하다. 보통 FTP에서는 암호가 암호화되지 않아 위험하기 때문에 원 타임(한 번만 묻는) 암호를 이용한 인증을 이용하며, 아니면 보안을 더욱 철저하게 하려면 아예 SFTP, SCP 등 다른 방법을 사용하여 파일을 전송한다.

FTP 명령어 목록[편집]

명령어 RFC 설명
ABOR 현재의 파일 전송 중단.
ACCT 계정 정보.
ADAT RFC 2228 인증/보안 데이터
ALLO 파일을 받기 위해 충분한 디스크 공간 할당.
APPE 이어서 추가.
AUTH RFC 2228 인증/보안 구조
CCC RFC 2228 명령 채널 지우기
CDUP 부모 디렉터리로 변경.
CONF RFC 2228 기밀 보호 명령
CWD 작업 디렉터리 변경
DELE 파일 삭제
ENC RFC 2228 개인 정보 보호 채널
EPRT RFC 2428 서버 접속에 필요한 확장 주소 및 포트 지정.
EPSV RFC 2428 확장 수동 모드 들어가기.
FEAT RFC 2389 서버가 추가한 기능 목록 보기
LANG RFC 2640 언어 탐색
LIST 지정한 경우 파일이나 디렉터리 정보를 반환. 지정하지 않은 경우 현재 작업 디렉터리 정보 반환.
LPRT RFC 1639 서버 접속에 필요한 긴 주소 및 목록 지정.
LPSV RFC 1639 긴 수동 모드 들어가기
MDTM RFC 3659 지정한 파일의 마지막으로 수정한 시간 반환
MIC RFC 2228 무결성 보호 명령
MKD 디렉터리 만들기
MLSD RFC 3659 디렉터리의 이름이 지정되면 디렉터리의 내용을 보여줌
MLST RFC 3659 명령 줄에 입력한 데이터만 제공.
MODE 전송 모드 설정 (스트림, 블록, 압축)
NLST 지정한 디렉터리의 파일 이름 목록 반환.
NOOP 동작 안 함 (더미 패킷: 대개 회선이 살아있는지를 살피기 위해 쓰임)
OPTS RFC 2389 기능 옵션 선택.
PASS 암호.
PASV 수동 모드 들어가기.
PBSZ RFC 2228 보호 버퍼 크기
PORT 서버 접속에 필요한 주소 및 포트 지정.
PROT RFC 2228 데이터 채널 보호 수준.
PWD 작업 디렉터리 인쇄. 호스트 컴퓨터의 현재 디렉터리 반환.
QUIT 연결 끊기.
REIN 연결 다시 초기화.
REST 지정한 지점에서 전송 다시 시작.
RETR 파일 복사본 전송
RMD 디렉터리 제거
RNFR 이름 변경 원본 이름
RNTO 이름 변경 대상 이름
SITE 지정한 명령어를 원격 서버로 송신.
SIZE RFC 3659 파일 크기 반환
SMNT 파일 구조 마운트.
STAT 현재 상태 반환.
STOR 데이터 입력 및 서버 쪽 파일로 저장.
STOU 파일을 저만의 방식으로 저장.
STRU 전송 구조 설정.
SYST 시스템 유형 반환.
TYPE 전송 모드 설정 (ASCII/바이너리).
USER 인증 사용자 이름.

관련 RFC[편집]

같은 목적으로 사용할 수 있는 프로토콜[편집]

  • TFTP
  • HTTP/WebDAV
  • SCP/SFTP
  • Rcp
  • rsync
  • NFS
  • SMB/CIFS(SAMBA)