【转】ftp ALG 功能实现的概要说明

转载 2012年03月26日 14:44:01

【转】ftp ALG 功能实现的概要说明  

2009-09-16 10:21:56|  分类: LINUX|字号 订阅

近阶段了解了一下ALG,有些体会做一个记录,以供以后查阅。
ALG,Application Layer Gateway的缩写,这是一般网络设备或者主机都必备的一个小模块,那ALG是为了完成一个什么功能呢?
这首先要从IPV4的地址过少说起,因为IPV4地址过少,所以规定了部分地址给内部分配使用,这种地址段在互联网上是不分配的,其中有10.X.X.X和192.168.X.X,一般公司较大的就用前一种,公司较小的就用后一种。(比如我在公司的机器就是192.168.5.188)
这样使用内部地址的机器要访问一个外部网络的服务器时,如大家平时在公司通过本地局域网的网关或路由器访问雅虎,这个时候网关或者路由器上必须有一个网络地址转换模块(NAT),可以把你的报文中的内部地址(192.168.X.X)转换成一个你从ISP处得到的外部地址,这样来完成网络访问。
但是有一部分协议,像FTP,它分为控制连接和数据连接。如果你ftp一个外部服务器时,你的本机也就是客户端,客户端会和服务器端首先建立一个控制连接,这个时候一般连接的是服务器端的端口21,但是客户端和服务器端需要传递文件的时候,都要先通过控制连接协商出一个数据连接来。详细说明如下:
FTP数据连接的协商分为两种模式,一种是主动模式,另一种是被动模式。
主动模式的特点是,在客户端和服务器端要进行文件传递时,首先是客户端使用一个报文告诉服务器端,它将用某个IP地址的某个端口作为数据连接(这个信息就是报文的载荷),也就是通常说的PORT命令。服务器端收到这个报文后,回应一个同意的ACK报文,然后服务器端会主动用自己的IP地址加上端口20来发送一个SYN报文到客户端通过PORT命令告诉它的那个IP地址和端口,和客户端建立起一个数据连接。
被动模式的特点是,在客户端和服务器端要进行文件传递时,首先是服务器端通过一个报文告诉客户端,它将用那一个IP地址的那一个端口作为数据连接(该报文以命令字227开始),也就是PASV命令。客户端收到这个报文之后,回应一个同意的ACK报文。然后客户端会用自己的IP地址,然后任选一个能够使用的端口(注意:通常情况下都不是20)和服务器端告诉它的那个IP地址和端口相连接,建立数据连接。
了解完了这两种模式,就知道在客户端的报文经过了路由器NAT之后,服务器端看到的报文的客户端的报文的IP源地址和端口都已经被改变了,当然对于控制连接来说这没有影响,因为有网关或者路由器的NAT模块在中间做管理,但是对于正要通过控制连接建立的数据连接就有问题了,因为NAT改变的仅仅是IP报文头,而对于因为报文中PORT命令中包含的地址和端口信息没有做任何改动,这样服务器是无法和一个内部地址建立连接的,所以这个时候就出现了ALG这个功能。ALG就是在发现如果报文头做了NAT,在这个时候如果发现这个是一个FTP的连接的时候(还有很多其他的连接也需要做ALG的,这里仅仅是为了说明FTP的情况),就需要同时改变PORT命令中的地址和端口(当然,这个地址和端口也必须通过NAT分配的机制来获得)。
因为FTP是一个TCP的连接,如果更改报文内容,那么就涉及到整个TCP连接的一些参数的更改,比如sequence number,TCP报文的checksum等等。当然也还存在某种时候要做ALG,某种时候不需要做ALG,这就需要按照具体是在哪个系统上实现具体对待了。

 

相关文章推荐

ftp ALG 功能实现的概要说明

     近阶段了解了一下ALG(应用层网关Application Layer Gateway),有些体会做一个记录,以供以后查阅。     ALG,Application Layer Gateway...

FTP ALG 功能实现的概要说明

近阶段了解了一下ALG,有些体会做一个记录,以供以后查阅。 ALG,Application Layer Gateway的缩写,这是一般网络设备或者主机都必备的一个小模块,那ALG是为了完成一个什么功...
  • magod
  • magod
  • 2011年04月07日 22:08
  • 5062

当两次NAT碰到FTP ALG

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://virtualadc.blog.51cto.com/3027116/755315 ...

图像分类系统之功能实现概要

Github源码分享,欢迎Fork and Star系统开发平台及运行环境系统基于C++编程语言开发,在集成开发环境Microsoft Visual Studio 2015下开发,系统运行于Windo...

算法实现Alg4-Infrared small target detection via multi-direction line reconstruction ···

《Infrared small target detection via multi-direction line reconstruction and information entropy-ind...
  • zxchz
  • zxchz
  • 2017年07月21日 09:22
  • 83

内核SIP ALG学习指引和基本实现原理(分析BCM方案实现)

总结一下内核ALG的学习方法和基本原理,方便以后需要了解这方面的朋友少走弯路。该文档分析基于broadcom5358方案。...

探讨DNS-ALG在IPV4和IPV6互通网络中的研究与实现

探讨DNS-ALG在IPV4和IPV6互通网络中的研究与实现
  • HNArke
  • HNArke
  • 2011年03月11日 13:36
  • 1021

算法实现Alg17《Infrared Small-Target Detection Using Multiscale Gray Difference Weighted Image Entropy 》

发表期刊:IEEE TRANSACTIONS ON AEROSPACE AND ELECTRONIC SYSTEMS VOL. 52, NO. 1 FEBRUARY 2016   Impact fac...
  • zxchz
  • zxchz
  • 2017年07月20日 09:22
  • 130
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【转】ftp ALG 功能实现的概要说明
举报原因:
原因补充:

(最多只允许输入30个字)