FTP协议:
属于应用层协议
全称:File Transfer Protocol 文件传输协议
顾名思义,就是将文件从一台主机传输到另一台主机上面
在FTP进行文件传输的时候,会启用两条链路,
一条链路是控制连接,另一条链路是数据连接;
控制链路:发送的控制连接只是一些控制命令;
数据链路:进行数据的上传和下载。
FTP进行工作的三个主要步骤:
首先启动控制链路进行链路的建立;
接着用数据链路,来完成数据的上传和下载的工作;
最后启动控制链路,来拆除整个的传送链路。
在FTP工作的时候,有一个客户端和一个服务器端,
客户端和服务器端之间的工作是双向的。
首先 客户端 会向 服务器端 发送一个链路的连接请求,
这时 客户端 会为进程选择一个临时的端口号通知给链路,来发送数据;
服务器端 会响应 客户端 的请求,
并且在 20号端口 来进行数据的发送和接收,
而在关闭的时候也是由 客户端 向 服务器端 来请求关闭,
服务器端来同意它的关闭请求。
FTP的两种工作模式:
一、主动模式:Port模式
Port模式下:
客户端首先向FTP服务器发送它的21号端口控制链路的建立连接,
这时在控制链路上发送命令,由服务器端来响应它的连接请求。
(
第一个过程,是在控制链路上双方之间一些命令字、命令语句之间的传递,
双方建立起了他们之间的一条链路,
这时客户端用什么端口接收数据,这样的一些请求,都会让服务器端清楚;
)
进入到第二个层次,
就是在客户端和服务器端发送数据,此时它们会建立一条数据链路,
这时,服务器端是在20端口进行连接,
而客户端是在它之前约定的某一个端口来进行数据的发送。
当FTP的服务器端和客户端在20号端口建立了一个连接以后,数据就可以进行传送了。
在Port模式的最后,
客户端和服务器端之间,会启用它们的控制连接,
双方之间约定,本次的数据上传和下载已经结束了,
那么双方可以结束它们的链路。
二、被动模式:Passive模式
Passive模式下:
首先在建立控制通道的时候,和Port模式类似,
但是建立连接以后发送的不是Port命令,而是一个Passive命令。
FTP服务器收到Passive的命令以后,就会随机打开一个端口,
这时端口号一定要大于1024,而不是Port模式下的20号端口,
它在一个大于1024的随机端口上和客户端进行连接。
那么客户端接着在它们自己的一个端口上,
和这个大于1024的数据端口来进行数据的收和发,数据的上传和下载的工作。
最后启用控制链路来结束它们的数据的传送连接。
两种模式的区别:
双方在数据传送的阶段端口是不同的,
这个端口是体现在服务器端。(服务器端采用的端口是不同的)
在主动方式下,服务器端采用的是20号端口进行连接;
在被动方式下,是与主动方式有区别的,被动方式并不采用20号端口进行连接,
而是一个随机端口进行连接。
即:
Port模式采用的是20号端口;
Passive模式采用的是一个大于1024的随机端口。
应用:
在很多防火墙中间设置的时候,是不允许接受外部发起的连接来修改它的端口号的,
所以许多位于防火墙之后内部网的FTP服务器,是不支持Passive没事的(有防火墙,不支持Passive模式)
因为它无法允许外部的客户端来发送一个Passive命令,修改当前的FTP服务器对应的高级端口。
而许多的情况下,内部的客户端不能用Port模式和FTP服务器进行连接。
因为服务器的20号端口无法和内部网络的客户端建立一个连接,
所以在出现相应的问题的时候,要注意怎样的解决这个问题。
比如说:
外部的Passive连接无法进行的时候,我们要考虑一下防火墙是不是开着了;
内部连接的时候,是不是考虑不采用Port模式,而采用Passive模式来进行双方之间的上传和下载。
来源:CSDN
作者:忧you
链接:https://blog.csdn.net/weixin_44772874/article/details/104131350