我正在开发一个在Windows机器上的2个网络接口(interface)之间执行NAT的应用程序,但我在理解正在发生的事情时遇到了一些问题。系统中有2个网络接口(interface):用作网关的物理网络接口(interface)(00:0c:29:bc:4c:11192.168.133.130)00:50:56:eb:f5:15-192.168.133.2(由VMware运营)我的应用程序使用的虚拟TAP网络接口(interface)(00:ff:15:08:ac:26192.168.200.100)用作网关03:03:03:03:03:03-192.168.200.1(运行通过我的应
我正在尝试将我的计算机连接到NAT的两端(由OpenWRT运行)并通过NAT建立TCP连接:我在我的第一个NIC(eth0,ip地址129.104.0.1)上运行一个DHCP服务器,并将它连接到路由器的WAN端口(ip地址129.104.0.198)我将我的wifi(wlan0,ip地址192.168.1.119)连接到NAT后面的路由器SSID我正在使用python和SO_BINDTODEVICE选项通过NAT在服务器(在eth0上)和客户端(在wlan0上)之间发送数据包:对于服务器:self.server=socket.socket(socket.AF_INET,socket.S
我正在尝试找到一种在Android设备和服务器之间建立TCP连接(套接字)的方法,而无需设置服务器的路由器NAT。ANDROIDDEVICE->INTERNET->ROUTER(具有固定的外部ip地址)->SERVER(具有固定的LANip地址)类似于:“连接到端口5000上的200.111.222.333(本地地址为192.168.1.1)”。 最佳答案 您将不得不使用TURN或STUN或其他一些中间连接解决方案,但通常不可能在任何平台(不仅仅是Android)上为通用TCP连接以声明方式指定NAT设备后面的内部目标。
我有运行到VMWare中的C#TCP服务器程序,网络类型是NAT。那里的TCP服务器用作http服务器,因此我可以使用浏览器连接它。现在,当我使用此urlhttp://localhost:33333/OrderDetails连接它时,它工作没有任何问题。但是当我尝试使用此链接从VMWare外部连接它时http://1.39.37.243:33333/OrderDetails(1.39.37.243是我电脑的公网ip),那就不行了。我无法更改网络类型NAT,因为我客户的办公网络系统也是NAT系统。我哪里做错了?任何想法或建议将不胜感激。 最佳答案
在拒绝数据包之前,NAT路由器通常允许来自先前打开的TCP流的传入数据包多长时间?我正在开发一个P2P应用程序,我不想与我的中央服务器和中继数据包保持开放连接。相反,我正在考虑让客户端轮询中央服务器,保存这些ip和端口号,然后从服务器返回到每个客户端以在以后的某个时间启动P2P连接。如果NAT长时间允许数据包进入,这是可行的。如果这不可能,有谁知道其他P2P应用程序如何建立NAT横向/连接? 最佳答案 这不太可能奏效。典型的家用路由器会跟踪TCP连接的状态,不会转发已关闭连接上的流量。即使对于事件TCP连接,路由器保持打开连接但不发
我需要向路由器后面的用户发送文件。我知道如果他在他的路由器上启用端口转发,我可以通过tcp连接来做到这一点。我想避免这种情况,以使我的应用程序更易于用户使用。所以我一直在尝试做tcp穿孔,这几乎是不可能的。我设法做了udppuchholing。如果你已经知道udppunchholing是什么,那么你可以跳过这部分:所以我所做的是为了在恰好位于路由器后面的两个用户之间建立连接。用户1通过udp协议(protocol)与具有WANip地址的服务器对话。用户2也做同样的事情。好的,现在服务器知道每个用户的远程端点。服务器现在向用户2发送用户1的信息。服务器通知用户1用户2已收到该信息。用户2
针对Linux、Windows操作系统的此类任务存在哪些软件库?RFC中是否存在人们应该如何做的一些信息?我很感兴趣如何为我的C++项目创建功能,如在该软件中所示:https://secure.logmein.com/ru/products/hamachi/download.aspx 最佳答案 如果您想通过TURN中继服务器建立连接,则没有太大区别。唯一的区别是TCP和UDP创建连接的方式不同。如果要进行P2P连接,有一些很大的不同。如果您在同一个网络中(在同一个NAT后面):在UDP中,您向您的对等候选人发送一个stun绑定(bi
我有很多(数以万计)已连接的移动设备,它们与服务器保持打开的连接。如果我对64k连接限制的理解是正确的,那么每个客户端IP到服务器单个端口的连接不能超过64k(由于TCP/IP协议(protocol))(因为客户端的临时端口范围).但大多数时候,您所处的环境中,这些设备通过使用NAT转换地址的网络提供商进行连接。(例如,智能手机不会有静态IP地址)。因此在这种情况下,我的服务器将看到相同的IP地址,并且无法保证源端口在2个不同的客户端中不会相同。我的问题可能很愚蠢,但确实存在:如果我们将连接视为这种情况下的5元组(协议(protocol)、服务器端口、服务器ip、客户端ip、客户端端口
通常作为客户端从哪个源端口发送数据并不重要,但我仍然想做一些测试。因此,我尝试将客户端的套接字绑定(bind)到特定端口,但即使我在本地计算机上运行客户端和服务器(使用localhost作为目标地址),服务器也会告诉我源端口类似于59000。我这样初始化套接字:tcp::socketsocket(io_service,tcp::endpoint(tcp::v4(),2000));是否可以按照我的意图进行?我试图找出我的路由器在消息通过时是否更改了端口。那就是我目前正在玩的NAT遍历东西。 最佳答案 可以完全按照问题中的说明将套接字绑
我想知道我是否可以在机器A上创建一个TCP客户端并将其连接到远程主机(S),然后从客户端关闭连接并在同一台机器(机器A)上创建一个TCP监听器用于客户端的相同端口(例如端口1234)。现在有A的端点的服务器,将它发送到另一台机器(B),B可以连接到A的公共(public)端点(比如端口4567)上的A,A网络上的NAT将SYN重定向到A,因为它仍然有转换(4567->1234)在它的表中。我想知道从断开第一次连接到连接节点B之间有多少时间。 最佳答案 我同意PeterDuniho的评论。但我用通常的NAT行为来回答你的问题。你想做的