ip地址和子网掩码,广播地址关系

本文深入解析IP地址的工作原理,包括C类网络的划分、子网掩码的作用及配置,以及网关如何促进不同网络间的数据通信。通过具体实例,帮助读者理解IP地址在网络中的角色。

什么是ip地址?

  • ip是在一个网段中的一台计算机的ip地址(192.168.1.2)
  • 如果你家的联通宽带给你家的公网ip地址是10.10.123.234(假设的),那么接到你家路由器,首先路由器需要有一个ip地址,一般是192.168.1.1(也可能是192.168.0.1),这个应该可以登录到路由器中设置。
  • 其中192.168.1.255 就是广播地址,比如centos中ifconfig命令查看的broadcast
  • 剩余的ip段192.168.1.2~192.168.1.254 就是可以分配给手机,电脑等客户端使用的ip。一共是253(255-2)个。

ip由什么组成?

  • 例如一个ip 192.168.1.2,是一个C类网络,一般有254台主机。二进制表示就是 网络号标识|1100 0000 |1000 0000| 0000 0001| + 主机号标识|0000 0010|
  • 点号分割每个数字都是8位二进制,网络号部分就是192.168.1,主机号部分就是2。
  • 网络标识部分越短,那么标识主机部分可用的范围越大,但是需要子网掩码配合决定由多少可用ip

什么是子网掩码?

  • 子网掩码,顾名思义,遮掩的意思,子网掩码就是把ip地址分为网络部分和主机部分,主机部分用二进制位用1标识,主机号部分用0标识。C类子网掩码一般是255.255.255.0

  • 如果所需的ip比较多,比如学校这种环境,子网掩码可以设置成255.255.0.0 ,那么ip返回就是255的2次方-2,就是65023个。那么ip网络部分就是192.168,后面两部分是主机号。

  • 网关是什么,比如两个A客户端192.168.1.2 和B客户端192.168.2.2 就是两个网络的设备,前提是他们的子网掩码都是255.255.255.0, 那么他们通信就需要A客户端发送给网关ip,有网关路由转发到B所在的网关,再转发到B客户端。 比如我的路由器ip是192.168.2.1, 我自己的ip是192.168.2.110, 默认网关也是192.168.2.1

netstat -rn

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.2.1     0.0.0.0         UG        0 0          0 ens33
0.0.0.0表示发给任何人的包,都发给192.168.2.1这个网关, Genmask写0.0.0.0是默认路由的网络掩码。
根据IP地址子网掩码计算网络地址广播地址,可按以下步骤进行: 1. **将IP地址子网掩码转换为二进制形式**:将IP地址子网掩码的十进制表示转换为32位二进制形式,以便进行后续的位运算。例如,IP地址10.0.10.63”对应的二进制形式为“00001010.00000000.00001010.00111111”,子网掩码“255.255.255.224”对应的二进制形式为“11111111.11111111.11111111.11100000” [^1][^3]。 2. **计算网络地址**:将IP地址子网掩码进行按位与(AND)运算,运算结果即为网络地址子网掩码中连续全为1的部分对应网络地址,后面的部分对应主机地址。例如,将上述IP地址子网掩码进行与运算,得到网络地址 [^1][^3][^4]。 3. **计算广播地址**:将网络地址的主机号部分全部置为1,得到的结果就是广播地址。因为IP地址主机号部分全为0时是网络地址,全为1时是广播地址 [^1][^3]。 以下是一个Python示例代码,用于实现根据IP地址子网掩码计算网络地址广播地址: ```python import ipaddress def calculate_network_and_broadcast(ip_str, subnet_mask_str): # 创建IPv4网络对象 network = ipaddress.IPv4Network(f"{ip_str}/{subnet_mask_str}", strict=False) # 获取网络地址 network_address = network.network_address # 获取广播地址 broadcast_address = network.broadcast_address return network_address, broadcast_address # 示例使用 ip = "10.0.10.63" subnet_mask = "255.255.255.224" network_addr, broadcast_addr = calculate_network_and_broadcast(ip, subnet_mask) print(f"网络地址: {network_addr}") print(f"广播地址: {broadcast_addr}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值