TCP/IP(三)——IP地址及其分类
IP地址及其表示方法
IP地址是给连接到互联网上的每一台主机(或路由器)的每一个接口,分配一个在全世界范围内是唯一的32位的标识符。IP 地址现在由互联网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
IPv4地址通常采用点分四组或点分十进制表示法表示。把32位的IP地址中的每隔8位插入一个空格,为了便于书写和记忆,常用其等效的十进制数字表示,并在每段数字之间加上一个小数点。
在IPv6 中,地址的长度是128 位,是1Pv4 地址长度的4倍。IPv6 地址的传统表示方法是采用称为块或字段的四个十六进制数,这些被称为块或字段的数由冒号分隔。例如,一个包含8个块的 IPv6 地址可写为 5f05:2000:80ad:5800:0058:0800:2023:1d71
。以下是一些已取得共识的、已被标准化[RFC4291]的IPv6地址简化表示法:
- 一个块中前导的零不必书写。在前面的例子中,地址可写为
5f05:2000:80ad:5800:58:800:2023:1d71
。 - 全零的块可以省略,并用符号
::
代替。例如,IPv6地址0:0:0:0:0:0:0:1
可简写为::1
。同样,地址2001:0db8:0:0:0:0:0:2
可简写为2001:db8::2
。为了避免歧义,一个IPv6地址中符号::
只能使用一次。 - 在IPv6格式中嵌人IPv4 地址可使用混合符号形式,紧接着 IPv4 部分的地址块的值为
ffff
,地址的其余部分使用点分四组格式。例如,IPv6 地址::ffff:10.0.0.1
可表示 IPv4 地址10.0.0.1
。它被称为 IPv4 映射的 IPv6 地址。 - IPv6 地址的低32 位通常采用点分四组表示法。因此,IPv6 地址
::0102:f001
相当于地址::1.2.240.1
。它被称为IPv4 兼容的 IPv6 地址。需要注意,IPv4 兼容地址与 IPv4 映射地址不同;它们只是在能用类似 IPv4 地址的方式书写或由软件处理方面给人以兼容的感觉。这种地址最初用于 IPv4 和 IPv6 之间的过渡计划,但现在不再需要 [RFC4291]。
在某些情况下(例如表示一个包含地址的 URL时),IPv6地址中的冒号分隔符可能与其他分隔符混淆,例如IP地址和端口号之间使用的冒号。在这种情况下,用括号字符 [ 和 ] 包围IPv6 地址。例如,URLhttp://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/
是指 IPv6 主机 2001:0db8:85a3:08d3:1319:8a2e:0370:7344
中的端口号 443 使用 HTTP、TCP和 IPv6 协议。
[RFC4291]提供的灵活性造成了不必要的混淆,这是因为能用多种方式表示相同的 IPv6地址。为了弥补这种情况,[RFC5952]制定了一些规则,以缩小选择范围,同时与[RFC4291]保持兼容。这些规则如下:
- 前导的零必须压缩(例如
2001:0db8::0022
变成2001:db8::22
)。 ::
只能用于影响最大的地方(压缩最多的零),但并不是针对16位的块。如果多个块中包含等长度的零,顺序靠前的块将被替换为::
。- a~f的十六进制数字应该用小写表示。
IP地址分类
32 位的IP地址采用两级结构,由两个字段组成。第一个字段是网络号,它标志主机(或路由器)所连接到的网络。一个网络号在整个互联网范围内必须是唯一的。第二个字段是主机号,它标志该主机(对路由器来说,就是标志该路由器)。一个主机号在所连接的网络(即前面的网络号所指明的网络)中必须是唯一的。由此可见,一个 IP 地址在整个互联网范围内是唯一的。因此,IP 地址可以记为:
IP地址中网络号和主机号的具体规定是:IP地址中的前
在互联网发展早期采用的是分类的IP 地址。分类的方法如图下图所示。分类的方法非常简单。这里A类(n=8)、B类(n=16)和C类(n=24) 地址都是单播地址(一对一通信),是最常用的。D类是多播地址(一对多通信),而E类是保留地址。
32 位的 IP 地址空间共有
类 | 地址范围 | 高序位 | 用途 | 百分比 | 网络数 | 主机数 |
---|---|---|---|---|---|---|
A | 0.0.0.0~127.255.255.255 | 0 | 单播/特殊 | 1/2 | 128 | 16777216 |
B | 128.0.0.0~191.255.255.255 | 10 | 单播/特殊 | 1/4 | 16384 | 65536 |
C | 192.0.0.0~223.255.255.255 | 110 | 单播/特殊 | 1/8 | 2097152 | 256 |
D | 224.0.0.0~239.255.255.255 | 1110 | 组播 | 1/16 | / | / |
E | 240.0.0.0~255.255.255.255 | 1111 | 保留 | 1/16 | / | / |
A 类地址的网络号字段占 1 个字节,只有7位可供使用(该字段的第一位已固定为0)。但要注意,第一,网络号为全0的IP地址有特殊的用途,它表示“本网络”;第二,网络号为127(即01111111) 保留作为本地软件环回测试(loopback test)本主机的进程之间的通信之用。若主机发送一个目的地址为环回地址(例如127.0.0.1)的 IP 数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。因此A 类地址可指派的网络号是126个(即
A 类地址的主机号占3个字节。但全0和全1的主机号一般不指派。全0的主机号表示该IP地址是“本主机”所连接到的单个网络地址(例如,若主机的 IP 地址为5.6.7.8,则该主机所在的网络的网络号是5,而该网络的网络地址就是 5.0.0.0)。全1表示 “所有的”,因此全1的主机号字段表示该网络上的所有主机。因此每一个 A 类网络中的最大主机数是
B类地址的网络号字段有2个字节。因此B类地址可指派的网络数为
C类地址有3个字节的网络号字段。因此C类地址可指派的网络总数是
下表给出了一般不指派的特殊IP地址:
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
---|---|---|---|---|
0 | 0 | 可以 | 不可 | 在本网络上的本主机 |
0 | X | 可以 | 不可 | 在本网络上主机号为X的主机 |
全1 | 全1 | 不可 | 可以 | 只在本网络上进行广播 (个路由器均不转发) |
Y | 全1 | 不可 | 可以 | 对网络号为Y的网络上的所有主机进行广播 |
127 | 非全0或全1的任何数 | 可以 | 可以 | 用于本地软件环回测试 |
作者: 暮颜 —— 衣带渐宽终不悔
出处:https://www.cnblogs.com/mowenpan1995/
版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载请注明原文链接:https://www.cnblogs.com/mowenpan1995/p/IPAddressAndClassification.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构