FTP协议主动(Port)模式和被动(Passive)两种模式详解

FTP(File Transfer Protocol)是文件传输协议的简称。
正如其名所示:
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。

FTP支持两种方式的传输:
文本(ASCII)方式和二进制(Binary)方式。通常文本文件的传输采用ASCII方式,而图象、声音文件、加密和压缩文件等非文本文件采用二进制方式传输,如果为了从一个系统上传输文件而使用了与本地系统不同的计算机字节位数,那么就必须使用Tenex模式。FTP以ASCII方式作为缺省的文件传输方式。

二、ftp的两种传输模式:主动(FTP Port)模式和被动(FTP Passive)模式。

当我们对FTP协议进行学习的时候,你首先要考虑到的一个问题是使用的是port模式(主动)的还是passive模式(被动)。在过去,客户端缺省为主动模式;近来,由于Port模式的存在安全问题,许多客户端的FTP应用缺省变为了被动模式。FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21-命令端口和20-数据端口。

详细分解一:FTP Port(主动)模式

客户端从一个任意的大于1023(N)的端口连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:任何端口到FTP服务器的21端口 (客户端初始化的连接到FTP服务器);FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口);FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口);大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)。

Port模式的FTP详细步骤如下:

1、 客户端发送一个TCP SYN(TCP同步)包给服务器端众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口;

2、 服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;

3、 客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答;

