ftp主动被动模式
1. ftp主动模式和被动模式的区别
FTP主动模式就是FTP会用自己的20端口去主动得跟客户端建立连接,当客户端网络做NAT的时候会发生错误。把NAT的端口认为是客户端与FTP 20端口建立连接的
被动模式就是当建立ftp连接后,客户端发送一个被动模式请求给服务器,服务器选择一个数据端口监听,并把端口告诉客户端,客户端直接向数据端口发起连接,这样,即使中间有做NAT也不影响FTP数据传输通道建立
2. 如何设置FTP的主动模式和被动模式
一、什么是主动FTP
主动模式的FTP工作原理:客户端从一个任意的非特权端口N连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1、 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2、 FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3、 FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4、 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
二、什么是被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1、 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)
2、 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3、 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
4、 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
以上关于主动和被动FTP的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 <- 服务器 20端口
2、被动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
三、主动模式ftp与被动模式FTP优点和缺点:
主动FTP对FTP服务器的管理和安全很有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
3. java 连接ftp是主动模式还是被动模式
一.FTP的PORT(主动模式)和PASV(被动模式)
1.
PORT(主动模式)
PORT中文称为主动模式,工作的原理:
FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送
PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据.
2.
PASV(被动模式)
PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器,
服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端,
客户端再连接到服务器开放的端口进行数据传输。
二.两种模式的比较
从上面的运行原来看到,主动模式和被动模式的不同简单概述为:
主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
被动模式只需要服务器端开放端口给客户端连接就行了。
三.不同工作模式的网络设置
实际项目中碰到的问题是,FTP的客户端和服务器分别在不同网络,两个网络之间有至少4层的防火墙,服务器端只开放了21端口,
客户端机器没开放任何端口。FTP客户端连接采用的被动模式,结果客户端能登录成功,但是无法LIST列表和读取数据。很明显,是因为服务器端没开放被动模式下的随机端口导致。
由于被动模式下,服务器端开放的端口随机,但是防火墙要不能全部开放,解决的方案是,在ftp服务器配置被动模式下开放随机端口在
50000-60000之间(范围在ftp服务器软件设置,可以设置任意1024上的端口段),然后在防火墙设置规则,开放服务器端50000-60000之间的端口端。
主动模式下,客户端的FTP软件设置主动模式开放的端口段,在客户端的防火墙开放对应的端口段。
四.如何设置
工作模式
实时上FTP服务器一般都支持主动和被动模式,连接采用何种模式是有FTP客户端软件决定。
4. 如何设置FTP的主动模式和被动模式
端口不一样,ftp传输需要2个端口。主动的话是21等候连接,20主动发起,被动的话是21和一个大于1024的随机端口等待连接。主动模式可能被客户端的防火墙屏蔽,被动模式的话服务器的随机端口可能被攻击。如果两端都没防火墙的话,主动被动无所谓的
5. 请高手介绍一下ftp的主动连接和被动连接
自己看,不用加分,其实就是协商的过程,很容易理解.
http://www.lovim.com/dbbs/redirect.php?tid=7&goto=lastpost
ftp的两种连接模式PASV(被动)和PORT(主动)
FTP基础知识 FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。 FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 Port模式:ftp server:tcp 21 <------client:dynamicftp server:tcp 20 ------>client:dynamic Pasv模式:ftp server:tcp 21 <----client:dynamicftp server:tcp dynamic <----client:dynamic PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。 PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。 从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。
6. 什么是ftp主动模式和被动模式
一、什么是主动FTP
主动模式的FTP工作原理:客户端从一个任意的非特权端口N连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP
命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1、 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2、 FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3、 FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4、 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
二、什么是被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N >
1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交
PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT
P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1、 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)
2、 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3、 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
4、 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
以上关于主动和被动FTP的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 <- 服务器 20端口
2、被动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
7. 如何在服务器上查看ftp的主动被动模式
可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端
>1024端口
->
服务器
21端口
数据连接:客户端
>1024端口
1024端口
->
服务器
21端口
数据连接:客户端
>1024端口
->
服务器
>1024端口
8. FTP主动模式和被动模式!
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的 20 和 21 这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
FTP支持两种模式,它在工作运行时也主要是这两种模式,一种模式叫作Standard也被称为PORT方式和 主动方式 ,另一种模式叫作Passive也叫作PASV, 被动方式 。Standard模式FTP的客户端发出PORT命令到服务器,Passive模式FTP的客户端发送PASV命令到FTP Server中,从而保证文件相互传输正常。
我们使用华为的模拟器Ensp来做一个小实验。
FTP三次握手有两次,第一次的TCP三次握手是控制层的握手,第二次是数据层的TCP三次握手
(1)服务器打开端口 21,等待连接;
(2)客户端(100.1.12.1)发起控制连接的建立请求,服务器响应连接,控制连接建立,使用TCP 三次握手(第一次TCP三次握手);
随机端口的计算
可以看到PORT为 10,0,0,2,8,6
随机端口计算为: 8*256+6=2054
(3)客户端通过控制连接发送 PORT 命令(在应用层数据中带有自己的 ip 地址和临时端口),将客户端数据连接的临时端口号告诉服务器
(4)服务器的 20 号端口与客户端建立起数据连接,使用TCP 三次握手(第二次TCP三次握手);
点击登出后控制端口断开连接
FTP三次握手有两次,第一次的TCP三次握手是控制层的握手,第二次是数据层的TCP三次握手
(1)服务器打开端口 21,等待连接
(2)客户端发起控制连接的建立请求,服务器响应连接,控制连接建立,使用TCP 三次握手(第一次TCP三次握手);
(3)客户端通过控制连接发送命令字 PASV,告知服务器处于被动模式;
(4)服务器回应,将服务器数据连接的临时端口号(2060)告诉客户端;
(5)客户端与服务器的临时端口建立起数据连接,使用TCP 三次握手(第二次TCP三次握手);
9. Linux里面FTP主被动模式区别是什么
题主你好,
首先要说的是FTP的通信是由两部分组成的: 发送命令 + 传输数据.
换种说法就是: 发送命令 与 传输数据 是走的两条道(不同的tcp连接).
发送命令 这条道方向是固定的, 总是由客户端向服务端发起请求把这条道铺起来.
而 传输数据 这条道方向就不是固定的了, 可能与 发送命令 一样, 也是由客户端向服务端发起请求, 还可能是反向的,即由服务端向客户端发起请求来铺起传输数据的这条道.
而题主的问题里所说的FTP主动被模式其实指的就是 传输数据 这条道的铺设到底是 谁向谁发起请求? 这里的主被动是根据 服务端 来说的, 即 服务端主动向客户端发起的就是所谓的主动模式, 反之, 客户端向服务端发起的(服务端被连接),即是被动模式
最后再说下区别: 一开始的ftp只有主动模式,即服务端主动向客户端发请求建立连接,然后利用建立的这个连接进行数据传输. 但后来客户端这边的防火墙很多时候为了安全考虑只相信自己向外发送的请求, 不相信外面连进来的请求,会把从外向内的请求给截断,说白了就是数据传输这条道没建成, 数据肯定就传输不了的. 所以后来又开发了被动模式,让客户端主动向服务端发请求建立连接, 这样防火墙一看是从自己家主动发出去的,就不会拦截,这样路铺好了, 数据自然能成功传输了.
写在最后: 希望可以帮到题主, 欢迎追问.
10. 如何判断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)端口发送命令给FTP服务器。服务器会反过来连接用户本地指定的数据端口,比如20端口。
以服务器端防火墙为立足点,要支持主动模式FTP需要打开如下交互中使用到的端口:
l FTP服务器命令(21)端口接受客户端任意端口(客户端初始连接)
l FTP服务器命令(21)端口到客户端端口(>1023)(服务器响应客户端命令)
l FTP服务器数据(20)端口到客户端端口(>1023)(服务器初始化数据连接到客户端数据端口)
l FTP服务器数据(20)端口接受客户端端口(>1023)(客户端发送ACK包到服务器的数据端口)
用图表示如下:
在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"。
主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。
主动FTP的例子:
下面是一个主动FTP会话的实际例子。当然服务器名、IP地址和用户名都做了改动。在这个例子中,FTP会话从 testbox1.slacksite.com (192.168.150.80),一个运行标准的FTP命令行客户端的Linux工作站,发起到testbox2.slacksite.com (192.168.150.90),一个运行ProFTPd 1.2.2RC2的Linux工作站。debugging(-d)选项用来在FTP客户端显示连接的详细过程。红色的文字是 debugging信息,显示的是发送到服务器的实际FTP命令和所产生的回应信息。服务器的输出信息用黑色字表示,用户的输入信息用粗体字表示。
仔细考虑这个对话过程我们会发现一些有趣的事情。我们可以看到当 PORT 命令被提交时,它指定了客户端(192.168.150.80)上的一个端口而不是服务器的。当我们用被动FTP时我们会看到相反的现象。我们再来关注PORT命令的格式。就象你在下面的例子看到的一样,它是一个由六个被逗号隔开的数字组成的序列。前四个表示IP地址,后两个组成了用于数据连接的端口号。用第五个数乘以256再加上第六个数就得到了实际的端口号。下面例子中端口号就是((14*256) + 178) = 3762。我们可以用netstat来验证这个端口信息。
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
Connected to testbox2.slacksite.com.
220 testbox2.slacksite.com FTP server ready.
Name (testbox2:slacker): slacker
---> USER slacker
331 Password required for slacker.
Password: TmpPass
---> PASS XXXX
230 User slacker logged in.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
ftp: setsockopt (ignored): Permission denied
---> PORT 192,168,150,80,14,178
200 PORT command successful.
---> LIST
150 Opening ASCII mode data connection for file list.
drwx------ 3 slacker users 104 Jul 27 01:45 public_html
226 Transfer complete.
ftp> quit
---> QUIT
221 Goodbye.