设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 网络编程 >> .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#实现(2)

    有一个私有网络10.*.*.*Client A是其中的一台计算机,这个网络的网关(一个NAT设备)的外网IP155.99.25.11(应该还有一个内网的IP地址,比如10.0.0.10)。如果Client A中的某个进程(这个进程创建了一个UDP Socket,这个Socket绑定1234端口)想访问外网主机18.181.0.311235端口,那么当数据包通过NAT时会发生什么事情呢?

    首先NAT会改变这个数据包的原IP地址,改为155.99.25.11。接着NAT会为这个传输创建一个SessionSession是一个抽象的概念,如果是TCP,也许Session是由一个SYN包开始,以一个FIN包结束。而UDP呢,以这个IP的这个端口的第一个UDP开始,结束呢,呵呵,也许是几分钟,也许是几小时,这要看具体的实现了)并且给这个Session分配一个端口,比如62000,然后改变这个数据包的源端口为62000。所以本来是(10.0.0.1:1234->18.181.0.31:1235)的数据包到了互联网上变为了(155.99.25.11:62000->18.181.0.31:1235)。

一旦NAT创建了一个Session后,NAT会记住62000端口对应的是10.0.0.11234端口,以后从18.181.0.31发送到62000端口的数据会被NAT自动的转发到10.0.0.1上。(注意:这里是说18.181.0.31发送到62000端口的数据会被转发,其他的IP发送到这个端口的数据将被NAT抛弃)这样Client A就与Server S1建立以了一个连接。

呵呵,上面的基础知识可能很多人都知道了,那么下面是关键的部分了。

看看下面的情况:


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

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