ftp学习day-01

来源:互联网 发布:三星门锁app软件 编辑:程序博客网 时间:2024/05/24 03:07

FTP:文件传输协议,工作于应用层的协议。

我们知道http在发送数据前要先建立连接,但是FTP有两个连接:(1)命令连接也叫控制连接  (2)数据连接

    (1)命令连接:客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建    立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。

           监听在21端口,这个连接自从客户端连接上FTP服务器就一直处于连接状态。然而数据连接是每次客户端要从服务器get或者put文件时才建立连接。

    (2)数据连接:FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式

           数据连接又分为两种模式(1)主动模式   (2)被动模式

                主动模式:服务器占用的是20端口,客户端的端口是随机的

                     如下图:简要来说就是ftp服务器主动的用20端口连接客户端

                     具体过程:客户端用随机端口去连接ftp的21端口,服务器验证客户端后,就这样控制连接建立成功。然   后ftp服务器会主动打开20端口去连接客户端。那么问题来了,,服务器主动去连接客户端的哪个端口呢?根据上面所说的客户端是用随机端口去连接服务器的21端口的例如u这个随机端口是1173,那么ftp服务器在主动的建立数据连接会去连接客户端的1174端口,如果这个端口被占用,那么服务器会去连接1175端口,,,,直到紧接的端口没被占用为止。

      那么问题又来了,因为ftp服务器连接的是客户端的随机端口,那么客户端的防火墙可能会阻拦服务器发来的请求?为了解决这个问题我们可以用被动模式。

             被动模式:

                 如下图:控制连接建立,ftp的21端口会用控制连接给客户端发送一个报文,报文里告诉客户端自己打开的端口号,让客户端来连接自己的这个端口。客户端使用随机端口去连接ftp服务器的这个端口。(因为数据连接不是处于一直都连接着的状态,因此ftp服务器每次在建立数据连接时告诉客户端的端口号是不一样的,那么,问题又来了,,,,如果连接被服务器的防火墙拦截怎么办?因为防火墙的iptables机制的规则中有个state连接追踪机制,因此只要这个客户端与服务器已经建立了命令连接,则不管客户端访问服务器的哪个端口都可以建立数据连接。所以这里就要追踪命令连接与数据连接是不是相关联的(就是state是RELATED状态))这里不理解的可以看看我前面总结的iptables的相关内容。


         

0 0