nat udp 端口映射维持多久(nat技术和udp)

生活常识 2023-05-14 20:35生活常识www.xinxueguanw.cn

隐藏式下水管原理 NAT基本原理及UDP打洞技术

前言

关于 间通信有这么几个问题

1.内网的用户可以访问内网服务器吗?

可以,在一个局域网,都有私有IP,可以直接通信。

2.外网用户可以直接访问内网服务器吗?

不可以,需要做静态NAT,把外网路由至内网地址上。

3.内网用户可以直接访问外网吗?

不可以,需要做动态NAT,将内网用户私有IP转换成公网IP。由于公网IP只有一个,而内网用户IP很多,为了辨别内网用户session,需要使用内网IP+端口号组合的方式。

4.内网用户可以访问公网IP的内网服务器吗?

不可以,在目前的NAT实现机制上,是无法访问的。如果要实现互通就需要NAT穿透,通俗的讲就是打洞技术。

什么是NAT

NAT(Network Address Translation, 地址转换), 用来将内网地址和端口号转换成合法的公网地址和端口号,建立一个会话,与公网主机进行通信。NAT的使用是为了解决公网IP有限及局域网安全性的问题。

NAT分类

NAT工作原理

被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关; 访问只能先由私网侧发起,公网无法主动访问私网主机;NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;NAT网关的存在对通信双方是保持透明的;NAT网关为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。

从上面的特征来看,NAT将内部 的信息隐藏和转换,如果要实现隐藏在NAT下的设备之间通信(对等 传输),则必须穿透NAT;NAT网关实际上并不能实现对通信双方的全透明,因为用户可以在传输的数据包中携带ip和port信息(而不是在IP header中)。

NAT穿透实现原理

通过对NAT的介绍,可以看到NAT只是实现私网和公网之间的通信转换,两个私网内的要实现通信就需要NAT穿透技术了。

如图所示,客户端A和客户端B要实现通信,要通过以下过程

要启动一个服务器S.客户端A,B要通过各自的NAT向服务器注册各自的公网IP客户端A向服务端S请求与客户端B进行通信,服务端S通知客户端B。服务端S把客户端B的外网IP发给客户端A,把客户端A的外网IP发给客户端B。客户端B向客户端A的方向打洞,并通知服务器S。服务器S通知客户端A与客户端B建立连接。客户端A和客户B可直接通过NAT进行通信。

TCP打洞与UDP打洞

TCP打洞和UDP打洞的流程基本是一致,为什么一提到打洞技术就是UDP打洞呢?这是因为标准socket的API造成的。 UDP的socket允许一个socket创建多个会话,而TCP的只允许一个socket创建一个会话。比如A和B要连接到S,肯定A和B双方都会在本地创建一个socket,去连接S上的socket。创建一个socket必然会绑定一个本地端口,假设为6666,这样A和B才分别建立了到S的通信信道。接下来开始打洞,打洞则需要A和B分别发送数据包到对方的公网IP。因为NAT设备是根据端口号来确定session,如果是UDP的socket,A和B只用把数据直接发送到对方的IP和端口就可以了,这样打洞就成功了。如果是TCP的socket,因当前socket已绑定了与服务器通信,所以只能再新创建socket进行通信,增加了资源开销。

并不是所有的NAT都能支持打洞的,看下面表格

客户端A

客户端B

是否可以打洞

全锥型

全锥型

全锥型

受限锥型

全锥型

端口受限锥型

全锥型

对称型

受限锥型

受限锥型

受限锥型

端口受限锥型

受限锥型

对称型

端口受限锥型

端口受限锥型

端口受限锥型

对称型

一般否

对称型

对称型

一般否

nat技术和udp 为什么nat是udp服务

Copyright@2015-2025 www.xinxueguanw.cn 心血管健康网版板所有