Foil-screened Twisted Pair에 대한 내용은 이더넷 케이블 문서
, Free to Play에 대한 내용은 부분유료 문서
, 미국의 스트릿 브랜드 FUCKTHEPOPULATION에 대한 내용은 FTP(패션 브랜드) 문서
참고하십시오.1. 개요
파일 전송 프로토콜(File Transfer Protocol)의 약자로 TCP/IP 네트워크상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다. 네트워크에 연결된 컴퓨터끼리 데이터를 원활하게 교환하기 위한 목적으로 개발되었다.FTP는 비밀번호가 평문으로 전송되어 보안성이 매우 떨어지므로 FTPS를 사용하는 걸 적극 권장한다. FTPS의 경우 PROT P를 사용하면 데이터 전송까지 암호화되어 높은 보안성을 지니며, PROT C를 사용하면 데이터 전송을 암호화하지 않아 보안성이 떨어지지만 빠른 파일 전송이 가능하다. SFTP의 경우 포트를 하나만 사용하기 때문에 방화벽이 설치된 환경에서 세팅하기가 쉬워 초보자한테 권장되나, 프로토콜 구조상 PROT P를 사용한 FTPS보다 속도가 느리다는 단점이 있다. FTP와 FTPS는 보통 제어용으로 21번 포트 및 데이터 전송용으로 20번 포트를, 패시브 모드의 경우 50000번대 이상의 포트를 추가적으로 많이 사용하며 FTPS의 경우 990포트를 사용하는 경우도 있다. SFTP는 보통 22번 포트를 사용한다. SFTP와 22번을 보고 눈치가 빠른 사람들은 알겠지만 Secure가 접두로 붙은 것으로 SSH가 적용되어 보안성이 강화되었다.
자신의 집에서 서버를 열면 내부망끼리는 별다른 설정 없이도 쉽게 접속이 가능하지만 외부에서는 그냥 접속하기가 쉽지 않다. 일단 트래픽과 해킹 등의 문제로 ISP가 자체적으로 잘 알려진 포트는 막아둔 경우가 많고 해킹을 피하기 위해서라도 임의의 포트를 사용하는 것이 훨씬 좋다. 이 임의의 포트와 서버의 IP주소를 공유기에서 포트포워딩 설정을 해줘야 한다. 또한 패시브 모드를 사용하려면 5만번대의 임의의 포트 일정 대역을 열어야 하는데 FTP서버 프로그램별로 다르고 공유기에서 일정 대역의 포트포워딩 설정을 하는 것이 또 다르니 이는 직접 알아내서 올바른 설정을 해야한다.
1.1. 보안 강화 프로토콜
TELNET의 보안 문제를 해결하기 위해서 SSH가 등장한 것과 마찬가지로, FTP의 보안강화 프로토콜이 새로 제시되었으며, 대표적으로 아래 2가지가 있다.- FTPS (FTP over TLS) - FTP에 TLS 프로토콜이 적용된 FTPS[1]가 있다. Filezilla 등에 기본 탑재되어 있다.
- SFTP (SSH FTP) - SSH 프로토콜 기반의 SFTP가 있다. OpenSSH 를 설치하면 같이 설치된다. SFTP는 FTP라는 키워드를 포함하고 있으며 용도 또한 같으나 FTP와 기술적인 연관성은 없는 완전히 다른 프로토콜임을 주의해야 한다.
2. 세부사항
네트워크에서 사용하는 프로토콜 중에서는 드물게 제어 채널과 전송 채널이 분리되어 있다. 쉽게 설명하면 전화기 한 대와 팩스 한 대를 가지고 전화기로는 지금 가지고 있는 자료에 대해서 물어보고, 필요한 자료를 요청하면 팩스로 열심히 자료를 전송 받는 형태이다.FTP를 사용하여 데이터를 주고받기 위해서는 FTP 서버와 FTP 클라이언트가 필요하다. 원래 데이터 교환을 목적으로 개발된 것이기 때문에 안정성과 신뢰성이 보장된다. 그렇기에 회사나 동아리 같은 곳에서 FTP 서버 하나 구축해두면 자료를 공유할 때 상당히 유용한 물건이 된다. 하지만 국내의 경우에는 자료를 공유하기 위한 대안이 많다 보니 있으면 유용하지만 없어도 그만인 수준.
많은 FTP 클라이언트들이 휘황찬란한 GUI 환경을 제공하지만, 본래는 아래 그림과 같이 명령어 입력 방식이다. GUI 환경에서 작동하는 FTP 클라이언트들은 단지 명령어들을 자동으로 전송해 주는 것 뿐이다.
[2] |
블리자드의 FTP 서버 |
이런 형태의 FTP 클라이언트는 GUI를 사용하지 못하는 환경에서 아직도 매우 널리 사용된다. 특히 유닉스 계열 서버를 관리하는 관리자들은 SSH와 함께 필수로 익혀야 하는 기능이다.
웹 브라우저도 FTP를 지원한다. 위의 명령어 입력 방식이 어려울 경우에는 이 방법을 써도 된다. 인터넷 주소창에서 http:// 대신 ftp:// 를 붙이고 FTP 서버 주소를 치면 ID와 비밀번호를 묻는 화면이 뜨고, 그걸 치고 들어가면 브라우저 화면에 FTP 서버의 파일 목록이 링크 형태로 주르륵 뜬다. 이것은 대용량 파일 전송은 웹에서 사용하는 HTTP 프로토콜보다는 파일 전송용으로 나온 FTP 프로토콜이 유리한 점이 많기 때문에 지원하는 것. 단 리스트 보기와 다운로드만 가능하며 업로드는 지원하지 않는다. 또한 구버전 엣지에서는 지원하지 않는다. 지금은 웹 브라우저조차 FTP지원을 없애고 있으며 IE와 Opera에서만 목록 열람 및 파일 다운로드가 가능하다.
1990년대에는 대부분의 소프트웨어 업체나 게임 업체 등이 별도의 FTP 서버를 구축하고 익명의 접속을 허용한 후에 자신들이 개발한 프로그램의 셰어웨어나 데모 버전, 패치 등을 공개하곤 하였다. 사실 그 시절에는 지금처럼 인터넷이 발달한 것이 아니었기에 FTP 말고는 불특정 다수에게 효과적으로 자료를 배포할 수 있는 방법이 거의 없었다. 외국의 다른 게임 회사들 대부분은 비슷한 방식으로 FTP 서버를 운용하는 곳이 있고 간혹 예전에 발매했던 추억의 게임들을 FTP에서 무료로 받을 수 있는 경우도 있으니 찾아보는 것도 나쁘지는 않다. 다만 현재는 자사 웹사이트에 공개하는 게 여러모로 이득이고, 패치 같은 것은 프로그램 내에 패치 업데이트용 프로그램을 내장시키는 추세라서 FTP에 대해 배우는 곳도 많지 않고, 사장되는 추세이다. 그리고 일반 사용자용 FTP는 웹 기반 파일전송 서비스로 완전히 대체되었다.
리눅스 배포판과 각종 리눅스의 중요 오픈소스 소프트웨어들은 FTP로 배포되는 경우가 많다. yum이나 apt와 같은 각종 리눅스 저장소도 FTP로 운영되고 있으며, 유명 배포판의 경우에는 전 세계에 저장소 미러링 FTP 서버를 운영하는 경우가 많다. 한국에서는 카이스트, Daum, 네오위즈에서 운영하는 FTP 서버가 유명하다.
현재는 찾아보기 힘든 프로토콜이기도 한데, 과거에야 컴퓨터와 인터넷 환경이 좋지 않아 무조건 가볍고 신뢰성있는 FTP가 파일 송수신에 적합했지만, 지금은 HTTP가 미려한 UI, 클라우드 구축의 용이성, 스마트폰 호환성, 보안 체계 등으로 절대적 우위를 차지하고 있다.
3. 클라이언트
주요 FTP 클라이언트 목록이다.- FileZilla - 오픈소스 FTP 클라이언트 및 서버를 지원한다. 가장 널리 알려져있고 그 이름에 걸맞게 강력한 프로그램이다. 그러나 2018년에 맬웨어가 포함된 채로 배포되는 일이 발생한 후 신뢰도가 하락했다.
- WinSCP - 오픈소스 FTP 클라이언트
- Termius - 원래는 SSH 클라이언트이지만 프리미엄 플랜은 내장된 SFTP를 사용할 수 있다.
- SmartFTP
- Windows 탐색기 - 보통 로컬 파일 열람을 위해 사용되는 프로그램이지만 주소줄에 FTP 주소를 입력하면 FTP 클라이언트처럼 사용이 가능하다. 물론 기능은 허접하다. 따로 설치된 클라이언트가 없을 때 잠깐잠깐 사용할 용도로는 좋다.
- WS_FTP
- Xftp - FTP와 SFTP 프로토콜을 지원하며 사용하기 쉬운 UI 및 Xshell과의 연동 가능. 개인 사용자에 한해 무료이다.
- 알드라이브 - 이스트소프트에서 개발된 프로그램. 널리 사용되지만 업데이트가 뜸하고 어딘가 문제가 많다.
- RaiDrive - 주 기능은 클라우드 스토리지를 윈도우 탐색기에 마운트 시켜주는 것이지만, FTP와 SFTP도 지원한다.
- ipDISK Drive - EFM 네트웍스의 ipTIME 공유기를 이용한 간이 FTP 서버를 위한 전용 클라이언트이다. 드라이브 문자열을 지정하여 FTP서버를 이동식 디스크처럼 인식시키는 기능이 있어 윈도우 탐색기에서 편리하게 사용이 가능하다. 다만, 서버에 연결된 저장장치의 용량이 제대로 표시되지 않는 오류가 있다.[3]
Sunshine(앱) - PC와 스마트폰, 타블릿의 FTP를 설정해서 파일을 전송하는 앱.서비스 종료
4. 기타
- TFTP라는 프로토콜도 있다.
[1] HTTP에 TLS 암호화를 적용시켜 HTTPS를 만든 것과 마찬가지라고 생각하면 된다.[2] 명령 프롬프트에서 ftp라고 쳐서 ftp를 실행한 것[3] 어떤 용량으로 연결하든 간에 10TB가량으로 고정되어 표시되며 사용중인 저장공간도 0byte라고 표시된다. 저장공간의 총 용량과 사용중인 용량을 제대로 알고 싶다면 설정 페이지로 가서 연결된 저장장치를 확인하면 된다.