第 三 十 九 天:FTP 的 主 被 动 模 式

小Q:如今农村有钱人都从村里搬到城市住高楼;城里有钱人都搬到村里住别墅。。。。

================================简介========================================

FTP :File Transfer Protocol(文件传输协议)中文简称为“文传协议”。

FTP支持两种模式:Standard (PORT方式,主动模式),Passive (PASV,被动模式)。

主动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响应和数据到客户端的数据端口

===================================区别======================================

命令连接:客户 >1024端口 ->服务器 21端口  命令连:客户 >1024端口 ->服务器 21端口

数据连接:客户 >1024端口 <-服务器 20端口  数据连:客户 >1024端口->服务器>1024端口

利弊:
主动FTP对FTP服务器的管理和安全很有利,因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。

被动FTP对FTP客户端的管理有利,因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

办法:

幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

主动模式详解:http://yuanbin.blog.51cto.com/363003/107672/

时间: 2024-12-07 16:29:43

第 三 十 九 天:FTP 的 主 被 动 模 式的相关文章

三十九、git add详解

一.前言git add命令主要用于把我们要提交的文件的信息添加到索引库中.当我们使用git commit时,git将依据索引库中的内容来进行文件的提交.二.基本git add <path>表示 add to index only files created or modified and not those deleted 我通常是通过git add <path>的形式把我们<path>添加到索引库中,<path>可以是文件也可以是目录.git不仅能判断出&

QT开发(三十九)——GraphicsView框架

QT开发(三十九)--GraphicsView框架 本文主要翻译自QT 5.6.2GraphicsView官方文档 一.GraphicsView框架简介 QT4.2开始引入了Graphics View框架用来取代QT3中的Canvas模块,并作出了改进,Graphics View框架实现了模型-视图结构的图形管理,能对大量图元进行管理,支持碰撞检测,坐标变换和图元组等多种方便的功能. GraphicsView框架结构主要包含三个主要的类QGraphicsScene(场景).QGraphicsVi

Gradle 1.12用户指南翻译——第三十九章. IDEA 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userg

centos shell编程5LANMP一键安装脚本 第三十九节课

centos shell编程5LANMP一键安装脚本  第三十九节课 上半节课 下半节课 f

程序员的奋斗史(三十九)——大学断代史(三)——我和知乎邂逅

遥望2011年的某个惶惶岁月,那是我与知乎相识的日子. 排除知乎网站的内测用户,我应该算得上第一批用户.那时知乎网还未开放注册,只能通过好友邀请注册,我费了九牛二虎之力,申请了好几次,才拥有了知乎账号.作为一个真实的问答社区,从近几年的运营来看,知乎是成功的.虽然外界曾质疑知乎网站的盈利模式,但不可否认知乎是伟大的. 众所周知,知乎的原型是国外的Quora.以前一直以为Quora是多么的神圣,直到今年注册并使用后,才发觉知乎在用户体验上一点不逊色于Quora.好的网站当如知乎,简洁美观.操作简便

NeHe OpenGL教程 第三十九课:物理模拟

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十九课:物理模拟 物理模拟简介: 还记得高中的物理吧,直线运动,自由落体运动,弹簧.在这一课里,我们将创造这一切. 物理模拟介绍 如果你很熟悉物理规律,并且想实现它,这篇文章很适合你. 在这篇教程里,你会创建一个非常简单的物理引

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据 ??matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. ??它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. ??在Linux下比较著名的数据图工具还有gnuplot

CCNA实验三十九 再临无线现场 &nbsp;

CCNA实验三十九 再临无线现场 环境:Windows XP  . PacketTracert 5.3 目的: 再次加深对无线模块化使用的理解,还有掌握无线局域网中的WEP.WPA.WPA-PSK加密,了解如何使用加密保护无线网络. 步骤: 创建拓扑如下: 1.分别为三台无线设备添加无线网卡: 2.分别为三台路由器添加无线模块: 3.配置AAA服务器: 4.配置R1路由器: Router>en Router#conf t Router(config)#host R1 R1(config)#ip

ActionScript3游戏中的图像编程(连载三十九)

2.3.1 用方块观察斜面样式与斜角滤镜作用方法的差异 在Photoshop和Flash里都各自建一个500*500的空白文件,然后各自在画布中心画上一个纯蓝的(#0000FF),100*100大小的方块,(如果不懂得如何完成以上操作,可自行翻阅相关的入门教材)然后Flash里再多做一步,按F8转换为元件,类型选择"影片剪辑". 为了最大程度上减少对本课题研究的干扰,我们创建的投影力求做到最简单,最干净.为此,我把Flash里的投影滤镜中的模糊设置成0,并且把颜色调亮(#00cc00)