FTP의 액티브 모드 및 패시브 모드

4342 단어 Java 기반

하나.모드 설명


1. PORT(액티브 모드)


PORT 중국어를 능동 모드라고 하는데, 작동 원리:
  • FTP 클라이언트가 FTP 서버의 21 포트에 연결됩니다
  • 사용자 이름과 비밀번호를 보내서 로그인합니다
  • 로그인에 성공한 후list 목록이나 데이터를 읽을 때 클라이언트는 랜덤으로 하나의 포트(1024 이상)를 개방하고 포트를 FTP 서버에 보내서 서버 클라이언트에게 주동 모드를 사용하고 개방하라고 알려준다
  • FTP 서버는 PORT 활성 모드 명령과 포트 번호를 받은 후 서버의 20 포트와 클라이언트의 개방된 포트를 통해 연결하여 데이터를 전송합니다

  • 2. PASV(패시브 모드)


    PASV는 Passive의 약자로 중국어가 수동 모드가 되고 작동 원리:
  • FTP 클라이언트가 FTP 서버의 21 포트에 연결됩니다
  • 사용자 이름과 비밀번호를 보내서 로그인합니다
  • 로그인에 성공한 후list 목록이나 데이터를 읽으려면 PASV 명령을 FTP 서버에 보내고 서버는 로컬에서 랜덤으로 포트(1024 이상)를 엽니다
  • 그리고 개방된 포트를 클라이언트에게 알려주고 클라이언트는 서버의 개방된 포트에 연결하여 데이터 전송을 한다

  • 2.두 가지 모델의 비교


    위의 실행에서 보듯이 주동 모드와 수동 모드의 차이는 다음과 같다.
  • 능동 모드로 데이터를 전송할 때는'서버'가'클라이언트'에 연결된 포트이다
  • 패시브 모드 전송 데이터는 클라이언트가 서버에 연결된 포트입니다

  • 액티브 모드는 클라이언트가 서버에 포트를 개방해야 하는데 많은 클라이언트가 방화벽 안에 있기 때문에 FTP 서버에 포트를 개방하는 것은 비교적 어렵다.
    수동 모드는 서버 측에서 클라이언트에게 포트를 열어 연결하기만 하면 된다.

    셋.서로 다른 작업 모드의 네트워크 설정


    실제 프로젝트에서 부딪힌 문제는 FTP의 클라이언트와 서버가 각각 다른 네트워크에 있고 두 네트워크 사이에 적어도 4층의 방화벽이 있으며 서버 측은 21포트만 개방하고 클라이언트 기계는 어떠한 포트도 개방하지 않았다는 것이다.FTP 클라이언트 연결은 수동 모드를 사용합니다. 결과적으로 클라이언트는 로그인에 성공하지만 LIST 목록과 데이터를 읽을 수 없습니다.서버 측이 수동 모드의 무작위 포트를 개방하지 않았기 때문에 일어난 것이 분명하다.
    수동 모드에서 서버 측이 개방한 포트는 랜덤이지만 방화벽은 모두 개방할 수 없다. 해결 방안은 ftp 서버 설정 수동 모드에서 랜덤 포트를 50000-60000 사이(범위는 ftp 서버 소프트웨어 설정으로 임의의 1024의 포트 세그먼트를 설정할 수 있음)로 개방한 다음에 방화벽 설정 규칙, 서버 측 50000-60000 사이의 포트 단을 개방하는 것이다.
    활성 모드에서 클라이언트의 FTP 소프트웨어는 활성 모드의 개방된 포트 세그먼트를 설정하고 클라이언트의 방화벽에 대응하는 포트 세그먼트를 개방합니다.

    사.작업 모드 설정 방법


    실시간 FTP 서버는 일반적으로 주동적이고 수동적인 모드를 지원하는데 연결이 어떤 모드를 사용하는지는 FTP 클라이언트 소프트웨어에 의해 결정된다.

    5.java 코드 설정


    자바에서 내망은 피동 모드를 사용하고 외망이 연결될 때 주동 모드를 사용하며 서버는 상응하는 변동(상선 기능만 피동 모드로 연결하면 ftp가 잘못 연결되지 않음)
    FTPClient ftpClient = new FTPClient();
    ftpClient.connect(url, port);
    // ftpClient.enterLocalActiveMode();    // 
    ftpClient.enterLocalPassiveMode(); // 
    ftpClient.setControlEncoding("UTF-8");
    ftpClient.changeWorkingDirectory(path);
    

    여섯.간단한 설명


    ftp는 두 개의 tcp 연결을 사용하려면 두 개의 포트를 사용해야 한다
    하나는 명령 링크: 명령을 전달하는 데 하나는 데이터 링크: 다운로드 데이터를 업로드하는 데 사용
    ftp 서버를 연결할 때 active와passive 두 가지 모드가 있습니다
    일반적으로 활성 모드를 사용하여 업로드 다운로드를 완료합니다.
    능동 모드 작업 원리: 클라이언트가 명령 체인을 사용하여 서비스 측에 능동 알림: 내가 XX 포트를 열었으니 네가 나를 연결해라
    수동 모드 작업 원리: 주동 모드와 반대로 서비스 측은 클라이언트에게 내가 XX 포트를 열었으니 네가 나를 연결해라
    수동 모드는 방화벽이 있는 경우에 자주 사용된다
    오류:
    Host attempting data connection ip address is not same as server
    

    해결 방법:
    remoteverification This parameter allows to enable/disable remote host connections verification. It should help when getting “Host attempting data connection ip address is not same as server” issue. Disable verification with remoteverification=“false”. Default is value is “true”.
    java 코드:
    ftpClient.setRemoteVerificationEnabled(false);
    

    좋은 웹페이지 즐겨찾기