>  기사  >  운영 및 유지보수  >  FTP 활성 모드 및 수동 모드 - FTP 서버에 연결할 수 없는 이유는 무엇입니까?

FTP 활성 모드 및 수동 모드 - FTP 서버에 연결할 수 없는 이유는 무엇입니까?

齐天大圣
齐天大圣원래의
2020-11-21 17:33:316226검색

FTP는 일반 서비스와 다릅니다. 이 서비스에는 두 개의 포트가 동시에 열려야 합니다. 한 포트는 명령 채널이고 다른 포트는 데이터 전송 채널입니다. 데이터 전송 채널의 다양한 설정에 따라 활성 모드와 수동 모드로 구분됩니다. 여기에서는 활성 모드의 작업 흐름과 문제 발생 시 해결 방법을 자세히 설명합니다.

액티브 모드 프로세스

명령 채널 구축. 클라이언트는 1024보다 큰 포트를 무작위로 선택하여 서버의 포트 21과 연결을 설정합니다. 연결이 설정되면 클라이언트는 연결을 사용하여 FTP 서비스에서 파일 이름 쿼리, 파일 업로드, 다운로드 등의 명령을 실행할 수 있습니다. 파일 등. 명령은 이 채널을 통해 실행됩니다.

활성 모드를 사용하도록 서버에 알리세요. 포트 21은 명령 실행에만 사용됩니다. 실제로 전송해야 하는 파일의 경우 작업을 위해 다른 포트를 사용해야 합니다. 클라이언트는 파일 전송을 위해 무작위로 다른 포트를 열고 포트 21을 통해 두 가지 정보를 ftp 서버에 알립니다. 클라이언트는 파일 전송에 해당 포트를 사용하고 파일 전송에 활성 모드를 사용합니다.

ftp 서버는 클라이언트에 대한 연결을 적극적으로 설정합니다. FTP 서버가 두 가지 정보를 알고 있으면 포트 20을 통해 클라이언트와의 연결을 적극적으로 설정합니다. 연결이 설정되면 해당 연결을 통해 파일을 전송할 수 있습니다.

활성 모드에서 발생할 수 있는 문제

활성 모드에서는 FTP 서버에 연결할 수 없습니다. 다음과 같은 상황이 발생할 수 있습니다.

  • 서버 포트가 시작되지 않습니다

  • 서버 방화벽

  • 클라이언트가 위치한 LAN에는 NAT 변환이 있습니다. 활성 모드에서 일반적으로 열려 있는 포트는 21(명령 채널)과 20(파일 전송 채널)입니다. 두 포트 모두 필수입니다. 또한 방화벽은 이 두 포트도 허용해야 합니다. 클라이언트 호스트의 경우 텔넷을 통해 이 두 포트가 열려 있는지 테스트할 수 있습니다.

  • 포트 및 방화벽 문제는 비교적 해결하기 쉽지만 NAT 변환 문제는 해결하기 어렵습니다. NAT 변환으로 인해 어떤 문제가 발생하는지 살펴보겠습니다. 명령 채널 설정은 클라이언트에서 시작되므로 채널이 성공적으로 설정될 수 있습니다. 그러나 서버가 클라이언트에 대한 데이터 채널을 적극적으로 설정하면 서버는 클라이언트의 IP가 아닌 NAT IP를 알고 있습니다. 따라서 서버는 포트 20을 사용하여 NAT 포트 중 하나(예: 포트 1042)에 활성 연결 요청을 보냅니다. 그러나 NAT가 해당 포트를 열지 않아 활성 연결 설정에 실패했습니다. 그렇다면 이 문제를 해결하는 방법은 무엇입니까? 그냥 패시브 모드를 사용하세요.

패시브 모드 프로세스

명령 채널 구축. 이 단계는 활성 모드와 동일합니다.

클라이언트가 PASV 링크 요청을 발행합니다. 클라이언트는 명령 채널을 통해 서버에 PASV 패시브 모드 요청을 보내고 서버의 응답을 기다립니다.

서버가 데이터 포트를 시작하고 클라이언트에게 알립니다. 서버가 클라이언트의 PASV 요청을 받으면 데이터 전송을 위한 포트를 시작합니다. 이 포트는 무작위(1024~65535)이거나 지정할 수 있습니다. 그런 다음 명령 채널을 통해 클라이언트에게 알립니다.

클라이언트는 데이터 포트를 시작하고 서버와 연결을 설정합니다. 클라이언트는 서버로부터 정보를 수신하고 서버가 데이터 전송에 사용하는 포트를 알고 있습니다. 이때 클라이언트는 1024보다 큰 포트를 무작위로 열고 이 포트를 통해 서버와 연결을 설정합니다.

더 많은 관련 기술 기사를 보려면 linux 시스템 튜토리얼 칼럼을 방문하세요!

위 내용은 FTP 활성 모드 및 수동 모드 - FTP 서버에 연결할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.