FTP基础

简介

FTP(File Transfer Protocol,文件传输协议)用于在FTP服务器和FTP客户端之间传输文件,是IP网络上传输文件的通用协议。

FTP协议使用TCP端口20和21进行传输。端口20用于传输数据,端口21用于传输控制消息

传输模式

FTP有两种文件传输模式:

  • 二进制模式,用于传输非文本文件(比如后缀名为.app、.bin和.btm的文件);传输文件时,如上传网络设备版本,建议使用该方式

  • ASCII码模式,用于传输文本格式的文件(比如后缀名为.txt、.bat和.cfg的文件)

当设备作为FTP客户端时,用户可通过命令行指定使用的传输模式,缺省为二进制模式;当设备作为FTP服务器时,使用的传输模式由FTP客户端决定。

工作方式

FTP有两种工作方式:

  • 主动方式(PORT):建立数据连接时由FTP服务器发起连接请求,当FTP客户端处于防火墙后时不适用(如FTP客户端处于私网内)。
  1. 客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接

  2. 客户端开始监听 N+1端口,并向服务器发出PORT N+1命令;

  3. 服务端会用本地的ftp端口(一般是20)主动连接到客户端的N+1端口。

  • 被动方式(PASV):建立数据连接时由FTP客户端发起连接请求,当FTP服务器限制客户端连接其高位端口(一般情况下大于1024)时不适用。
  1. 客户端以随机非特权端口N连接服务端的21端口,并向服务器发送PASV命令,通知服务器自己处于被动模式

  2. 服务端开启一个非特权端口P为被动端口,并用PORT P命令通知客户端,自己的数据端口是P。

  3. 客户端以非特权端口+1的端口主动连接服务端的被动端口P。

主动还是被动,决定权在客户端,不同FTP客户端软件对FTP工作方式的支持情况可能不同。一般来说,客户端都会选择被动模式,即服务端被动接受客户端的数据通道连接。

参考文章

https://www.h3c.com/cn/d_202407/2223846_30005_0.htm#_Toc172735220

https://developer.aliyun.com/article/234007

https://www.cnblogs.com/longan-wang/p/15660490.html