FTP 프로그램에서의 Active 모드와 Passive 모드
FTP 프로그램에서의 Active 모드와 Passive 모드
포럼 회원들 주에 FTP가 무엇인지 모르는 사람은 설마 없겠지요?
- 사실 의외로 FTP 모르는 사람들이 있더군요. 그런것을 보면 요즘 세상은 극과 극인것 같아염. 아는 넘은 무지 많이 알고 모르는 넘은.. 거의 백지 이구... ㅡㅡ;
오늘 쓸 글은 일반적인 사람들은 그다지 겪어 보기 힘든 경우 인데,
FTP 를 구성하는데 있어서 라우터 안쪽의 환경과 같이 가상 아이피를 사용하는 컴퓨터의 FTP 구성입니다.
집에서 FTP 서버를 필요할때만 가동시키시는 분들은 별로 해당사항 없고염,
회사나 학교에서 보안의 이유로 라우터를 이용하여 내부 아이피를 사용하여 관리자가 허가한 기본 포트를 제외한 모든 포트가 막힌 경우의 이야기지염.
일단 이러한 환경에서 ftp 서버를 만드려면, 쉽지가 않습니다.
대부분 네트워크 관리자들은 서버의 부하를 고려하여 ftp 기본 포트인 21번은 막아 둡니다.
뿐만아니라.. 거의 대부분의 포트를 다 막아 두지염.
그렇게 포트를 막으면, 인터넷은 어떻게 하냐라고 궁금해 하실지 모르지만,
인터넷하고는 아무상관이 없습니다. 대게의 경우 인터넷 포트는 열어둘 뿐더러, 여러분이 직접 어떠한 종류의 서버를 구축하지 않는 이상,
그렇게 큰 불편은 못느끼 실것입니다.
외부에 있는 각종 서버를 접속하는 데는 별문제가 없지요. 문제는 여러분들이 서버를 구축하여 외부에서 그 여러분의 서버를 찾아 들어오는것이 상당히 어렵다는 것입니다.
아마도, 일부 내트워크 프로그램이 작동안하는 경우가 생기는게 대부분이지요.
메신져 프로그램이나 당나귀 같은 네트워크 프로그램이 포트가 막혀서 접속이 안되던지, Low ID 현상을 일으킬것입니다.
포트가 막혀있기 때문에 메신져가 쓰는 포트나 당나귀가 쓰는 포트를 쓸수가 없는 것이지요.
메신져 중에서 내부 아이피에 가장 강한 프로그램이 MSN 이라고 그러더군요.
그외의 나머지 메신져 중에는.. 내부 아이피 일경우 아예 접속이 안되는 것도 많지요..
이와같이 가상아이피을 경우 걔발자 입장에서도 무척 성가시고 골치아프기 때문에 모든 버그를 해결하기는 어렵습니다.
우선은 여러분들의 원활한 FTP 서버운영을 위해서는
여러분의 컴퓨터에 한해서 FTP 포트인 21번 포트를 열기위한 네트워크 관리자 로비가 필요합니다.
여러분의 내부 아이피에 한하여 21번 포트가 열려야 하고, 이럴경우 외부에서는 ftp 접속시에는 네트워크 상의 외부 공인 아이피를 찍고 들어오면,
여러분이 만든 서버에 접속할수가 있지요..
그런데 이러한 방법은 말처럼 쉬운일이 아닙니다.
왜냐면, 인터넷을 하기위한 외부 공인 아이피는 그 네트워크 에서 몇개 안됩니다.
대게 소규모의 네트워크 라면 하나 정도의 공인 아이피로 모두 커버하는 경우도 있지요.
그런데 그러한 공인 아이피의 가장 유용하다 할수 있는 21번 포트를 당신에게 내어 줄 네트워크 운영자는 그리 많이 있지 않다는 것이지요.
차선의 방법은 임의의 포트를 열어 달라는 것입니다.
어차피 숫자이니 만큼 기존 예약 되어진 포트가 아닌 임의의 포트를 하나 열어 달라고 하여,
그 포트를 이용해서 ftp 를 구축하는 것입니다.
이러한 방법은 라우터 안에 혹은 아이피 공유기 안에 복수의 컴퓨터로 복수의 ftp를 구축할 경우도 해당이되는 내용입니다.
이미 21번을 다른 서버에서 사용하고 있거나, 21번을 못쓰는 경우를 말합니다.
내부 아이피를 가지고 비정규포트를 사용해서 ftp 를 구성하는 경우 간과해선 안되는 부분이
우리가 많이 알고 있는 패시브 모드와 액티브 모드라는 것입니다.
패시브 모드라는 건 ftp 를 사용하는 사람이라면 익숙하실것입니다.
패시브 옵션에 체크를 해야 접속이 잘 안되는 ftp 서버에 접속이 된다는 정도 겠지요.
FTP 에 관한 지식중에 틀리기 쉬운 부분이 2개가 있는데,
하나는 ftp 서버가 포트를 하나만 쓴다는 것과, 패시브 모드와 액티브 모드가 FTP 서버에서 설정되어진다 라는 것입니다.
ftp서버가 사용하는 포트는 2개 입니다.
하나는 로그인과 디랙토리 검색 따위의 정보 포트와 실제적으로 데이터를 다운 받고 업하는데 쓰는 데이터 포트입니다.
FTP 서버의 포트가 정규포트 (21번) 일경우에는 데이터 포트는 20번입니다.
그런데 비정규 포트인 경우 데이터 포트 역시 정해져 있지 않기 때문에, 데이터 포트 역시 따로 설정을 해야 합니다.
접속 주소를 적어 본사람은 알겠지만, 어디에서 데이터 포트를 입력하는곳은 없지요.
따라서 어디에선가 이 데이터 포트를 지정을 해줘야 합니다.
패시브 모드라하는것은 이러한 데이터 포트를 사용자가 즉 클라이언트에서 지정하겠다는 것이고,
액티브 모드는 서버에서 데이터포트를 지정하는 것입니다.
이것은 서버의 설정과는 아무 상관이 없으며 클라이언트 프로그램에서 결정을 하는 것이지요.
우리가 주로 패시브 모드로 접속을 하는 것은, 접속환경이 주로 서버측은 공인 아이피이고, 접속자는 즉 클라이언트는 유동아이피이거나 가상아이피가 많기 때문입니다.
클라이언트 측이 공인 아이피이거나 유동아이피인경우는 별상관없지만,
라우터 따위로 내부 내트워크에 속한 사설 아이피인경우, 서버측에서 지정하는 포트가 막혔을 가능성이 높기 때문이죠.
그래서 데이터 포트를 포트의 제약이 심한 클라이언트 쪽에서 정하게 하여 연결을 하는 것입니다.
이와 반대로 액티브 모드는 데이터 포트를 클라이 언트에서 지정하는 것이 아니고 서버 측에서 지정을 합니다.
접속자 포트의 제약이 없는 반면에 서버가 라우터 및 IP 공유기에 의해 내부 아이피로 존재 사용 되어 집니다.
데이터 포트에 대한 제약이 서버측에 있기 때문에, 클라이언트 쪽에서 임의로 데이터 포트를 결정하는 경우
포트가 막혀 있을 확률이 높기 때문에 포트 결정을 서버 쪽에서 하는 것입니다.
결론적으로 내부 아이피를 가진 ftp 서버는 지정 포트가 21번이 아닐때에는
패시브 모드로는 외부에서 접속이 불가능 합니다. ( 당연하겠지만, 같은 내부의 컴퓨터들끼리는 액티브든 패시브든 상관없이 접속이 가능합니다. )
21번 포트의 서버가 따로 있고 그외의 다른 포트를 이용해서 ftp 서버를 만들면, 외부의 접속자는 클라이언트 프로그램의 옵션에서 액티브모드로 변경을 해줘야 하지요.
또 하나 사람들이 오해하기 쉬운 것은,
저 같은 경우도 간단한 자료 전송은 ftp 를 이용해서 상대측으로 부터 익스플러에 ftp://주소/파일 이런식으로 링크를 걸어 두는데,
익스플러의 ftp 전송모드는 기본이 액티브 모드가 아닌 패시브 모드입니다.
그래서 패시브 모드로는 접속이 안되는 내부 아이피 ftp 서버는 익스플러에서 접속이 불가능합니다.
마지막으로 ftp 규약에서 응답부호에 대한 설명을 올립니다.
ftp 에 접속하다보면 오른쪽 아래 창에 숫자로 시작하는 메세지가 마구 뜨는데,
ftp 접속 프로그램을 만들경우, 주로 그 3자리 숫자를 인식해서,
서버의 상태를 알아 옵니다.
일반 사람들에게는 별 필요 없을지도 모르지만,
참고로 보시라고 올립니다.
----------------------------------------------------------------------------------------
FTP 기능 그룹별 응답 부호.
1. 200 명령 OK
2. 500 구문 요류, 명령이 인식되지 않았음.
[여기에는 너무 긴 명령행과 같은 오류가 포함될 수도 있다.]
3. 501 매개변수나 인자에서는 구문 오류.
4. 202 명령이 장소(site)에서 구현되지 않고, 불필요함
5. 502 명령이 구현되지 않았음.
6. 503 명령들이 순서가 잘못되었음.
7. 504 그 매개변수에 대하여 명령이 구현되지 않았음.
8. 110 재개시 표시기 응답.
이 경우 텍스트는 정확하고 특정 구현의 여지가 없다; 이 것은 다음
사항을 읽어야 한다:
MARK yyyy = mmmm
여기서 yyyy는 사용자-프로세스 데이타 열 표시기이고, mmmm은 서버의 동등한 표시기(equivalent marker)이다.(표시기와 “=” 사이에 간격이 있다.)
9. 119 단말기 사용 불가, 우편 박스 기능 시도.
10. 211 시스템 상태, 또는 시스템 도움말 응답.
11. 212 디렉토리 상태.
12. 213 파일 상태.
13. 214 도움말 메시지.
(서버나 특정 비표준 명령의 의미 사용 방법에 관하여, 이 응답은
사용자에게만 유용하다.)
14. 215 <scheme>가 선호 골격임.
15. 120 서비스가 nnn분 후에 준비됨.
16. 20 새로운 사용자를 위하여 서비스가 준비됨.
17. 221 서비스가 TELNET 연결을 폐쇄하고 있음.
(적절하다면 로그아웃됨)
18. 421 서비스 사용 불가, TELNET 연결 폐쇄.
[이것은 서비스가 폐쇄 되어야 하는 것을 알고 있으면 어떤 명령에
대한 응답도 될 수 있다.]
19. 125 데이타 연결이 이미 개방되어 있음; 전송 시작.
20. 225 데이타 연결 개방; 진행중인 전송이 없음.
21. 425 데이타 연결을 개방할 수 없음.
22. 226 데이타 연결 폐쇄; 요청된 파일 동작이 성공적임.
(예, 파일 전송이나 파일 강제 종료.)
23. 26 연결이 폐쇄 되었음; 전송이 강제 종료되었음.
24. 227 수동 모드로 전환. h1, h2, h3, h4, p1, p2.
25. 230 사용자가 로그인 되었음, 계속하시오.
26. 530 로그인 되지 않았음.
27. 331 사용자 명 ok, 비밀 부호가 필요함.
28. 332 로그인을 위한 계정이 필요함.
29. 532 파일 저장을 위한 계정이 필요함.
30. 150 파일 상태 ok; 데이타 연결을 곧 개방할 것임.
31. 151 국부 사용자 아님; <user>@<host>로 나아갈 것임.
32. 152 알려지지 않은 사용자; 우편이 관리자에 의하여 회송될 것임.
33. 250 요청된 파일 행위 ok, 완료되었음.
34. 350 요청된 파일 행위가 더 이상의 정보를 보류하고 있음.
35. 450 요청된 파일 행위가 이루어지지 않았음: 파일이 이용될 수 없
음(예, 파일 사용중).
36. 550 요청된 행위가 이루어지지 않았음: 파일 사용 불가(예, 파일을
변경할 수 없어서 접근 불가).
37. 451 요청된 행위가 강제 종료되었음: 국부 오류가 처리중임.
38. 551 요청된 행위가 강제 종료되었음: 알려지지 않은 페이지 형식.
39. 452 요청된 행위가 이루어지지 않았음: 시스템의 기억장치 공간이
불충분함.
40. 552 요청된 파일 행위가 강제 종료 되었음: 기억장치 할당이 초과
되었음.(현재 디렉토리나 데이타베이스를 위하여)
41. 553 요청된 행위가 이루어지지 않았음: 파일명이 없음.
42. 354 우편 입력 시작; <CR><LF>.<CR><LF>.로 종료.
응답 부호의 숫자 순서별 목록.
1. 110 재개시 표시기 응답
이 경우 텍스트가 정확하고 특정 구현에 좌우될 여지가 없다; 이것은
반드시 다음과 같이 읽혀져야 한다.
MARK yyyy = mmmm
여기서 yyyy는 사용자-프로세스 데이타 열 표시기이고, mmmm은 서버의 동등한 표시기이다.(표시기와 “=” 사이에 간격이 있다.)
2. 119 단말기 사용 불가, 우편 박스 기능 시도.
3. 120 서비스가 nnn분 후에 준비됨.
4. 125 데이타 연결이 이미 개방되어 있음; 전송 시작.
5. 150 파일 상태 ok; 데이타 연결을 곧 할 것임.
6. 151 국부 사용자 아님; <user>@<host>로 나아갈 것임.
7. 152 알려지지 않은 사용자; 우편이 관리자에 의하여 전달될 것임.
8. 200 명령 ok.
9. 202 명령이 이 장소(site)에서 구현되지 않고, 불 필요함.
10. 211 시스템 상태, 또는 시스템 도움말 응답.
11. 212 디렉토리 상태.
12. 213 파일 상태.
13. 214 도움말 메시지
(서버나 특정 비표준 명령의 의미 사용 방법에 관하여, 이 응답은
사용자에게만 유용하다.)
14. 215 <scheme>가 선호 골격임.
15. 220 새로운 사용자를 위하여 서비스가 준비됨.
16. 221 서비스가 TELNET 연결을 폐쇄하고 있음.
(적절하면 로그아웃됨)
17. 225 데이타 연결 개방; 진행중인 연결이 없음.
18. 226 데이타 연결 폐쇄, 요청된 파일 동작이 성공적임.
19. 227 수동 모드 전환, h1, h2, h3, h4, p1, p2.
20. 230 사용자가 로그인 되었음, 계속하시오.
21. 250 요청된 파일 행위 ok, 완료되었음.
22. 331 사용자명 ok, 비밀 번호 필요함.
23. 332 로그인을 위한 계정이 필요함.
24. 350 요청된 파일 행위가 더 이상의 정보를 보류하고 있음.
25. 354 우편 입력 시작; <CR><LF>.<CR><LF>.로 종료.
26. 421 서비스 사용 불가, TELNET 연결 폐쇄.
[이것은 서비스가 폐쇄되어야 하는 것을 알고 있으면 어떤 명령에
대한 응답도 될 수 있다.]
27. 425 데이타 연결 개뱡 불가.
28. 426 연결이 폐쇄되었음; 전송이 강제 종료되었음.
29. 450 요청된 파일 동작이 이루어지지 않았음: 파일이 이용될 수 없
음(예, 파일 사용중).
30. 451 요청된 동작이 강제 종료 되었음:국부 오류가 처리중임.
31. 452 요청된 동작이 이루어지지 않았음: 시스템의 기억장치 공간이
불충분함.
32. 500 구문 오류, 명령이 인식되지 않았음.
[여기서는 너무 긴 명령 행과 같은 오류가 포함될 수도 있다.]
33. 501 매개변수나 인자에서의 구문 오류.
34. 502 명령이 구현되지 않았음.
35. 503 명령들의 순서가 잘못되었음.
36. 504 그 매개변수에 대하여 명령이 구현되지 않았음.
37. 530 로그인 되지 않았음.
38. 532 파일 저장을 위한 계정이 필요함.
39. 550 요청된 계정이 이루어지지 않았음: 파일 사용 불가
(예, 파일을 발견할 수 없어서 접근 불가).
40. 551 요청된 계정이 강제 종료되었음: 알려지지 않은 페이지 형식
41. 552 요청된 파일 동작이 강제 종료되었음: 기억장치 할당이 초과되
었음 (현재 디렉토리나 데이타베이스를 위하여).
42. 553 요청된 행위가 이루어지지 않았음: 파일명이 없음.
Trackback Address :: http://jjangu.pe.kr/blog/trackback/396



