Networking 如何在internet上的本地网络中侦听应用程序?
我想知道像skype(一种流行的聊天客户端)这样的应用程序如何在只有一个路由器的本地网络中工作,它如何在特定的端口上监听 例如:= 在一个网络中,A和B是两台运行skype的机器,两者的网关都是G1 现在,A和B如何在互联网上拥有与G1相同的IP,但如何确保它们在不同的端口上侦听?他们如何向路由器G1请求唯一端口Networking 如何在internet上的本地网络中侦听应用程序?,networking,routing,Networking,Routing,我想知道像skype(一种流行的聊天客户端)这样的应用程序如何在只有一个路由器的本地网络中工作,它如何在特定的端口上监听 例如:= 在一个网络中,A和B是两台运行skype的机器,两者的网关都是G1 现在,A和B如何在互联网上拥有与G1相同的IP,但如何确保它们在不同的端口上侦听?他们如何向路由器G1请求唯一端口 我想在linux上制作一个简单的文本聊天服务器。如何在两个不同网络中的两台不同计算机之间建立连接?除非A和B实际上在“监听”对传出请求的响应,否则需要对路由器进行配置,以将相关端口号转
我想在linux上制作一个简单的文本聊天服务器。如何在两个不同网络中的两台不同计算机之间建立连接?除非A和B实际上在“监听”对传出请求的响应,否则需要对路由器进行配置,以将相关端口号转发到相关主机。这不是您可以在代码中请求的内容,而是您需要在路由器本身上配置的内容。解决问题的方法是在网络中的某个位置安装转发服务器。
不同的程序使用不同的方式相互连接。但每个聊天服务器,包括Skype,都有一个服务器,用于转发有关子网IP/端口可用性的数据或信息。
有两种类型的客户机:“倾听”客户机和“被动”客户机。监听客户端可以通过路由器端口转发直接访问互联网,“被动”客户端必须使用额外的技巧获取外部数据、线路外部服务器或其他端口来监听。
关键是,不是客户机彼此连接,而是它们连接到服务器,然后服务器再连接到它们以验证它们是否可用,如果其中至少有一个没有防火墙,则引导另一个连接到第一个,而不让其自身进一步通信。如果两者都是防火墙,则is必须通过自身转发消息。您需要一个中央UDP会合服务器 在从客户端到服务器的初始连接之后,UDP客户端可以被重定向,以便直接相互通信,即使是防火墙 诀窍是从内部打开UDP连接
传统NAT服务器将源地址和端口替换为NAT服务器外部接口的地址和随机端口号。这适用于HTTP和SMTP等简单协议,但对于需要NAT服务器外部接口上的多个响应端口的更复杂协议可能会产生问题。如果没有NAT编辑器和类似的软件修复程序的帮助,NAT服务器也不会知道存储在应用层头的数据部分中的信息 Windows XP解决这些问题的方法是NAT遍历,它可以自动允许支持UPnP的NAT客户端应用程序与UPnP NAT设备通信。NAT遍历提供了一些方法,允许UPnP客户端了解NAT服务器的公共IP地址,并为UPnP NAT客户端应用程序协商动态分配的端口映射 NAT穿越功能可以内置到任何硬件设备或软件应用程序中。通常会给NAT设备带来麻烦,但在启用UPnP时工作良好的应用程序包括: 多人网络游戏 音频和视频通信 终端服务客户端和服务器 对等文件共享应用程序 当这些应用程序启用UPnP时,通过Windows XP ICS进行访问可使其无缝工作。主机发现
- 手动发现,客户A知道客户B是谁
- 通过广播UDP进行发现,许多游戏都使用UDP进行局域网游戏。客户端向其子网的广播地址发送数据包。对等方可以选择接收此广播并作出响应。缺点是这仅限于当前子网。更通用的INADDR_广播(255.255.255.255)适用于本地链路上的所有子网,但无法路由,因此无法在internet上工作(这是DHCP自动配置使用的)
- 通过中央(会合)服务器进行发现。每个客户机都知道服务器的地址,后者会通知他们彼此的情况。IRC、Voip、IMs和大多数“对等”网络都使用这种技术
另一个解决方案是使用公共Web服务器,并“滥用”其插入内容的能力来彼此聊天。可以说是superuser.com的一个问题,但由一位开发者提出