本文是该系列文章的第二篇,将了解Internet中使用的网络层地址,又称IP地址。每个设备都至少需要一个IP地址,其可以作为我们设备的标识,就跟我们的电话号码一样,知道了电话号码就能找到我们,所以每个IP地址都是唯一的,所以在给每台设备分配IP时,会根据一套编号方案进行,本篇文章我们就来详细地了解一下它。
一、IP地址的表示
IP作用于OSI参考模型中的网络层,在终端通信中作为唯一标识,便于确定数据的传递目标。
IP地址分为:IPv4 、IPv6
大多数用户熟悉并且流行的IP地址是IPv4,其是用点分四组十进制的表示方法展示的,例如 165.195.130.107
、197.101.0.0
等,每一组的数字都是非负的整数,范围在 [0, 255]
之间。
IPv4还有种写法是用二进制表示的,例如:
十进制表示 | 二进制表示 |
---|---|
0.0.0.0 | 00000000 00000000 00000000 00000000 |
1.2.3.4 | 00000001 00000010 00000011 00000100 |
10.0.0.255 | 00001010 00000000 00000000 11111111 |
165.195.130.107 | 10100101 11000011 10000010 01101011 |
255.255.255.255 | 11111111 11111111 11111111 11111111 |
因此称IPv4是32位的。而IPv6的位数就比较大了,是128位的,长度是IPv4的4倍,并且其表示方式是分块的八组四个十六进制数,例如:5f05:2000:80ad:5800:0058:0800:2023:1d71
,每个块儿之间都是用 :
隔开的。
IPv6看着特别得长,所以它的简化表示法已经有一套标准,规则如下:
- 每个块儿中前导的零可省略。例如
5f05:2000:80ad:5800:0058:0800:2023:1d71
按照此规则简化后为5f05:2000:80ad:5800:58:800:2023:1d71
- 整个块儿都为零的可以省略不写,并用
::
代替其位置,但整个IPv6地址中只能出现一次::
符号。例如0:0:0:0:0:0:0:1
按照此规则简化后为::1
当然IPv6也是可以用二进制表示的,表示结果如下:
十六进制表示 | 二进制表示 |
---|---|
5f05:2000:80ad:5800:0058:0800:2023:1d71 | 0101111100000101 0010000000000000 1000000010101101 0101100000000000 0000000001011000 0000100000000000 0010000000100011 0001110101110001 |
::1 | 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000001 |
如果把IPv6和端口号一起使用的话,可能会出现这样的情况:http://2001:0db8:85a3:08d3:1319:8a2e:0370:7344:443/
,该URL中,最后一个 :443
其实表示的是端口号,但与IPv6一起使用时看起来好像也成为了一个块儿部分,因此我们需要用 []
符号将IPv6部分包裹起来,结果如下:http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:443/
二、IP地址结构
上面提到,IP是作为终端的唯一表示