Java RTP、防火墙后面的媒体包和Nat后面的媒体包让生活很难修复它,现在我正在尝试使用UDP打孔,以获得它

Java RTP、防火墙后面的媒体包和Nat后面的媒体包让生活很难修复它,现在我正在尝试使用UDP打孔,以获得它,java,security,networking,centos,fedora,Java,Security,Networking,Centos,Fedora,我正在尝试制作一个对等2对等音频/视频应用程序,但在NAT和防火墙后面导致我的应用程序失败,我发现Skype做到了,其他应用程序也做了其他方法,然后我决定使用这种方法,这将允许我的应用程序在NAT office/home后面工作 UDP打孔: 到目前为止,我们尝试了hping2和netcat。服务器,nat/防火墙后的pc1和nat/防火墙后的pc2 local/1$ nc -u 14141 -l # ME, step 1 remoteServer$ echo "hello" | nc -p

我正在尝试制作一个对等2对等音频/视频应用程序,但在NAT和防火墙后面导致我的应用程序失败,我发现Skype做到了,其他应用程序也做了其他方法,然后我决定使用这种方法,这将允许我的应用程序在NAT office/home后面工作

UDP打孔:

到目前为止,我们尝试了hping2和netcat。服务器,nat/防火墙后的pc1和nat/防火墙后的pc2

local/1$ nc -u 14141 -l  # ME, step 1
remoteServer$ echo "hello" | nc -p 53 -u xx.23.xx.xx 14141  # My server, to say hello 
nc: Write error: No route to host    
local/2$ hping2 -c 1 -2 -s 14141 -p 53 xx.21.xx.xx # Me from second terminal making a hole
remoteServer$ echo "hello" | nc -p 53 -u xx.23.xx.xx 14141 # My server again say hell
local/1 $ nc -u 14141 -l # ME, step 1 was running and it received "hello" now
 hello
但是本地/1如何在没有hping2的情况下获得hello,或者hping2到底是什么? 有人能建议吗?或者,我如何使用这种方法进行本地观察者Cmy朋友与对等2的通信

有用链接:

后续行动: UPnP是最好的解决方案?但它寻找的是下一步,因此如果我没有错的话,那么在这种情况下,这条路线图将失败:


NAT背后的我->带路由器的我办公室,50台笔记本电脑->ISP1->ISP2->FriendOffice路由器,90台笔记本电脑->NAT背后的朋友许多p2p应用程序所做的就是连接到最近的路由器,并要求它们为自己打开一个端口。阅读UPnP和NAT-PMP协议。

@road to yamburg:对于java,这更好,但我需要4个公共端口音频输入/输出视频输入/输出聊天全双工和文件传输另一个端口。几乎是公共端口6个端口。另外,在某些情况下,它看起来像是ISP NAT问题,UPnP或NAT-PMP是否与ISP级别或其仅在办公室中的主路由器级别访问一起工作?@road to yamburg:UPnP只会到达我的办公室点,如果你的意思是下一跳路由器,但在这种情况下,ISP仍在阻止我的端口,因此还没有人可以使用UPnP解决方案联系我的端口?假设这个网络示例:我在NAT后面->我的办公室在路由器后面,50台笔记本电脑->ISP1->ISP2->FriendOffice路由器,90台笔记本电脑->朋友在后面NAT@road致yamburg:如果你看到上面我的UDP打孔示例。这真的解决了我的远端问题。你觉得用这种方法代替UPnP怎么样?因为有了UPnP,我相信我们会在最近的下一跳结束。而且它不会惠及所有其他参与者。但UDP打孔保证它可以做到,上面的例子是一个工作示例,我测试了它的工作。打孔,如果我理解你所做的,是更通用的。请记住,尽管IPv4地址空间在今年2月正式耗尽。今年6月,世界将面临IPv6日,大型公司将尝试推动IPv6。如果你开发的东西在未来一年左右会发布,你可能会考虑专注于IPv6,而不是所有这些摆弄NAT的事情@通往亚姆堡之路:你在这里提到了一个很好的观点。我才不管呢。出于这个原因,您是否也推荐UPnP或NAT-PMP?