인터넷 기행 FTP는 파일의 수출입 창구
지난 달 까지는 인터넷 상에서 가장 기초적이라고 말할 수 있는 텔넷을 이용한 원격지 접속을 통해 인터넷 상의 다른 컴퓨터에 접속하는 과정과 공개적으로 접속할 수 있는 인터넷 사의 비비에스를 이용하는 방법을 알아 보았다. 그런데 다른 공개 비비에스에 접속하다 보면 한가지 빠진 점이 있을 것이다. 글을 올리고 편지도 주고 받고 대화도 나눌 수 있지만, 파일 전송에 보면 ftp를 통한 파일 송수신이란 메뉴가 있는 비비에스가 간혹 눈에 띄인다. 흔히 생각하기에는 파일을 보내고 받을 때에는 Z-MODEM을 사용하면 되지 않나 하지만 TCP/IP프로토콜을 사용하는 인터넷 상에서는 파일을 전송하는 전용의 프로토콜이 따로 있다. 바로 FTP가 그것이다 FTP는 File Transfer Protocol의 약자로서 파일을 전송하기 위한 TCP/IP 상의 규약이다. 그럼 이런 규약이 왜 필요한지 한번 알아 보기로 하자. 예를 들어 국내에서 전화를 이용해 비비에슨에 접속하여 파일을 전송받는다고 가정하면, 그냥 파일을 보내는 쪽에서 Z-MODEM을 실행시키고 받는 쪽에서는 그냥 Z-MODEM을 실행시키면 그만이다. 그 이유는 전화선이 계속 연결되어 있는 상태이므로 전화를 강제로 끊거나 하기 전에는 패킷(파일을 여러 막으로 나누어서 송신축에서 수신축으로 보내는 작은 데이터 몫음)이 중간에서 사라질 수 없다. 여기에 잡음이 끼는 문제는 에러 복구의 문제이므로 논의의 대상에서 제외된다. 그러나 국제적인 통신인 인터넷에서는 조금 사정이 다르다. 예를 들어 영국에서 사전 한 권을 한국으로 전송한다고 하면 국제전화를 걸지 않는 한 한면이 회선을 독점적으로 계속 사용할 수 없다. 인터넷으리 경우에는 중간에 많은 중계장치 (인공위성이나 해저케이블, 여러 나라의 전화국, 네트 워크의 관무이 게이트웨이Gateway나 라우터Routor와 같은)를 거쳐야 하기 때문에 계속적인 데이터 전송은 거의 불가능하다. 특히 많은 사용자가 접속한 시스템의 경우에는 파일 리스트만 보다가 끊어지는 경우도 가끔있다. 그래서 이러한 상황에서 해결방법은 파일 전송 프로그램을 사용하는 것이다. FTP의 기본적인 방식은 TCP/IP프로토콜을 이용하도록 되어 있는 것이외에는 파일 전송속도가 빠르다든지 하는 특별한 특징은 없다. 파일 전송 속도는 어디까지나 원격지와의 회선을 얼마나 많은 사람이 사용하고 있는지, 자신이 접속한 호스트에 얼마나 많은 사람이 접속하였는지 하는 것에 영향을 받는다. FTP는 원래 TCP/IP프로토콜을 이용한 파일 전송 규약이지만 일종의 파일 전송 서비스를 제공한다. 그 서비스란 누구든지 접속하여 파일을 전송받아 갈 수 있도록 허용해 주는 것이다. 원래 FTP로 접속을 하면 사용자 이름과 패스워드를 물어보는데, 만약 누구든지 접속을 할 수 있돎 허용이 되어 있는 시스템이라면 특정 서비스명을 이용하여 쉽게 접속할 수 있다. 이 때 접속할 수 있는 서비스명이 anonymous(또는 ftp)이므로 흔히’어노니머스 사이트’라고 부르기도 한다.
FTP를 알아야 인터넷을 제대로 활용할 수 있다
FTP를 사용하는 방법 또한 어렵지 않다. 단지 FTP명령을 내린후 몇가지 정해져 있는 공통적인 명령을 상요해 정보를 주워 담기만 하면 된다. 먼저 해외의 유명사이트(Site, 인터넷에 연결되어 접속 가능한 호스트 컴퓨터)를 몇개 알아 보독록 하자. 공짜로 접속할 수 있는 어노니머스 사이트들의 리스트가 공개되기도 하는데, 이를 이용하는 것도 좋은 방법이다. 그러나 그런 방법은 가장 기초적이고 많은 시행착오와 시간 낭비를 가져오는 작업이다. 물론 특정주제를 정하고 거기에 관련된 많은 파일들을 필요로 하는 경우에는 상관이 없지만 대개 그런 리스트에는 대략 컴퓨터에 가면 어떤 종류의 프로그램들이 있다.하는 정도의 정보만 있거나 또는 시간이 많이 지난 리스트들이라 현재는 그 디렉토리가 변경되거나 파일이 삭제되어 버린 경우가 매우 흔하다. 그래서 인터넷 초보자들의 전화요금만 축내는 경우가 대부분이다. 그러므로 조금은 쉽고 시간을 절약할 수 있는, 많은 인테넷 이용자들이 사용하는 방법을 소개하도록 하겠다. 첫번째 방법은 유명 사이트에 자주 접속하여 최신의 프로그램이 어떤 것이 있는지를 조사하는 것이다. 너무나 당연하다. 국내 또는 외국의 유명 사이트들에 접속하여 최근에 새로 업데이트된 파일이 어떤 것이 있는지 살펴 보는것이 작은 사이트들을 쓸데 없이 방황하는 것 보다는 훨씬 가치가 있다. 즉 똑똑한 놈이 우둔한 열놈보다 낫다는 말이다. 몇몇 유명 사이트들에서는 최근 업데이트된 파일들에 대한 목록을 올려두는 경우가 많은데 이런 목록을 받아다가 새로운 파일을 찾는 것이 훨씬 시간이 절약될 것이다. 두번째 방법은 Archie Sever를 이용하는 방법이다. Archie란 캐나다의 맥길 대학이라고 하는 곳에서 만들어진 소프트웨어인데, 전세계적으로 흩어져 있는 어노니머스 사이트들에 등록된 파일들을 검색해 주는 일종의 데이터베이스이다. 이 기능을 이용하면 파일이름이나 특정 디렉토리의 이름과 같은 기본적인 사항을 검색어로 하여 쉽게 파일이 어디에 있는지 알 수 있다. 백문이 불여 일견이라고 했으니 파일 사냥 현장을 구체적으로 살펴보도록 하자. 먼저 지난 호에서 언급했던 텔렛을 이용하도록 하자. 이 텔넷은 다른 컴퓨터에 접속을 할 수 있도록 해 주는 가상 터미널 프로그램이다. 어디로 접속하는가 하면 바로 archie server이다. 원래의 archie server는 캐나다에 있지만 국내에서도 이런 기능을 제공하는 곳이 있다. 또는 외국에도 있으므로 어느쪽이든 편한곳에 접속을 하면 된다. 그러나 몇몇 외극의 사이트(대만과 같은)경우 거리는 가까운데 비해 속도가 아주 느려지는 경우가 가끔 있으므로 차라리 국내에 접속하는 것이 오히려 속 편한 경우가 많다. 예를 들어 winsocket파일을 구하려고 하는 경우 먼저 archie server에 접속을 하여 어디에 있는지 찾아보도록한다. 가장 빠른 속도를 맛볼 수 있는 archie.sogang.ac.kr에 접속을 해 보았다. archie의 사용법은 help라고 키보드상에서 입력하면 자세히 나오게 되는데, 특별한 사용법을 몰라도 몇개의 명령만으로도 충분히 유용한 정보를 검색 할 수 있다. 다른 archie server리스트를 보기 위해서는 ‘server’라는 명령을 이용한다. 파일 명으로 검색하기 위새서는 ‘find’명령을 사용한다. 이때 만약 여러 페이지에 걸쳐 출력이 되면 일일이 켑쳐를 해서 보기 불편하므로 앞으로 출력이 한 페이지 단위로 출력 되도록 ‘page’명령을 사용한다. 이제 명령을 내려 찾고자 하는 파일이 어디에 있는지 본다. 그명령은 ‘find’를 이용한다. 이때 도스의 경우를 생각해서 winsock*.*이란 파일 이름을 쓸 필요는 없다. 그냥 아는 문자를 입력하면 그 문자가 포함되어 있는 모든 파일과 디렉토리가 출력된다. 에를 들어 find gif라 입력한 경우 디렉토리이건 파일 이름이건 확장자이건 상관없이 gif란 문자가 포함된 모든 파일목록이 출력된다. 호스트 컴퓨터와 원하는 디렉토리를 정확히 찾았으면 이제 직접 파일을 받아 오도록 하자. 윈도우용 프로그램 화면 먼저 떠 오르는 것이 cica라고 할 정도로 가장 많은 윈도우 관련 프로그램들이 등록되어 있으므로 굳이 archie에서 찾지 않아도 될 것이다. 그러나 cica와 같은 경우는 항상 만원사례를 이루고 있으므로 다른 미러사이트를 이용하는 것이 나을 것이다. 미러 사이트라함은 너무 많은 접속으로 원할한 서비스가 어려우므로 다른 사이트에서 그대로 파일을 복사하여 또같은 파일들을 제공하는 것을 말한다. 그중 ftp.cdrom.com이란 곳을 접속해 보았다. 이곳은 garbo 나 cica외에도 많은 곳을 미러링하고 있으며, 속도도 괜찮은 편이므로 자주 이용하는 곳 중의 하나이다. 먼저 접속을 하면 사용자 이름을 물어오는데 이때 anonymous또는 ftp라고 입력한다. 이 anonymous와 ftp는 계정 이름이 아니고 서비스 이름이다. ftp라고 입력한 다음(엔터)키를 누르면 패스워드를 물어오는데, 이 페스워드는 사요자를 확인하기 위한 최소한의 절차이므로 보통 guest@라고 입력한다. 이때 주의해야 할 것은 반드시 뒤에 @를 붙여줘야 하는데 간혹 이것을 빼 먹으면 접속을 끊거나 제한된 디렉토리만 볼수 있는 경우도 있다.
접속한 다음 사용되는 명령
접속이 무사히 끝나면 환영 메시지와 대략적인 사이트 설명같은 것이 나온다. 이곳에서 내릴 수 있는 명령은 cd, dir, binary, put, get, mget, pwd, puitbye등이 있다. cd명령은 도스나 유닉스 공히 같은 개념을 사용하고 잇으므로 어렵지 않을 것이다. dir명령은 뒤에 복잡한 옵션이 사용될 수 없으므로 그냥 dir이라고 치거나 특정 파일이나 디렉토리 이름을 뒤에 쓸 수 있다. 예를 들어 dir/pub/*win*이라는 명령은 루트디렉토리에 있는 pub라는 디렉토리에서 win이란 문자가 포함된 모든 파일 또는 디렉토리를 보여준다. 이때 주의해야 할 것은 유닉스상의 디렉토리 구분문자는 \이 아니라 /라는 점이다. 직접 파일을 받는 명령이 get인데 이 명령을 내릴 때 주의해야 할 것은 처음 접속한 상태는 ASCII상태로 일반 문자가 전송되는 상태이므로 이진파일들(실행파일이나 압축된 파일들과 같은)을 받을 때에는 반드시 bibary라는 명령을 먼저 내려 binary모드로 전환하여 파일을 전송받아야 한다. 그렇지 않으면 파일을 제대로 전송받을 수 없게 된다. mget명령은 여러개의 파일을 동시에 받을 경우 사용한다. 즉 mget*.zip과 같은 명령을 내릴 수 있다. 이런 기본적인 명령만으로 관여 파일이 전송되어 오는지 보도록 하자. 우리가 접속한 곳은 ftp.cdrom.com이란 이름을 가진 곳이고, 이곳에 winsock.zip파일이 있는 디렉토리는 /pub/cica/winsock이므로 (archie에서 찾은 다음 확실히 기억을 해 두어야 시간을 절약 할 수 있다.)cd명령으로 디렉토리를 바꾼다.
ftp>cd/pub/cica/winsock
이곳에서 만약 winsock.zip이란 파일이 있는지 확인하고 싶으면 dir명령을 사용한다.
ftp>dir winsock.zip
파일을 전송받는 명령은 앞에서 설명한 그대로이므로 먼저 binary명령을 종료하면 처음 ftp를 실행했던 셸 상태로 빠져 나오는데, 여기서 부터 집까지는 Z-MODEM프로토콜을 이용하여 전송을 받는다. 보통 유닉스의 Z-MODEM에서 전송은 ‘sz’으로 하는데, ‘sz파일명’이라 입력하면 전화선을 타고 집으로 전송이 될 것이다.
초보자들의 집결지, 가르보-시카 사이트
지금까지 archie를 이용하여 필요한 파일들을 바다오는 경우를 보았다. 그러나 대부분의 사용자들은 파일이름을 잘 모르므로 직접가서 뒤지는 것을 더선호할 것이다. 초보자들에게 가장 많이 추천하는 곳은 garbo이다. 정확한 이름은 garbo.uwasa.fi이다. 이곳은 도스에 관련된 많은 유틸리티와 여러가지 팁 등이 열심히 올라오는 곳이다. 이곳을 다 뒤지는데에는 많은 시간이 필요하므로 아예 이곳의 디렉토리를 쉽게 뒤져볼 수 있도록 해주는 프로그램까지 있을 정도이다. 또 다른 유명한 곳으로는 cica(ftp.cica.indian.edu)가 있다. 이곳은 앞에서 잠시 설명한 것과 같이 윈도우 관련 프로그램들이 많이 모여 있는 곳이다.이런 곳에 가면 보통 00index, 또는 INDEX라는 파일이 있는데, 이 파일들은 그 디렉터리에 있는 파일들의 리스트와 간단한 설명같은 것이 들어 있는 경우가 대부분이다. 이런 파일 목록을 받아두고 필요할 때마다 참고로 하거나 직접 온라인 상에서 볼 수도 있다. 그런데 이때에는 한가지 팁이 필요하다. 왜냐하면 FTP에서는 도스의 type명령과 같은 기능이 없으므로 파일을 받은 다음 잠시 셸로 빠져나가 보던지 아니면 유닉스 more를 이용한다. 예를 들어 00index라는 파일을 전송받으면서 보고 싶은 경우에는
ftp>get 00index |more <-이때 |와 more를 반드시 붙여야 한다.
라는 명령을 내리면 한 화면씩 끊어서 인덱스 파일을 바아볼 수 있다. 지금까지 파일을 찾아서 받아오는 방법에 관해 대략적으로 설명을 해 보았다. 이제부터 여러분이 할 일은 부지런히 전세계를 돌면서 필요한 파일을 구해오는 것이다. 늘 국내 유명 비비에스에 접속하여 다른 사람이 인터넷상에서 구해온 프로그램을 경탄해 마지 않으며 다운받아 쓰는 입장에서 여러분이 남들보다 앞서 프로그램을 구해오는 척후병의 임무를 뜨게 되는 것이다.이제 자신의 컴퓨터에 garbo라는 디렉토리나 cica라는 디렉토리를 만들어 비어있는 하드디스크를 살찌울 때이다.
이 시절, 주요한 서버 접속 수단은 (ssh가 아닌) telnet이었으며, 파일 전송 수단은 FTP 였다. 사실 나는 서버에 sz 나 rz 를 업로드하여 새롬 데이터맨에서 ZMODEM 으로 다운 받곤 했지만, sz/rz 가 미리 설치되어있는 서버는 거의 없었다.
FTP 로 파일 전송 시 최소한 파일 사이즈만이라도 체크해줘야 했는데, 왜냐하면 파일이 제대로 업로드/다운로드 되지 않는 경우가 숱하게 많았기 때문이다. 특히 업로드가. passive/active mode 에 따른 파일 전송 실패를 말하는 게 아니다. ascii/binary 모드에 따른 파일 변조 뿐만이 아니다. 파일이 95% 만 전송되어 뒷부분이 생략된다던지 하는 일이 숱하게 많았다.
훗날의 이야기지만, 현 직장에서 홍보실이 홈페이지를 만든다고 국내 웹 에이전시와 계약을 했다. 상주 프로젝트여서 그 에이전시는 우리 공사의 서버를 이용했다. 그런데 어느 날, 서버가 이상하다고 이슈를 제기했다. 홍보실과 개발업체 그리고 내가 함께 회의를 했는데, 개발업체에서는 editplus 를 사용해서 자체 FTP 기능으로 원격 편집을 하는데 서버가 자꾸 파일을 잘라먹는다는 것이었다. 이런 경우는 처음 본다고.
FTP 쓰지 말라고, 경험상 FTP 원래 그렇다고 했지만, 개발자는 본인은 FTP 를 쓰면서 그런 일은 본 적이 없다고 서버가 이상해서 개발을 못하겠다는 것이었다.
인터넷을 통해 여러가지로 확인해 보았는데, editplus 개발자도 FTP 파일 전송의 정합성을 보장하기 위해 노력하다고 포기했다는 글을 보았다. FTP 는 서버에 따라 전송 성공 여부가 다르다고. 꽤 다양한 환경에서 꽤 많이 실패하고, 그 성공을 보장할 수가 없다고.
그러니까 FTP 쓰지 말자.. 파일 보내고 끝이다. 확인 과정이 없다. SFTP/FTPS 등 개선된 FTP 는 예외.