zoo*_*opa 8 networking network-programming
错误设置网络掩码有什么影响?我有一个C++应用程序,用于设置设备的网络掩码.如果网络掩码设置不正确,则tftp似乎无法正常工作.为什么会这样?如果没有为设备/ PC正确设置网络掩码,会出现哪些其他问题?
Laz*_*rus 12
虽然这个问题可能更多是关于IP网络而不是编程,但对许多开发人员而言,这是一个具有挑
网络掩码分隔主机地址(您的PC或服务器)和网络地址(系统所在的逻辑网络基础结构的一部分).这两部分用于将数据包传送到正确的设备.通过使用IP地址对网络掩码进行AND运算来获得网络地址.请考虑以下情形:
IP Address: 10.0.1.1
Netmask: 255.255.0.0
Run Code Online (Sandbox Code Playgroud)
我们PC的IP地址的主机地址部分是1.1,因此PC知道任何主机地址从10.0开始.是当地的.然后启动10.1等的任何地址都不是"本地",需要转发到路由器.如果您有另一台设备位于同一网络上:
IP Address: 10.0.2.1
Netmask: 255.255.255.0
Run Code Online (Sandbox Code Playgroud)
这里的网络掩码对于我们的示例设置是错误的,此设备现在将看到网络地址为10.0.2,主机地址为1,如果它尝试与10.0.1.1通信,它将看到网络地址10.0.1 !不是本地的,因此会将其引用到默认路由器进行转发.如果网络掩码设置正确(即与第一个示例相同,假设您的网络设置正确),则第二个设备会将第一个设备视为本地设备,即在10.0网络上,并且不会尝试将数据包转发到路由器.
许多协议将很乐意应对此问题,但tftp旨在在单个网络中运行,因此会失败,因为人们认为目标位于不同的网络上.
这可能无法描述您的具体情况,但我希望该示例演示了配置重要的重要原则,您不能拥有不准确配置的环境并期望它能够正常工作.
小智 6
网络掩码定义了IP地址的哪一部分用作网络的地址以及哪部分用于工作站.
第一个例子:
IP1: 192.168.20.4
IP2: 192.168.192.4
NM: 255.255.0.0
Run Code Online (Sandbox Code Playgroud)
两个IP都在同一个网络中.他们可以在不需要路由器的情况下相互通信.那是因为当您或它使用网络掩码时,IP地址将产生相同的位掩码.
第二个例子:
IP1: 192.168.20.4
IP2: 192.168.192.4
NM: 255.255.128.0
Run Code Online (Sandbox Code Playgroud)
现在两个IP都在不同的网络中,因为当您或带有网络掩码的IP地址时,生成的位掩码将是不同的,如果没有在两个网络之间路由的路由器,它们将无法相互通信.
您可以使用ipcalc自行测试.