4、 当用户请求一个列表(List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用PORT命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址通常是客户自己的IP地址,而且FTP也支持第三方 (third-party)模式,第三方模式是客户端告诉服务器端打开与另一台主机的连接;

5、 服务器端发送一个SYN包给客户端的暂时端口,源端口为20,暂时端口为客户端在PORT命令中发送给服务器端的暂时端口号;

6、 客户端以源端口为暂时端口,目的端口为20发送一个SYN ACK包;

7、 服务器端发送一个ACK包;

8、 发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要对方进行ACK确认(注:因为TCP协议是一个面向连接的协议)

9、 当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认;

10、 客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN,客户端用ACK来确认。

详细分解二:FTP PAVS(主动)模式

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的本地端口(N >; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(端口号大于1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP。从任何端口到服务器的21端口 (客户端初始化的连接);服务器的21端口到任何大于1023的端口 (服务器响应到客户端的控制端口的连接 );从任何端口到服务器的大于1023端口 (客户端初始化数据连接到服务器指定的任意端口);服务器的大于1023端口到远程的大于1023的端口(出;服务器发送ACK响应和数据到客户端的数据端口)。

对比主动模式,被动模式在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT N(N为端口号)",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。

被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP程序允许管理员指定FTP服务器使用的端口范围。

另外客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。

为了更好的理解被动模式,我们使用实验去验证学习。

试验环境:PC的IP地址为192.168.98.88,服务器的地址为:192.168.98.12,客户端软件选择cuteftp,首先采用被动模式向服务器发起数据连接。

根据源IP为192.168.98.88可知模式的选择是客户端发起的,PASV是选择被动模式的报文。服务器进行回应:

FTP报文段里显示了被动模式(Passive Mode)以及发送给客户端自己的IP地址以及提供给对方一个随机端口号,计算方式是4*256+222=1246。并打开自己的1246号端口,使其处于监听状态,等待客户端发起数据连接请求。

由上图可以看出客户端向服务器发起的LIST命令,列出文件目录是在控制连接里发起的请求,由目的端口号可以看出来。

客户端接收到这个服务器关于PASV模式的回应,根据服务器提供的IP和端口号重新建立一个新的数据连接,源端口为3399,目的端口为1246(服务器提供的端口),并且从SYN被置为1的情况下可以看出这个一个新的连接。随后的数据是通过这个连接提供的新端口号进行传输的。

FTP报文段显示的是Ftp Data,说明传输的是数据。当某几段数据传输完成之后,客户端或服务器会向对方发送一个FIN来关闭这条连接。如下图:

而控制连接,如果客户端不主动发送FIN,它将一直在整个过程中存在,在服务器上,以21号端口来确认是控制连接。

从时间上来看,第7秒到21秒,TCP的报头信息中,源端口号和目的端口号都未改变,这个连接一直存在。

FTP协议主动(Port)模式和被动(Passive)两种模式详解相关推荐

  1. Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

    严格模式与混杂模式--如何触发这两种模式,区分它们有何意义. 在标准模式中,浏览器根据规范呈现页面: 在混杂模式中,页面以一种比较宽松的向后兼容的方式显示. 浏览器根据DOCTYPE是否存在以及使用的 ...

  2. 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义

    Doctype:(Document Type)文档类型,它位于文档中最前面的位置,处于标签之前.如果你想制作符合标准的页面,一个必不可少的关键组成部分就是DOCTYPE的声明.确定了正确的Doctyp ...

  3. 计算机辅助教学常用的教学模式,计算机辅助教学的“两种模式”

    计算机辅助教学的"两种模式" 计算机辅助教学是在计算机辅助下进行的各种教学活动,以对话方式与学生讨论教学内容.安排教学进程.进行教学训练的方法与技术.以下是小编帮大家整理的计算机辅 ...

  4. Doctype 作用? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

    ( 1).<!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签之前.告知浏览器的 解析器,用什么文档类型 规范来解析这个文档. ( 2).严格模式的排版和 J ...

  5. oracle轮询方式循环输出,LGWR的两种模式(POST/WAIT和POLLING)

    11.2之前,oracle的lgwr写入模式为post/wait 11.2之后新增了polling模式,可以与post/wait模式自动切换 通过隐藏参数 _use_adaptive_log_file ...

  6. 2021年大数据Spark(九):Spark On Yarn两种模式总结

    目录 Spark On Yarn两种模式 引入 一.当一个MR应用提交运行到Hadoop YARN上时 二.当一个Spark应用提交运行在集群上时 注意 client 模式 cluster 模式 总结 ...

  7. 华为防火墙ftp_常用的FTP两种模式,主动模式和被动模式,一分钟了解下

    FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive(也就是PASV,被动方式). 一.FTP服务器工作两种模式 1.主动模式 2.被动模式 针 ...

  8. FTP的两种模式和在实际工作中应用

    FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式). Standard模式 FTP的客户端 ...

  9. ftp服务器的运行模式,FTP两种模式详解和实践技巧

    笔者最近几天被FTP折腾了一下,简单的路由器ACL就是无法通过被动模式的FTP流量.经数次实验和度娘.谷哥指导,终于对FTP模式有了深入理解.先感叹一句,以前学艺不精,书到用时方恨少! 不必要对FTP ...

最新文章

  1. Python之pandas-profiling:pandas-profiling库的简介、安装、使用方法之详细攻略
  2. 计算机组成原理(哈工大刘宏伟)
  3. 21 Fragment和短语法应用
  4. 你活在一个计算机模拟中吗,一麻省理工教授认为,我们更有可能生活在计算机模拟宇宙中...
  5. Selenium的定位元素
  6. 全球软件巨头 Software AG 遭勒索攻击
  7. SpringBoot使用WEB进阶
  8. 全国各地收货详细地址_2020高考成绩在哪里查询 2020全国各地高考分数查询时间地址最新...
  9. NLTK学习笔记(六):利用机器学习进行文本分类
  10. Git提交代码相关命令
  11. win10pe命令打开计算机,手把手教你如何制作win10PE启动盘
  12. 全自动解密解码神器 — Ciphey
  13. 苹果经典提示音_微信提示音,可以更换成你喜欢的声音了!
  14. 基于wiki的*GW需求体系化空间
  15. mac电脑重装系统操作步骤
  16. Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、3D组件库】
  17. python爬取boss直招_简易python爬虫爬取boss直聘职位,并写入excel
  18. UE4碰撞射线检测2
  19. html制作象棋教程入门教程,photoshop图层样式制作象棋棋子教程
  20. excel将B列数据放在A列后面

热门文章

  1. 笔记本安装CentOS7.2操作系统
  2. 论文中英文摘要、目录、每章的页眉不同,页脚处的页码自动连续设置方法
  3. 程序员--经典10道脑力题
  4. 《人间告白.金鱼酱》摘录和读后感
  5. linux ls 目录颜色,改变ls 中目录颜色的方法
  6. NYOJ 82 迷宫寻宝
  7. 现代计算机理论模型与工作原理
  8. 《把时间当作朋友》读书笔记
  9. 267019条猫眼数据加持,原来你是这样的《流浪地球》——python数据分析全流程代码实现!
  10. 主机和虚拟机通过虚拟串口通信