网管实战(4):网关地址与子网掩码

本文回顾作者在网络管理中经历,解释如何通过子网掩码计算IP地址范围,以及VLAN配置中的注意事项。重点讲解了根据子网掩码确定地址数和划分VLAN的技巧,适合初学者理解网络地址规划。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  自从2019年6月开始学习网络管理以来,对网络知识的学习时断时续没有系统学习,最开始接触的设备是CISCO,后来是H3C和华为。
  2020年初的时候需要更换CISCO设备,是个难得的动手练习机会,我配置了楼层交换机和汇聚交换机,感觉有点入门了。
  学习心得就是交换机的基本配置不难,看交换机里面的代码学习,就是看别人怎么配置,不明白的就查资料,现在网上什么都有,只要你肯学总会弄明白。
  今天需要配置一个下属单位的网络,原来的地址不够用了,需要增加地址段,在不动原来的地址基础上增加另外的地址,原打算增加一个Vlan段,就是在端口的Trunk配置上增加一个VLAN,然后到下属单位的交换机上配置具体端口就就行了。可是下一级的交换机是别人管理的,我不能配置,这样就点麻烦。
  就更改现有的VLAN设置,在Vlan下增加其他段的地址,类似下面的这样:
  ip address 1.2.3.129 255.255.255.192
  ip address 1.2.4.123 255.255.255.224 sub
  这样就解决了IP地址不够用的问题了。

  具体操作:1、确定可以利用的地址范围,112~127;2、确定一个网关地址;3、在Vlan-interface下增加网段ip address 1.2.4.123 255.255.255.224 sub即可(1.2.4.123是网关地址)。
  对子网掩码、网关,我以前都是凭规律计算的,比如看到255.255.255.248,对应的就是8个地址;看到255.255.255.224对应就是32个地址;255.255.255.192就有64个地址。
  因为最后一位和地址数加起来是256,至于为什么,我没有做过演算。
  知道网络地址是网关地址与子网掩码与运算得来的,可是从来没有详细的整理一下具体是怎么回事情,今天刚好需要整理地址范围,也就整理一下这方面的知识,让自己明白一下。
  问题:假设网关地址是:192.168.240.57,如何根据不同的子网掩码来确定IP地址的范围?假定是C类地址。

  上面就是实际的演算过程。
  得到规律认识:
  1、子网掩码决定了地指数;
  为什么?
  如果是248,转化为二进制就是11111000,意味着能变化的就是最后三位,最大也就是111,即是7,就是8个地址(0~7)。
  如果是224,转化为二进制就是11100000,意味着能变化的就是最后五位,最大也就是11111,即是31,就是32个地址(0~31)。
  等等。
  由此也可以得出,前面我凭规律记忆的是对的。也就是子网掩码的最后一位和地址数加起来等于256。
  2、VLAN划多了浪费地址。
  每一段网络都要占去3个地址,网关地址可以随意配置。
  3、根据IP地址的个数计算子网掩码。
  比如,现在要配置从192.168.240.0~192.168.240.47连续的48个地址,网关设置为192.168.240.1,那么子网掩码就是255.255.255.208。

  因为208转化为二进制就是11010000,那么能变化的数最大就是101111,即47,所以地址范围是192.168.240.0~192.168.240.47。

A: 在Qt中设置window系统的IP地址网关子网掩码可以通过以下代码实现: ```cpp #include <QtNetwork/QNetworkInterface> #include <QtNetwork/QNetworkAddressEntry> #include <QtNetwork/QHostAddress> // 获取当前系统的网络接口列表 QList<QNetworkInterface> interfaceList = QNetworkInterface::allInterfaces(); // 循环遍历接口列表,找到目标接口 QString targetInterfaceName = "本地连接"; foreach (QNetworkInterface networkInterface, interfaceList) { QString interfaceName = networkInterface.humanReadableName(); if (interfaceName == targetInterfaceName) { // 获取目标接口的IP地址子网掩码网关 QList<QNetworkAddressEntry> addressEntryList = networkInterface.addressEntries(); QNetworkAddressEntry addressEntry = addressEntryList.at(0); QHostAddress ipAddress = addressEntry.ip(); QHostAddress netmask = addressEntry.netmask(); QHostAddress gateway = networkInterface.addressEntries().at(1).ip(); // 设置IP地址子网掩码网关 QProcess process; QStringList args; args << "interface" << "ip" << "set" << "address" << interfaceName << ipAddress.toString() << "store=persistent"; process.start("netsh", args, QIODevice::ReadWrite); process.waitForFinished(-1); args.clear(); args << "interface" << "ip" << "set" << "subinterface" << interfaceName << "mtu=9000" << "store=persistent"; process.start("netsh", args, QIODevice::ReadWrite); process.waitForFinished(-1); args.clear(); args << "interface" << "ip" << "set" << "address" << interfaceName << "mask" << netmask.toString() << "gateway=" << gateway.toString() << "gwmetric=1" << "store=persistent"; process.start("netsh", args, QIODevice::ReadWrite); process.waitForFinished(-1); break; } } ``` 上述代码首先使用`QNetworkInterface::allInterfaces()`获取当前系统的网络接口列表。然后循环遍历接口列表,找到目标接口,这里以`本地连接`为例。接着,获取目标接口的IP地址子网掩码网关,并使用`QProcess`执行`netsh`命令,设置IP地址子网掩码网关。注意,由于执行命令需要一定的时间,因此使用`process.waitForFinished(-1)`等待命令执行完毕。最后,根据需要设置`mtu`等其它参数即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值