错误设置网络掩码有什么影响?我有一个C ++应用程序,用于设置设备的网络掩码。如果网络掩码设置不正确,则tftp似乎无法正常工作。为什么会这样?如果没有为设备/ PC正确设置网络掩码,会出现哪些其他问题?
答案 0 :(得分:12)
虽然这个问题可能更多地是关于IP网络而不是编程,但对许多开发人员来说这是一个具有挑战性的主题。
网络掩码分隔主机地址(您的PC或服务器)和网络地址(系统所在的逻辑网络基础结构部分)。这两部分用于将数据包传送到正确的设备。通过使用IP地址对网络掩码进行AND运算来获得网络地址。请考虑以下情形:
IP Address: 10.0.1.1
Netmask: 255.255.0.0
我们PC的IP地址的主机地址部分是1.1,因此PC知道任何主机地址从10.0开始。是当地的。然后启动10.1等的任何地址都不是“本地”,需要转发到路由器。如果您有另一台设备位于同一网络上:
IP Address: 10.0.2.1
Netmask: 255.255.255.0
这里的网络掩码对于我们的示例设置是错误的,此设备现在将看到网络地址为10.0.2,主机地址为1,如果它尝试与10.0.1.1通信,它将看到网络地址10.0.1!不是本地的,因此会将其引用到默认路由器进行转发。如果网络掩码设置正确(即与第一个示例相同,假设您的网络设置正确),则第二个设备会将第一个设备看作本地,即在10.0网络上,并且不会尝试将数据包转发到路由器。
许多协议很乐意应对这种情况,但tftp旨在在单个网络中运行,因此会失败,因为人们认为目标位于不同的网络上。这可能无法描述您的具体情况,但我希望该示例演示了配置重要的重要原则,您不能拥有不准确配置的环境并希望它能够正常工作。
答案 1 :(得分:6)
网络掩码确定哪些IP地址是本地的(非路由);超出该范围的IP地址通过路由器。如果网络掩码错误,程序会尝试直接访问必须通过路由器的站点,反之亦然。
答案 2 :(得分:6)
网络掩码定义,IP地址的哪一部分用作网络的地址,哪部分用于工作站。
第一个例子:
IP1: 192.168.20.4
IP2: 192.168.192.4
NM: 255.255.0.0
两个IP都在同一个网络中。他们可以在不需要路由器的情况下相互通信。那是因为当您或它使用网络掩码时,IP地址将产生相同的位掩码。
第二个例子:
IP1: 192.168.20.4
IP2: 192.168.192.4
NM: 255.255.128.0
现在两个IP都在不同的网络中,因为当您或带有网络掩码的IP地址时,生成的位掩码将不同,如果没有在两个网络之间路由的路由器,它们将无法相互通信。
您可以使用ipcalc自行测试。
答案 3 :(得分:1)
解释了不匹配的网络掩码的可能影响here。简而言之:
TFTP的误功能几乎肯定是由第一个原因引起的。它以相同的方式影响任何其他IP协议。
其他答案仅提到第一个问题(可以,因为第二个问题相当边缘)。请注意,它不是接口本身的网络掩码,它决定了IP数据包的路由方式 - 它是主机的路由子系统;但网络掩码通常用于构造路由表。