【前言】

要弄清FTP主动和被动模式区别,首先需要弄清端口。本质上ftp协议是TCP/IP的上层协议,即应用层协议,也就是说如果要实现一个ftp软件或工具,还是用socket去实现,因此需要弄清socket和端口是基础。注意以下几点:

1.socket分为客户端和服务端,通常情况下服务端需要进行bind绑定端口操作,而客户端不需要操心本地端口的操作,客户端只需要在connect的时候传入服务端的IP和端口参数。其实在socket连接的过程中,双方都需要打开一个端口,只不过客户端的端口由系统自己产生,自己关闭。因为客户端关心的是服务端的端口,而不需要关心本地的端口。很多人误以为客户端不需要端口。

2.ftp协议中会建立两条通道:一条是命令通道,进行命令传送,例如:客户端向服务端请求列表;另外一条是数据通道,就是在文件上传下载时使用。

FTP主动和被动模式

   ftp的主被动模式指的是在于数据通道的区别,也就是说在传输文件时才会有区分。通常说的ftp的21端口指的是命令通道,是服务端监听的21端口。而数据通道是文件传输前建立连接,传输完毕则关闭连接。下面具体介绍传输文件的时候主被动工作过程。

主动模式:

建立连接,获取目录及列表 ,这个过程主被动没什么区别。下面是从客户端打印的连接过程:

响应:  220 Connected to 192.168.2.77 ready...
命令:  USER admin
响应:  331 Password required for admin.
命令:  PASS *****
响应:  230 User admin logged in.
状态:  连接成功
命令:  OPTS UTF8 OFF
响应:  500 'OPTS': command not understood.
状态:  正在取得目录列表...
命令:  PWD
响应:  257 "/E:/test/" is current directory.
状态:  成功取得目录列表

下载文件时(主动模式)过程:

响应:  220 Connected to 192.168.2.77 ready...
命令:  USER admin
响应:  331 Password required for admin.
命令:  PASS *****
响应:  230 User admin logged in.
状态:  连接成功
状态:  开始下载 /E:/test/100.txt
命令:  CWD /E:/test/
响应:  250 CWD command successful. "/E:/test/" is current directory.
命令:  PWD
响应:  257 "/E:/test/" is current directory.
命令:  TYPE I
响应:  200 Type set to I.
命令:  PORT 192,168,2,77,59,188
响应:  200 Port command successful.
命令:  RETR 100.txt
响应:  150 Opening data connection for 100.txt.
响应:  226 Transfer complete.
状态:  下载成功

从上面的一行命令:  PORT 192,168,2,77,59,188意思是:PORT是告诉服务端是主动模式建立数据通道;192,168,2,77是客户端IP,;59,188是客户端随机产生的端口,其中端口号计算为  端口号 = 59 x 256 + 188;这个端口是在客户端监听,客户端告诉服务端这个端口号,让服务端来连,建立连接后传输文件。过一段时间后,会打印-----状态:  已经从服务器断开,下次传文件的时候重新来一遍。

被动模式:

连接命令通道没什么区别,数据传输时就不同了,过程如下:

响应:  220 Connected to 192.168.2.77 ready...
命令:  USER admin
响应:  331 Password required for admin.
命令:  PASS *****
响应:  230 User admin logged in.
状态:  连接成功
命令:  OPTS UTF8 OFF
响应:  500 'OPTS': command not understood.
状态:  正在取得目录列表...
命令:  PWD
响应:  257 "/E:/test/" is current directory.
状态:  成功取得目录列表
状态:  正在连接 192.168.2.77 ...
状态:  已经连接到 192.168.2.77:0。正在等待欢迎信息...
响应:  220 Connected to 192.168.2.77 ready...
命令:  USER admin
响应:  331 Password required for admin.
命令:  PASS *****
响应:  230 User admin logged in.
状态:  连接成功
状态:  开始下载 /E:/test/100.txt
命令:  CWD /E:/test/
响应:  250 CWD command successful. "/E:/test/" is current directory.
命令:  PWD
响应:  257 "/E:/test/" is current directory.
命令:  TYPE I
响应:  200 Type set to I.
命令:  PASV
响应:  227 Entering Passive Mode (192,168,2,77,62,17).
命令:  RETR 100.txt
响应:  150 Opening data connection for 100.txt.
响应:  226 Transfer complete.
状态:  下载成功

被动模式传输文件的时候有一行命令 :  PASV   意思是告诉服务端是被动模式,然后服务端会随机产生一个端口发给客户端,这时是服务端监听,客户端去连接,然后传文件。

总结:

以上介绍了主被动模式的过程,但网上有很多文章里罗列了很多端口,还有20端口等,最后再总结一下:

