FTP에서 수동 및 확장 수동 모드의 차이점은 무엇입니까?


17

누구나 수동 모드 FTP (PASV)와 확장 수동 모드 FTP (EPSV)의 차이점을 간단히 설명 할 수 있습니까?


2
@DavidPostill 죄송합니다. PASV vs EPSV에만 관심이있었습니다.
CGCampbell

답변:


20

유일한 차이점은 PORT/PASVIPv4로 제한되고 EPRT/EPSV모든 네트워크 프로토콜로 작업 하는 것입니다 (실제로는 IPv6 만 사용됨).

FTP 제어 프로토콜 의 표준 PORT(활성) 및 PASV(수동) 명령은 주소 및 포트 정보를 6 개의 1 바이트 10 진수 로 교환 하며 다른 쪽 끝은 4 바이트 IP 주소와 2 바이트 TCP 포트 번호를 재구성해야합니다.

PORT <address[4]>,<port[2]>

PORT 132,235,1,2,24,131

그러나 다른 프로토콜이 나타나기 시작했습니다. IPv4는 "IPng"로 대체 될 예정인데,이 프로토콜은 역사상 여러 차례에 걸쳐 경쟁이 치열한 대체 제안 (OSI CLNP, TUBA, SIP, SIPP, CATNIP 등)을 가지고 있으며, 일부는 더 짧고 길고 가변적 인 호스트 주소 크기를 가지고 있습니다. 16 바이트 주소를 가진 IPv6가 정의 될 때까지

더 많은 바이트를 전송하는 것만으로는 효과가 없었습니다. 서버와 클라이언트는 주소 길이만으로 올바른 프로토콜을 알 수 없었습니다. (예를 들어, 16 바이트 주소 + 4 바이트 포트가있는 프로토콜 하나와 12 바이트 주소 + 12 바이트 포트가있는 프로토콜 하나가 있다면 어떨까요?)

게다가 20 년 전에는 중요하지 않았지만 오늘날 인터넷에 수백만 개의 NAT 장치 가있어 FTP 제어 연결을 검사하고 조작하여 "내부"호스트가 "내부"호스트 만 글로벌 IPv4 주소 만 볼 수 있도록합니다. 호스트가 RFC1918을 로컬로 보냈습니다. NAT가 없어도 상태 저장 방화벽은 종종 수동 규칙없이 데이터 연결을 자동으로 허용하는 제어 명령을 감시합니다.

이것은 기본적으로 많은 사람들 과 함께 더 많은 번호를 보내 PORT거나 PASV많은 사람들에게 끊어 질 수 있음을 의미합니다 . 아마도 일부 방화벽은 일부 주소 바이트를 조용히 포트로 잘못 해석하고 나머지는 조용히 버릴 것입니다. 다른 사람이 연결을 끊거나 충돌 할 수 있습니다.

위와 같은 다양한 문제를 피하기 위해 FTP에서 다중 프로토콜 지원을위한 새로운 명령을 도입해야했습니다.

1993 년, RFC 1639 (원래 1545 RFC는 ) 도입 "긴 주소" LPRTLPSV 같았 명령 PORTPASV하지만 함께 변수의 주소 길이를 ; 프로토콜 유형 식별자도 포함되었습니다. (구문은 변경되지 않았습니다. – IPv6 address : port는 단순히 6이 아닌 21 개의 숫자로 전송됩니다.)

LPRT <protocol>,<addr-length>,<address...>,<port-length>,<port...>

LPRT 4,4,132,235,1,2,2,24,131

LPRT 6,16,16,128,0,0,0,0,0,0,0,8,8,0,32,12,65,122,2,20,162

그러나 여전히 서버에 제어 연결과 다른 프로토콜을 사용하도록 요청하는 등의 일부 문제는 해결되지 않았습니다. RFC도 빨리 구식이되었습니다. 1 년 후 IPv6가 나왔을 때 LPRT 프로토콜 식별자가 할당되지 않았기 때문에 LPRT와 함께 사용할 수 없었 습니다 (다양한 초기 제안에 대해서만).

