FTP
FTP(에프티피)는 File Transfer Protocol의 약자로서, TCP/IP 프로토콜을 가지고 응용계층에서 인터넷에서 파일을 송수신하기 위한 통신 프로토콜이다. FTP를 이용하여 서버와 클라이언트 사이에 네트워크를 통해 파일을 주고받을 수 있다. 포트 번호는 20번이다. 쉽게 말하자면 인터넷을 통해 한 컴퓨터에서 다른 컴퓨터로 파일을 전송할 수 있도록 하는 방법과 그런 프로그램을 모두 일컫는 말이다.[1]
목차
개요
FTP는 파일 전송 프로토콜(File Transfer Protocol)의 약자로 TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다. 네트워크에 연결된 컴퓨터끼리 데이터를 원활하게 교환하기 위한 목적으로 개발되었다. 파생형으로 FTP에 TLS 프로토콜이 적용된 FTPS가 있으며, 비슷한 기능을 제공하는 SSH 프로토콜 기반의 SFTP가 있다. SFTP는 FTP라는 키워드를 포함하고 있으며 용도 또한 같으나 FTP와 기술적인 연관성은 없는 완전히 다른 프로토콜임을 주의해야 한다. FTP는 비밀번호가 평문으로 전송되어 보안성이 매우 떨어지므로 FTPS를 사용하는걸 적극 권장한다. FTPS의 경우 PROT P를 사용하면 데이터 전송까지 암호화되어 높은 보안성을 지니며, PROT C를 사용하면 데이터 전송을 암호화하지 않아 보안성이 떨어지지만 빠른 파일 전송이 가능하다. SFTP의 경우 포트를 하나만 사용하기 때문에 방화벽이 설치된 환경에서 셋팅하기가 쉬워 초보자한테 권장되나, 프로토콜 구조상 PROT P를 사용한 FTPS보다 속도가 느리다는 결함이 있다. FTP와 FTPS는 보통 제어용으로 21번 포트 및 데이터 전송용으로 20번 포트를, 패시브 모드의 경우 50000번대 이상의 포트를 추가적으로 많이 사용하며 FTPS의 경우 990포트를 사용하는 경우도 있다. SFTP는 보통 22번 포트를 사용한다.[2]
세부 내용
네트워크에서 사용하는 프로토콜 중에서 드문 경우로 제어 채널과 전송 채널이 분리된 있는 경우가 있다. 이를 쉽게 풀어 설명하자면 여기에 전화기 한 대와 팩스 한 대가 있다. 이 둘 중에 전화기로는 현재 가지고 있는 자료에 관해서 물어보는 일을 하고, 팩스로는 요청된 필요한 자료들을 전송 받는 일을 하는 형태이다.
FTP를 사용하여 데이터를 주고받으려면 FTP 서버(Server)와 FTP 클라이언트(Client)가 필요하다. 원래의 목적이 데이터 교환에 중점을 둔 것으로 개발되었기에 안전성과 신뢰성이 보장된다. 그렇기 때문에 회사나 동아리 같은 곳에서 FTP 서버를 하나만 구축해 두어도 자료를 공유하는데 상당히 유용한 수단이 된다. 하지만 국내의 경우에 자료를 공유하기 위한 대안이 워낙에 많이 존재하다 보니, 있으면 유용하게 쓰이지만 없어도 신경 쓰이지 않는 수준이다.
많은 FTP 클라이언트들이 좋은 GUI 환경을 제공한다. 하지만 명령어 입력 방식은 아래 그림과 같은데, GUI 환경에서 작동하는 FTP 클라이언트들은 단지 명령어들을 자동을 전송해 주는 역할을 할 뿐이다.
이런 형태의 FTP 클라이언트는 GUI를 사용하지 못하는 환경에서 지금도 매우 널리 사용되고 있다. 특히 UNIX 계열 서버를 관리하는 관리자들에게는 telnet/SSH와 함께 필수로 익혀야 하는 영역이다.
웹 브라우저도 FTP를 지원하는데, 위의 명령어 입력 방식이 어려운 경우에 이 방법을 사용할 수 있다. 인터넷 주소창에 http:// 대신에 ftp://를 붙이고 FTP 서버 주소를 치면 ID와 비밀번호를 입력하는 화면이 나오고, 그걸 입력해서 들어가면 브라우저 화면에 FTP 서버의 파일 리스트들이 링크 형태로 나온다. 이것은 대용량 파일 전송이 웹에서 사용하는 HTTP 프로토콜(Protocol)보다 파일 전송용으로 만들어진 FTP 프로토콜의 유리한 점이 더 많기 때문이다. 하지만 이것은 Microsoft Edge에서는 지원하지 않는다.
1990년대에 대부분의 소프트웨어 업체나 게임 업체 등이 별도의 FTP 서버를 구축하고 익명의 접속을 허용한 후에 자신들이 개발한 프로그램의 셰어웨어나 데모 버전, 패치 등을 공개하곤 하였다. 그 당시에는 지금과 같이 인터넷이 발달해 있는 상태가 아니었기에 FTP 말고는 불특정 다수에게 효과적으로 자료들을 배포할 수단이 거의 존재하지 않았다. 외국의 다른 게임 회사들은 대부분 비슷한 방식으로 FTP 서버를 운용하는 곳이 있었는데, 간혹 예전에 발매되었던 게임들을 FTP에서 무료로 다운받을 수 있는 경우도 존재하니 찾아보는 것도 나쁘지는 않다. 다만 지금은 자사 웹 사이트에서 공개하는 방법이 여러모로 이득이며 패치 같은 것들은 프로그램 내에 패치 업데이트를 위한 프로그램들을 내장시키는 경향이다. 또한, FTP에 대해 배우는 곳이 많지 않으며 사장 되어가고 있는 추세이다. 사실상 웹 기반 파일 전송 서비스로 완전히 대체 되었다.
리눅스 배포판과 각종 리눅스의 중요 오픈소스 소프트웨어들은 FTP로 배포되는 경우가 많다. yum이나 apt와 같은 각종 리눅스 저장소도 FTP로 운영되고 있는 상황이고, 유명 배포판의 경우에는 전 세계에 저장소 미러링 FTP 서버를 운영하는 경우가 많다. 한국 내에서는 카이스트, Daum, 네오위즈에서 운영하는 FTP 서버가 유명하다.[2]
클라이언트 목록
아래는 주요 FTP클라이언트 목록이다.
- FileZilla : 오픈소스 FTP 클라이언트 및 서버를 지원한다. 가장 널리 알려져 있으며, 그 이름에 걸맞게 강력한 프로그램이다.
- WinSCP
- SmartFTP
- Sunshine(App) : PC와 스마트폰, 태블릿의 FTP를 설정해서 파일을 전송하는 애플리케이션이다.
- Windows 탐색기 : 일반적으로 로컬 파일 열람을 위해서 사용되는 프로그램이다. 하지만 주소 줄에 FTP 주소를 입력하면 FTP 클라이언트처럼 사용할 수 있다. 그러나 기능은 허접하다. 따로 설치되어있는 클라이언트가 없을 때 잠깐 사용할 용도로서는 괜찮다.
- Xftp : FTP와 SFTP 프로토콜을 지원한다. 사용하기 쉬운 UI와 Xshell과의 연동이 가능하다. 개인 사용자에 한해서는 무료이다.
- 알 드라이브 : 이스트소프트에서 개발된 프로그램으로, 널리 사용되지만, 업데이트가 뜸하며 뭔가 문제가 많다.
- RaiDrive : 주 기능은 클라우드 스토리지를 윈도우 탐색기에 마운트 시켜주는 기능이지만, FTP와 SFTP도 지원한다.
- ipDISK Drive : EFM 네트웍스의 ipTIME 공유기를 이용한 간이 FTP 서버를 위한 전용 클라이언트로서, 드라이브 문자열을 지정하여 FTP 서버를 이동식 디스크처럼 인식시키는 기능이 있다. 이로 인해 윈도우 탐색기에서 편리하게 사용이 가능하지만 서버에 연결된 저장장치의 용량이 제대로 표시되지 않는 문제가 있다.[2]
역사와 버전
- 1971년 : RFC114로 게시되었다.
- 1980년 : TCP/IP의 전신인 NCP 위에 실행되었다. RFC765 버전으로 대체되었다.
- 1985년 : RFC 959로 나옴. 제안된 일부 표준들은 개정하였다.
- 1994년 : RFC 1579로 방화벽 친화 FTP를 활성화
- 1997년 : RFC 2228은 보안확장을 제안한다.
- 1998년 : IPv6를 지원하고 새 수동모드를 정의한다.
특징
- WWW는 일반문자, 사진,영상콘텐츠를 간편하게 사용하지만 많은 양의 파일을 주고받기에는 느리고 파일제어도 힘들다.
- 인터넷을 통한 파일 송수신만 지원하는 단순하다.
- WWW 방식보다 파일전송속도가 빠르다.
- 사진이나 음악, 동영상 등의 멀티미디어 콘텐츠는 내려 받기가 완료된 다음에 확인할 수 있다(WWW 환경에서는 내려 받으며 재생이 가능하다)
- 명령어 기반의 통신 서비스이기 때문에, 별도의 FTP 클라이언트 프로그램(알드라이브←알FTP를 알드라이브로 변경)을 사용하지 않으면 사용이 복잡하고 어려울 수 있다.
FTP의 동작원리 및 장단점
FTP는 인터넷을 통한 파일 송수신 만을 위해 고안된 서비스(또는 프로토콜)이기 때문에 동작 방식이 대단히 단순하고 직관적이다. 그런 만큼 사용법도 간단하다. 무엇보다 WWW 방식보다 파일을 빠른 속도로 한꺼번에 주고받을 수 있다는 것이 FTP의 가장 큰 장점이다. 다만 빠른 파일 전송이 주된 목적이기에 보통의 경우 사진이나 음악, 동영상 등의 멀티미디어 콘텐츠는 내려받기가 완료된 다음에 확인할 수 있다(WWW 환경에서는 내려받으며 재생이 가능하다). 또한, 기본적으로 명령어 기반의 통신 서비스이기 때문에, 별도의 FTP 클라이언트 프로그램(알 FTP, Cute-FTP 등)을 사용하지 않으면 사용이 복잡하고 어려울 수 있다. FTP의 동작 원리는 비교적 간단하다. FTP 서비스를 제공하는 서버와 여기에 접속하는 클라이언트 사이에 두 개의 연결이 생성되는데, 하나는 데이터 전송을 제어하기 위한 신호를 주고받기 위함이고(네트워크 21번 포트), 다른 하나는 실제 데이터(파일) 전송에 사용된다(네트워크 20번 포트). 여기서 네트워크 포트란 네트워크를 통해 데이터가 이동하는 통로를 말한다. 이를테면, FTP 서버에 접속할 때 입력하는 사용자 계정 및 암호 등의 정보나 파일 전송 명령 및 결과 등은 데이터 제어용 연결에서, 이후 실제 파일 송수신 작업(올리기, 내려받기)은 데이터 전송 연결에서 처리되는 것이다. FTP 클라이언트 프로그램은 여러 파일을 연속으로 송수신해야 하기에, 서버와의 지속적인 응답 메시지 전송을 통해 연결 상태(세션)를 유지한다.[3]
활용
익명(Anonymous) 계정의 활용
- 사용자 암호나 계정 입력이 필요없이 하나의 공용 계정으로 모든 사용자가 접속이 가능하다.
- ‘anonymous’라는 계정에 자신의 이메일 주소를 암호로 입력하면 곧바로 FTP 서버에 접속하여 파일을 내려받을 수 있다.
수동(Passive) 모드 연결과 SFTP 연결
- 능동(active) 모드와 수동(passive) 모드의 두 가지 데이터 접속 방식을 제공한다
- 네트워크 20번과 21번포트의 경우 능동모드인데 보안장비(방화벽)에서 20번을 차단하는 경우에 출력문제가 발생한다.
- 수동모드는 20번포트가 아닌 데이터 전송 포트를 임의로 할당하여 데이터 전송을 진행할 수 있게한다.파일목록이 없으면 문의해아한다.
- SFTP는 FTP연결에 보안성이 강회되어서 해킹같은 보안문제를 미리 방지할수있다. 21번포트가 아닌 22번포트를 사용한다.
내 PC를 FTP 서버로 활용하기
- 윈도우나 리눅스에서 FTP서버로 설정하여 사용할 수 있는데 컴퓨터가 항상 켜져있어야 하고 서버 프로그램도 동작중이어야 한다. 공인 IP주소도 설정되야 한다.
Out of band
- 파일을 전송하는 커넥션과 제어를 위한 커넥션을 다르게 하는 방식이다.
- 예시 : 21번 포트번호로 접속을 제어하고 파일을 전송할 시 20번 포트를 사용하는 방식이다.(Active mode)
21번 포트는 클라이언트와 서버의 접속이 끊길 때 까지 유지된다. 하지만 20번 포트는 파일을 주고받을 때 만 연결하는 방식이다.
보안
FTP는 보안 프로토콜을 위해서 계획된 것이 아니기 때문에 수많은 보안 취약점이 존재한다. 1999년 5월에 출간된 RFC 2577에서 저자들은 다음의 문제에 대한 취약점을 나열하였다.
- 무차별 대입 공격
- FTP 바운스 어택
- 패킷 가로채기
- 포트 훔치기
- 스푸핑 공격
- 사용자 이름 열거
파일 전송 프로토콜은 서버의 파일을 바꾸거나 지울 수 있기에 전송하기에 앞서 사용자의 이름과 암호를 묻는 과정이 필요하다. 그래서 FTP에서는 암호가 암호화되지 않는 위험이 있기에 원 타임(한 번만 묻는) 암호를 이용한 인증을 이용한다. 혹은 보안을 더욱 철저히 하게 하려면 SFTP나 SCP등 다른 방법을 사용하여 파일을 전송하는 것도 하나의 좋은 방법이다. [4]
각주
- ↑ 리치해커 SCOTT〈FTP에 대한 간단 정리〉, 《네이버 블로그》, 2017-01-01
- ↑ 2.0 2.1 2.2 FTP 나무위키 - https://namu.wiki/w/FTP
- ↑ 카메라맨, 〈FTP란 무엇인가?.〉, 《네이버블로그》, 2012-04-02
- ↑ 〈FTP〉, 《나무위키》
참고자료
- 〈파일 전송 프로토콜〉, 《위키백과》
- 존 마틴 데일, 〈FTP란 무엇입니까?〉, 《DIGITAL TRENDS》, 2019-03-30
- 〈FTP〉《나무위키》
- 카메라맨, 〈FTP란 무엇인가?〉, 《네이버 블로그》, 2012-04-02
같이 보기