FTP穿越NAT

NAT是一种常见的网络协议,可以达到节省公网IP地址和隐藏内部网络结构等目的。NAT通过对IP报文头部的IP地址和TCP/UDP端口进行转换,创建NAT会话表,完成数据的转发。

有一些特殊的协议或者应用,它们的报文不是TCP/UDP报文,或者其报文的数据部分包含了IP地址或端口信息。对于这些特殊报文不能按照普通的方法进行有效的转换。下面介绍一种常见的协议FTP,如何穿越NAT。

FTP基于TCP,是一种双通道协议。所谓双通道,是指要完成一次完整的FTP业务会涉及到控制连接和数据连接两个通道。

FTP有主动和被动两种模式,这里只讨论主动模式。

无NAT情况下的FTP业务流程:

在这里插入图片描述

建立控制通道

客户端主动发起,经过TCP三次握手,控制连接建立完成。

获取数据连接端口信息

控制连接建立后,用户登录、路径获取等相关操作均在控制通道内完成。

客户端通过port报文告知服务器端本端用户数据连接的IP和端口。请注意这些信息是承载在应用层数据里面的,使用的是控制连接通道。

图片
服务器使用20端口向客户端发起数据连接建立,使用的目的IP和端口来自于Port报文。在没有NAT的情况下数据连接成功建立完成。

数据传输在数据连接中完成。

考虑NAT设备存在的场景,直接由处于公网位置的服务器发起向私网客户端数据连接的建立将不会成功。是由于发起数据连接TCP SYN报文的目的IP和端口号从Port报文中获取,在NAT设备上没有对应的NAT会话表项。

为了解决这个问题,我们需要用到NAT的ALG(Application Layer Gateway)功能。NAT ALG能够感知到特定的应用,并做特殊的处理,以及进行应用层数据的针对性修改。对于FTP的port报文,其携带的原始Active IP address和Active port是真实的私网FTP客户端的IP和数据连接监听端口。NAT ALG会将其修改为NAT转换后的公网IP和端口号。如此,服务器收到的将是转换后的公网IP和端口号。由服务器发起的数据连接即可成功建立。

FTP穿越NAT只是NAT ALG的其中一个应用。ALG需要针对每种协议进行定制,才能理解并支持该协议。迈普的相关产品能够很好的支持NAT ALG功能,除FTP外还支持TFTP、DNS、SIP等多种协议,帮助客户解决各种特殊协议穿越NAT的问题。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优质网络系统领域创作者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值