首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >p2p与客户机-服务器节点设计的区别

p2p与客户机-服务器节点设计的区别
EN

Stack Overflow用户
提问于 2015-06-18 05:28:27
回答 1查看 1K关注 0票数 1

我在使用c++本机调用(epoll等)开发服务器-客户端应用程序方面有一些经验,现在我正在尝试使用netty来处理p2p。但我无法明确区分p2p和服务器-客户端设计。IMHO,p2p就像服务器应用程序,但也会像客户端一样连接到其他对等端(服务器),对吗?在p2p设计中,哪个协议更常用?我看到的文件共享p2p应用程序都是tcp基础。来自网络指南的p2p示例正在使用udt,我想这将是点对点游戏的一个很好的用例,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-18 11:22:39

您正确地假设P2P对等点是具有服务器和客户端功能的应用程序。服务器是指它从其他对等点接收到连接的事实,而客户端是它向外连接到其他对等点的事实。

TCP是可能的,但由于大多数家庭/公司/ISP网络使用NAT,节点需要在其路由器上设置端口转发。对于一般的计算机用户来说,这是不实际的/不可能的。使用UDP的一种称为UDP孔打孔的技术解决了这一问题(对于某些NAT来说,这可能仍然不起作用)。

在UDP孔打孔中,节点会联系第三方“跟踪器”/“协调”/“中继”服务器,以建立两个节点之间的连接。假设您有两个对等点,A和B。同侪A会与服务器联系,并通过NAT“穿孔”一个洞。服务器将收到穿孔孔的详细信息(IP地址,UDP端口)。B同伴也会这么做。然后,服务器将向B发送对等点A的IP地址和UDP端口,反之亦然。现在这两个对等点可以直接交流了。

如果实现得当,P2P对于服务器客户机所能做的几乎所有事情都是有用的。P2P感兴趣的领域包括确定对等点之间的信任、防止某人创建许多虚假的对等点来推翻网络、建立身份等。这些问题在客户端-服务器模型中有着众所周知的解决方案。

P2P已用于:

文件共享- Bittorrent,Gnutella

货币交换-比特币

市场- OpenBazaar

消息传递- Bitmessage

参考文献:

http://www.brynosaurus.com/pub/net/p2pnat/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30907129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档