FTP
File Transfer Protocol 의 약어로, 파일을 전송하는 통신 규약이다. 해당 프로토콜을 이용하여 서버 간 파일을 주고 받는 것이다. FTP 서버와 FTP 클라이언트 간의 통신 시 해당 프로토콜을 이용한다.
FTP는 Active 모드와 Passive 모드라는 두 개의 모드가 존재한다. 각각의 모드에서는 2개 또는 2개 이상의 포트가 연결을 맺고 데이터를 전송하는 데 사용된다. 각가의 모드에서는 2개 또는 2개 이상의 포트가 연결을 맺고 데이터를 전송하는 데 사용된다. 사용되는 포트는 연결을 제어하는 Command 포트가 있으며, 데이터를 전송하는 DATA 포트가 있다.
FTP는 TCP 기반으로 만드렁져 있으며 기본적인 동작 모드는 Active 모드이다. 20번 또는 1024번 이후의 데이터포트는 데이터를 전송하는 데 사용되며, 21번 포트는 접속 시에 사용되는 명령(Command) 포트이다.
Active 모드
Active 모드의 FTP의 동작 과정은 아래와 같다.
1) 클라이언트는 서버의 21번 포트로 접속한 후에 자신이 사용 할 두 번째 포트(5021)를 서버에게 미리 알려준다.
2) 서버는 클라이언트의 요청에 응답한다(ACK)
3) 서버의 20번 데이터 포트는 클라이언트가 알려준 5021포트로 접속을 시도한다.
4) 클라이언트의 5021포트는 서버의 20번 데이터 포트의 요청에 응답한다(ACK)
Active모드의 핵심은 "데이터 교환을 위한 연결 시, 서버가 클라이언트에게 접속을 하는 것" 이다.
만일 FTP 클라이언트에 방화벽 등으로 외부 접근을 허용하지 않고 있다면 FTP 접속이 정상적으로 이루어지지 않을 것이다. 접속이 되더라도 데이터 목록을 받아오지 못할 수도 있다.
Passive 모드
Active 모드의 단점을 해결한 것이 Passvie 모드이다. 아래 그림에서 사용된 커맨드 포트와 데이터 포트는 서버 설정에서
변경할 수 있다. 특히 Passive 모드에서는 데이터 포트 번호를 특별하게 지정하지 않는 경우, 1024~65535번 중에서 사용 가능한 임의 포트를 사용하게 된다. 포트 번호를 지정할 때는 10001~10005 번과 같이 범위를 지정할 수도 있다.
Passive 모드의 FTP의 동작 과정은 아래와 같다.
1) 클라이언트는 서버의 21번 포트로 접속을 시도한다 (Passive 모드 연결)
2) 서버에서는 사용할 두 번째 포트를 클라이언트에게 알려준다.
3) 클라이언트는 다른 포트를 열어 서버가 알려준 포트(1234)로 연결을 시도한다.
4) 서버가 클라이언트의 요청에 응답한다(ACK)
Passive 모드에서는 Active 모드에서 사용했던 20번 포트를 데이터포트로 사용하지 않고, 1024번 이후의 임의 포트를 데이터 채널 포트로 사용하게 된다.
비교 및 주의사항
- 클라이언트에서 서버로의 포트 접근을 허용해주어야 하기 때문에 보안 위험은 Active모드에 비해 높다고 할 수 있다.
- Active 모드의 경우, 클라이언트 측의 방화벽에 20번 포트가 차단되어 있다면 데이터 채널 연결이 불가능하다.
- Passive 모드의 경우, 서버 측의 데이터 채널 포트가 차단되어 있다면 데이터 채널 연결이 불가능하다.
또한 1024~65535번 포트를 데이터 포트로 이용하는데 별도로 지정하여 사용도 가능하다.
참고 링크
https://madplay.github.io/post/ftp-active-passive
https://crossjin.tistory.com/entry/FTP-Active-Mode-%EC%99%80-Passive-Mode
'ETC > 알쓸신잡' 카테고리의 다른 글
로컬 PC에서 RDP 원격데스크톱 PC로 복사, 붙여넣기가 안될 때 (0) | 2023.02.14 |
---|---|
인자(Argument), 매개변수(Parameter)에 대해서 (0) | 2022.09.08 |