我记得读过一篇关于提出的方法的文章.如果我没记错的话,研究人员通过向彼此发送HTTP数据包成功地创建了与另一个网络上的客户端的连接而没有端口转发(Alice假装Bob是一个HTTP Web服务器,而Bob假装Alice是一个Web服务器).
我不确定这是否有意义,但有没有人知道我在哪里可以找到这篇文章,或者有没有人有任何其他想法如何在没有中央服务器或端口转发的情况下将两个客户端连接在一起?
它甚至可能吗?
编辑:我会知道程序监听的计算机和端口的IP.
PSS*_*PSS 27
有可能的.我看到你的问题至少有2个部分.(它不会是HTTP数据包.它比那复杂得多.)
首先,我相信你可能在谈论一个称为分散式P2P网络的概念.分散的对等网络背后的主要思想是,在这样的网络中联合的节点不需要中央服务器或服务器组.
您可能已经知道,大多数常见的集中式对等网络都需要这样的集中式系统来交换和维护节点之间的互连.基本概念是这样,新节点将连接到其中一个主服务器,以检索有关网络上其他节点的信息,以维持其连接性和可用性.中央系统通过服务器不断地同步网络状态,相关信息和彼此之间的中央协调来维护.
另一方面,分散式网络没有任何结构或预定的核心.这种对等模型也称为非结构化P2P网络.任何新节点都将从"父"节点复制或继承原始链接,并随着时间的推移形成自己的列表.这种非结构化网络的分散有几类.
有趣的是,缺乏中央命令和控制系统使其成为现代恶意软件僵尸网络的首选解决方案.一个很好的例子可能是Storm僵尸网络,它使用了所谓的被动P2P监视器(PPM).无论受感染的主机是否位于防火墙或NAT后面,PPM都能够找到受感染的主机并构建对等列表.维基百科的文章Storm僵尸网络是一本有趣的读物.在对等僵尸网络中还有一项名为" 完成节点枚举"的大型协作研究,它提供了Storm僵尸网络所采用的出色概念分析和技术.
其次,你可能在谈论UDP打孔.这是一种技术或算法,用于通过第三个集合服务器使用第三个评论主机维护NATed路由器/网关后面的2个主机之间的连接.
Bryan Ford,Pyda Srisuresh和Dan Kegel撰写了一篇很棒的论文,称为跨网络地址转换器的Peer-to-Peer通信.
pmt*_*ara 13
正如所回答的,点对点连接需要在两台(大概)家用计算机之间建立连接,这将需要在它们的两个防火墙上打孔。有关打孔的具体示例,请参阅pwnat:“无需第三方即可在防火墙/NAT 中打孔的唯一工具”。简单来说,这个过程是这样的:
ICMP Echo Request数据包1.2.3.4。NAT 在转换过程中会注意到这个数据包,以防它得到响应。ICMP Time Exceeded服务器发送一个数据包,该数据包通常包含未能传递的数据包。客户端事先知道服务器发送到的确切数据包1.2.3.4,将整个数据包嵌入到数据字段中。而且,通过 6 个简单的步骤,您已经在客户端和服务器之间建立了 UDP 连接,并穿透了两个住宅防火墙。拿那个,ISP!