NAT穿越(一) NAT类型
NAT分为四种类型:
(1)完全透明NAT(Full Cone NAT):
从内部主机 (IN IP ipa) +端口(IN PORT porta)
发送的数据映射为 IP(OUT IP IPA)和端口(OUT PORT PORTA) 发送到外网
从服务器直连到映射的 IP(OUT IP IPA)和端口(OUT PORT PORTA)上,数据将会被转发到内部主机(IN IP ipa), (IN PORT porta)上。
举例来说:内部的机器Client1(ipa:porta)连接Server1,经过NAT后,NAT会打开一个端口(IPA:PORTA)。
外网任何发到这个打开的端口(IPA:PORTA)的UDP数据包都可到达Client1(ipa:porta),不管是不是Server1发过来的。
(2)IP受限NAT(Restricted Cone):
从相同内部主机 (IN IP ipa) +端口(IN PORT porta) 发送的数据经过NAT后,映射为相同的IP(OUTIP IPA)和端口(OUT PORT PORTA)发送到外网设备Y。
和完全NAT不同的是,只有从外部机器Y发过来的请求可以被转发到内部主机(IN IP ipa) +端口(IN PORT porta) ,其他机器发过来的数据不能转发到内部机器。
也就是说进内部网的数据包的PORT不受限制, IP受限制。
举例来说:这种NAT内部的机器Client1(ipa:porta)连接Server1,经过NAT后,NAT会打开一个端口(IPA:PORTA)。
然后Server1可以用任何端口和Client1(ipa:porta)通信,其他的外网IP不行。
(3)端口(和IP)受限NAT(Port Restricted Cone)
与IP受限NAT不同的是,只有当外部主动请求的的源IP和端口 和 内部网发送请求的目的IP和端口相同时才能通信。
举例:这种NAT内部的机器Client1(ipa:porta)连接Server1,经过NAT后,NAT会打开一个端口(IPA:PORTA)。
然后Server1可以用原来的端口和Client1(ipa:porta)通信。其它端口和外网IP发送给(IPA:PORTA)的数据包会被NAT丢弃。
(4)对称NAT
如果发送的包的目的IP 和 PORT相同,那么映射 IP 和 PORT将相同。内部的同一台机器,同一个端口如果目的地址不同,那么映射的端口也不同,所以只有他主动连的服务器才可能知道他的映射后端口,别的服务器如果想连他只能靠猜测端口。
对于这种NAT,连接不同的外部目标(IP或端口不同),原来NAT打开的映射端口会变化。
举例:这种NAT内部的机器Client1(ipa:porta)连接Server1,经过NAT后,NAT会打开一个端口(IPA:PORTA)。
然后Server1只有在当前连接上才能与Client1(ipa:porta)通信。因为内部机器Client1(ipa:porta)再次连接Server1时,经过NAT后,NAT会打开另一个端口(IPA:PORTB),导致其它外部IP发给(IPA:PORTA)的数据包被NAT丢弃。
总结:前面3种NAT,映射 PORT 和 IP,是根据发送包的的内部网的IP和端口决定的。如果内网IP和端口相同,那么映射后的端口和地址是固定。这个功能为我们的穿透NAT提供了条件,可以实现P2P。
对于对称型NAT,打洞后的映射 地址和端口变得不可靠,难穿透。需借助TURN服务进行转发。
NAT穿越(一) NAT类型的更多相关文章
- NAT原理与NAT穿越
最近在看东西的时候发现很多网络程序中都需要NAT穿越,特意在此总结一下. 先做一个约定: 内网A中有:A1(192.168.0.8).A2(192.168.0.9)两用户 网关X1(一个NAT设备)有 ...
- IPFS: NAT traversal(NAT穿越)
IPFS是一个p2p网络,那么一定绕不开的一个问题就是NAT穿越.之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架,本文简单介绍一下什么是NAT. 为什么有NAT技术? NAT ...
- VOIP NAT穿越之SIP信令穿越
本文原创自 http://blog.csdn.net/voipmaker 转载注明出处. 本文是VOIP通信NAT系列专题的第三篇, 本文论述NAT对SIP协议穿越的影响.SIP协议是基于文本的,而 ...
- P2P网络穿越 NAT穿越
http://blog.csdn.net/mazidao2008/article/details/4933730 ——————————————————————————————————————————— ...
- 转:WebRTC技术及应用2 – NAT穿越技术的使用
评:webrtc自带的打洞,穿透协议. 转: http://www.unclekevin.org/?p=924 959 views WebRTC技术及应用2 – NAT穿越技术的使用 发表回复 (题图 ...
- ICE协议下NAT穿越的实现(STUN&TURN)
正文: 一. 首先来简单讲讲什么是NAT? 原来这是因为IPV4引起的,我们上网很可能会处在一个NAT设备(无线路由器之类)之后.NAT设备会在IP封包通过设备时修改源/目的IP地址. 对于家用路由器 ...
- [ipsec] 特别硬核的ike/ipsec NAT穿越机制分析
〇 前言 这怕是最后一篇关于IKE,IPSEC的文字了,因为不能没完没了. 所以,我一直在想这个标题该叫什么.总的来说可以将其概括为:IKE NAT穿越机制的分析. 但是,同时它也回答了以下问题: ( ...
- (转)NAT与NAT穿越学习总结--ICE过程讲的不错
转:http://cgs1999.iteye.com/blog/1994072 1.引言网络地址转换(Network Address Translation,简称NAT)是一种在IP分组通过路由器或防 ...
- SOCKET 实现NAT 穿越
在当前IPv4NAT盛行的网络环境下,两个用户要直接进行P2P连接是非常困难的.较好的解决办法是借助含公网的用户或是服务器中介实现P2P连接. NAT:Network Address Translat ...
随机推荐
- 使用 IdentityServer4 实现 OAuth 2.0 与 OpenID Connect 服务
IdentityServer4 是 ASP.NET Core 的一个包含 OIDC 和 OAuth 2.0 协议的框架.最近的关注点在 ABP 上,默认 ABP 也集成 IdentityServer4 ...
- 2012-2014 三年浙江 acm 省赛 题目 分类
The 9th Zhejiang Provincial Collegiate Programming Contest A Taxi Fare 25.57% (166/649) (水 ...
- MySql 踩坑小记
MySql 踩坑一时爽,一直踩啊一直爽... 以下记录刚踩的三个坑,emmm... 首先是远程机子上创建表错误(踩第一个坑),于是将本地机器 MySql 版本回退至和远程一致(踩第二个坑),最后在 ...
- python属性管理(1):基础
管理属性的几种方式 在python中访问.设置.删除对象属性的时候,有以下几种方式: 使用内置函数getattr().setattr()和delattr() 自己编写getter().setter() ...
- ARM 处理器寻址方式之间接寻址的几种表达
我们以 LDR 指令为例来分别举例分析. LDR 指令的格式为: LDR{条件} 目的寄存器,<存储器地址> LDR 指令是字加载指令,用于从存储器中将一个 32 位的字数据送到目的寄存器 ...
- 写一个ORM框架的第一步(Apache Commons DbUtils)
新一次的内部提升开始了,如果您想写一个框架从Apache Commons DbUtils开始学习是一种不错的选择,我们先学习应用这个小“框架”再把源代码理解,然后写一个属于自己的ORM框架不是梦. 一 ...
- c# 大批量用户访问数据库报错
报错信息:There is already an open DataReader associated with this Connection which must be closed first ...
- “每日一道面试题”.Net中所有类的基类是以及包含的方法
闲来无事,每日一贴.水平有限,大牛勿喷. .Net中所有内建类型的基类是System.Object毋庸置疑 Puclic Class A{}和 Public Class A:System.Object ...
- Centos 7.6配置nginx反向代理,直接yum安装
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
- [PHP]算法-跳台阶问题的PHP实现
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路: 1.找规律 f(1)=1 f(2)=2 f(3)=3 f(4)=5 f( ...