我正在尝试将我的计算机连接到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、客户端端口
我想知道我是否可以在机器A上创建一个TCP客户端并将其连接到远程主机(S),然后从客户端关闭连接并在同一台机器(机器A)上创建一个TCP监听器用于客户端的相同端口(例如端口1234)。现在有A的端点的服务器,将它发送到另一台机器(B),B可以连接到A的公共(public)端点(比如端口4567)上的A,A网络上的NAT将SYN重定向到A,因为它仍然有转换(4567->1234)在它的表中。我想知道从断开第一次连接到连接节点B之间有多少时间。 最佳答案 我同意PeterDuniho的评论。但我用通常的NAT行为来回答你的问题。你想做的
我正在尝试使用打洞实现P2P。这是流程:两个Peers(P1,P2)将向服务器(S)发送1个数据包。Server(S)回复都告诉别人IP:PORTP1和P2接收此UDP数据包,知道对方的外部/公共(public)ip:port。P1,P2开始向其他对等端公共(public)IP:PORT发送数据包。一旦对等点收到其他对等点的数据包,我就认为这个洞已经打好了,并将这个套接字提供给我的应用程序。我在不同的路由器上进行了测试,结果如下:当P1和P2都在非对称NAT(完整/受限锥形)上时,我没有遇到任何问题。当P1=非对称且P2=对称时:-----router-1(对称NAT)+router-
是否可以在两个位于不同NAT之后的客户端之间建立直接连接?当然,我意识到在某种程度上,具有公共(public)IP的服务器将是必不可少的,但我不希望它成为代理。看看以下场景:我不想与配置网络设备有任何关系。我只想用代码来做。我不希望服务器参与文件传输过程(出于性能原因)我们有:客户端A、客户端B和服务器S,它看起来有点像这样:A--[Router1]--S--[Router2]--BA连接到S并授权B连接到S并授权A想给B发一个文件A向S请求与B的连接S[这很神奇吗]并且A现在与B有联系A开始发送文件S下降(或至少文件传输绕过)A和B之间仍然存在联系A继续发送文件给B我的问题:这可能吗