FTP是File Transfer Protocol(文件传输协议)的英文缩写,用于Internet上的控制文件的双向传输。同时也是一个应用程序。
Tcp/ip协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。Ftp协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、连接的方式,甚至是否使用相同的操作系统无关。
FTP传输使用的是TCP数据包协议,TCP在建立;连接前会先进行三次握手。不过FTP服务器比较麻烦一些,因为FTP服务器使用了两个连接,分别是命令通道与数据通道。因为是TCP数据包,所以这两个连接都需要经过三次握手。
原理:FTP协议使用两个TCP连接,一个是命令链接,用于在FTP客户端和服务器;之间传输命令;另一个是数据链接,用于上传或下载数据。
控制通道是FTP服务器进行沟通的重要通道,连接FTP,发送FTP指令都是通过控制通道来完成的。
数据通道是FTP服务器进行文件传输或者列表的通道。
FTP协议中,控制连接均由客户端发起的,而数据连接有PORT与POSV方式。即主动与被动方式。
FTP支持两种模式,一种是主动方式(也称为Standard模式,其FTP的客户端发送PORT命令到FTP服务器),一种是被动方式(也称为Passive模式,其FTP的客户端发送PASV命令带FTP服务器)。
原理:服务端从20端口主动向客户端发起链接。 控制端口21;数据传输端口20;
过程:客户端从一个任意的非特权端口N(N>1024)向FTP服务器的命令端口(默认是21)发送请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端开始监听端口N+1,并在命令链路上用PORT命令发送N+1端口到FTP服务器,于是服务器会从自己的数据端口(20)向客户端指定的数据端口(N+1)发送连接请求,建立一条数据链路来传送数据
(Port模式在建立控制通道的时候,首先与FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要发送数据的时候在这个通道上发送PORT命令。
PORT命令包含了客户端用什么端口接收数据。
在传输数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。
FTP服务端必须与客户端建立一个新的连接用来传送数据。)
(可以看见这种情况下的连接是客户端向服务器建立控制连接,服务器向客户端建立数据连接。客户端的数据连接和控制连接端口号是大于1024的两个端口号(临时端口),而FTP服务器的数据端口为20,控制端口为21)
注意事项:主动模式与被动模式其控制管理的连接是一样的,只是数据传输方式,或者说是传输命令,的发起者不一样。主动模式的PORT命令由客户端发起,被动模式的PASV命令由服务器发起。(PORT命令是服务器接到客户端开放的数据连接随机端口后,主动去建立数据连接的;PASV命令是服务器发起的数据连接的随机端口,客户端连接访问该服务端端口,服务器端口是被动连接的。总而言之,主动与被动针对服务器而言的)
第1817-1819包为tcp的三次握手,服务端端口是21,即ftp控制连接建立。
第1820包为服务器应答客户端报文,220;服务器就绪,附加参数为服务端ftp版本号;
第1821包为客户端向服务器端发送确认包;
第1935包为客户端发送发送请求认证用户名,命令USER,参数实际用户名;
第1936包为服务器端的确认包;
第1937包为服务端对客户端USER命令的应答,331;要求密码;
第1938包为客户端的确认包;
第2056包为客户端向服务器传送密码,命令PASS;后跟明文密码;
第2057包为服务器端的确认包;
第3030包为服务器对客户端PASS命令的应答,230;登录成功;
第3031包为客户端的确认包;
第3032包为客户端向服务器请求系统版本的命令; SYST命令;
第3033为服务器的TCP ACK回应包;
第3034包为服务端对客户端SYST命令的应答,215;系统名称;
第3035包为客户端的确认包;
(特别注意:在密码确认后要进行传输类型转换操作,执行passive命令)
第8147包为客户端向服务器请求数据传输类型,命令TYPE,参数I,表示是二进制;
第8148包为服务器对客户端TYPE命令的应答,200;协商数据传输的类型是二进制;
第8150包为客户端通过PORT命令来告诉服务器端,想用PORT主动方式传输数据;
第8151包为服务端收到命令后,对客户端PORT命令进行应答,200;协商成功,同意使用该模式;
第8152包为客户端向服务器通过STOR命令向服务器发送文件名,是FTP协议中的上传命令,可以针对文件和目录,在此是根目录下的文件l。(RETR命令是FTP的下载命令);
第8053-8155包为建立数据连接的过程,服务器端主动连接客户端;
第8156包为服务器对客户端STOR命令的应答,150;可以发送数据;
第8157包为客户端向服务器发送传输了14比特数据;
第8158与8159包为客户端断开数据连接与服务器端对客户端断开数据连接的确认;
第8160与8161包为服务器断开数据连接与客户端对服务器端断开数据连接的确认;
第8182包为服务器回应客户端数据传输完成,226;完成传输;
第8333包为客户端通过QUIT命令向服务器发送退出请求;
第8334包为服务器对客户端QUIT命令的应答,221;再见。
原理:服务端在指定范围内某个端口被动等待及客户端链接。 控制端口21;数据传输端口 随机
过程:客户端从一个任意的非特权端口N(N>1024)向FTP服务器的命令端口(默认是21)发送请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PASV命令发送。于是服务器会开启一个任意的非特权端口P(P>1024),并在命令链路上把端口发送给客户端,然后客户端从自己的数据端口(N+1)向服务器的数据端口(P)发送连接请求,建立一条数据链路来传送数据。
(FTP服务器收到Pasv命令后,随机打开一个临时端口(也叫自由端口,端口号大于1023小于65535)并且 通知客户端在此端口上传送数据的请求,客户端连接服务器此端口然后FTP将通过这个端口进行数据的传送,这个时候FTP服务器不在需要建立一个新的和客户端直接爱你的连接。)
(可以看见这种情况下的连接都是客户端向服务器发起的。其服务端的数据端口是临时端口,而不是常规的20)
值得注意的是:本地访问自己搭建的ftp,wireshark根本捕获不到ftp数据包,这是因为,wireshark捕获的网卡的数据包,本地访问本地必然没有经过无线网卡。所以我找了两个跨网段的机器进行了测试,捕获ftp数据包。
第738-740包为tcp的三次握手,服务端端口是21,即ftp控制连接建立。
第741包为服务器应答客户端报文,220;服务器就绪,附加参数为服务端ftp版本号;
第1053包为客户端发送发送请求认证用户名,命令USER,参数实际用户名;
第1055包为服务端对客户端USER命令的应答,331;要求密码;
第1372包为客户端向服务器传送密码,命令PASS;后跟明文密码;
第2405包为服务器对客户端PASS命令的应答,230;登录成功;
第2407包为客户端向服务器请求系统版本的命令;
第2408为服务器的TCP ACK回应包;
第2409包为服务端对客户端SYST命令的应答,215;系统名称;
在2723之前执行put命令,上传文件;
第2723包为客户端向服务器请求数据传输类型,命令TYPE,参数I,表示是二进制;
第2724包为服务器对客户端TYPE命令的应答,200;协商数据传输的类型是二进制;
第2726包为客户端通过PASV命令来告诉服务器端,想用PASV方式传输数据;
第2727包为服务端收到命令后,在服务端建立一个数据端口69*256+131=17795端口监听,并把这个数据端口号返回给客户端;
第2728-2730包,客户端发起的三次握手,去连接服务器端的17795这个数据端口,准备进行数据传输;
第2731包为客户端向服务器通过STOR命令向服务器发送文件名,是FTP协议中的上传命令,可以针对文件和目录,在此是根目录下的文件l。(RETR命令是FTP的下载命令);
第2732包为服务器对客户端STOR命令的应答,150;可以发送数据;
第2733-2735为数据传输的过程,客户端向服务器传输文件的内容。因为在此处文件内容为空(读者可以在文件内输入部分内容,查看效果);
第2736包为服务器回应客户端数据传输完成,226;完成传输; 第2885包为客户端通过QUIT命令向服务器发送退出请求;
第2886包为服务器对客户端QUIT命令的应答,221;再见。
1.由于用户名或密码不正确,文件传输协议连接失败。为了服务器,的安全,许多虚拟主机禁止匿名连接。如果用户名或密码错误,ftp连接将失败。
2.虚拟主机的域名解析问题导致ftp连接失败。
检查您使用的IP地址是否与我们公司用户后台订单中提供的IP地址一致;
3.是你关闭了FTP使用的端口导致的吗
FTP默认需要20和21端口,但是大量用户使用局域网。因此,服务器将使用大量1024到6000的动态端口。您不能禁止任何文件传输协议使用的端口,否则文件传输协议将无法正常工作。
4.有防火墙吗
防火墙设置将导致FTP服务器连接失败,因此您可以关闭或重置防火墙,然后再次连接以查看连接是否成功。如果安装了防火墙,请检查端口21是否打开,并允许与外部服务器链接进行互通(通常,如果防火墙的安全级别设置为高,则拒绝与外部服务器互通,因此请将防火墙的安全级别修改为中等以下);
5.虚拟主机不稳定,停机导致ftp连接失败。
当您租用的虚拟主机关闭时,您无法连接到FTP。您可以使用PING命令来测试FTP服务器是否处于正常状态。
6.短时间频繁连接FTP导致连接失败。
如果您的FTP链接的最后一行提示:530notloggedin,则当前只允许2个会话。然后FTP链接断了,说明你链接太多了。您的原始登录记录在服务器缓存中。一般请等30分钟再试。
7.7时提示SOCKET错误。FTP登录。
如果您上传文件时系统提示套接字错误,请检查您是否在软件的编辑菜单的连接中选择使用防火墙设置和PASV模式设置。如果您之前选择了这些选项,您可以取消这两个选项并重新连接它们。如果您的计算机上安装了诺顿等防病毒软件,请暂时关闭它。
FTP工具一般分为FLASHFXP、LEAPFTP、CuteFTP,统称FTP三剑客,多为中文版和破解版。使用FTP连接虚拟主机上传网站程序,简单方便
(响应代码 / 解释说明)
110 新文件指示器上的重启标记
120 服务器准备就绪的时间(分钟数)
125 打开数据连接,开始传输
150 打开连接
200 成功
202 命令没有执行
211 系统状态回复
212 目录状态回复
213 文件状态回复
214 帮助信息回复
215 系统类型回复
220 服务就绪
221 退出网络
225 打开数据连接
226 结束数据连接
227 进入被动模式(IP 地址、ID 端口)
230 登录完成
250 文件行为完成
257 路径名建立
331 要求密码
332 要求帐号
350 文件行为暂停
421 服务关闭
425 无法打开数据连接
426 结束连接
450 文件不可用
451 遇到本地错误
452 磁盘空间不足
500 无效命令
501 错误参数
502 命令没有执行
503 错误指令序列
504 无效命令参数
530 未登录网络
532 存储文件需要帐号
550 文件不可用
551 不知道的页类型
552 超过存储分配
553 文件名不允许
其他:【由于文件内容过长,因此分开写】
FTP环境搭建及使用实例–linux系统(使用shell脚本或者使用配置文件)
参考链接:
1.https://pan.baidu.com/s/1UqgzyHNR_r7I8N88wcTBWw?pwd=pr3o
提取码:pr3o
2.https://blog.csdn.net/weixin_46470342/article/details/107316434