p2p通信由来已久,p2p即peer-to-peer通信,一种点对点对信技术。目前所使用的主流通信框架大多为C/S结构,即由S(server)服务端建立监听,对外公布一个地址然后,持续等待,再由C(Client)客户端主动通过服务端公布的公知地址进行主动的发请求访问。服务端被动收到请求后处理完成再向客户端返回数据。比如大家都知道的www.baidu.com即为服务端对外公布的公共地址,客户端就是所有访问这个网站的计算机。在这样的C/S的架构中只要知道公共地址,两台计算机设备就能建立连接,进行通信。然而我们知道,因为国内ip地址数的极度稀少,所以国内普通用户一般不拥有固定ip地址。大部分庭宽带使用的ip都是运营商设备实时动态分配的浮动ip。这也满足了C/S这样的服务框架。然而使用浮动ip,局域网内多用户计算机只能共用这一公共的ip。局域网外的计算机是无法主动连接到局域网内部的计算机。
现在问题是,如果就是要把两个局域网内的计算机建立连接要怎么办呢?
业内引入了内网穿透技术。内网的计算机向外网访问时,我们内网与公网(因特网)相连接的路由器将我们的内网主机ip和端口都进行了一次修改。这样一来路由器内部维护了一内外的ip和port的映射关系表。这就是业内为了解决公共ip地址不够用而研发的nat技术。所以广义的来看,我们要连接某局域网内的计算机,只要知道路由器给这个内网计算机修改后的ip和port就可以了。然而由于nat技术并非行业标准,所以各路由器生产厂家对nat的实现多种多样。我们研发了一套这样的基础网络底层中间件软件,此软件可以将路由器转换后的公网ip和port获取出来,并可以让用户上层软件通过此公网ip和port发起对内网计算机的连接。从而使用我们的内网计算机也能像公网主机一样对个提供服务。
下面是我们研发的底层中间件软件的示例功能软件,欢迎大家下载体验。
示例软件运行成功后,会有如下数据打印。以下例数据为例,只要我个人计算机在153.3.211.100:6000建立监听,221.226.77.200内部的这台计算机设备可以通过153.3.211.100:23108与我本人的计算机建立连接,并发起服务讲求。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
对端服务器返回消息:hello world generate this message,auto_index:92
--两端内网穿透信息--
对端服务器ip:153.3.211.100
主机端口:6000
nat转换后公网端口:23108
我的公网ip:221.226.77.200
我的主机端口:40201
nat转换后公网端口:26837
我的路由器nat类型:symmetric
程序运行成功, 即将退出。
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
【Mac版本步骤】
p2pcpp 运行说明:
1.打开系统设置->安全与隐私->防火墙,暂时关闭防火墙
2.复制以下命令行粘贴到终端里自动执行
curl http://40.73.35.128:7656/download/p2pcpp/shell/download_and_run.sh | bash
【Win版本步骤】
p2pcpp 运行说明:
1.下载 windows10 最新版本的二进制包: http://40.73.35.128:7656/download/p2pcpp/binary/p2pcpp_v1.2.6.win10.tar.gz
2.右击 p2pcpp/bin/allow_firewall.bat 脚本,选择“以管理员身份运行”来设置防火墙添加网络访问(每次下载到新目录解压后只需执行一次)
3.双击 p2pcpp/bin/tester_client.bat 脚本来获取公网 nat 信息
技术交流,QQ群:191924487(加群备注:p2pcpp,陌生添加拒绝) 个人QQ:1469916173