P2P 编程
1,P2P 概念P2P(Peer-to-Peer),对等互联或点对点技术。
P2P 不是一种新的协议,而是利用现有的网络协议实现网络数据或资源信息
共享的技术,它使用的可能是 TCP、UDP 或其他协议。
使用 P2P 技术,可以让一台计算机与另一台计算机直接交换数据,通过
internet直接使用对方的文件。
2,P2P 的设计架构
(1)集中式架构:有专用服务器,类似于 C/S 结构;
(2)完全分布式架构 (单纯架构):无专用服务器,节点既是客户端,也是服务
器。
(3)混合型架构 :有的节点承担服务器的角色。
3,P2P 相关问题
P2P 通信需要解决两个私网计算机的通信 (建立连接)问题:
1,内网地址到外网地址的转换的实现(NAT);
2, NAT 不允许外部主机主动访问内部主机;
4,什么是 NAT?
NAT(Network Address Translators),网络地址转换.
NAT 功能通常被集成到路由器、防火墙、单独的 NAT 设备中,也可以是操作
系统或其他软件(主要是代理软件,如 WINROUTE)。
5,什么是网络穿越,如何实现 UDP 网络穿越?
网络穿越是指在网络通信过程中,通信的一端如果是内网地址时,需要利用
NAT 进行地址转换.由于NAT 不允许外部主机主动访问内部主机,因此通信的一端
发送信息前,必须解决如何不被另一端NAT 设备拦截的问题,即如何穿越对方 NAT
的阻止。
基于 Server 的 UDP 网络穿越:
如果客户端 A 想向 B 发送信息,则其网络穿越过程为:
(1)A和 B 分别登录服务器 S;
(2) A 发送命令给 S,请求 S 命令 B 向A 方向打洞。
(3) 服务端 S 命令 B 向A 打洞;
(4) B收到消息后向 A 发送消息;
(5) A向 B 发送消息,实现网络穿越;