我尝试在谷歌和这里搜索,但我仍然无法找到简单的C\C++示例udp打孔算法.如果你知道我在哪里找到它,请帮忙.谢谢!
我想了解当端口限制锥NAT后面的两台主机分别建立连接时,udp打孔的工作原理。
据我了解,它分为几个阶段,涉及三个主机。
主机A和主机B在端口受限锥形NAT的后面。
主机C是可以从主机A和B接收数据包的服务器。
问题是:
受限锥NAT后面的A如何从也位于受限锥NAT后面的B接收数据包?
端口受限锥形NAT不允许接收源地址:端口对与它发送的目标地址:端口对不匹配的数据包。为什么在A和B之间发送的其他数据包到达A和B?
是否因为端口受限锥NAT将packet_2视为来自B的响应?
因此,数据包_1将丢失,但数据包_2到达B。我是对的吗?
先感谢您。
我正在尝试用打孔来实现P2P。这是流程:
我在不同的路由器上进行了测试,结果如下:
直到第四步就可以了。但在第五步中,没有对等点收到其他对等点的数据包。我预计至少* “非对称 NAT 后面的对等点”会收到其他的数据包。*
有人知道发生了什么事吗?
我尝试制作P2P程序,并需要帮助来完成客户端的NAT.我在stackoverflow上已经阅读了很多问题,但我从来没有得到通过NAT的所有方法的缺点和好处.有多少路由器支持哪些方法?大公司常用哪种方法?(BitTorrent,TeamViewer,......)我列出的三种方法有哪些缺点/好处,哪些还存在?
我正在尝试通过node.js中的两个NAT打通TCP漏洞。问题是我不知道如何选择连接应使用的本地端口?
我一直在尝试创建套接字聊天/文件传输应用程序几周.我花了几个小时在互联网上搜索关于UDP打孔的代码片段,但是我没有发现任何有效或足够简单的东西供我使用.
我正试图让两个客户端在路由器(NAT)之后相互连接.我已经设法建立一个共享两个客户端IP和端口的服务器,但我还没有设法实际启动连接.我可以在任何地方使用任何源代码吗?
我找到了几个像JStun一样的STUN/ICE/TURN库,但没有关于如何使用它们的文档.我是否需要STUN服务器才能启动连接?我可以使用像numb.viagenie.ca或http://www.stunserver.org/这样的公共网站吗?
任何答案将不胜感激.谢谢!
编辑:我有更多的讨论,我发现即使通过PHP,STUN也很容易.我已经设置了自己的PHP stun,只是共享两个客户端数据.困难的部分是连接两个客户端,但这使用了一个名为ICE的东西.感谢selbie 在评论中发布此内容.这使我与ICE走在正确的轨道上.如果有人想出其他的话,我会把这个问题保持开放一段时间.我将开始编写自己的ICE代码,或尝试在线查找内容.谢谢!
我正在尝试在Android上为我的udp服务器实现udp打孔.事情应该像这样:
这是我当前的客户端实现(Android):
//in onCreate()
DatagramSocket socket = new DatagramSocket(46222);
socket.setSoTimeout(2000);
final Thread t = new Thread(new Runnable(){
@Override
public void run() {
int delay = Integer.parseInt(e2.getText().toString());//e1 and e2 are EditTexts
String ip = e1.getText().toString();
try {
DatagramPacket packet = new DatagramPacket(new byte[1],1, InetAddress.getByName(ip), 45555);
while(!cleanUp){//cleanUp is set to true in onPause()
lock.lock(); //Lock lock = new ReentrantLock();
socket.send(packet);
lock.unlock();
Thread.sleep(delay);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(socket!=null)
socket.close();
}
}
});
final Thread t2 = …
Run Code Online (Sandbox Code Playgroud) 如果相关 NAT 设备重写出站 ICMP 数据包,ICMP NAT 穿越应该如何工作?
=========================================================================================
| CLIENT | <---> | NAT-C | <---> { internet } <---> | NAT-S | <---> | SERVER |
=========================================================================================
19.19.19.19 (external addresses) 72.72.72.72
192.168.0.2 192.168.0.1 (internal addresses) 172.16.0.1 172.16.0.2
Run Code Online (Sandbox Code Playgroud)
ICMP 打洞的快速概述,如下所述pwnat
:
SERVER
向其他主机(例如3.3.3.3
)发送 ICMP 回显请求数据包 (ping) 以打开 中的漏洞NAT-S
。当CLIENT
想要连接时,它会向 发送一个 ICMP 超时数据包NAT-S
,该数据包应该路由到SERVER
。为了使所述路由正常工作,CLIENT
通过在 ICMP 超时数据包中嵌入3.3.3.3
它期望SERVER
首先发送的相同数据包 (ICMP Echo to ) 来构造 ICMP 超时数据包。
我最近在系统(ubuntu)中安装了清漆3.x并将其配置为8080.
现在启用了整页缓存,其工作正常.我只是想忽略页面的一些特定动态块.我怎么能用magento做.此外,我没有使用Magentos默认缓存技术,所以我禁用它.还试过模块Terpentine
谢谢和注意
Rajesh Ganjeer
我在这里阅读了有关TCP打孔的文章.
为此,必须绑定用于与远程主机建立TCP连接的套接字,以及本地主机用于侦听到同一端口的连接的套接字.我已经能够在Java中执行此操作,但即使为给定套接字设置了SO_REUSEADDR标志,也无法在Python中执行此操作.有人能解释一下为什么吗?是因为Python本身就是单线程的吗?