在公司里面,经常需要访问外网FTP取资料等情况。但是有时用windows界面访问经常遇到各种问题。

下面介绍两种客户端是如何访问ftp服务器。

首先我们需要说明:防火墙,是阻拦外界与内部的通讯的一道关卡。从内部出去如果没有特殊设置,一般是任意出,而从外界进来,

就是防火墙设置的重点,并非任意进。

主动模式(PORT)(默认):

如上图,在主动模式中:在下面中C代表客户端。S代表服务端.

第一步:C用任意x端口访问S的21端口且附带信息说明自己自己X+1端口开启监听(如果没有改变,ftp服务默认端口是21).

    然后C把此信息通过自己的防火墙,到达S端,因为S端开启ftp服务,那么它的防火墙肯定开启此21端口这样就可以访问到S。

第二部:S端收到访问后通过21端口到达C的X端口,表明自己接受到此信息,然后S端开启X+1来等待数据连接。

第三部:S端开启20号端口与A端口的X+1建立数据传输,然后S端口20端口访问C的X+1端口时,C所在的局域网防火强
       并没有开启此端口来允许外界的任何端口来访问此局域网中的C的X+1端口。

所以防火墙受阻,无法建立通讯,如果在同局域网内没有问题。非同局域网就要设置C端的防火墙。

访问FTP的第二种模式:被动模式(PAVS)

第一步:同样,C端开始通过X端口访问FTP21端口。告诉S端自己采用PASV模式,此时中间防火墙都不会阻拦此信息,因为服务器已开启21端口。

第二步:服务器收到信息后,自己建立一个Y端口,且通过刚才的通道告诉C端,自己等待数据连接的端口是Y端口。

第三步:C端收到信息后,开启任意端口来访问s端的Y端口来实现数据传输。

第四步:就是C与S的Y端口数据开始传输。

此种模式中需要注意的事第三步:怎么实现C端收到信息后开启任意端口来连接S端的Y端口不会被S锁在的局域网防火墙阻拦。

这种问题,就要设计到防火墙设置,已经建立FTP服务器时端口的设置。在PASV,ftp服务器设置可以指定一段端口,然后在防火墙中开启,

且指定此段端口映射到S服务器上。这样就可以保证S端开启的Y端口可以从外界来通讯。

在WINDOWS中,模式的是主动模式,如果需要被动模式去访问FTP服务器如何设置,请参考下图,

如果用软件客户端访问,那么对应的软件客户端在选项中肯定有FTP被动模式和主动模式的选择。

上面步骤仅是参考模型,网络的输出肯定不是这么简单,只是为了方便简单理解两种模式中的不同。

FTP服务器访问主动模式、被动模式的更多相关文章

  1. FTP协议的主动模式和被动模式的区别

    最近准备做一个<FtpCopy系列教程>,主要讲解Ftp协议主动模式和被动模式的区别.以及FTP服务器的安装部署,然后通过几个常用实例演示,详细讲解如何使用FtpCopy进行数据自动备份. ...

  2. ftp主动模式 被动模式 和iptables 设置

    FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式. Port模式:ftp server:tcp 21 <------client:dynamic    ftp se ...

  3. FTP 连接模式 (主动模式被动模式)

    FTP是有两种传输的模式的,主动模式和被动模式,一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接. 1. 控制连接客户端希望与 ...

  4. Vsftp安装及配置主动模式/被动模式

     第一章.前言 FTP的主动模式(active mode)和被动模式(passive mode) 大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯 ...

  5. zabbix 模板 创建逻辑 + 主动模式-被动模式

    模板通常包含了item.trigger.graph(图形).application以及low-level discovery rule:模板可以直接链接至某个主机: 模板包含一系列的item,trig ...

  6. why ftp服务器采用多进程模式

    为什么没有采用多线程或者IO复用,原因是在多线程或IO复用的情况下,当前目录是共享的,无法根据每一个连接来拥有自己的当前目录. 多进程模式下,一个连接拥有2个进程,一个是nobody进程,一个是服务进 ...

  7. ftp服务器三种模式

    一.匿名开放模式(最不安全) 1.[root@localhost ~]# vim  /etc/vsftpd/vsftpd.conf  (主配置) anonymous_enable=YES    //允 ...

  8. 转:【专题十二】实现一个简单的FTP服务器

    引言: 休息一个国庆节后好久没有更新文章了,主要是刚开始休息完心态还没有调整过来的, 现在差不多进入状态了, 所以继续和大家分享下网络编程的知识,在本专题中将和大家分享如何自己实现一个简单的FTP服务 ...

  9. 专题十二:实现一个简单的FTP服务器

    引言: 在本专题中将和大家分享如何自己实现一个简单的FTP服务器.在我们平时的上网过程中,一般都是使用FTP的客户端来对商家提供的服务器进行访问(上传.下载文件),例如我们经常用到微软的SkyDriv ...

随机推荐

  1. [Dart] Understand Variables and Constants in Dart

    In this lesson, we will look at how to create variables and constants. These are containers that sto ...

  2. Cocos2d坐标系具体解释

    1.笛卡尔坐标系 左手坐标系(Direct3D坐标系),右手坐标系(Direct3D坐标系) 大拇指和食指分别相应x轴和y轴 2.UI坐标系 iOS/Android/Windows SDK中的通用UI ...

  3. python多线程实现抓取网页

    Python实现抓取网页 以下的Python抓取网页的程序比較0基础.仅仅能抓取第一页的url所属的页面,仅仅要预定URL足够多.保证你抓取的网页是无限级别的哈,以下是代码: ##coding:utf ...

  4. Python基础--webbrowser

    非常多人,一提到Python,想到的就是爬虫.我会一步一步的教你怎样爬出某个站点. 今天就先介绍一下webbrowser,这个词您肯定不会陌生.对,就是浏览器. 看看Python中对webbrowse ...

  5. Mysql经常使用函数

    -----------------------------字符串函数--------------------------------------- ----拼接字符串.不论什么字符串与null拼接为n ...

  6. The Breakpoint will not currently be hit. No executable code associated with this line

    首先.请确认solutin的属性 C/C++->General-> Debug Information Format 选择Program Database(/Zi) Linking-> ...

  7. Elasticsearch安装中文分词插件ik

    Elasticsearch默认提供的分词器,会把每一个汉字分开,而不是我们想要的依据关键词来分词.比如: curl -XPOST "http://localhost:9200/userinf ...

  8. 我的Android进阶之旅------>Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed.【转】

    本文转载自:http://blog.csdn.net/ouyang_peng/article/details/48048975 今天在调用MediaRecorder.stop(),报错了,java.l ...

  9. 洛谷P2744 [USACO5.3]量取牛奶Milk Measuring

    题目描述 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位--译者注) 他的最好的牛奶,并把它装入一个大瓶子中卖出.消费者要多少,他就给多少,从不有 ...

  10. 洛谷P2303 [SDOi2012]Longge的问题

    题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). ...