ftp特殊性在于有两个通道,一个控制通道,一个数据通道。数据通道的建立依赖于控制通道,且数据通道的建立有两种模式:

主动模式:client和server控制连接建立好后,client通过控制通道告诉服务器使用主动模式,服务器则主动向客户端建立数据通道;

被动模式:client和server控制连接建立好后,client通过控制通道告诉服务器使用被动模式,客户端则主动向服务器建立数据通道。

主动模式下,客户端告诉服务器,客户端用于建立数据通道的地址和端口号(控制通道中的载荷数据),等待服务器的主动连接;

被动模式下,服务器告诉客户端,服务器用于建立数据通道的地址和端口号(控制通道中的载荷数据),等待客户端的主动连接。

在非NAT环境下,载荷数据不会发生改变,但在NAT环境中,载荷数据如果不发生改变,会导致数据通道建立失败。

下面详细介绍几种情形(本文中的NAT设备都是指cisco路由器):

一、FTP 客户端和FTP服务器同在一个局域网,无NAT(主动模式)

二、FTP 客户端和FTP服务器同在一个局域网,无NAT(被动模式)

三、FTP 客户端在内网,FTP服务器在外网,有NAT(主动模式)

此情形下,处于公网的服务器主动去和一个私网ip的客户端建立数据通道,显然是不可能的-私网地址是不可能在公网上路由的。

注:cisco路由器默认是开启FTP ALG的,可以通过修改ftp的默认21号端口为其他端口如:2121,达到关闭FTP ALG的效果(系统会认为目的端口2121的应用才是ftp应用,目的端口21的是其他应用如web等,那么FTP ALG就不会将目的端口21应用中的载荷数据做NAT)。

NAT设备配置:

int g0/0

ip nat inside

ip add 192.168.1.254

int g0/1

ip nat outside

ip add 198.168.10.1

access-list 10 permit 192.168.1.0 0.0.0.255

ip nat inside source list 10 interface g0/1 overload

///修改ftp应用默认端口号21为2121

access-list 100 permit tcp any any eq ftp

ip nat service list 100 ftp tcp port 2121

使系统认为目的端口为2121的才为ftp应用,目的端口为21的为非ftp应用

四、FTP 客户端在内网,FTP服务器在外网,有NAT(主动模式-开启FTP ALG)

此种情形下,FTP ALG将载荷数据中的(192.168.1.10,5567)做了NAT,转换成(198.168.10.1,8878)----一般情况下,端口号不变即(192.168.1.10,5567)-(198.168.10.1,5567),在此为了区别,故意将端口号也改变了。

NAT设备配置:

int g0/0

ip nat inside

ip add 192.168.1.254

int g0/1

ip nat outside

ip add 198.168.10.1

access-list 10 permit 192.168.1.0 0.0.0.255

ip nat inside source list 10 interface g0/1 overload

五、FTP 客户端在内网,FTP服务器在外网,有NAT(被动模式)

NAT设备配置:

int g0/0

ip nat inside

ip add 192.168.1.254

int g0/1

ip nat outside

ip add 198.168.10.1

access-list 10 permit 192.168.1.0 0.0.0.255

ip nat inside source list 10 interface g0/1 overload

///修改ftp应用默认端口号21为2121

access-list 100 permit tcp any any eq ftp

ip nat service list 100 ftp tcp port 2121

总结:服务器在外,不开启FTP ALG的情形下,被动模式通,主动模式不通

六、FTP 客户端在外网,FTP服务器在内网,有NAT(主动模式)

NAT设备配置:

int g0/0

ip nat inside

ip add 192.168.1.254

int g0/1

ip nat outside

ip add 198.168.10.1

ip nat inside source static tcp 192.168.1.10 21 198.168.10.1 21 extendable

///修改ftp应用默认端口号21为2121

access-list 100 permit tcp any any eq ftp

ip nat service list 100 ftp tcp port 2121

