NAT 后面的点对点连接



我做了一个简单的网络应用程序,它是通过局域网进行通信的服务器客户端。

客户

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)         
host = socket.gethostname() 
port = 8080               
s.connect(("117.219.195.10", port))
s.send('qn');
s.send('boonr');
s.close

服务器

import socket               
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)         
host = socket.gethostname()
print host
port = 8080                
s.bind(("", port))       
s.listen(5)                 
while True:
   c, addr = s.accept()     
   print 'Got connection from', addr
   c.send('Thank you for connectingrn')
   c.close()

但是当服务器落后于NAT时,我需要在路由器中配置NAT表,我可以在不配置路由器的情况下进行点对点连接吗?我可以将NAT表的信息(例如要重定向的ip)嵌入数据包本身中,以便当数据包从互联网发送到路由器时,它知道LAN中的哪个IP应该得到它。

可以开发一个利用 NAT 遍历技术(如 STUN)在 NAT 设备之间创建隧道的应用程序。查看这些主题以找到适合您的解决方案。

是的,您确实需要配置端口转发,这通常涉及登录到路由器并使用其管理界面。不可以,您不能将此信息嵌入数据包中。

但是,您只需要在服务器上

执行此操作,一旦在服务器上设置了端口转发,就不需要求助于NAT遍历进行客户端-服务器通信,因为客户端发送给服务器的内容将传递到服务器(因为您设置了端口转发)从服务器到客户端的回复将由客户端NAT自动转发,因为它会知道您有一个TCP与服务器端点建立连接。这就是您从 NAT 后面连接到本网站的方式!

最新更新