【嵌入式开发之网络编程】IP地址及编址方式

IP 地址及其表示方法

点分十进制记法,就是IPv4的IP地址标识法,对于主机和路由器来说,IPv4的IP地址就是32位的二进制,为了提高可读性,人们将32位的二进制分成4个部分,然后分别转换成十进制,中间加点,就变成了我们常见的IP地址,如128.11.3.31。

IP地址的结构及分类

IP地址的二级结构

同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。这就能保证IP地址在整个互联网范围内是唯一的。IP地址指明了连接到某个网络上的一个主机。

IP 地址 ::= { <网络号>, <主机号>}

任意一个IP地址我们都可以迅速的得出类别,并计算得出网络ID,当一个主机通过两个网卡同时连接到两网络时,也就是该主机同时拥有两个IP地址,该主机被称为多归属主机。一个路由器至少连接到两个不同的网络,一个路由器至少拥有两个IP地址。

那么网络ID的位数是多少呢?假设网络ID的位数是,则主机号的位数就是

IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。

|-------|----------------------------------------------------------------|------------|-------------|-----------------------------------------------------------------|
| 网络 类别 | 最大可指 派网络数 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每个网络中 最大主机数 |
| A类 | | 1 | 126 | |
| B类 | | 128.1 | 191.255 | |
| C类 | | 192.0.1 | 223.255.255 | |
[各类 IP 地址的指派范围]

注意事项:

  • A 类网络地址中, 网络号 0 和 127 是保留地址,不指派。0 表示"本网络",127 保留作为本地环回测试地址。
  • B 类网络地址中,网络号 128.0 是被 IANA 保留的,不指派。采用无分类编址(CIDR)时可以指派。
  • C 类网络地址中,网络号 192.0.0 是被 IANA 保留的,不指派。采用无分类编址(CIDR)时可以指派。
  • 指派主机号时,要扣除全 0 和全 1 。全 0 和全 1 有特殊含义和用途。

|-----|----------------|-------|--------|-----------------------|
| 网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
| 0 | 0 | 可以 | 不可 | 在本网络上的本主机 |
| 0 | X | 可以 | 不可 | 在本网络上主机号为 X 的主机 |
| 全 1 | 全 1 | 不可 | 可以 | 只在本网络上进行广播(各路由器均不转发) |
| Y | 全 1 | 不可 | 可以 | 对网络号为 Y 的网络上的所有主机进行广播 |
| 127 | 非全 0 或全 1 的任何数 | 可以 | 可以 | 用于本地软件环回测试 |
[一般不使用的特殊的 IP 地址]

分类的IP地址具有明显的优势,管理简单,使用方便,转发分组迅速,可以划分子网,灵活地使用,但设计上不合理,容易造成大地址块浪费,即使采用划分子网的方法,也无法解决IP地址枯竭的问题。

IP地址的三级结构

一个拥有1000台主机的组织,需要申请哪类IP地址?

申请C类地址则不够,但申请一个B类地址,这就会导致超过64000多个地址不能被其他组织使用。 随着加入互联网的组织数量的迅速增加,IP地址面临被分配完的危险。

为了解决上述问题,IETF提出了划分子网的编址改进方案,也就是三级结构IP地址:网络号、子网号和主机号。

IP 地址 ::= { <网络号>, <子网号>, <主机号>}

这种结构虽然消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,可以更加有效地分配 IPv4 的地址空间,但无法解决 IP 地址枯竭的问题。

无分类编址 CIDR

CIDR(无类域间路由)是一种用于对互联网IP地址进行聚合和分配的技术。它通过改变IP地址的分配方式,有效地解决了IPv4地址空间不足的问题。

IP 地址 ::= { <网络前缀>, <主机号>}

最大的区别是前缀的位数 n 不固定,可以在 0 ~ 32 之间选取任意值。

CIDR 记法采用斜线记法 (slash notation) :

a.b.c.d / n:

二进制IP地址的前n位是网络前缀,例如:128.14.35.7/20:前20位是网络前缀。

CIDR 把网络前缀都相同的所有连续的 IP 地址组成一个 CIDR 地址块。一个 CIDR 地址块包含的 IP 地址数目,取决于网络前缀的位数。

|----------------|---------------------------------------------------------|
| 128.14.35.7/20 | 是 IP 地址,同时指明了网络前缀为 20 位。 该地址是 128.14.32.0/20 地址块中的一个地址。 |
| 128.14.32.0/20 | 是包含有多个 IP 地址的地址块,同时也是这个地址块中主机号为全 0 的 IP 地址。 |
| 128.14.35.7 | 是 IP 地址,但未指明网络前缀长度,不知道其网络地址。 |
| 128.14.32.0 | 不能指明一个网络地址,因为无法知道网络前缀是多少。 |
[注意]

地址掩码 (address mask)

  • 地址掩码又称子网掩码(subnet masking)的功能是告知主机或路由设备,地址的哪一部分是网络号,包括子网的网络号部分,哪一部分是主机号部分。
  • 子网掩码使用与IP地址相同的编址格式,即4个8位组的32位长格式。
  • 在子网掩码中,网络部分和子网络部分对应的位全为"1",主机部分对应的位全为"0",1 的个数就是网络前缀的长度。
  • 通过将子网掩码与IP地址进行"与"操作,可提供所给定的IP地址所属的网络号(包括子网络号)

默认地址掩码

网络地址 = (二进制的 IP 地址) AND (地址掩码)

【例】已知 IP 地址是 128.14.35.7/20。求网络地址。

(a) 点分十进制 IP 地址:

128.14.35.7

(b) 二进制 IP 地址:

1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1

(c) 地址掩码是 255.255.224.0:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0

(d) IP 地址与地址掩码按位 AND:

1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

(e) 网络地址(点分十进制):

128.14.32.0

IPv6 的地址:冒号十六进制记法

IPv6是英文"Internet Protocol Version 6"(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。在 IPv6 中,每个地址占 128 位,地址空间大于 。使用冒号十六进制记法(colon hexadecimal notation, 简写为 colon hex),16位的值用十六进制值表示,各值之间用冒号分隔。

点分十进制数记法:

104.230.140.100.255.255.255.255.0.0.17.128.150.10.255.255

冒号十六进制记法:

68E6:8C64:FFFF:FFFF:0000:1180:960A:FFFF

冒号十六进制记法(零压缩):

68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF

两个技术:零压缩,点分十进制记法的后缀。

零压缩 (zero compression):一串连续的零可以用一对冒号取代。在任一地址中,只能使用一次零压缩。

相关推荐
Diamond技术流2 分钟前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
Spring_java_gg16 分钟前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
方方怪1 小时前
与IP网络规划相关的知识点
服务器·网络·tcp/ip
weixin_442643422 小时前
推荐FileLink数据跨网摆渡系统 — 安全、高效的数据传输解决方案
服务器·网络·安全·filelink数据摆渡系统
阑梦清川3 小时前
JavaEE初阶---网络原理(五)---HTTP协议
网络·http·java-ee
阿尔帕兹3 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
FeelTouch Labs4 小时前
Netty实现WebSocket Server是否开启压缩深度分析
网络·websocket·网络协议
千天夜5 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
长弓三石6 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
xianwu5436 小时前
反向代理模块
linux·开发语言·网络·git