gpt4 book ai didi

php - 我可以在 apache 服务器上使用普通的 PHP 脚本打洞吗?

转载 作者:行者123 更新时间:2023-12-04 20:24:20 27 4
gpt4 key购买 nike

有一个概念,也许是一个 hack,我已经困扰了很长时间。我的想法是,本质上,TCP 连接套接字是一个变量。它包含有关您的目标的一些信息,这些信息由程序内存中的一些特定字节表示。并且字节可以通过互联网发送到其他计算机

该概念应允许公共(public)服务器在两台私有(private)(防火墙或路由器后面)计算机之间建立直接连接。 google了一下,发现这个概念确实存在,叫做Hole punching .

它与代理确实不同。看看 - 这是典型的代理/中继连接:

image description

数据流经公共(public)服务器。绿色圆圈代表设备之间的套接字连接,蓝线是数据流向。

现在服务器将套接字 A 发送到设备 B,反之亦然?

image description

突然之间,两个设备都拥有了彼此的“地址”并且可以向对方发送任何信息:

image description

我的问题是:PHP 脚本是否允许获取共享该套接字信息所需的信息?如何防止套接字在 30 秒 PHP 时间限制后终止?

最佳答案

这个问题让我有点困惑。您忽略了在计划中提及有关客户的任何细节,以及在他们之间建立联系的目的。如果您正在考虑尝试在两个 HTTP 客户端之间建立直接连接,那么您的建议是不可能的,因为必须专门设计客户端软件来促进这一点。此外,HTTP 客户端不能充当服务器。

我不同意将网络连接视为变量甚至状态结构是有用的。虽然在某种程度上确实如此,但网络连接的完整状态通常保存在许多不同的地方:

  • 应用程序状态 - 这两个端点通常包含有关网络连接的高级状态,例如正在使用的第 7 层协议(protocol)以及该协议(protocol)的更多详细信息。
  • 内核状态 - 操作系统的网络状态将包含保存连接的某些低级详细信息的结构,例如 TCP 状态、MTU 和许多其他内容。同样,这对两个主机都是如此。
  • NAT 状态表 - 当涉及到打洞时,这是一个棘手的表。除了两个通信主机的状态之外,两端的 NAT 路由器还包含状态表,其中列出了每个 NAT 路由器所服务的主机的已建立连接。当数据包到达互联网时,该表用于确定将数据包发送到内部网络的何处。

打洞主要是欺骗 NAT 路由器在它们的状态表中设置正确的条目。执行此操作的确切方法取决于所使用的第 4 层协议(protocol)。您问题中的示意图显示了 UDP 打洞的典型流程,这需要一个可公开访问的服务器。在 TCP 的情况下,这可能是您真正感兴趣的,服务器不一定需要开始。

关于php - 我可以在 apache 服务器上使用普通的 PHP 脚本打洞吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35175827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com