| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> FTP穿越NAT -> 正文阅读 |
|
[网络协议]FTP穿越NAT |
NAT是一种常见的网络协议,可以达到节省公网IP地址和隐藏内部网络结构等目的。NAT通过对IP报文头部的IP地址和TCP/UDP端口进行转换,创建NAT会话表,完成数据的转发。 有一些特殊的协议或者应用,它们的报文不是TCP/UDP报文,或者其报文的数据部分包含了IP地址或端口信息。对于这些特殊报文不能按照普通的方法进行有效的转换。下面介绍一种常见的协议FTP,如何穿越NAT。 FTP基于TCP,是一种双通道协议。所谓双通道,是指要完成一次完整的FTP业务会涉及到控制连接和数据连接两个通道。 FTP有主动和被动两种模式,这里只讨论主动模式。 无NAT情况下的FTP业务流程: 建立控制通道 客户端主动发起,经过TCP三次握手,控制连接建立完成。 获取数据连接端口信息 控制连接建立后,用户登录、路径获取等相关操作均在控制通道内完成。 客户端通过port报文告知服务器端本端用户数据连接的IP和端口。请注意这些信息是承载在应用层数据里面的,使用的是控制连接通道。 图片 数据传输在数据连接中完成。 考虑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的问题。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 20:18:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |