ftp - passive 모드/ active 모드 차이점
최근 ftp 를 사용하는 레거시 시스템에서의 방화벽 이슈로 정상동작 하지 않는 문제가 있었습니다.
이에 대해 ftp 통신방법인 passive 모드와 active 모드에 대해 알아보겠습니다.
FTP (File Transfer Protocol)란?
FTP(File Transfer Protocol)는 TCP/IP(Transmission Control Protocol/Internet Protocol) 네트워크에서
컴퓨터 간에 파일을 통신하고 전송하는 데 사용되는 통신규약(protocol) 입니다.
권한이 부여된 사용자는 파일 전송 프로토콜 서버(FTP 호스트/사이트라고도 함)에서 파일을 수신하고, 전송할 수 있습니다.
한마디로, 인터넷에서 파일전송을 위한 메시지 규약이라고 정의할 수 있습니다.
FTP 는 TCP기반으로 이루어져있으며, active 모드와 passive 모드가 있습니다.
각각의 모드가 어떤 차이점이 있는지 살펴보겠습니다.
FTP - active mode, 액티브 모드
active mode FTP를 사용하면 FTP 클라이언트가 FTP 서버의 포트에 연결합니다.
클라이언트는 랜덤 포트 N을 선정합니다.
예를들어 4242 포트를 사용해보겠습니다.
그런 다음 FTP 클라이언트는 N+1 을 listen하고, 이 포트를 서버에게 알립니다
서버가 이를 확인하면 서버는 클라이언트에서 N+1 포트를 연결하여 데이터를 송수신 하게 됩니다.
여기서 N은 커맨드 포트로, FTP를 통해 명령어를 전송하는 포트입니다.
예를 들어 파일리스트 확인등을 확인하는 용도입니다.
N+1은 데이터 포트로, 서버로부터 파일을 다운로드 받기 위한 포트입니다.
이를 그림으로 표현하면 아래와 같습니다.
서버의 FTP 포트는 21/20 포트를 사용하는 것으로 표현하겠습니다. (각각 커맨드포트, 데이터 포트)
FTP - passive mode, 패시브 모드
FTP 클라이언트는 두 개의 랜덤 TCP 포트 N (명령 포트) 및 N+1 (데이터 포트)을 통해 연결을 시작합니다.
클라이언트는 먼저 PASV 명령을 전송합니다.
서버가 PASV 모드인것을 확인하면 랜덤 포트 P를 데이터 포트로 열어 클라이언트로 전송합니다.
클라이언트는 P 포트로 연결을 시도하고, 클라이언트에서는 N+1을 소스로 하여 데이터 전송을 시작하게 됩니다.
passive 모드를 사용하는 방식은 서버가 클라이언트에 접속할 수 없는 경우에 사용됩니다.
예를 들어, 클라이언트가 NAT을 사용하거나 방화벽 문제로 인해 접속할 수 없을 때 사용하면 접속할 수 있습니다.
이를 그림으로 표현하면 아래와 같습니다.
서버의 FTP 포트는 21/2042 포트를 사용하는 것으로 표현하겠습니다. (각각 커맨드포트, 데이터 포트)
2042 포트는 앞에서 설명한 랜덤포트 P입니다.
총평
FTP 를 사용하는 시스템을 셋업하는 과정에서 FTP 가 정상동작하지 않는 경우가 있었는데,
active 모드에서 passive 모드로 바꾸니 정상적으로 동작하던 사례가 있었습니다.
당시에는 무슨 차이인지도 잘 모르고 그냥 썼는데, 이번기회에 내용을 확인하고 공부해보았습니다.
최근에는 파일전송도 보통 http 를 사용하는데, 다음번에는 http 와 ftp 는 어떤 차이가 있을지 알아봐야겠습니다.
ftp - passive 모드/ active 모드 차이점
#ftp,#active,#passive,#pasv,#actv,#mode,#에프티피,#액티브,#엑티브,#패시브,#file,#transfer,#protocol
'개발용어' 카테고리의 다른 글
MVC패턴이란, Spring MVC란, Spring MVC 장점, Spring MVC (0) | 2022.07.06 |
---|---|
code bad smell - 중첩 if문 (0) | 2022.06.27 |
SOLID 원칙 - 인터페이스 분리 원칙, ISP (Interface Segregation Principle) (0) | 2022.05.11 |
SOLID 원칙 - 리스코프 치환 원칙, LSP (Liskov Substitution Principle) (0) | 2022.05.09 |
SOLID 원칙 - 개방폐쇄원칙, OCP (Open Closed Principle) (3) | 2022.05.07 |
댓글