聊聊IP地址那些事儿
前言
IP地址想必大家都不陌生,但是笔者最近看一些资料的时候,发现以下问题,作为浸润互联网十多年的老油条,居然都不知道。没关系,不懂就要问,每天get一个知识点。
- 10.123.123.0/24是什么鬼?
- 为啥本机地址都是127.0.0.1?
正文
定义
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
表示形式
大家看到的形式一般都是“.”分割的四段范围为0~255的十进制数,形如:117.147.2.100。但这只是为了方便表示而已,但实际上IP地址是一个32位的二进制数(即四个字节)。
类型
可以分为公有地址和私有地址。
公有地址
公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
私有地址
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。
分类
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器等)有一个主机ID与其对应。
翻译成人话就是:*32位二进制数,前x位表示网络,后32 - x位表示主机。
Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。
| 类别 | 网络号位数 | 主机号位数 | 第一个字节取值范围(十进制) | 用途 | 最大网络数 | 单个网段最大主机数 | IP地址范围 | 私有IP地址范围 |
|---|---|---|---|---|---|---|---|---|
| A类 | 8 | 24 | 1~127 (0开头) | 大型网络 | 126() | 16777214() | 1.0.0.1-127.255.255.254 | 10.0.0.0-10.255.255.255 |
| B类 | 16 | 16 | 128~191 (10开头) | 中等规模网络 | 16384() | 65534() | 128.0.0.1-191.255.255.254 | 172.16.0.0-172.31.255.255 |
| C类 | 24 | 8 | 192~223 (110开头) | 小型网络 | 2097152() | 254() | 192.0.0.1-223.255.255.254 | 192.168.0.0-192.168.255.255 |
| D类 | 224~239 (1110开头) | 组播地址 | ||||||
| E类 | 240~255 (11110开头) | 保留地址,用于实验等 |
看到上表可能有个疑问:为啥单个网段最大主机数都减2了呢?这就引出我们接下来的一个话题了。
IP地址类型
| 地址类型 | 含义 | 特点及用途 |
|---|---|---|
| 网络地址 | 用于标示一个网络 | 网络中的所有主机都属于这个网络,网络地址的主机位全部为0,例如在C类网络192.168.1.0/24中,192.168.1.0就是网络地址,用于标示整个这个网段。 |
| 主机地址 | 用于标示网络中的具体主机 | 在一个网络中,主机地址是分配给每台主机的唯一地址,主机位不全为0和全为1(主机位不能全都是0,也不能全都是1)。比如在192.168.1.0/24网络中,192.168.1.1到192.168.1.254都可以作为主机地址分配给具体的设备。 |
| 广播地址 | 用于向同一网络中的所有主机发送消息 | 主机位全部为1,例如在C类网络192.168.1.0/24网络中,192.168.1.255就是广播地址,当发送数据到这个地址时,该网络中的所有主机都会接收并处理这条信息。 |
| 子网地址 | 当对一个大网络进行子网划分后,用于标示各个子网。 | 是在网络地址的基础上,根据子网掩码进一步划分出来的,用于区分不同的子网。例如将192.168.1.0/24划分为多个子网,每个子网都有自己的子网地址。 |
| 组播地址 | 用于标识一组主机,实现组播通讯 | 可以让数据发送到一组特定的主机,而不是整个网络中的所有主机。D类地址就是组播地址,范围是224.0.0.0到239.255.255.255。常用于视频会议、在线直播等应用场景,多个接受者可以加入同一个组播组来接收数据。 |
| 回环地址 | 用于本地主机进行自我测试和通讯 | 即以127开头的地址,127.0.0.1到127.255.255.255。例如127.0.0.1,它始终指向本地主机本身。当应用程序使用回环地址发送数据时,数据不会发送到网络中,而是直接在本地主机的网络协议栈中进行处理,常用于测试网络应用程序、本地进程间通讯等。 |
通过上表我们可知:后面主机位全为0,表示的所属网络地址,后面主机位全为1,表示的广播地址。所以在计算最大主机数,就要减去2了。
在子网地址行中,提到了子网掩码,那么什么是子网掩码呢?
子网与子网掩码
引入子网掩码(NetMask),从逻辑上把一个大网络划分成一些小网络。子网掩码是由一系列的1和0构成,通过将其同IP地址做“与”运算来指出一个IP地址的网络号是什么。对于传统IP地址分类来说,
- A类地址的子网掩码是255.0.0.0;
- B类地址的子网掩码是255.255.0.0;
- C类地址的子网掩码是255.255.255.0。
例如,如果要将一个B类网络166.111.0.0划分为多个C类子网来用的话,只要将其子网掩码设置为255.255.255.0即可,这样166.111.1.1和166.111.2.1就分属于不同的网络了。像这样,通过较长的子网掩码将一个网络划分为多个网络的方法就叫做划分子网(Subnetting)。
上面ABC类划分子网不够灵活,所以,又有了CIDR
无分类域间路由(Classless Inter-Domain Routing,CIDR)
CIDR划分子网在一定程度上缓解了Internet在发展中遇到的问题。
CIDR消除了传统IP地址的分类和划分子网的概念,可以更加有效地分配IPv4的地址空间。CIDR把32位的IP地址划分为两个部分:前面的部分为网络前缀,用来指明网络;后面的部分用来表示主机。它的记法为IP地址后加上斜线“/”,然后在后面写上网络前缀所占的位数。例如128.2.3.4/20表示网络前缀为前20位,主机号为后12位。
百度百科对CIDR的描述:无类域间路由(CIDR,Classless Inter-Domain Routing)地址根据网络拓扑来分配,可以将连续的一组网络地址分配给一家公司,并使整组地址作为一个网络地址(比如使用超网技术),在外部路由表上只有一个路由表项。这样既解决了地址匮乏问题,又解决了路由表膨胀的问题。另外,CIDR还将整个世界分为四个地区,给每个地区分配了一段连续的C类地址,分别是:欧洲(194.0.0.0~195.255.255.255)、北美(198.0.0.0~199.255.255.255)、中南美(200.0.0.0~201.255.255.255)和亚太(202.0.0.0~203.255.255.255)。这样,当一个亚太地区以外的路由器收到前8位为202或203的数据报时,它只需要将其放到通向亚太地区的路由即可,而对后24位的路由则可以在数据报到达亚太地区后再进行处理,这样就大大缓解了路由表膨胀的问题。