问题标签 [hole-punching]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6043 浏览

nat - UDP/TCP hole punching vs UPnP vs STUN vs?

I try to make a P2P Program and need help with getting through the NAT of the clients. I have read many questions here on stackoverflow, but i never got what the drawbacks and benefits of all the Methods to get through a NAT are. How many routers support which methods? Which methods are commonly used by the big companies? (BitTorrent, TeamViewer,...) What are the drawbacks/benefits of the three methods i listed and which else exists?

0 投票
2 回答
3625 浏览

node.js - Node.js 中的 TCP 打孔

我试图通过 node.js 中的两个 NAT 打一个 TCP 洞。问题是我不知道如何选择连接应该使用的本地端口?

0 投票
4 回答
9506 浏览

networking - p2p打孔有什么难的?

我正在尝试一些 p2p 网络。在做了一些研究后,我了解到的最大障碍之一是“如果客户端位于 NAT/防火墙后面怎么办”,后来我发现了打孔,但它并不总是能保证工作。

据我了解,我不明白为什么它可能会失败,这是我迄今为止所知道的:


在此处输入图像描述
根据上图,这就是我理解如何建立成功连接的方式。

  1. Alice通过创建与目录服务器的连接来加入网络(1) 。发生这种情况时,Alice 的NAT 会创建一个从她的公共 ip 到她的本地 ip 的映射。
  2. 目录服务器接收连接并将Alice 的公开信息存储ip:port在目录中
  3. Bob也这样做(2),加入网络并ip:port在目录中发布他的
  4. Alice想与bob交流。所以她从目录中 查找Bob 的。 (3)ip:port
  5. 爱丽丝发送她从服务器获得的关于鲍勃的数据。 (5)ip:port
  6. 由于Bob也有一个从 isip:port到他的 local的映射ip:port,所以 NAT 只是将Bob 的public接收到的任何数据转发ip:port到他的计算机。
  7. 同样适用于爱丽丝
    我希望我在解释我的理解时很清楚。我的问题是,这有什么难的或不可靠的?我一定显然错过了一些东西。你能解释一下它是什么吗?
0 投票
1 回答
3142 浏览

python - TCP打孔的问题

我尝试使用本文中概述的原则在 Python 3 中为防火墙编写一个基本的 TCP 打孔器。不过,我无法连接任何东西。这是代码:

我决定在本地机器上尝试打孔器,这样我就可以捕获两个实例发送的所有流量。我首先设置了一个环回防火墙:

然后我启动了两个脚本副本:

根据 Wireshark,我可以看到 SYN 数据包是双向传输的:

Wireshark 捕获

但从来没有打印过“已连接!” 我究竟做错了什么?

0 投票
4 回答
6839 浏览

magento - Magento Hole puch With Varnish

I recently installed the varnish 3.x in system (ubuntu) and configured it to 8080.

Now full page caching is enabled and its working fine. I just want to ignore some specific dynamic blocks of the page. How can i do with magento. Also i am not using Magentos default caching techniques so i disabled it. also tried module Terpentine

Thanks & Regard

Rajesh Ganjeer

0 投票
1 回答
588 浏览

php - Magento EE 1.9 的缓存:我们应该使用整页缓存(带有打孔)和/或“经典”块缓存吗?

我们正在使用 Magento EE 1.9。

为了加快客户端网站的速度,我们正在尝试微调缓存。

如您所知,Magento 带有不同的缓存技术。

在 Magento EE 中,我们可以使用全页缓存以及名为“打孔”的技术。据我了解,这个缓存使用了一些容器来确定是否应该从缓存中检索动态块 => applyWithoutApp($content) 或者是否应该使用 $this->_renderBlock() => applyWithApp 实例化和呈现动态块($内容)

为此,您必须在 cache.xml 中声明要“打孔”的块,其中包括扩展 Enterprise_PageCache_Model_Container_Abstract 的适当容器类在此容器类中,您必须实现不同的功能,如 _getIdentifier()、_getCacheId()、 _renderBlock 如您所见,Contanier 拥有自己的缓存 ID。

