FTP主动跟被动模式区别
目录
1、拓扑图
2、FTP协议简介
3、FTP工作原理
3.1、主动连接(PORT)
3.2、被动连接(PASV)
3.3、FTP主动模式穿越SNAT原理
3.4、FTP被动模式穿越DNAT原理
4、问题思考
4.1、主动模式和被动模式是谁决定的
4.2、主动模式和被动模式是怎么协商出端口
4.3、设想中间防火墙怎么识别子连接并给子连接放行
4.4、思考NAT设备如何给子连接做地址转换
4.5、下载两个文件,会每个文件开一个数据连接么
4.6、列出目录,服务器发送目录列表,会使用数据连接传输么
5、FTPipv4和ipv6的区别
1、拓扑图
2、FTP协议简介
FTP 英文全称:File Transfer Protocol,中文全称:文件传输协议
提供交互式的访问,对传输文件的格式和类型有分类,允许文件具有存取权限。适合异构网络任意计算机的传送。
3、FTP工作原理
FTP采用C/S架构,使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务,FTP服务器检查有两大部分组成:一个主进程,负责接收新的请求,另外有若干的从属进程,负责处理单个请求,工作步骤如下:
- 建立TCP连接
- 打开熟知端口21(控制端口),使客户进程能够连接上
- 等待客户进程发链接请求。
- 启动从属进程来处理客户进程发来的请求。主进程与从进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
- 回到等待状态,继续接收其他客户进程的请求。
3.1、主动连接(PORT)
1、主动连接介绍
服务端通过制定端口号(20)主动与客户端建立数据连接,并向客户端发送数据。
以下报文是SNAT转换后的报文,源IP(10.10.10.2)转换成出接口IP地址(192.168.10.114)
2、报文拆分解释
2.1、报文1-3:TCP建立三次握手,建立连接
2.2、报文4:服务端(21端口)向客户端(49203端口)发送request报文。code字段表示新用户服务就绪,arg字段为服务器名称和服务器版本号
2.3、报文5:客户端(49203端口)向服务端(21端口)发送request报文。command字段表示该报文里包含的是用户名,arg字段为用户名内容。
2.4、报文6:服务端(21端口)回复response报文,code值为331,表示用户名可以,需要密码
2.5、报文7:客户端(49203端口)向服务端(21端口)发送request报文,command字段表示该报文里包含的是密码,arg字段为密码内容。
2.6、报文8:服务端(21端口)回复response报文,code值为230,表示用户已登录,请继续操作
2.7、报文9:客户端(49203端口)向服务端(21端口)发送SYST报文,表示返回服务器使用的操作系统。
2.8、报文10:服务端(21端口)回应系统类型,code字段为215,表示返回的是系统类型。arg字段为UNIX,表示系统类型是UNIX系统
2.9、包11:客户端(49203端口)请求系统状态
包12:服务端(21端口)回应系统状态,code字段为211,arg字段为特征列表
2.10、包15:客户端(49203端口)PWD获取当前路径
包16:服务端(21端口)返回当前路径
包17:客户端(49203端口)CWD更改目录
包18:服务端(21端口)返回修改后的目录
包19:客户端(49203端口)PWD获取当前路径
包20:服务端(21端口)返回当前路径
2.11、包21:客户端(49203端口)请求使用ascii传输
包22:服务端(21端口)响应,同意使用ascii传输
2.12、包23:客户端(49203端口)发起主动连接,向服务端发送建立子连接的IP和端口
包24:服务端(21端口)响应,同意使用客户端发送的IP端口建立子连接
2.13、包26-28:FTP子连接三次握手建立TCP连接。
2.14、包:30-32:服务端(20端口)向客户端(49204端口)发送数据。
2.15、包33-37:数据传输完成,TCP断开连接
2.16、包60-63:控制连接已断开,TCP四次挥手断开TCP连接
3.2、被动连接(PASV)
1、被动连接介绍
服务端采用客户端建议使用被动模式,开启数据传输端口的监听,被动等待客户端的连接然后向客户端发送数据。
以下报文是SNAT转换后的报文,源IP(10.10.10.2)转换成出接口IP地址(192.168.10.114)
2、报文拆分解释
2.1、TCP三次握手建立TCP连接
2.2、报文4:服务端(21端口)向客户端(49206端口)。code字段表示新用户服务就绪,arg字段为服务器名称和服务器版本号
2.3、报文5:客户端(49206端口)向服务端(21端口)发送request报文。command字段表示该报文里包含的是用户名,arg字段为用户名内容。
2.4、报文6:服务端(21端口)回复response报文,code值为331,表示用户名可以,需要密码
2.5、报文7:客户端(49206端口)向服务端(21端口)发送request报文,command字段表示该报文里包含的是密码,arg字段为密码内容。
2.6、报文8:服务端(21端口)回复response报文,code值为230,表示用户已登录,请继续操作
2.7、报文9:客户端(49206端口)向服务端(21端口)发送SYST报文,表示返回服务器使用的操作系统。
2.8、报文10:服务端(21端口)回应系统类型,code字段为215,表示返回的是系统类型。arg字段为UNIX,表示系统类型是UNIX系统
2.9、包11:客户端(49206端口)请求系统状态
包12:服务端(21端口)回应系统状态,code字段为211,arg字段为特征列表
2.10、包15:客户端(49206端口)PWD获取当前路径
包16:服务端(21端口)返回当前路径
包17:客户端(49206端口)CWD更改目录
包18:服务端(21端口)返回修改后的目录
包19:客户端(49206端口)PWD获取当前路径
包20:服务端(21端口)返回当前路径
2.12、包23:客户端(49206端口)向服务端请求建立被动连接
包24:服务端(21端口)响应,同意建立被动连接,并且向客户端发送服务端的IP和监听端口
2.13、包26-28:FTP子连接三次握手建立TCP连接。
2.14、包:32-33:服务端(20端口)向客户端(49207端口)发送数据。
2.15、包34-36:数据传输完成,TCP断开连接
2.16、包59-62:控制连接已断开,TCP四次挥手断开TCP连接
3.3、FTP主动模式穿越SNAT原理
主动模式穿越SNAT主要用于FTP服务端在公网,客户端需要通过SNAT转换访问服务端。
1、FTP客户端通过防火墙的SNAT访问FTP服务端时使用主动模式。
2、当客户端发送PORT报文到服务端时,报文内的active ip address字段为10.10.10.2,active port字段为49217
3、当穿越SNAT的时候,SNAT会把active ip address字段和active port字段改为转换后的IP和端口
4、服务端收到经过SNAT后的PORT报文后,会给192.168.10.114发送响应报文。
5、响应报文经过链接跟踪表,转发给客户端。
3.4、FTP被动模式穿越DNAT原理
被动模式穿越DNAT主要用于FTP服务端在私网,客户端需要通过DNAT转换后访问服务端。
1、FTP客户端访问防火墙的10.10.10.1,进行DNAT转换,转换目的IP为192.168.10.114
2、当客户端发送PASV报文到服务端后,服务端返回自己的监听IP和端口,passive ip address字段是192.168.10.115,passive port字段是62443
3、当穿越DNAT的时候,DNAT会把passive ip address字段和passive port字段改为转换后的IP和端口
4、客户端收到转换后的响应报文后,和转换后的响应报文进行建立数据连接
4、问题思考
4.1、主动模式和被动模式是谁决定的
主动模式和被动模式是由客户端决定的,客户端请求建立数据连接时,发送PVSA报文,服务端就会建立被动连接;当客户端发送PORT报文时,服务端就会建立主动连接。
4.2、主动模式和被动模式是怎么协商出端口
主动模式协商端口
1、客户端使用任意一个的非熟知权端口N(N>1024)与服务端建立FTP控制连接,然后客户端开始监听N+1端口。客户端向服务端21端口发送PORT报文,PORT报文里包含客户端监听的IP和N+1端口。
2、服务端收到客户端的PORT报文后,使用客户端发送的IP和N+1端口与客户端建立数据连接。
被动模式协商端口
- 客户端开启FTP连接时,会打开两个任意的非熟知端口(N > 1024和N+1)。N端口连接服务器的21端口。
- 客户端发送PVSA报文给服务端
- 服务器会开启一个任意的非熟知端口(P > 1024),并发送响应报文给客户端响应报文包含服务端IP和端口号P。
- 客户端发起从本地端口N+1到服务器的端口P建立数据连接。
4.3、设想中间防火墙怎么识别子连接并给子连接放行
被动模式:
- 客户端开启FTP连接时,会打开两个任意的非熟知端口(N > 1024和N+1)。N端口连接服务器的21端口。
- 客户端发送PVSA报文给服务端。
- 服务器会开启一个任意的非熟知端口(P > 1024),并发送响应报文给客户端,响应报文包含服务端子连接IP和端口P。
- 防火墙收到服务端的响应后,获取响应报文中子连接的IP和端口P。
- 客户端发起从本地端口N+1到服务器的子连接IP、端口P建立数据连接。
- 防火墙收到客户端发送的报文目的IP是子连接IP后,允许转发,并转发给服务器。
4.4、思考NAT设备如何给子连接做地址转换
主动模式:
- 客户端使用任意一个的非熟知端口N(N>1024)与服务端建立FTP控制连接
- 客户端监听N+1端口。
- 客户端向服务端21端口发送PORT报文建立子连接,PORT报文里包含客户端监听的IP和N+1端口。
- NAT设备获取PORT报文内的客户端IP和N+1端口
- NAT设备修改PORT报文内的客户端IP和N+1端口为自己的IP和端口,生成动态NAT
- 服务端收到客户端的PORT报文后,使用NAT转换后的IP和端口与客户端建立数据连接。
- NAT设备收到后,访问转换后的IP和端口,根据动态NAT转换为客户端子连接的IP和N+1端口,发送给客户端。
4.5、下载两个文件,会每个文件开一个数据连接么
FTP同时下载两个文件,FTP会为每个文件打开一个数据连接。
1、下载文件test.txt,开启一条数据连接
2、下载文件test1.txt,开启另一条数据连接
4.6、列出目录,服务器发送目录列表,会使用数据连接传输么
会使用数据连接发送目录列表,当数据连接建立完成后,服务器会向客户端发送当前路径和目录列表内容。
5、FTPipv4和ipv6的区别
控制连接请求(被动模式)
IPv4使用PASV建立控制连接。PASV报文response报文的code字段为227(进入被动模式),arg字段为监听IP和端口。
IPv6使用EPSV建立控制连接。EPSV报文response报文的code字段为229(进入被动模式),arg字段为监听端口
控制连接请求(主动模式)
IPv4使用PORT建立控制连接。请求时携带监听的IPv4地址和端口。PART报文response报文返回200
IPv6使用EPRT建立控制连接。请求时携带监听的IPv6地址和端口。EPRT报文response报文返回200
转自:https://blog.csdn.net/ever_peng/article/details/89022796
FTP主动跟被动模式区别相关推荐
- FTP主动和被动模式区别?
[前言] 要弄清FTP主动和被动模式区别,首先需要弄清端口.本质上ftp协议是TCP/IP的上层协议,即应用层协议,也就是说如果要实现一个ftp软件或工具,还是用socket去实现,因此需要弄清soc ...
- FTP主动和被动模式区别
FTP是用来在两台计算机之间传输文件,是互联网中应用非常广泛的服务之一.FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式,不支持UDP ...
- ftp主动和被动模式_【扫盲】FTP基础知识详解
关注我,你的眼睛会怀孕 本文主要介绍FTP的工作原理,FTP主动与被动两种工作模式. FTP 简介 FTP协议就是文件传输控制协议.它可以使文件通过网络从一台主机传送到同一网络的另一台主机上,而不受计 ...
- Linux笔记-ftp主动和被动模式下iptables的规则配置
服务端准备 首先安装vsftpd: yum -y install vsftpd 启动服务: systemctl start vsftpd.service 配置文件目录在:/etc/vsftpd/vsf ...
- ftp主动和被动模式_ftp协议,深入理解ftp协议只需3步
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端.其中FTP服务器用来存储 ...
- 防火墙对FTP主动和被动模式的影响
FTP是常见的基于TCP的网络服务,它使用了两个TCP连接来建立逻辑通信信道,即控制连接和数据连接.当客户端与服务器建立一个FTP会话时,使用TCP创建一个持久的控制连接以传递命令和应答.当发送文件和 ...
- FTP主动和被动模式(详解+图示)
基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常21端口是命令端口,20端口是数据端口.当 ...
- ftp主动模式和被动模式的区别
一.FTP是什么 FTP的中文名称是"文件传输协议",是File Transfer Protocol三个英文单词的缩写.FTP:是TCP/IP协议组中的协议之一,其传输效率非常高, ...
- FTP主动模式和被动模式详解
FTP原理 概述: FTP (File Transfer Protocol文件传输协议),应用层协议,是基于TCP的双向可靠传输. FTP模型-C/S模型 基本构成:服务器端&客户端交互.FT ...
最新文章
- angular指令ng-class巧用
- edge chrome 浏览器 底色调黑 反色
- Linux下程序开机启动
- elastic-job控制台部署与使用
- 这几行代码,真的骚!
- JAVA生成32位随机字符串工具
- IAT-Hook 劫持进程Api调用
- 应用随机过程-复习笔记-Chapter4-关于期望的各态历经性习题答案
- 批处理 bat for 详解
- 19 年 3 月 GitHub 上最流行的 34 个 JS 仓库
- 强烈呼吁弃用Notepad++,推荐几款优秀替代品
- python byte转str,str转byte
- adb命令模拟电池电量
- 《机器学习(周志华)》 习题5.5答案
- nvm管理node版本的使用方法和常用指令
- Offer帮 纽约Quant求职
- 洛谷-P1577-切绳子
- 1.1.1和1.1.2支持漫游运营商LOGO更换
- 2020上半年勒索病毒报告:勒索手段升级,不交赎金就公开数据
- 华为ws851虚拟服务器,ws851(华为荣耀ws851评测)
热门文章
- 神经网络的激活函数总结
- 广西大学考计算机可以拿创新学分吗,广西大学创新实践学分实施办法
- [HDU5873] [2016亚洲区域赛大连网络赛] Football Games [构造][兰道定理]
- Window下kafka 单机SASL_SCRAM加密及身份认证
- 视频:说话的艺术-与斯科特·汉塞尔曼(Scott Hanselman)
- VB .bas文件生成dll并且调用
- pulltorefresh+recycleview 实现的瀑布流(带下拉刷新,上拉加载更多)
- 给百度地图每个市添加颜色
- docker 下载mysql 8.0_docker安装mysql8.0
- STM32处理器定时器分析(实现一个定时中断)