01 简介
Internet Protocol,网际协议,是TCP/IP体系中网络层的主要协议。
网络层的任务是为互联网上的不同主机提供通信服务,主要完成两件事:对传输层的数据进行封装、将封装后的数据从源地址转发到目的地址。因此IP协议的主要任务也是寻址路由、封包解包。
在《网际协议IP》系列文章中,主要介绍IP地址的格式及分类、一些特殊的IP地址、划分子网、构成超网、数据报格式、路由、与网际协议IP相关的一些协议等方面的知识,旨在希望校友们能对网际协议IP有比较系统的了解。当然也不排除误写漏写的情况,如果有校友发现,请在公众号留言,我会及时修改。
下面开始《网际协议IP》系列第一部分的学习。
02 IP地址详解
Internet Protocol Address,互联网协议地址,又称IP地址,用于识别互联网中的设备。
互联网中的设备要想正常通信,就必须配置正确的IP地址。通俗点讲:要想上网,就必须有正确的IP地址。
格式
目前互联网使用IP协议有两个版本:IPv4和IPv6。在这里只介绍IPv4地址,IPv6地址后面再介绍。
IPv4地址由32位二进制数组成,为了提高可读性,对人类更加友好,通常采用 “点分十进制法” 表示IP地址,具体的做法如图所示:
(1)每八位二进制数为一组,将32位的IP地址分为4组
(2)将每组二进制数转换为十进制数
(3)用“.”将四组十进制数隔开,转换成对人类友好的IP地址表现形式
分类
为便于寻址和层次化构造网络,IPv4地址被设计成由网络号+主机号组成。
网络号标明设备连接的网络,网络号在互联网中是唯一的。主机号标明设备本身,主机号在网络范围内是唯一的。因此,IP在整个互联网中是唯一的。
打个比方,寄快递。我在某云爸爸那里买个东西,寄到北京朝阳区xxxx。快递不会直接寄到具体地址这里,正常的流程应该是这样:快递公司一看地址是北京朝阳区,那它直接把快递寄到朝阳区;寄到朝阳区后,再由快递小哥寄到xxxx。这里北京朝阳区就是网络号,xxxx就是主机号,邮编就有这种作用。
早期的IPv4地址,前八位为网络号,后二十四位为主机号。随着互联网的发展,RFC 791对IPv4地址的定义做了修改,将IPv4地址分为了ABC三类单播地址。再后来,D类和E类也被定义。
ABCDE类,根据IP地址网络号中的前几位来标识(被称为类别位),定义了网络的大小和类型。其中ABC三类为单播地址,是最常用的,D类为多播地址,E类保留为今后使用。
A类:前8位为网络号,后24位为主机号,类别位为0
B类:前16位为网络号,后16位为主机号,类别位为10
C类:前24位为网络号,后8位为主机号,类别位为110
D类:没有网络号,类别位为1110
E类:没有网络号,类别位为1111
我们可以通过类别位来判断IP地址属于哪一类,也可以通过查看IP地址处在哪个地址范围来判断。
A类: 0.0.0.0 ~ 127.255.255.255
B类:128.0.0.0 ~ 191.255.255.255
C类:192.0.0.0 ~ 223.255.255.255
D类:224.0.0.0 ~ 239.255.255.255
E类:240.0.0.0 ~ 255.255.255.255
比如192.168.0.1,在192.0.0.0~223.255.255.255这个区间,所以这是一个C类地址;另外将其转换成二进制后,为11000000 10101000 00000000 00000001,前三位为110,这也可以判断它是一个C类地址。
但是,并非所有的IP地址我们都能使用,因为有些地址有特殊的用途,我们一般不能使用。
特殊IP地址
这里我们只讨论ABC这三类单播地址。
RFC3330(如今已被RFC5735淘汰)中指明了哪些IP有特殊用途,哪些不能出现在公共互联网上,哪些不能被人们使用,这里我挑几个常见的给大家介绍一下。
首先要说明一下三种情况,只要符合下列情况之一的IP地址,一般都不会使用。
网络号为全0:表示本网络
主机号为全0:表示本主机连接的网络地址
主机号为全1:表示这个网络中的所有主机
比如:
128.128.255.255:主机号为全1,表示网络128.128.0.0上的所有主机
128.128.0.0:主机号为全0,表示这是网络地址128.128.0.0
0.0.0.128:网络号为全0,表示本网络上主机号为128的主机
另外,再介绍两个特殊的IP段:127.0.0.0段和169.254.0.0段。
127.0.0.0网段大家应该不陌生,特别是做开发的。这个网段中的地址被称为本地环回地址,用于同一设备不同服务之间的通信,发送给这些IP地址的数据都会返回给本机,通常都是使用127.0.0.1这个IP地址。后来在RFC6761中,将域名localhost保留了下来,用于环回,这也是为什么在电脑上搭建服务器,访问localhost和访问127.0.0.1都是同一页面的原因。
169.254.0.0网段。不知道大家平时有没有注意,给自己电脑配置IP地址,有时会弹出地址冲突的提示,然后查看属性,发现IP地址变成了169.254.0.0网段中的某个IP地址。
RFC3927中详细介绍了169.254.0.0网段,这个网段中的IP地址被称为本地链路地址。
要与其他设备通信,主机就必须配有IP地址,要么手动配置,要么自动获取,但是配置的IP地址并不总是有效的,这样就无法和其他设备通信。
而本地链路地址的存在就是为了解决这个问题,即使配置的IP地址不是有效的,但依然能分配一个本地链路地址给主机,让主机和其他设备通信。但是本地链路地址只能与同一物理链路中的设备通信,这也是其称为本地链路地址的原因。
最后要介绍一下0.0.0.0这个IP地址,网络号为0,主机号也为0,在服务器中,0.0.0.0可以表示“本地计算机上的所有IPv4地址”。如果主机有两个IP地址192.168.1.1和10.1.2.1,并且主机上运行的服务器配置为监听0.0.0.0,那么这两个IP地址都可以访问这台主机。
当然,还有其他的一些IP段不能使用,这里就不再赘述。特殊IP的知识大家心里有个印象就行,不需死记硬背。
另外,为了缓解IPv4地址的耗尽,出现了各种技术:NAT、专用网络(私有地址)、DHCP、虚拟主机等,接下来我们就简单介绍一下专用网络,其他几种技术后续再讲。
专用网络(私有地址)
RFC1918中指出,专用网络分为三个地址段,这些地址段在专用网络外不能路由,专用网络内的主机不能直接与公共网络通信,换句话说就是这些地址只能用于内部网络。但可以通过网络地址转换(NAT),实现和互联网通信。
A类:10.0.0.0 ~ 10.255.255.255
B类:172.16.0.0 ~ 172.31.255.255
C类:192.168.0.0 ~ 192.168.255.255
举个最简单的例子,家里的wifi。现在家家户户基本都有wifi,手机、电脑、电视等都可以连接以获取互联网服务。这些设备想要上网,就必须配有正确的IP地址,分配工作是路由器来完成的,而路由器分配给这些设备的IP地址就是私有地址,通常都是192.168.x.x。
在划分专用网络之前,全球只能有一个192.168.0.1的地址。但划分专用网络之后,每个局域网都可以有一个192.168.0.1的地址,这就缓解了IPv4地址资源的耗尽。
03 总结
IPv4地址格式:32位二进制数,通常采用“点分十进制法”来表示IP地址IPv4地址组成:网络号+主机号
IPv4地址分类:ABCDE类,常用的是ABC三类单播地址,D类为多播地址,E类保留保留地址:有些IP地址被保留,用于特殊用途,其中包括专用网络
A类:10.0.0.0 ~ 10.255.255.255
B类:172.16.0.0 ~ 172.31.255.255
C类:192.168.0.0 ~ 192.168.255.255