目录
文章起源于:web课程需要利用FTP协议将所编写代码提交到云服务器,并利用nginx部署服务器
FTP基本原理
FTP(File Transfer Protocol) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。用户可以同时使用FTP协议访问/上传FTP服务器的资源。FTP的传输效率很高,但相对的其安全性,其更高的安全协议有FTPS、SFTP。
FTP在传输时默认使用TCP中的两个端口——20和21端口,其中20用于传输数据,21端口用于传输控制信息。
FTP的两种工作方式
FTP有两种工作方式,一种为Standard (也就是 PORT方式,主动方式),另一种是 Passive(也就是PASV,被动方式)。
判断是否主动,观察服务端是否向客户端请求数据通路连接
主动模式
客户端打开两个端口(>1024 称为X),另一个为Y端口。客户端端口X连接FTP服务器端口21,并监听端口 Y,同时向服务端发送PORT命令【我要用Y端口接收数据】。服务端20端口向客户端Y端口请求并建立数据连接。

被动模式
客户端打开端口(>1024 称为X)。客户端端口X连接FTP服务器端口21,通过验证后,发送PASV 命令,服务端收到PASV命令后,开发端口Y(>1024),并通知客户端,使用Y端口传输数据。客户端通过端口 Z 三次握手建立通道,然后FTP服务器将通过这个端口进行数据的传送。

两种工作方式差异
主动模式:客户端开放2个端口,X,Y。X连接服务端21端口传输控制信息(PORT命令传输Y信息给服务端),服务端20端口主动连接客户端Y端口。
被动模式:客户端开放先1个端口,X。X连接服务端21端口传输控制信息(PASV服务端请求服务端开放端口),服务端开放端口Y,并通过21端口返回信息,客户端Z端口主动连接服务端Y端口。
缺点:
很多防火墙在设置的时候都是不允许接受外部发起的连接的。
- 客户端在内网,主动模式可能连接不上服务器(内网防火墙可能未开放数据传输端口,如客户端PORT了6789端口,但是防火墙未开放6789端口)
- 服务端在内网时,被动模式可能连接不上服务器。(内网防火墙可能未开放数据端口)
所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。(来源百度百科)
FTP的传输模式
ascii模式和二进制模式
ASCll模式用于传输文本,发送端的字符在发送前被转换成ASCll码格式之后进行传输,接收端收到之后再将其转换成字符
用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。
FTP命令
引用:(149条消息) 玩转wireshark系列第四篇-抓取ftp包_彪悍的男人的博客-CSDN博客_wireshark抓ftp