设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 网络编程 >> .net >> P2P之UDP穿透NAT的原理与C#实现
精品推荐
.net点击TOP10
·CHK文件恢复工具
·.NET 初 级 读 本
·『原创』C#中TreeView类操作全攻略:建立树,新增节点,删除节点,修改节点,拖动节点,与Oracle数据库交互操作(一)
·我的.NET书架 (入门篇)
·从零开始学ASP.NET(基础篇)
·官方水晶报表 .NET 应用程序实例下载 (C#、Visual C++.NET)
·给 OpenPOP.Net 加一个小功能,可用于收取邮件时监测数据流量!
·P2P之UDP穿透NAT的原理与C#实现
·.NET:是什么?将走向哪里?
·动网论坛灌水机
网络编程点击TOP10
·ASP.NET 程序中常用的三十三种代码
·CHK文件恢复工具
·.NET 初 级 读 本
·c#操作word表格
·『原创』C#中TreeView类操作全攻略:建立树,新增节点,删除节点,修改节点,拖动节点,与Oracle数据库交互操作(一)
·我的.NET书架 (入门篇)
·十天学会ASP.net之第一天
·用C#实现木马程序
·从零开始学ASP.NET(基础篇)
·官方水晶报表 .NET 应用程序实例下载 (C#、Visual C++.NET)
精选专题

P2P之UDP穿透NAT的原理与C#实现

作者: 来源:网络文章 时间:2005-12-13 19:12:52

P2P之UDP穿透NAT的原理与C#实现(1)

P2PUDP穿透NAT的原理与实现

声明:原文来自P2P中国网,C#实现是本人做的,供参考XML:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

关键字:P2P, UDP, NAT, .NET

 

论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。

首先先介绍一些基本概念:

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

    最开始NAT是运行在路由器上的一个功能模块。

    最先提出的是基本的NAT,它的产生基于如下事实:一个私有网络(域)中的节点中只有很少的节点需要与外网连接(呵呵,这是在上世纪90年代中期提出的)。那么这个子网中其实只有少数的节点需要全球唯一的IP地址,其他的节点的IP地址应该是可以重用的。

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

    关于基本的NAT可以参看RFC 1631

另外一种NAT叫做NAPT,从名称上我们也可以看得出,NAPT不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。基本NAT的设备可能我们见的不多(呵呵,我没有见到过),NAPT才是我们真正讨论的主角。看下图:

共5页 9 7 [1] [2] [3] [4] [58 :>

P2P之UDP穿透NAT的原理与C#实现 相关文章:
P2P之UDP穿透NAT的原理与C#实现 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com