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类型的更多相关文章

  1. NAT原理与NAT穿越

    最近在看东西的时候发现很多网络程序中都需要NAT穿越,特意在此总结一下. 先做一个约定: 内网A中有:A1(192.168.0.8).A2(192.168.0.9)两用户 网关X1(一个NAT设备)有 ...

  2. IPFS: NAT traversal(NAT穿越)

    IPFS是一个p2p网络,那么一定绕不开的一个问题就是NAT穿越.之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架,本文简单介绍一下什么是NAT.   为什么有NAT技术? NAT ...

  3. VOIP NAT穿越之SIP信令穿越

    本文原创自 http://blog.csdn.net/voipmaker  转载注明出处. 本文是VOIP通信NAT系列专题的第三篇, 本文论述NAT对SIP协议穿越的影响.SIP协议是基于文本的,而 ...

  4. P2P网络穿越 NAT穿越

    http://blog.csdn.net/mazidao2008/article/details/4933730 ——————————————————————————————————————————— ...

  5. 转:WebRTC技术及应用2 – NAT穿越技术的使用

    评:webrtc自带的打洞,穿透协议. 转: http://www.unclekevin.org/?p=924 959 views WebRTC技术及应用2 – NAT穿越技术的使用 发表回复 (题图 ...

  6. ICE协议下NAT穿越的实现(STUN&TURN)

    正文: 一. 首先来简单讲讲什么是NAT? 原来这是因为IPV4引起的,我们上网很可能会处在一个NAT设备(无线路由器之类)之后.NAT设备会在IP封包通过设备时修改源/目的IP地址. 对于家用路由器 ...

  7. [ipsec] 特别硬核的ike/ipsec NAT穿越机制分析

    〇 前言 这怕是最后一篇关于IKE,IPSEC的文字了,因为不能没完没了. 所以,我一直在想这个标题该叫什么.总的来说可以将其概括为:IKE NAT穿越机制的分析. 但是,同时它也回答了以下问题: ( ...

  8. (转)NAT与NAT穿越学习总结--ICE过程讲的不错

    转:http://cgs1999.iteye.com/blog/1994072 1.引言网络地址转换(Network Address Translation,简称NAT)是一种在IP分组通过路由器或防 ...

  9. SOCKET 实现NAT 穿越

    在当前IPv4NAT盛行的网络环境下,两个用户要直接进行P2P连接是非常困难的.较好的解决办法是借助含公网的用户或是服务器中介实现P2P连接. NAT:Network Address Translat ...

随机推荐

  1. sql server 索引阐述系列六 碎片查看与解决方案

    一 . dm_db_index_physical_stats 重要字段说明 1.1 内部碎片:是avg_page_space_used_in_percent字段.是指页的填充度,为了使磁盘使用状况达到 ...

  2. Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题

    版权声明:本文为博主原创文章,未经博主允许不得转载. 正常情况下调用系统相机拍照: 如果拍照后点击的是“确定”图标,返回的resultCode = -1(Activity.RESULT_OK): 如果 ...

  3. 开始翻译Disruptor

    刚开始接触Disruptor,看了作者的博客,发现这个大牛很与众不同,他不仅讲解自己的框架的设计思想,还深度介绍了这样设计的原因,其知识范围涵盖了操作系统.数据结构.计算机组成,很有学习的价值.网上有 ...

  4. 基于线程开发一个FTP服务器

    一,项目题目:基于线程开发一个FTP服务器 二,项目要求: 基本要求: 1.用户加密认证   2.允许同时多用户登录   3.每个用户有自己的家目录 ,且只能访问自己的家目录   4.对用户进行磁盘配 ...

  5. 02_python是一种什么语言?

    python是一种什么语言? 1.低级语言与高级语言 最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果.后来为了方便记忆,就将用0.1序列 ...

  6. 从a文件判断是否删除b文件中的行(sed示例)

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html test.xml文件很大,内容结构如下: <?xml v ...

  7. Docker网络的基本功能操作示例

    一.Docker常用的四种网络模型 1.第一种:使用网络名称空间,但不设置任何网络设备 这种模型中只有lo接口,是一个封闭式的容器,不能与外界进行通信.设置网络模型需要使用 --network 选项来 ...

  8. JQuery官方学习资料(译):选择器的运作

    Getters 和 Setters     JQuery的方法重载,方法设置和获取值一般使用相同名称的方法,当一个方法用来设置一个值的时候称之为Setter,当一个方法用来获取一个值的时候称之为Get ...

  9. Jquery操作ul的一些操作笔记

    1.html标记 <ul id="attachText"> <li data-text="111"><a href="# ...

  10. 【WebSocket No.3】使用WebSocket协议来做服务器

    写在开始 上面一篇写了一篇使用WebSocket做客户端,然后服务端是socke代码实现的.传送门:webSocket和Socket实现聊天群发 本来我是打算写到一章上的,毕竟实现的都是一样的功能,后 ...