FTP协议

ぃ、小莉子 提交于 2020-02-01 15:43:54

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模式来进行双方之间的上传和下载。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!