http://www.2ccc.com/article.asp?articleid=2048P2P 之 UDP穿透NAT的原理与实现原创:shootingstars参考:http://midcom-p2p.sourceforge.ne..."> 摘自DELPHI盒子 asp?articleid=2048">http://www.2ccc.com/article.asp?articleid=2048P2P 之 UDP穿透NAT的原理与实现原创:shootingstars参考:http://midcom-p2p.sourceforge.ne..._程序员之家(P2P 之 UDP穿透NAT的原理与实现 )
    当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 摘自DELPHI盒子 asp?articleid=2048">http://www.2ccc.com/article.asp?articleid=2048P2P 之 UDP穿透NAT的原理与实现原创:shootingstars参考:http://midcom-p2p.sourceforge.ne...
 

 

 ·关于delphi的socket的问题?     »显示摘要«
    摘要:我用delphi5 的socket做了一个简单的 服务/客户 方式的聊天软件,在局域网里测试都可以通过,但是在internet里很难连接成功(有一次在对方是win98的情况下ok {我把服务器端发送到对方并运行}),我们都是公网ip,这是为什么呢?是服务器端操作系统设置的问题吗?是服务器端防火墙的问题吗?(已经关闭了的),是我的服务器端控件设置的问题吗?还是该控件本来就是为局域网设计的,还是该控件......
 ·delphi中资源文件使用详解     »显示摘要«
    摘要:1.编写 rc 脚本文本用记事本或其它文本编辑器编写一个扩展名为“.rc”的文件。格式如下:资源标识符 资源类型关键字 资源文件名其中“资源类型关键字”用于标识资源文件的类型:avi 无声动画bitmap 位图文件cursor 光标文件icon 图标文件wave 声音文件以上所列均为标准资源类型,也可以给资源自定义一个类型,如:“myty......


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

摘自delphi盒子 asp?articleid=2048">http://www.2ccc.com/article.asp?articleid=2048

原创:shootingstars 【程序编程相关:Delphi连接关系数据库,不支持自动获

p2p 之 udp穿透nat的原理与实现 【推荐阅读:[技术贴]关于动态代理

参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt 【扩展信息:Delphi中使用ADO组件,利用UDL

论坛上经常有对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才是我们真正讨论的主角.看下图:

          server s1         

          18.181.0.31:1235         

          |


...   下一页
 ·ojbect pascal动态数组浅说     »显示摘要«
    摘要:初用delphi中的动态数组时,有些迷惑.1、动态数组是指针吗?动态数组通常会表现出指针功能,先看下面的例子:procedure dymarrtest();var a, b: array of integer;begin setlength(a, 3); a[0] := 0; b := a; b[0] := 1; showmessage(inttostr(a[0]));end;在以上程序中,a、b......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE