Chinaunix首页 | 论坛 | 博客
  • 博客访问: 473238
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-05 14:08
个人简介

c++ programmer

文章分类

全部博文(41)

文章存档

2020年(2)

2018年(3)

2017年(23)

2016年(13)

我的朋友

分类: C/C++

2016-12-24 17:14:48

UDP穿透(非对称NAT)


 1. NAT

      NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。

① 基本的NAT实现的功能很简单,在子网内使用一个保留的IP子网段,这些IP对外是不可见的。子网内只有少数一些IP地址可以对应到真正全球唯一的IP地址。如果这些节点需要访问外部网络,那么基本NAT就负责将这个节点的子网内IP转化为一个全球唯一的IP然后发送出去。(基本的NAT会改变IP包中的原IP地址,但是不会改变IP包中的端口)。基本NAT的设备可能我们见的不多。

② NAPT不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。

③ Cone NAT 对于同一源地址与不同公网IP进行通信,会创建不同的Sessiion但是会分配同一端口,这是穿透能够实现的基础。

 2. 穿透过程

      ClientA→NAT A→Server S←NAT B←ClientB

① ClientA和ClientB都连接到Server S(UDP方式连接),这样服务器S就得到了A和B的公网ip和端口;

② 假如A想向B发送信息,则A通知S说明自己想同B通信;

③ S通知B:A想与你通信。B发送一个“打洞包”到Client A的公网地址(这个打洞包不需要携带任何有效信息)NAT A会丢弃这个包;

④ A向B的公网发送信息,由于③中打了一个B→A的洞,所以NAT B会转发这个消息到B私有地址,A实现向B发送消息。

阅读(2243) | 评论(0) | 转发(0) |
0

上一篇:SCTP 关联建立与断开

下一篇:winsock模型

给主人留下些什么吧!~~