正如这里所解释的

http://www.magentocommerce.com/wiki/5__-_modules_and_development/block_cache_and_html_ouput 要缓存一个块,您只需通过定义 cache_lifetime、cache_tags、cache_key 直接在 bloc 的构造函数中添加数据

使用以下帖子进行编辑 http://magebase.com/magento-tutorials/adding-cache-support-to-magento-blocks/

我知道静态的“​​cache_key”是不够的。对于这些 cas,我​​们应该使用 getCacheKeyInfo 方法:

所有这一切我回到我的问题:据我所知,FPC + 打孔似乎是“缓存”的更完整解决方案。但是全页缓存(带有打孔)和“经典”块缓存有什么区别?

-> 由于我们使用的是 Magento EE 1.9,我们应该只使用 FPC + 打孔吗?
(因为在某种程度上 FPC + 打孔已经是缓存块的一种方式?)

  • 这是否意味着“经典”块缓存已经过时或仅适用于 magento 社区版的用户?

-> 还是我们应该同时使用(FPC + 打孔和经典块缓存)?

  • 在这种情况下,当一个块有自己的缓存键(或 getCacheKeyInfo())时,为容器设置缓存 id 有什么意义?
  • 在这种情况下,这些缓存方法中的哪一种是主要的?

提前感谢您的所有回答!

0 投票
1 回答
774 浏览

c# - UDP打孔只能部分工作c#

我正在尝试将 UDP 打孔用于 voip 应用程序。我目前有这部分工作:

  • 打开端口未被服务器上的防火墙阻止(端口转发)
  • 在 client1 上创建 UDP 套接字
  • 在 client2 上创建 UDP 套接字
  • 将数据包发送到服务器应用程序
  • 服务器发送client1,client2的IP地址和端口,反之亦然
  • 客户端成功接收到其他客户端的 IP 地址和端口

现在我在最后阶段遇到了麻烦,这是我目前拥有的代码。我遇到的问题是,虽然我们拥有彼此的 IP 地址和端口,但我们无法相互连接 p2p。有没有人有什么建议?

  • ContactIP = 服务器返回的联系人 IP 地址
  • ContactPort = 从服务器返回的contactsPort

    • localPort 是客户端认为它发送的端口(机器的私有端口)

编辑:我一直在修补并到了这个阶段。它确实有效......但我显然正在通过所有端口,这有效,但这显然是一种糟糕的方法,特别是因为它断开了我用来在计算机上测试 VOIP 应用程序的远程桌面应用程序不同的网络。

0 投票
1 回答
602 浏览

magento - Magento中的打孔不起作用

我为 catalog/product_price 块尝试了这个,但我得到:

致命错误:在第 176 行的 /var/www/html/app/code/core/Mage/Catalog/Block/Product/Price.php 中的非对象上调用成员函数 getCacheIdTags()

有任何想法吗?

还有我的容器

我启用了 FPC 来检查这一点,但是当我刷新块所在的页面时,我收到了后面提到的错误。

谢谢

0 投票
1 回答
1301 浏览

php - 在多种货币之间切换时 Magento Enterprise 整页缓存 (FPC) 购物车侧边栏问题

问题:

如果您的 magento 企业商店启用了多种货币,并且您正在使用购物车侧边栏快速浏览购物车中的商品:当客户尝试在货币之间切换时,整页缓存将成为恶棍。购物车侧边栏不会根据切换的货币进行更新。

0 投票
3 回答
1154 浏览

java - Java(Android):在用于另一个 Socket 的 LocalPort 上创建 ServerSocket

我有点难过,可能是因为我不知道如何正确搜索(我尝试了许多不同的关键字)。无论如何,我正在尝试 TCP 打孔的变体(使用集合服务器)。我已经创建了一个到服务器的 TCP 套接字并关闭它而不抛出任何异常。但是当我尝试在原始套接字的本地端口上创建一个 ServerSocket 时,它会因 IOException 而失败。

我只是无法理解为什么我不能关闭套接字并在同一端口上打开服务器套接字。

更新:来自 logcat