IPv4 地址

本文详细介绍了IPv4地址的构成及分类,包括A、B、C、D和E五类地址的特点,以及特殊地址如全0地址、全1地址、环回地址和专用地址的应用场景。此外还介绍了网络地址转换(NAT)技术。

IPv4 地址

  IPv4 地址的长度是32位。
  

分类编址

  IP 地址空间被分为五类(class):A、B、C、D 和 E。
  
  地址空间的占用情况     地址空间占用情况

  • A类前一个字节用于定义网络标识;
  • B类前两个字节用于定义网络标识;
  • C类前三个字节用于定义网络标识;
  • D类是多播地址;
  • E类保留为今后使用。

超网就是把多个网络合并成为一个网络,超网掩码中1的个数要比默认掩码中1的个数少。

子网掩码

特殊地址

全 0 地址

  地址块 0.0.0.0/32 仅含有一个地址,它被保留用于某主机需要发送一个IPv4分组,但又不知道自己的地址的情况下。通常用在主机正在启动,尚不知道自己的IPv4地址时。主机为了找出自己的地址,就向引导服务器(DHCP)发送一个IPv4分组,并以这种全0的地址作为源地址,而用受限广播地址作为目的地址。

全 1 地址:受限广播地址

  地址块 255.255.255.255/32 仅含有一个地址,它被保留作为当前网络的受限广播地址。一个主机若想把报文发送给网络中其他所有的主机,就可用这个地址作为IPv4分组中的目的地址。但是路由器会把具有这种类型地址的分组阻挡住,这样一来广播只能局限在本地网络。

环回地址

  地址块 127.0.0.0/8 被用作环回地址(loopback address),这个地址用来测试机器上的软件。在使用这个地址时,分组从来没有离开过机器,它只是简单地由协议软件返回。应当注意,这种地址在IPv4分组中只能用作目的地址

专用地址

专用网络地址

每个地址块中的特殊地址

网络地址

  一个地址块的首地址(即后缀全部为0)定义为网络地址。

直接广播地址

  一个地址块的末地址(即后缀全部为1)可用做直接广播地址(direct broadcast address)。应当注意,这种地址在IPv4分组中只能用作目的地址

NAT

  有一种技术称为网络地址转换(network address translation,NAT),它可用于提供在专用地址和全球地址之间的互相映射,同时也支持虚拟专用网络。

### IPv4地址的格式 IPv4地址是一个32位的二进制数,为了便于人类阅读和书写,它被分为四个8位组(称为八位字节),每组转换成十进制形式并用点号`.`分隔开。这种表示方式被称为“点分十进制”[^1]。例如,`192.168.1.1`就是一个典型的IPv4地址。 每个部分的数值范围是从0到255,这意味着合法的IPv4地址不会包含任何超过这个范围的部分。此外,虽然技术上允许存在前导零(如`192.168.001.001`),但在实际应用中不推荐这样做,因为这可能会引起混淆或者兼容性问题。 ### 判断IPv4地址的有效性 要验证一个给定字符串是否构成有效的IPv4地址,需遵循以下准则: - 整体长度应恰好为四段; - 每一段仅能由阿拉伯数字组成; - 各段之间通过单个小圆点相隔; - 所有片段内的整数值介于0至255之间; 如果某个候选IP违反上述任一条件,则判定该候选者非法[^2]。 ### B类IPv4地址的特点及其适用场景 特别值得注意的是,在众多分类之中,B类IPv4地址具有特定的应用价值。具体而言,此类别下的网络ID占据高阶两位固定模式(即'10'),剩余十四比特用来定义具体的子网编号;与此同时,低序十六比特则留作主机标识用途。由此推算得知,理论上可创建约一万六千多个独立B级网络,而且每一个这样的局域环境最多支持大约六万五千台终端接入互联操作[^3]。鉴于此容量特性,B型配置非常适合应用于那些既非小型家庭办公也非超大规模企业集团所组建的中间层次业务体系当中去部署实施。 ```python def is_valid_ipv4(ip): parts = ip.split(".") if len(parts) != 4: return False for part in parts: try: num = int(part) if not (0 <= num <= 255): return False # Check leading zeros. if str(num).zfill(len(part)) != part.zfill(len(part)): return False except ValueError: return False return True ``` 以上提供了一个简单的Python函数来检测输入串是不是合格的标准IPv4表述样式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值