子网掩码、IP以及MAC

子网掩码是用于区分IP地址的网络和主机部分,配合IP地址进行网络通信。它通过全1位屏蔽IP的网络部分,如B类地址默认子网掩码255.255.0.0。子网掩码用于划分子网,例如将C类IP划分为2个子网,通过255.255.255.128。同时,子网掩码也用于合并子网,如将两个B类IP172.20.0.18和172.20.1.16合并,使用255.255.0.0的子网掩码。IP和MAC地址分别在网络层和数据链路层发挥作用,IP用于定位网络,MAC用于直接通信。

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

子网掩码是什么?

子网掩码是配合IP地址(IPv4,以下不特指均为IPv4)使用的,主要用来区分IP地址的网络标识主机标识
子网掩码使用全1位屏蔽IP地址的网络部分,对于A、B、C类的IP地址,默认的子网掩码分别是255.0.0.0、255.255.0.0、255.255.255.0。
举个例子:

  • 对于IP地址172.20.0.18,属于B类地址,设置其子网掩码为255.255.0.0,因此该IP的网络部分为172.20;
  • 对于IP地址172.20.3.18,属于B类地址,设置其子网掩码为255.255.0.0,因此该IP的网络部分为172.20;
  • 子网掩码有两个特殊地址,当子网掩码的主机地址全为0时,表示该网络地址(172.20.0.0),当子网掩码的主机地址全为1时,表示该网络的广播地址(172.20.255.255)。

路由器在根据IP进行寻址时,只关注网络部分如上面例子中的172.20;对于后面的0.18和3.18属于172.20子网内的主机号;

其他表示方式:如172.20.1.16/24 等价于 子网掩码 255.255.255.0,24代表IP地址从头前24个比特代表网络地址

子网掩码有什么用

我们知道,两台主机要想通信,必须处在同一个数据链路内,即在一个子网下ARP协议才能解析出对方的MAC地址从而进行通信;如果不在同一个子网内,则需要三层交换机或路由器的帮助才能进行通信。

  1. 划分子网
  • 把一个C段IP:192.168.0.0划成两个网段,那我们使用子网掩码255.255.255.128
  • 第一个网段:192.168.0.0/255.255.255.128
  • 第二个网段:192.168.0.128/255.255.255.128
  • 第一个网段起网关:192.168.0.1/255.255.255.128
### IP地址、子网掩码MAC地址的概念 #### IP地址概念 IP地址是一种逻辑地址,用于在网络中唯一标识一台设备。IPv4地址由32位组成,通常表示为四个十进制数,每个数之间用点分隔开,如`192.168.0.1`。这种地址可以分为网络部分和主机部分[^1]。 #### 子网掩码概念 子网掩码同样是由32位组成的数值,用来区分IP地址中的哪一部分代表网络地址,哪一部分代表主机地址。通过与IP地址执行按位“与”操作来实现这一功能。这有助于路由器判断目标计算机是在本地网络上还是需要转发到其他网络上去[^2]。 #### MAC地址概念 MAC(Media Access Control)地址是硬件层面的物理地址,长度为48比特(6字节),全球范围内独一无二地分配给每一个网络接口控制器(NIC)。当数据包在同一局域网内部传输时会使用此地址来进行寻址;而在不同LAN间通信则依赖于更高层协议(IP)所提供的服务。 ### 它们之间的关系以及在网络配置中的角色 - **同一局域网内的通讯** 当源设备要向目的设备发送信息且两者处于相同子网时,仅需利用ARP(Address Resolution Protocol)查询对方的MAC地址即可完成直接的数据帧交换过程。 - **跨多个子网间的通讯** 对于跨越不同子网的情况,则必须借助默认网关的帮助——即具有连接外部路由能力的一个特殊节点。此时不仅涉及到双方各自的IP地址匹配确认工作(基于各自所属子网),还需要依靠第三层以上的协议栈处理机制才能最终达成有效沟通的目的[^3]。 ```python # Python代码示例:获取本机IP地址和MAC地址 import socket from uuid import getnode as get_mac hostname = socket.gethostname() ip_address = socket.gethostbyname(hostname) mac_address = ':'.join(['{:02x}'.format((get_mac() >> elements) & 0xff) for elements in range(0, 2 * 6, 2)][::-1]) print(f"Hostname: {hostname}") print(f"IP Address: {ip_address}") print(f"MAC Address: {mac_address}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值