跳至主要内容

博文

目前显示的是 十一月, 2016的博文

UDP穿越NAT原理

http://blog.csdn.net/ldd909/article/details/5979967 论坛上经常有对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转化为一个全球唯一的IP然后发送出去。(基本的NAT会改变IP包中的原IP地址,但是不会改变IP包中的端口)      关于基本的NAT可以参看RFC 1631      另外一种NAT叫做NAPT,从名称上我们也可以看得出,NAPT不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。基本NAT的设备可能我们见的不多(呵呵,我没有见到过),NAPT才是我们真正讨论的主角。看下图:      有一个私有网络10.*.*.*,Client A是其中的一台计算机,这个网络的网关(一个NAT设备)的外网IP是155.99.25.11(应该还有一个内网的IP地址,比如10.0.0.10)。如果Client A中的某个进程(这个进程创建了一个UDP Socket,这个Socket绑定1234端口)想访问外网主机18.181.0.31的1235端口,那么当数据包通过NAT时会发生什么事情呢?      首先NAT会改变这个数据包的原IP地址,改为155.99.

P2P内网穿透原理_Simple

http://blog.csdn.net/jiabailong/article/details/51482394 大概在一年前我就研究过P2P技术,但始终攻不破NAT内网穿透这个难题(因为本人小菜,对于网上说的一些原理始终没看明白),所以也渐渐开始淡忘这门技术了。(用了P2P技术,就可以实现无需路由的端口映射内网与内网或内网于外网直接的通讯,记得在邪八的一位大牛在谈下一代木马问题的时候就说过:下一代的木马应该用P2P技术在网络组建巨大的P2P网络,而控制端就隐藏在这巨大的P2P网络中,大大提高控制端在网络中的隐身程度)          前几天我突然对P2P技术又产生了浓厚的兴趣(也不记得是出于什么原因了),并且研究了一个下午之后终于弄清楚它的原理并用了半天时间写了一个简易的基于P2P协议的聊天工具,具体源码我会在“编程技术”这个板块发布。           注意,文章比较长,想掌握P2P技术的请认真看完,好好理解,不懂的可以回帖提问,我会尽我能力进行解答!因为本猪能力有限,文章出现的错误还请大牛们不吝改正。          PS: 红色的文字代表重点 ; 蓝色的表示次重点          首先先了解一下P2P技术,下面的文章源于百度(增加了个人的说明)。          点对点技术(peer-to-peer, 简称P2P)又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上( 这种技术可以大大减轻服务器的负担 )。P2P网络通常用于通过Ad Hoc连接来连接节点(从而实现了节点之间的通讯)。这类网络可以用于多种用途,各种档案分享软件已经得到了广泛的使用( QQ聊天、迅雷、大部分网络播放器都使用了该技术 )。     其他介绍请看: http://baike.baidu.com/view/21058.htm      还有关于NAT的介绍的百科: http://baike.baidu.com/view/16102.htm   (有兴趣了解的可以去看看,不看也行,这篇文章里我会进行部分介绍)          其实P2P技术并不难,关键了理解了其中的原理,实现了NAT内网穿透,那么就可以轻松写出一个基于P2P协议的软件。          另外需要说下的就是: P2P技术也有基于UDP协议和TCP

linux system monitor

KDE System Guard: pacman -S ksysguard Top: $top