Adapter behavior when the -FIREWALL command Is present

A firewall is used in order to isolate and restrict some computers from reaching other computers.

If a firewall comes into discussion, only a small part of the FTP adapter is aware of the presence of the firewall.

Without a firewall, the start of a file transfer begins with:

  • Establish a Socket connection to the remote host.
  • Issue the USER command over the connection.
  • Issue the PASS command over the connection.

When a firewall is used, more steps are performed in the beginning of the file transfer.

These steps are dependent on the method specified in the last part of the -FIREWALL command.

OPEN

  • Establish a Socket connection to the firewall host
  • Issue the following command over the connection in this order:
    OPEN  ftp_host  USER  ftp_user  PASS ftp_pass

SITE

  • Establish a Socket connection to the firewall host
  • Issue the following command over the connection in this order:
    USER  fw_user  PASS  fw_pass  SITE  ftp_host  USER  ftp_user  PASS ftp_pass

TRANSPARENT

  • Establish a Socket connection to the remote host
  • Issue the following command over the connection in this order:
    USER  fw_user  PASS  fw_pass  USER  ftp_user  PASS ftp_pass

USERFW

  • Establish a Socket connection to the firewall host
  • Issue the following command over the connection in this order:
    USER  ftp_user@ftp_host fw_user  PASS  ftp_pass  USER  ftp_user  PASS ftp_pass

USERFWPASS

  • Establish a Socket connection to the firewall host
  • Issue the following command over the connection in this order:
    USER  ftp_user@fw_user@ftp_host  PASS ftp_pass@fw_pass

USERLOGON or USER

  • Establish a Socket connection to the firewall host
  • Issue the following command over the connection in this order:
    USER  fw_user  PASS  fw_pass  USER  ftp_user@ftp_host  PASS  ftp_pass  USER

USERLOGONFW or USERFW

  • Establish a Socket connection to the firewall host
  • Issue the following command over the connection in this order:
    USER  fw_user@ftp_host  PASS  fw_pass  USER  ftp_user  PASS ftp_pass