FTP主动连接与被动连接

FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,应用层的协议,它基于传输层, FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理 , FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。

FTP功能

FTP服务器功能除了单纯的进行文件的传输与管理以外,还提供一下几个主要功能。

不同等级的用户身份:user,guest,anonymous

FTP服务器在预设的情况下,根据使用者的登入情况而分为三种不用的身份

1.user:实体账号,realuser

2.guest:访客

3.anonymous:匿名登录者

当然3者在系统上的权限差异很大,例如:实体用户取得的系统权限比较完整;而对于匿名用户不对其开放太多的权限。

命令记录与登录文件记录

FTP可以利用系统的syslogd服务来进行数据的记录,而记录的数据包括用户曾今下达过的命令与用户传输数据(传输时间,文件大小)的记录,所以可以从/var/log/中找到各项登录信息

限制用户活动目录(change root 简称:chroot)

为了避免用户在你的linux系统中离开自己的家目录进入到linux系统的其他重要目录中,所以将使用者的工作范围局限在自己的家目录中。FTP可以限制用户只能在自己的家目录活动,使用者无法离开自己的家目录,登入FTP后看到的根目录就是自己的家目录

FTP运作流程

FTP是应用层的协议,它基于传输层TCP协议传输,TCP建立连接需要三次握手,FTP服务一般运行在20和21两个端口,端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流.这两种传输都需要经过三次握手。

这里以主动连接(Active)讲解运作流程

1.建立命令通信

客户端会随机取一个大与1024的端口(portAA)经过三次握手与FTP服务器21端口达成联机,此后客户端便可以通过这个联机来对FTP服务器进行指令的下达,包括查询文件名、下载、上传等指令。

2.通过FTP服务端使用主动连接

FTP服务器的21端口主要用来下达命令,当要开始传输数据时,就不适用这个联机了。客户端在需要数据的情况下,会告知服务端要用什么方式来联机,如果是主动式联机,客户端会先随机启动一个端口(portBB),通过命令通道高数FTP服务器这两个消息,并等待FTP服务器的联机。

3.服务器主动向客户机联机

服务器命令通道了解客户端的请求后,会主动的由20号端口向客户端的portBB联机,同样需要三次握手,此时FTP客户端与服务器端共建立了2条联机(命令与数据传输两个信道)。注意,数据传输信道只在有数据传输行为时才建立。

命令通道21与数据传输通道20

21端口主要接受来自客户端的主动联机,20端口则为FTP服务器主动联机至客户端。

主动连接的FTP服务器与客户端之间具有防火墙的连接问题

一般来说,很多局域网都会使用防火墙(iptables)的NAT功能,那么在NAT后端的FTP用户如何连接到FTP服务器呢。

1.用户与服务器间命令信道的建立:

因为NAT会主动记录有内部送往外部的联机信息,而由于命令信道的建立是由客户端向服务器联机的,因此这条联机可以顺利建立起来。

2.用户与服务器间数据信道的建立:

客户主机会先启用portBB,并透过命令通信告知FTP服务器,而等待服务器的主动连接。

3.服务器主动连到NAT等待转递至客户端的连接问题:

由于偷狗NAT转换后,FTP服务器只能得到NAT的IP而不是客户端的IP,因此FTP会以20端口主动向NAT的PortBB发送主动联机的要求,但是你的NAT并没有启动portBB来监听FTP的联机。所以这里就出现了问题。

如何解决这样的问题呢?

1.使用iptables所提供的FTP侦测模块:

可以使用modprobe指令来加载ip_conntrack_ftp及ip_nat_ftp等模块,这几个模块会主动分析目标是21的联机信息,所以可以得到portBB的资料,此时若接收到FTP服务器的主动联机,就能将该封包导向正确的后端主机了。

但是,如果命令通道并非是通过默认端口21来建立的,那么这两个模块就无法解析出来了。

2.客户端选择被动式(Passive)连接模式:

主动模式是由服务器向客户端发起连接,那么被动式就是客户端向服务端发起连接。

被动连接

1.客户端与服务器建立命令信道:

同样,客户端选一个大与1024的端口向服务器21号端口通过三次握手建立通道。

2.客户端发出PASV的连接请求:

当要进行数据传输时,客户端可以通过命令通道发出PASV(Passive的缩写)的被动联机求情求,并等待服务端回应。

3.FTP服务器启动数据端口,并通知客户端