一个socket连接,比如服务端监听的是21端口,客户端也需要一个端口打开和外面连接(为什么客户端需要端口?客户端可服务端都是设备,对外连接都需要打开一扇门,不打开怎么连接;只不过服务端指定了端口,并且绑定了该端口,客户端才能找到对应的去连)。所以,主动模式下,数据通道是服务端指定了20端口和客户端监听的那个随机端口对应的,也就是说ftp服务端在传文件的情况下,作为客户端,打开了20端口,连接ftp客户端监听的随机端口,这样建立了数据通道。主动模式下其实是服务端监听了21端口,而客户端监听了数据通道随机端口;在被动模式下就是服务端监听了21端口,也监听了数据通道随机端口。

最后说一句,FTP虽然是古老的东西,建立连接需要很多命令,下载上传文件也需要很多次命令,但在工作学习中ftp仍然是不可或缺的工具。

【参考】

1.https://blog.csdn.net/qq_37851194/article/details/77622272

2.https://blog.csdn.net/code09/article/details/3975223

3.https://blog.csdn.net/zhangyuan12805/article/details/71425385

4.https://blog.csdn.net/yxyhack/article/details/1826256

FTP主动和被动模式区别?相关推荐

  1. FTP主动跟被动模式区别

    目录 1.拓扑图 2.FTP协议简介 3.FTP工作原理 3.1.主动连接(PORT) 3.2.被动连接(PASV) 3.3.FTP主动模式穿越SNAT原理 3.4.FTP被动模式穿越DNAT原理 4 ...

  2. FTP主动和被动模式区别

    FTP是用来在两台计算机之间传输文件,是互联网中应用非常广泛的服务之一.FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式,不支持UDP ...

  3. ftp主动和被动模式_【扫盲】FTP基础知识详解

    关注我,你的眼睛会怀孕 本文主要介绍FTP的工作原理,FTP主动与被动两种工作模式. FTP 简介 FTP协议就是文件传输控制协议.它可以使文件通过网络从一台主机传送到同一网络的另一台主机上,而不受计 ...

  4. Linux笔记-ftp主动和被动模式下iptables的规则配置

    服务端准备 首先安装vsftpd: yum -y install vsftpd 启动服务: systemctl start vsftpd.service 配置文件目录在:/etc/vsftpd/vsf ...

  5. ftp主动和被动模式_ftp协议,深入理解ftp协议只需3步

    FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中FTP服务器用来存储 ...

  6. 防火墙对FTP主动和被动模式的影响

    FTP是常见的基于TCP的网络服务,它使用了两个TCP连接来建立逻辑通信信道,即控制连接和数据连接.当客户端与服务器建立一个FTP会话时,使用TCP创建一个持久的控制连接以传递命令和应答.当发送文件和 ...

  7. FTP主动和被动模式(详解+图示)

    基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当 ...

  8. ftp主动模式和被动模式的区别

    一.FTP是什么 FTP的中文名称是"文件传输协议",是File Transfer Protocol三个英文单词的缩写.FTP:是TCP/IP协议组中的协议之一,其传输效率非常高, ...

  9. FTP主动模式和被动模式详解

    FTP原理 概述: FTP (File Transfer Protocol文件传输协议),应用层协议,是基于TCP的双向可靠传输. FTP模型-C/S模型 基本构成:服务器端&客户端交互.FT ...

最新文章

  1. 【每日一算法】合并两个有序数组
  2. node - 非阻塞的异步 IO
  3. 转!Java关键字final、static使用总结
  4. mysql my.ini my.cnf_Mysql配置文件my.ini/my.cnf
  5. 《浅谈架构之路:前后端分离模式》
  6. 格式小结 html 0926
  7. (?i) 和 re.sub
  8. 创业需要的学习能力不是读书考试做题也不是所谓的思维格局
  9. MS-SQL中取年-月
  10. [leetCode]Merge k Sorted Lists
  11. JS输出内容为[object Object]
  12. nsurl转nsdata_ios 中NSData 拼接成功,但写入本地种只有前面的data
  13. SpringBoot中的约定优于配置
  14. 猪肉种类,全国“名猪”大盘点
  15. 亿图图示最新po解直装版(附教程)
  16. ET代理_切换ip软件网络功能。
  17. 应用程序配置不正确解决方法
  18. 多测师软件测试肖sir_金融问题(1)
  19. axure9总是崩_axure老是崩怎么办
  20. PS快速制作凹陷直线

热门文章

  1. 《Unity3D人工智能编程精粹》笔记
  2. 十四.ARM裸机学习之iNand详解
  3. 笔记本网卡搜索不到wifi名(SSID)的其中一个解决思路
  4. 如何将资源文件正确嵌入或链接到程序集
  5. 简谈RSS——巧用Feed43制作自定义RSS源
  6. WireGuard 全互联模式终极指南(上)!
  7. 欧洲监管机构与银行合作开发区块链权证发行系统
  8. 太原理工大学信息与计算机学怎么样,桑胜波-太原理工大学信息与计算机学院...
  9. 交互设计:界面尺寸设计大全
  10. 什么是基金量化交易?投资者应该怎么玩?