或者:ip nat inside source static tcp 192.168.1.10 21 198.168.10.1 21 extendable no-payload

//no-payload关键字 指示载荷数据不要转换

七、FTP 客户端在外网,FTP服务器在内网,有NAT(被动模式)

此情形下,处于公网的客户端主动去和一个私网ip的服务器建立数据通道,显然是不可能的-私网地址是不可能在公网上路由的。

NAT设备配置:

int g0/0

ip nat inside

ip add 192.168.1.254

int g0/1

ip nat outside

ip add 198.168.10.1

ip nat inside source static tcp 192.168.1.10 21 198.168.10.1 21 extendable

///修改ftp应用默认端口号21为2121

access-list 100 permit tcp any any eq ftp

ip nat service list 100 ftp tcp port 2121

或者:ip nat inside source static tcp 192.168.1.10 21 198.168.10.1 21 extendable no-payload

//no-payload关键字 指示载荷数据不要转换

八、FTP 客户端在外网,FTP服务器在内网,有NAT(被动模式-开启FTP ALG)

NAT设备配置:

int g0/0

ip nat inside

ip add 192.168.1.254

int g0/1

ip nat outside

ip add 198.168.10.1

ip nat inside source static tcp 192.168.1.10 21 198.168.10.1 21 extendable

总结:FTP服务器在内网,不开启FTP ALG,主动模式通,被动模式不通。

九、FTP 客户端和FTP服务器在内网,双NAT(主动模式)

十、FTP 客户端和FTP服务器在内网,双NAT(被动模式)

总结: FTP 客户端和FTP服务器同在内网,存在双NAT的情况下:

主动模式:靠近客户端的NAT设备需要开启FTP ALG

被动模式:靠近服务器端的NAT设备需要开启FTP ALG

注:ftp客户端和ftp服务器控制通道建立好了,就一直存在,除非通过命令主动关闭。

数据通道则是一次性的,即传输完数据后,马上就断开了。如果需要再传输数据,则需要新建数据通道。

例如:client端和server端控制通道建好后,client通过控制通道发送ls  -l命令给server端

1、主动模式下,服务器主动和客户端建立数据通道,建好通道后,服务器将ls -l的输出内容传输给客户端,数据传输完成后,服务器主动断开数据通道。同时通过控制通道告诉客户端,数据传输完毕。

2、被动模式下,客户端主动和服务器建立数据通道,建好通道后,服务器将ls -l的输出内容传输给客户端,数据传输完成后,服务器主动断开数据通道。同时通过控制通道告诉客户端,数据传输完毕。

client通过控制通道发送get  XXXX命令给server端,下载文件XXXX:

1、主动模式下,服务器再次主动和客户端建立数据通道,建好通道后,服务器将文件XXXX传输给客户端,数据传输完成后,服务器主动断开数据通道。同时通过控制通道告诉客户端,数据传输完毕。

2、被动模式下,客户端再次主动和服务器建立数据通道,建好通道后,服务器将文件XXXX传输给客户端,数据传输完成后,服务器主动断开数据通道。同时通过控制通道告诉客户端,数据传输完毕。

前后两次数据传输(ls -l 和get XXXX)过程中,控制通道始终保持连接状态不变,但是数据通道却建立了两次(前后两次的ip地址一样,但是端口号不同,随机的)。

