티스토리 뷰
FTP는 2개의 포트 사용 20:Data 전송, 21:Command
<Active모드>
- command포트를 통해 클라이언트가 보내준 정보를 바탕으로, 서버가 클라이언트의 data포트에 접속을 시도한 후, 클라이언트의 요청에 따라 데이터를 클라이언트에 전송해 줍니다.
- FTP서버의 21번 포트 : 클라이언트에서 접속을 시도할 수 있는 command포트가 온전히 열려있어야 함
- FTP서버의 21번 포트 → 클라이언트의 n(n>1023)번 포트 : 서버에서 클라이언트의 command포트로 응답
- FTP서버의 20번 포트 → 클라이언트의 n+1(n>1023)번 포트 : 서버에서 클라이언트의 data포트로의 접속
- FTP서버의 20번 포트 ← 클라이언트의 n+1(n>1023)번 포트 : 클라이언트에서 서버의 data포트에 응답
[ Active mode FTP connection ]
1. 클라이언트의 command포트(1026: 랜덤값)가 서버의 command포트(21)에 접속하고, 이때 서버에 1027번 포트정보를 전송.
2. 서버는, 응답내용을 클라이언트의 command포트(1026)에 회신.
3. FTP서버는, 서버의 data포트(20)를 클라이언트의 data포트(1027: 클라이언트에서 지정한 포트)에 접속.
4. 클라이언트는 응답내용을 서버에 회신.
Active 모드의 FTP에서 접속문제는 대부분 클라이언트측에서 기인합니다. FTP클라이언트는 서버의 data포트에 직접 접속을 할 수가 없습니다. 단지, 어떤 포트를 청취(listening)하고 있으며, 서버가 데이터 전송을 위해 접속해야할 클라이언트의 포트를 서버에 알려줄 뿐입니다.
클라이언트에 설치된 방화벽의 입장에서 살펴보면, FTP 서버가 클라이언트의 특정포트에 접속하려는 시도가, 외부의 시스템이 침입으로 간주되어 방화벽에 의해 차단되는 경우가 종종있습니다.
<Passive모드>
- command포트에 접속하는 것 뿐만 아니라, 데이터 접속도 클라이언트에서 시도하여, 서버에 데이터를 요청하고 전송받는 방식을 취합니다.
서버가 클라이언트에 접속을 시도해야하는 문제점을 해결하기 위해, 다른 방식의 FTP 연결이 개발되었으며, 이를 passive모드 또는 PASV라고 부릅니다. 서버에 접속하기 위해 클라이언트의 명령이 전송되는 점은 같으나, 그 이후의 방식이 Passive모드의 특징이 됩니다.
Active모드를 이용할 때, 클라이언트에 설치된 방화벽이 FTP서버의 접속 시도를 외부의 침입으로 간주, 차단하는 문제가 있습니다. 이러한 문제를 해결하기 위해 Passive모드에서는 두개의 포트 모두, 클라이언트에서 서버에 접속을 합니다.
FTP연결을 위해, 클라이언트는 사용되지 않는 랜덤한 포트 n(n>1023)과 n+1포트를 열어둡니다. n포트는 서버의 command포트인 21번 포트에 접속합니다. 그러나, 클라이언트는 (서버로 하여금 클라이언트의 data포트에 연결을 허용하기 위해) PORT명령어를 호출하지 않고, PASV명령어를 호출합니다.
그 결과, 서버는 사용되지 않는 랜덤한 포트 p(p>1023)를 열어두고, 클라이언트에 해당 포트정보를 넘겨줍니다.
최종적으로, 클라이언트는 데이터 전송을 위해, 자신의 n+1포트와 서버의 p포트의 연결을 시도합니다.
서버에 설치된 방화벽의 입장에서 살펴보면, Passive 모드의 FTP가 지원되려면, 다음의 통신채널이 열려있어야 합니다.
- FTP 서버의 21번 포트 : 클라이언트에서 접속을 시도할 수 있는 command포트가 온전히 열려있어야 함
- FTP 서버의 21번 포트 → 클라이언트의 n(n>1023)번 포트 : 서버에서 클라이언트의 command포트로 응답
- FTP 서버의 p(p>1023)번 포트 : 클라이언트의 n+1(n>1023)번 포트에서 데이터 접속
- FTP 서버의 p(p>1023)번 포트 → 클라이언트의 n+1(n>1023)포트 : 클라이언트의 요청에 대한 응답 및 실제 데이터를 전송
'IT' 카테고리의 다른 글
[FFMPEG] 옵션 OPTION (0) | 2015.04.13 |
---|---|
[FFMPEG] H.264 Encoding 인코딩 트랜스코딩 (0) | 2015.04.09 |
아카이브와 백업의 차이점 (0) | 2013.11.21 |
[FFMPEG] Command (영상 자르기 Cut, 래퍼변환 Rewrapping) (0) | 2013.08.15 |
오라클(Oracle) DB 성능 측정(vmstat) (0) | 2013.05.27 |
- Total
- Today
- Yesterday
- 태아는 천재다
- MBC
- 자본론
- 우리 결혼했어요
- 채널
- 무한도전
- iis
- 마르크스
- 임승수
- 내 이름은 김삼순
- 마당을 나온 암탉
- 스세딕
- YouTube
- 임신
- 마음으로 만나는 태교
- 김인성
- 음악중심
- 샵n
- 태명
- 네이버
- 최진기의 인문학특강
- 김도향
- 태교
- 가상디렉토리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |