Tag: nat

UDP通过Internet。 它是如何工作的?

当我正在编程网络聊天(java,但不应该对问题产生影响),并且想要使用UDP时,我遇到了它无法通过互联网工作的问题。 经过一番研究后,我发现你必须为激活的特定端口进行端口转发。 所以现在谈到我的问题: UDP是否以不可配置的方式在Internet上工作? 例如,如果我要编写整个网络游戏,那么使用UDP是否有意义? 或者我是否要求播放器激活Portforwarding并打开端口等? 什么时候使用UDP呢? 为什么? 我实际上并不理解UDP的全部要点。 对于我的编程观点,我希望有一种方法可以直观地使用它。 与创建DatagramSocket和DatagramPacket ,使用数据和目标配置数据包并通过Internet将其发送出去。 至于我的用户我不希望他们必须配置任何特定的东西,比如打开他们想要使用的确切端口等等。我只是希望他们使用程序(服务器和客户端),它应该工作。

转发端口

我有一个简单的要求,即基于套接字的通信的软件级端口转发/隧道。 我有一个使用套接字的源服务器和端口。 这是一个java程序,可以在windows和linux中运行,这是无关紧要的。 我有设备继续向此端口发送数据。 可能存在双向通信 我想将此数据重定向到另一个远程服务器和端口。 因此,对于客户,每当我移动我的应用服务器时,他们都不必担心更改IP地址。 是否有任何工具/ deamon /服务程序可用于配置和执行此操作? 我试过SSH,但根据我的理解,这需要一个支持SSH协议的服务器。 就我而言,这不适用。 我也尝试过使用JSch,但这又是java格式的SSH实现。 有人会抛出一些指针吗? 是否可以在linux中使用iptables NAT?

如何发现给定接口背后的NAT类型

我想发现一个给定的网络接口背后的NAT(FullCone,Restricted Cone,Port Restricted cone,Symmetric)的类型。 我已经测试了不同的工具( http://freshmeat.net/projects/jstun/,http://code.google.com/p/boogu/ ),但他们报告了同一界面的不同结果。 我正在寻找Python(或其他语言,第二选择是Java,如果没有其他可用的)的确定答案。

使用Java进行NAT遍历

我想连接到计算机,每个计算机都在NAT路由器后面。 我读到STUN只适用于NAT路由器后面的一台计算机。 真的吗? 如果是这样,我该如何解决双NAT问题? 谢谢,托马斯

在NAT后面进行UDP打孔

我试图在Java中实现UDP-Holepunching的简单草图来测试它的概念,并在稍后的C / C ++应用程序中使用它。 概念: 从维基百科我可以理解这个概念:让A和B成为未定义网络结构背后的客户端,C是众所周知的公共可达服务器。 A向服务器C发送数据包,服务器保存其IP地址和端口。 C将获得A的NAT的公共IP地址。 这样做,A前面的NAT将创建一个路由,将该端口上的所有数据包传递给A. B与A相同,向服务器C发送数据包,然后保存它的地址和端口,B的NAT创建路由,依此类推。 此时,C知道每个客户端的地址和端口。 C将B的地址和端口发送到A,从A发送到B. A向B发送一个数据包,该数据包将被B的NAT拒绝,但这样做会在A的NAT中打开一个“漏洞”,让B的其他数据包通过。 B向A发送一个数据包,它将到达A,因为“洞”之前是“打孔”。 这样做也会在B的NAT中打开一个“洞”,让来自A的更多数据包通过。 现在已经完成了打孔,A和B应该能够相互通信P2P 这一切都优于localhost(这不是一个大惊喜),但在现实世界的例子中,这失败了。 问题: A和B都能够连接到服务器C,服务器C获取其数据包,存储其地址和端口并将其传输到另一个客户端。 但此时它失败了。 A和B无法相互通信。 所以我问自己哪里做错了。 我花了几天时间在google和stackoverflow中搜索工作示例,但我偶然发现的是使用STUN的建议,这不是我想要的。 执行: 下面我将用Java发布我的草图,因为我不知道我的概念或实现是否有问题。 这是服务器的代码: public class Server { public static void main(String[] args) { int port1 = 0, port2 = 0; String address1 = null, address2; byte[] bytes = new byte[1024]; try { […]

用于Java的STUN,TURN,ICE库

我需要在两个用户之间建立P2P UDP和TCP连接。 他们都是NAT的背后。 一点研究让我想到了STUN , TURN和ICE 。 除了jSTUN之外是否有任何Java解决方案(库)似乎仅适用于UDP。 而TURN,ICE对于对称NAT问题要好得多。