文件名称:p2p
- 所属分类:
- Internet/网络编程
- 资源属性:
- [Windows] [Visual.Net] [源码]
- 上传时间:
- 2012-11-26
- 文件大小:
- 54kb
- 下载次数:
- 1次
- 提 供 者:
- littl*****
- 相关连接:
- 无
- 下载说明:
- 别用迅雷下载,失败请重下,重下不扣分!
介绍说明--下载内容均来自于网络,请自行研究使用
P2P 之 UDP穿透NAT的原理与实现(附源代码)
原创:shootingstars
参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt
baidu
论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。
首先先介绍一些基本概念:
NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。
最开始NAT是运行在路由器上的一个功能模块。
最先提出的是基本的NAT,它的产生基于如下事实:一个私有网络(域)中的节点中只有很少的节点需要与外网连接(呵呵,这是在上世纪90年代中期提出的)。那么这个子网中其实只有少数的节点需要全球唯一的IP地址,其他的节点的IP地址应该是可以重用的。
因此,基本的NAT实现的功能很简单,在子网内使用一个保留的IP子网段,这些IP对外是不可见的。子网内只有少数一些IP地址可以对应到真正全球唯一的IP地址。如果这些节点需要访问外部网络,那么基本NAT就负责将这个节点的子网内IP转化为
原创:shootingstars
参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt
baidu
论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。
首先先介绍一些基本概念:
NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。
最开始NAT是运行在路由器上的一个功能模块。
最先提出的是基本的NAT,它的产生基于如下事实:一个私有网络(域)中的节点中只有很少的节点需要与外网连接(呵呵,这是在上世纪90年代中期提出的)。那么这个子网中其实只有少数的节点需要全球唯一的IP地址,其他的节点的IP地址应该是可以重用的。
因此,基本的NAT实现的功能很简单,在子网内使用一个保留的IP子网段,这些IP对外是不可见的。子网内只有少数一些IP地址可以对应到真正全球唯一的IP地址。如果这些节点需要访问外部网络,那么基本NAT就负责将这个节点的子网内IP转化为
(系统自动生成,下载前可以参看下载内容)
下载文件列表
p2p
...\client
...\......\AssemblyInfo.vb
...\......\bin
...\......\...\client.exe
...\......\...\client.pdb
...\......\client.sln
...\......\client.vbproj
...\......\client.vbproj.user
...\......\Module1.vb
...\......\obj
...\......\...\Debug
...\server
...\......\AssemblyInfo.vb
...\......\bin
...\......\...\server.exe
...\......\...\server.pdb
...\......\Module1.vb
...\......\obj
...\......\...\Debug
...\......\server.sln
...\......\server.vbproj
...\......\server.vbproj.user
...\client
...\......\AssemblyInfo.vb
...\......\bin
...\......\...\client.exe
...\......\...\client.pdb
...\......\client.sln
...\......\client.vbproj
...\......\client.vbproj.user
...\......\Module1.vb
...\......\obj
...\......\...\Debug
...\server
...\......\AssemblyInfo.vb
...\......\bin
...\......\...\server.exe
...\......\...\server.pdb
...\......\Module1.vb
...\......\obj
...\......\...\Debug
...\......\server.sln
...\......\server.vbproj
...\......\server.vbproj.user