这时服务器会打开一个端口port pasv(可能是随机的也可能是自定义的)处于listen状态,并通过21端口的指令通道将处在监听状态下的次端口发给客户端,并等待客户端通过此端口进行数据传输。

4.客户端随机取用大于1024的端口进行连接:

客户端随机取用大于1024的端口连接服务器的port pasv端口,那么通过portBB和port PASV数据通道就建立好了。

 

引用: http://blog.chinaunix.net/uid-26413668-id-3379352.html

时间: 2024-10-09 09:17:28

FTP主动连接与被动连接的相关文章

linux上搭建ftp、vsftp, 解决访问ftp超时连接, 解决用户指定访问其根目录,解决ftp主动连接、被动连接的问题

linux上搭建ftp 重要 解决如何搭建ftp         解决用户指定访问其根目录         解决访问ftp超时连接         解决ftp主动连接.被动连接的问题 1.安装ftp    安装ftp前,先把防火墙关闭 #service iptables stop   (挺重要) 安装好后再根据需要的端口 添加到 iptables 直接用yum安装 vsftp # 1.执行以下安装命令 yum install -y vsftpd # 2.设置开机启动服务 chkconfig vs

Nginx主动连接与被动连接的差别

1.主动连接是指Nginx主动发起的同上游server的连接:被动连接是指Nginx接收到的来自client主动发起的连接; 2.主动连接用ngx_peer_connection_t结构体表示:被动连接用ngx_connection_t表示; 3.主动连接是对被动连接的封装,每当事件消费者模块使用主动连接对象时,同被动连接一样也是从连接池中取出一个ngx_connection_t,再加上上游server名,socket地址等信息构成一个ngx_peer_connection_t结构体.

Nginx主动连接与被动连接的区别

1.主动连接是指Nginx主动发起的同上游服务器的连接:被动连接是指Nginx接收到的来自客户端主动发起的连接; 2.主动连接用ngx_peer_connection_t结构体表示:被动连接用ngx_connection_t表示; 3.主动连接是对被动连接的封装,每当事件消费者模块使用主动连接对象时,同被动连接一样也是从连接池中取出一个ngx_connection_t,再加上上游服务器名,socket地址等信息构成一个ngx_peer_connection_t结构体. Nginx主动连接与被动连

[服务]ftp主动模式和被动模式

经常忘记这个东西.于是总结下这东西感受下这个协议. FTP连接方式 控制连接:标准端口为21,用于发送FTP命令信息 数据连接:标准端口为20,用于上传.下载数据 数据连接的建立类型: 主动模式:服务端从20端口主动向客户端发起连接 被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接 FTP传输模式 文本模式:ASCII模式,以文本序列传输数据 二进制模式:Binary模式,以二进制序列传输数据 总结: 一 两个阶段:控制连接  tcp 21(client发起,三次握手过程) ?  

FTP开启被动连接模式

在Linux环境下搭建ftp服务器,具体步骤见:http://www.cnblogs.com/zjiacun/p/6896803.html 配置被动连接的方法: 找到配置文件/etc/vsftpd/vsftpd.conf,并修改配置 pasv_enable=YES 开启被动连接 pasv_min_port=10050 开启最小ip pasv_max_port=10060 开启最大ip 重启ftp服务即可. 亲测好使... 原文地址:https://www.cnblogs.com/zjiacun/

FTP主动模式(Port)与被动模式(PASV)原理解析

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件.相比于HTTP,FTP协议要复杂得多.复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令:另一个是数据链路,用来上传或下载数据.    FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式.    在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行

FTP主动模式和被动模式的区别

基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的概念时,数据端口就有可能不是20了. 主动模式FTP: 主动模式下,FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口--21端口.然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1 >= 1024)端口发送命令给F

[转] FTP主动模式和被动模式的区别

转自原文FTP主动模式和被动模式的区别 基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的概念时,数据端口就有可能不是20了. 主动模式FTP: 主动模式下,FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口--21端口.然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1

【Linux】 ftp 主动被动模式

LNMP 搭建得服务器,在使用ftp时候,报如下错误: 经查,是ftp 主动模式被动模式问题 工具:  Xftp5   ,把被动模式勾 取消 (其他客户端可以网上查一下 相应的 被动模式转主动模式设置方法) 还有一点: 把本地防火墙关了  !!!   因为这个原因.我找了半天,问了好多小伙伴,都不行,最后把本地防火墙关了.可以了 补充学习: ftp FTP主动模式和被动模式的比较 FTP是仅基于TCP的服务,不支持UDP.与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端