본문 바로가기
IT Network System/Network

FTP

by Skills 2021. 2. 25.
728x90

1) FTP(File Transfer Protocol)

- FTP는 파일을 전송하기 위한 TCP/IP 프로토콜이다. 파일을 주고받기 위해서 필요하다.

- FTP는 Wel Known Port TCP포트인 20번과 21번을 사용한다. (20번은 데이터 전송 포트, 21번은 인증/제어포트)

- 대부분의 웹 브라우저는 기본 암호화되지 않은 일반 FTP를 지원한다.

 

2) FTP 종류

(1) SFTP(Secure FTP)

- 보안이 강화된 FTP이다. SSH를 통해서 파일을 전송하는 프로토콜

- 포트 22번 또는 사용자 지정 SSH 포트를 사용한다.

 

(2) 암시적(Implicit) FTPS(FTP over SSL/TLS)

- 사용자 또는 파일 데이터가 교환되기 전에 먼저 SSL 암호화를 사용하여 연결을 보호함으로써 보안 문제를 해결한다.

- HTTPS와 매우 유사하게 작동하여 FTP 세션이 시작되기 전에 SSL/TLS 프로토콜을 사용하여 보안 연결을 설정한다. (일반 FTP 연결이 보안 연결을 통해 전송되고 SSL/TLS 프로토콜로 보호됨)

- 포트는 990번을 사용한다.

 

(3) 명시적(Explicit) FTP(E)S

- 명시적 FTPS(FTPES)는 FTPS의 또 다른 형태일 뿐이며 차이점은 암시적 연결이 아니라 웹 호스팅 계정에 명시적으로 연결한다는 것이다. 

- SSL/TLS를 통한 명시적 FTPS. 이것은 포트 21을 통한 일반 FTP로 시작하지만 특수 FTP 명령을 통해 SSL/TLS 암호화로 업그레이드할 수 있다. 명령어로 업그레이드를 하지 않으면 일반 FTP로 전송(FTPES의 유연성)

- 포트 21번을 사용하며 가장 안전한 FTP 연결로 알려져 있다. (웹 사이트에서 온라인 구매를 할 때 사용됨)

 

(4) LFTP

- Linux에서 사용하는 commandline Interface 기반의 강력한 FTP Client로 현재 가장 많이 쓰인다.

- 심각한 에러에 대한 예외처리가 잘 되어있고, 실패했을 시 자동으로 다시 시도함.

- LFTP는 SSL을 지원한다.

 

(5) TFTP(Trivial FTP)

- FTP나 SFTP와 다르게 UDP를 이용하기 때문에 속도가 빠르지만 안정성이 보장되지 않는다.

- FTP와는 달리 로그인 절차가 없으며 주로 시스코 장비의 펌웨어 업데이트나 라우터 이미지 업로드, 다운로드에 쓰인다.

 

3) FTP의 특징

- 서로 다른 시스템 사이에서 동작되고, 하나의 시스템 사용자들로부터 운영 시스템과는 관계없이 다른 종류의 시스템과 연결된다.

- 다른 응용 프로토콜과 달리 FTP 서버는 21번만 열린 상태에서 클라이언트가 접속되길 기다린다.

- 자료를 전송할 때는 20번 포트를 사용하고, 21번 포트가 동작이 불가능하면 접속을 할 수 없다.

- 21번 접속이 가능하고 20번 포트가 동작하지 않으면 접속은 되지만 자료 전송을 할 수 없다.

- 접속에는 계정 접속과 익명 접속 두 가지가 있다.

① 계정 접속 : FTP 서버에 로그인하기 위한 계정이 필요하다.

② 익명 접속 : 다수가 로그인할 때 Anonymous FTP라는 계정이 필요하고, 익명 사용자가 FTP 사이트의 특정 디렉터리에 파일을 업로드하려면, 쓰기/사용 권한을 부여받아야 한다.

 

4) FTP의 장점

- 인터넷을 통한 파일 송수신 만을 위해 고안된 프로토콜이기 때문에 동작 방식이 대단히 단순하고 직관적이라 사용법이 간단하다.

- WWW 방식보다 파일을 빠른 속도로 한꺼번에 주고받을 수 있다.

 

5) Active 모드 Passive 모드

(1) 능동 모드(Active Mode)

- Active Mode는 클라이언트가 포트를 정함 (단점 : 사용자가 무슨 포트를 쓸지 모르기 때문에 모든 포트를 열어줘야 함)

- 서버와 클라이언트 간 데이터 전송용 포트 20번, 신호 제어용 포트 21번 두 가지 모두 사용

 

* Active Mode 동작 방식

① 클라이언트에서 FTP 서버의 21번 포트로 접속을 시도하고, 사용할 두 번째 포트를 서버에 알려줌

② 서버는 ACK로 응답

③ 20번 포트는 클라이언트가 알려준 두 번째 포트로 접속을 시도

④ 클라이언트가 ACK로 응답

 

#1 그림과 같이 먼저 클라이언트는 서버의 21번 포트로 접근하여 로그인 요청을 한다.

#2 서버는 정상적인 접근일 경우 그에 대한 승인을 하고 로그인이 이루어진다.

#3 클라이언트가 로그인하게 되면 서버에게 "데이터 전송을 위해서 내쪽의 XXXX포트로 접속해" 알려준다. 이에 서버는 20번 포트를 이용하여 클라이언트가 알려준 포트로 접속을 하고 데이터를 전송한다.

 

(2) 수동 모드(Passive Mode)

- 서버가 클라이언트에 접속을 시도하는 비정상적인 능동 모드에 대한 문제점을 해결하기 위해 나온 모드

- Passive Mode는 서버가 포트를 정함 (서버가 필요한 포트만 열어주면 되기 때문에 실무에선 거의 이것만 씀)

- 데이터 전송용 포트는 서버에서 지정, 신호 제어용 포트는 동일하게 Active와 동일하게 21번을 사용

 

* Passive Mode 동작 방식

① 클라이언트가 21번 포트로 접속을 시도

② 서버에서는 서버가 사용할 두 번째 포트를 알려줌

③ 클라이언트는 다른 포트를 열어 서버가 알려준 이 포트로 접속을 시도

④ 이에 서버는 ACK로 응답

(Passive Mode는 두 번째 data포트로 Active Mode에서 사용했던 20번 포트를 사용하지 않고 1024~65545 사이의 임의의 비 특권 포트를 사용)

 

#1 능동 모드와 동일한 절차를 거쳐 로그인

#2 서버의 21번 포트로 접속을 하게 되고 서버는 승인을 한다.

#3 데이터 전송 시 능동 모드와 달리 클라이언트는 서버 쪽에서 알려준 임의 포트와 연결하여 데이터를 송수신하게 된다.

 

Reference

goitgo.tistory.com/37

peemangit.tistory.com/66

ghdwn0217.tistory.com/90

boanin.tistory.com/194

www.goanywhere.com/blog/2016/11/23/sftp-vs-ftps-the-key-differences

728x90

'IT Network System > Network' 카테고리의 다른 글

암호화 / 인증  (0) 2021.04.28
IPsec VPN  (0) 2021.04.28
공인 IP, 사설 IP, NAT  (0) 2021.02.24
IP주소  (0) 2021.02.24
Network Basic (15편 : OSPF)  (0) 2021.02.23

댓글