我记得曾经读到一篇关于实现该目的的文章。如果我没记错的话,研究人员通过相互发送HTTP数据包成功地在另一个网络上的客户端之间创建了连接(Alice假装Bob是HTTP Web服务器,而Bob假装Alice是Web服务器)。
我不确定这是否有意义,但是有人知道我在哪里可以找到这篇文章吗?或者有其他想法如何在没有中央服务器或端口转发的情况下将两个客户端连接起来吗?
这可能可行吗?
编辑:我会知道两台计算机的IP地址和程序监听的端口。
我记得曾经读到一篇关于实现该目的的文章。如果我没记错的话,研究人员通过相互发送HTTP数据包成功地在另一个网络上的客户端之间创建了连接(Alice假装Bob是HTTP Web服务器,而Bob假装Alice是Web服务器)。
我不确定这是否有意义,但是有人知道我在哪里可以找到这篇文章吗?或者有其他想法如何在没有中央服务器或端口转发的情况下将两个客户端连接起来吗?
这可能可行吗?
编辑:我会知道两台计算机的IP地址和程序监听的端口。
这是可能的。我认为你的问题至少有2个方面。(它不会是HTTP数据包,比那更复杂。)
首先,我认为你可能在谈论去中心化的P2P网络概念。去中心化对等网络的主要思想是,在这样的网络中共同的节点不需要中央服务器或一组服务器。
你可能已经知道,大多数常见的中心化对等网络需要这样的集中式系统来交换和维护节点之间的互连性。其基本概念是这样的:新节点将连接到其中一个主服务器,以检索有关网络上其他节点的信息,以维护其连接性和可用性。中央系统通过服务器不断同步网络状态、相关信息和彼此的中央协调来进行维护。
另一方面,去中心化网络没有任何结构或预定的核心。这种点对点模型也被称为非结构化P2P网络。任何新节点都将从“父”节点复制或继承原始链接,并随时间形成自己的列表。这些非结构化网络有几种去中心化类别。
有趣的是,缺乏中央指令和控制系统使其成为现代恶意软件僵尸网络的首选解决方案。一个很好的例子是Storm僵尸网络,它利用所谓的被动P2P监视器(PPM)。PPM能够定位受感染的主机并建立对等列表,无论受感染的主机是否在防火墙或NAT后面。维基百科的文章Storm botnet是一篇有趣的阅读。还有一篇名为《在点对点僵尸网络中实现完整节点枚举》的优秀合作研究,介绍了Storm僵尸网络所采用的出色概念分析和技术。
其次,你可能在谈论UDP洞穴穿透。这是一种技术或算法,用于通过第三方约会服务器,利用第三方公共主机来维护两个NAT路由器/网关后面的主机之间的连接。
有一篇很好的论文,作者是Bryan Ford、Pyda Srisuresh和Dan Kegel,名为Peer-to-Peer Communication Across Network Address Translators。
1.2.3.4
发送一个非常特定的ICMP Echo Request
数据包进行ping操作。网络地址转换(NAT)在转换期间记下此数据包以防止得到响应。ICMP Time Exceeded
数据包,这是一种通常包含未能传递的数据包的数据包类型。客户端事先知道服务器一直向1.2.3.4
发送的确切数据包,因此将整个数据包嵌入Data字段中。通过6个简单的步骤,您已经在突破两个住宅防火墙之间建立了客户端和服务器之间的UDP连接。告诉你一个秘密:不用担心ISP!