이 문제를 해결하기 위해 1998 년 RFC 2428 에는 "확장 포트"및 "확장 수동"이 추가 EPRT되었으며 EPSV, 양쪽 모두 지원을 종료하는 프로토콜을 협상하는 방법도있었습니다. "확장 된"명령은 IPv6의 경우 사람이 읽을 수있는 형식으로 주소를 보냅니다. 즉, 일련의 개별 10 진수 대신 16 진 및 콜론 표기법을 사용합니다.

EPRT x<protocol>x<address>x<port>x

EPRT |1|132.235.1.2|6275|

EPRT |2|1080::8:800:200C:417A|5282|

결론적으로 IPv6 지원은 유일한 차이점입니다.


와우, 내가 읽은 모든 사이트 와이 사이트까지 클릭하지 않았습니다. 고마워 나는 한두 시간 안에 (아마도) 그것을 받아 들일 것이고, 다른 사람이 그것을 다르게하는지 알고 싶어합니다. 또한 Active에 요청한 이유는 Google에서 태그가 제대로 작동하기 때문에이 질문 / 답변이 검색에서 발견되기 때문입니다. 아무도 답변에 추가하지 않으면 (Google 답변을보다 완벽하게 완성시킵니다) 원래 질문과 본문을 편집하여 답변 내용을 반영하여 본질적으로 답변에 내 질문을 맞 춥니 다.
CGCampbell

3
또 다른 차이점은 EPSV응답에 IP 주소가 포함되어 있지 않다는 것입니다 ( PASV응답의 내용 ). 이것은 NAT 뒤에있는 FTP 서버가 외부 IP 주소를 모르고 내부 주소를 보내 FTP 클라이언트를 혼동 할 때 일반적인 문제를 피하기위한 것입니다.
마틴 Prikryl

@MartinPrikryl의 말에 덧붙이 자면, FTP-over-TLS를 사용할 때 방화벽 / NAT가 PASV 명령에서 IP 주소를 가로 채서 다시 쓸 수는 없습니다 (적어도 제어 연결을 MITM하지 않는 경우). 유닉스 세계 사람들은 일반적으로 FTP-over-TLS 대신 SFTP를 사용하고 FTP-over-TLS는 IBM 메인 프레임에서 일반적으로 사용됩니다. FTP는 레코드 지향 파일 (STRU R, MODE B)을 지원하고 SFTP는 스트림 지향 만 지원하기 때문입니다. 파일
Simon Kissane

1

액티브와 패시브의 차이점은 이미 답변되었습니다. PASV에 대한 응답 구문은 IPv4에만 적용되므로 IPv6에 새로운 명령이 필요했기 때문에 EPSSV (Extendeded Passive)는 IPv4 및 IPv6에서 수동적입니다. 활성 모드에서 EPTR 대 PORT와 동일합니다. EPRT 및 EPSV에는 PORT 및 PASV와 같이 IP와 포트가 아닌 포트만 포함 할 수 있다는 점에서 EPRT와 EPSV의 동작이 약간 다릅니다. 따라서 데이터 전송은 제어 연결이있는 시스템간에 만 수행 할 수 있습니다. PORT 및 PASV를 사용하면 다른 시스템간에 데이터 연결을 만들 수 있습니다 (현재는 잘못된 설계 및 보안 위험으로 간주되지만).


2
이것은 내가 원하지 않는 대답이었습니다. 다른 곳에서 찾을 수있는만큼 정확하게 알려줍니다. EPSV는 IPv6 용으로 만들어졌지만 그 이유는 설명 하지 않습니다 . (즉, 귀하의 이유를 충분한 설명으로 받아들이지 않습니다.) 나는 당신이 아마도 당신의 대답을 더 좋게 만들기를 희망하며 이것을 말하고 있습니다.
CGCampbell

IPv6를 지원하지 않는 PASV 명령에 대한 응답이므로 새 명령이 필요하다는 것을 명확히하기 위해 응답을 편집했습니다.
Steffen Ullrich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.