FTP 프로토콜 연결 방식 완벽 정리: Active vs Passive Mode
FTP(File Transfer Protocol)는 일반적인 통신과 달리 데이터를 주고받기 위해 두 가지 종류의 포트를 사용합니다.
- 제어 채널 (Control Channel) 포트:
- 역할: 로그인, 파일 목록 요청, 그리고 데이터 채널을 어떻게 설정할지 명령(예: PASV)을 주고받는 통로입니다.
- 데이터 채널 (Data Channel) 포트:
- 역할: 실제 파일 데이터(ClickOnce 배포 파일 등)가 전송되는 통로입니다. 이 채널은 데이터를 주고받을 때만 임시로 열리고, 전송이 끝나면 닫힙니다.
- IIS 설정: IIS의 '데이터 채널 포트 범위'는 바로 이 데이터 전송을 위해 서버가 사용할 수 있도록 예약한 임의의 네트워크 포트들의 집합을 의미합니다.
FTP (파일 전송 프로토콜)의 Active 모드와 Passive 모드는 파일을 주고받을 때 데이터 통로를 누가 만들 것인지에 대한 방식 차이입니다. 🚚
FTP는 특이하게도 두 개의 연결(포트)을 사용합니다.
- 제어 통로 (Control Port): 명령(로그인, 파일 목록 요청 등)을 주고받는 데 사용됩니다. (기본 포트 21)
- 데이터 통로 (Data Port): 실제 파일 데이터가 지나가는 통로입니다.
이 데이터 통로를 설정하는 방식이 Active와 Passive 모드로 나뉩니다.

🌐 FTP 연결 방식 완벽 정리: Active vs Passive Mode
FTP(File Transfer Protocol)는 파일을 주고받는 대표적인 프로토콜이에요.
하지만 “어떻게 연결되는지”에 따라 Active 모드와 Passive 모드로 나뉩니다.
이 두 가지의 차이를 명확히 알아두면, 방화벽 설정 문제나 전송 오류를 쉽게 해결할 수 있습니다.
🔹 1. Active Mode FTP 연결 방식
📌 동작 개요
Active 모드는 서버가 클라이언트에게 직접 데이터 연결을 걸어오는 방식입니다.
즉, 명령(제어) 연결은 클라이언트 → 서버,
데이터 연결은 서버 → 클라이언트 방향으로 이루어집니다.
🔸 연결 순서 (Step by Step)
1️⃣ FTP 제어 연결 (명령 채널)
- 클라이언트가 서버의 21번 포트로 접속하여 로그인(인증) 요청을 보냅니다.
- 이때, 클라이언트는 자신이 사용할 데이터 포트 번호(예: 2223) 도 함께 전달합니다.
2️⃣ 서버의 응답
- 서버가 “OK” 메시지로 인증 성공을 알립니다.
3️⃣ 데이터 채널 연결
- 서버가 자신의 20번 포트를 이용해
→ 클라이언트가 알려준 2223 포트로 직접 연결을 시도합니다.
4️⃣ 연결 완료
- 클라이언트가 응답을 보내면, 데이터 채널이 열리고 파일 목록 조회나 전송이 가능합니다.
⚙️ Active Mode 구조 요약
| 구분 | 방향 | 사용포트 |
| 제어 채널 | 클라이언트 → 서버 | 서버 21번 |
| 데이터 채널 | 서버 → 클라이언트 | 서버 20번 → 클라이언트 임의포트(>1023) |
⚠️ 방화벽 설정 시 주의사항
- 서버 → 클라이언트 방향 통신이 필요하므로,
클라이언트 PC의 방화벽에서 입력(INBOUND) 포트가 열려 있어야 합니다. - 특히 서버의 20번 포트가 차단되어 있으면,
파일 목록 조회(디렉토리 보기) 단계부터 실패합니다.
🔹 2. Passive Mode FTP 연결 방식
📌 동작 개요
Passive 모드는 클라이언트가 서버에게 모든 연결을 여는 방식입니다.
즉, 명령(제어) 연결도 클라이언트 → 서버,
데이터 연결도 클라이언트 → 서버 방향이에요.
방화벽이 있는 환경(회사, 클라우드 서버 등)에서는
Passive 모드가 훨씬 더 안정적으로 작동합니다.
🔸 연결 순서 (Step by Step)
1️⃣ FTP 제어 연결 (명령 채널)
- 클라이언트가 서버의 21번 포트로 인증 요청을 보냅니다.
- Passive 모드로 연결하겠다는 명령(PASV)을 함께 보냅니다.
2️⃣ 서버의 응답
- 서버가 OK 응답과 함께
“데이터 전송용 포트번호(예: 1025)”를 클라이언트에게 알려줍니다.
3️⃣ 데이터 채널 연결
- 클라이언트는 자신이 만든 임의 포트(예: 2223)에서
→ 서버가 알려준 1025 포트로 연결을 시도합니다.
4️⃣ 연결 완료
- 서버가 응답하면 데이터 채널이 완성되어, 파일 전송이 가능해집니다.
⚙️ Passive Mode 구조 요약
| 구분 | 방향 | 사용포트 |
| 제어 채널 | 클라이언트 → 서버 | 서버 21번 |
| 데이터 채널 | 클라이언트 → 서버 | 서버 임의포트(1024~65535) |
⚠️ 방화벽 설정 시 주의사항
- 데이터 연결도 클라이언트 → 서버 방향이므로,
서버 쪽 방화벽에서 입력(INBOUND) 포트를 허용해야 합니다. - Passive 모드에서 별도 포트 범위를 지정하지 않으면,
1024~65535 사이의 임의 포트를 자동으로 사용합니다.
따라서- 서버 방화벽: 해당 범위의 입력 허용
- 클라이언트 방화벽: 해당 범위의 출력 허용
설정이 필요합니다.
✅ 참고
대부분 클라이언트 PC에서는 1024 이상 포트의 출력(OUTBOUND)은 기본적으로 허용되어 있습니다.
서버에서는 보안을 위해, 데이터 포트 범위를 명시적으로 지정(예: 50000~50100) 해두는 것이 좋습니다.
🔸 Active vs Passive Mode 비교표
| 구분 | Active Mode | Passive Mode |
| 제어 채널 방향 | 클라이언트 → 서버(21포트) | 클라이언트 → 서버(21포트) |
| 데이터 채널 방향 | 서버(20포트) → 클라이언트(임의포트) | 클라이언트(임의포트) → 서버(임의포트) |
| 방화벽 통과 용이성 | 어려움 (클라이언트 INBOUND 필요) | 용이 (서버 INBOUND만 필요) |
| 주로 사용하는 환경 | 내부망, 방화벽 제약이 적은 곳 | 외부망, 기업·클라우드 환경 |
| 설정 편의성 | 상대적으로 복잡 | 상대적으로 단순 |
| 기본 포트 예시 | 21(명령), 20(데이터) | 21(명령), 1024~65535(데이터) |
💡 정리하면
- Active Mode: 서버가 “직접 찾아가는 방식” (서버 → 클라이언트)
- Passive Mode: 클라이언트가 “직접 찾아가는 방식” (클라이언트 → 서버)
- 방화벽이나 NAT 환경에서는 Passive Mode 사용이 훨씬 안전하고 호환성이 높습니다.
FTP 포트 변경 했을 경우에 cmd에
net stop mpssvc 방화벽 중지
net start mpssvc 방화벽 시작
net stop ftpsvc FTP서비스 중지
net start ftpsvc FTP서비스 시작