为什么有些网络服务要求客户​​端和服务器位于同一子网?

为什么有些网络服务要求客户​​端和服务器位于同一子网?

我经常在网络上遇到客户端与服务器之间的通信问题,客户端无法看到服务器,而其他服务却没有问题。很多时候,如果我必须致电支持人员或查找产品知识库文章来解决通信问题,他们会告诉我确保客户端和服务器位于同一子网中,即使服务器和客户端在网络上彼此可见。

为什么有些软件会出现这种情况,而其他软件不会?这是否是网络软件中内置的限制,导致了这些症状?我个人在编写网络软件时,在跨子网通信方面没有遇到任何问题,只要目标系统在客户端工作站上可见,尽管我在网络协议方面的经验有限。

编辑 这是我今天刚遇到的一个具体例子。运行卡巴斯基虚拟化安全软件的虚拟机无法看到位于不同子网但位于同一物理网络上的保护服务器。他们的支持人员告诉我,不支持在与保护服务器不同的子网上运行客户端,并且如果不将虚拟机与保护服务器放在同一子网上,他们就不会进一步帮助我。

我并不是在问为什么这对卡巴斯基不起作用,而是对带有这些网络限制的不同软件来说,一般都是这样。我很好奇,子网限制是否是一种实施决策(无论是通过隐蔽性还是其他方式实现安全性),或者是否存在跨子网流量无法正常工作的情况。

答案1

听起来你是在问为什么跨子网的发现会失败?

“发现”可以通过不同的方式完成,因此这是一个概括:设想一个客户端应用程序,它通过尝试在子网中的每个 IP 上打开端口 12345 来查找运行特定服务的所有服务器。单个主机服务器知道自己的子网,因此如果在本地子网上找不到服务,它就不知道下一步要搜索哪个子网,所以希望它会停止。

发现也可以通过广播而不是扫描进行。一种是 Netbios 发现广播,根据设计,它仅限于本地子网,以减少对网络的影响并防止最终导致网络瘫痪的广播风暴。

发现 1 个“服务器”并不意味着没有在相同或不同的子网上运行第 2 个或第 3 个实例,因此扫描和广播发现方法都有一些内在的限制。

在这种情况下,卡巴斯基似乎决定不实施更强大的发现方法,或提供设置服务器 IP 的替代方法。这是设计决定,而不是 TCP/IP“子网限制”。

韋斯

相关内容