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客户端处于私网内)。
客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接
客户端开始监听 N+1端口,并向服务器发出PORT N+1命令;
服务端会用本地的ftp端口(一般是20)主动连接到客户端的N+1端口。
- 被动方式(PASV):建立数据连接时由FTP客户端发起连接请求,当FTP服务器限制客户端连接其高位端口(一般情况下大于1024)时不适用。
客户端以随机非特权端口N连接服务端的21端口,并向服务器发送PASV命令,通知服务器自己处于被动模式
服务端开启一个非特权端口P为被动端口,并用PORT P命令通知客户端,自己的数据端口是P。
客户端以非特权端口+1的端口主动连接服务端的被动端口P。
主动还是被动,决定权在客户端,不同FTP客户端软件对FTP工作方式的支持情况可能不同。一般来说,客户端都会选择被动模式,即服务端被动接受客户端的数据通道连接。
参考文章
https://www.h3c.com/cn/d_202407/2223846_30005_0.htm#_Toc172735220