NAT环境FTP服务器的映射及访问过程详解相关推荐

  1. python属性使用教程_Python对象的属性访问过程详解

    只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...

  2. 启动hive报错_远程服务器模式Hive的搭建过程详解

    昨天总结了一下Hive通过网络连接数据库模式的搭建过程,今天我来总结一下另外一种模式-远程服务器模式Hive的搭建过程. 首先,我们来看一下机器如何分配: 在集群中,我们准备四台虚拟机,node001 ...

  3. uboot中环境变量的加载、写入过程详解

    1.uboot启动中环境变量的加载 1.1.uboot加载环境变量流程分析 (1)首先使用默认的环境变量default_environment[]: (2)然后加载SD卡中env分区的环境变量,校验读 ...

  4. 浏览器中网址访问过程详解

    前言 当我们在浏览器中输入一个网址,比如www.google.cn,浏览器就会加载出百度的主页.那么浏览器背后完成的具体是怎么样的呢? 总结起来大概的流程是这样的: (1)浏览器本身是一个客户端,当你 ...

  5. Win7+VS2010环境下CEGUI 0.8.4编译过程详解

    转载▼ 1. 在http://cegui.org.uk/download 下载CEGUI源码包 cegui-0.8.4 以及CEGUI依赖库(Windows / Apple OS X only) ce ...

  6. cache的访问过程详解 访问命中率hit rate 命中时间hit time 失效率miss rate 失效代价miss penalty

  7. [转帖]ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解

    ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解 https://www.cnblogs.com/vipyoumay/p/7525478.html ASP.NET C ...

  8. Linux系统下SVN服务器的搭建过程详解 UpJ}s7+

    Linux系统下SVN服务器的搭建过程详解 UpJ}s7+   1 环境:  服务器放在redhatAS4.0上,客户端在windows 2000. k_lb"5z   Z]jSq@%1H* ...

  9. IIS访问共享文件详解

    原文:IIS访问共享文件详解 前言 公司同事做了一个报表系统,需要做集群部署,本来是一件挺容易的事,但是部署过程中却遇到啦种种蛋疼问题. 问题1.我们的报表使用的是微软的水晶报表,需要上传报表的配置文 ...

  10. Java web 开发的概念、环境配置、创建项目过程详解(Eclipse)

    Java Web 开发 Java Web 开发概念 搭建过程 详解 在eclipse创建Dynamic Web Project 创建时选择Tomcat的版本 创建项目成功 eclipse环境下如何配置 ...

最新文章

  1. 每日一皮:当你要下班的时候,突然测试叫住了你...
  2. BBSSDK论坛移动化实现方案
  3. 计算机中央处理器cpu_中央处理器(CPU)| 计算机科学组织
  4. java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)
  5. 如何在.Netcore控制台应用中使用依赖注入(4)
  6. 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 858期】
  7. 小程序中间放大轮播图_微信小程序实现类3D轮播图
  8. java注释规范_Java代码注释规范详解
  9. 利用MATLAB生成软件二阶低通滤波器(绝对靠谱)
  10. Python【一点号】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
  11. Docker配置consol
  12. “我靠这4个项目,拿到了年薪30万+的大厂Offer”
  13. 神舟笔记本WLAN打不开的解决方法
  14. 软件经验|GDAL空间数据开源库开发介绍
  15. 用Python批处理将WORD文件转换成PDF格式(工具:win32com模块)
  16. 未来计算机长啥样,未来人类到底会长成啥样?科学家公布最终模拟图!
  17. Win11系统点击wifi图标没有反应怎么解决?
  18. [SV] ignore_bins 用法
  19. ubuntu英文乱码解决
  20. 深圳湾去香港办招行香港一卡通流程(前篇)

热门文章

  1. Android app接入微信人脸支付详解
  2. Jupyter notebook系列(6):更高级的配置Mark(显示行号,更改工作路径,使用sudo权限)
  3. 带宽、特征频率、截止频率、-3dB
  4. 傅里叶分析之掐死教程
  5. 中文维基百科语料库 训练好的Word2vec模型
  6. html如何将图片作为网页背景,html文档中如何把图片作为背景
  7. win10共享打印机搜索不到计算机,w10共享打印机搜索不到如何处理
  8. arcgis10.2之Maplex(高级标注扩展模块)
  9. html仿ppt动画,jquery仿PPT幻灯片特效插件ppt.js
  10. 3种方法设置PPT文件保护