在此处笔者讨论的是IPv4的地址。

IPv4的IP地址,是采用4个字节的整数来表示,4个字节能够表示发范围是0-4294967295(无符号数)。

为了书写方便,我们一般采用点分十进制的形式表示IPv4地址。从0.0.0.0到255.255.255.255分四个字节,每个字节的范围都是0-255。

然而,不是所有的IP地址都能直接用的,其中有不少特殊用途的IP地址。比较为人熟知的特殊IP地址有三个范围:

  • 10.0.0.0--10.255.255.255  (A类私网地址)
  • 172.16.0.0--172.31.255.255  (B类私网地址)
  • 192.168.0.0--192.168.255.255  (C类私网地址)

如果你想了解更加具体的各个IP地址的用途,还是得去管理IP地址的IANA官网查看。

 

127.0.0.1地址

127.0.0.1代表着本地回环地址,但其实回环地址不只是一个,从127.0.0.0-127.255.255.255都是回环地址,发往这些地址的数据包都会被loop back。

如果你在本地设备上打开一个虚拟机,你一般会看见虚拟机有一个网络IP为127.0.0.1。

 

0.0.0.0地址

根据RFC文档,0.0.0.0/8可以表示本网络中的所有主机,0.0.0.0/32可以用作本机的源地址,0.0.0.0/8也可表示本网络上的某个特定主机。综合起来可以说,0.0.0.0表示整个网络。

严格来说,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。

在路由其中可以用0.0.0.0/0表示默认路由,作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。

 

255.255.255.255地址

255.255.255.255代表广播地址。如果报文的目的地址是255.255.255.255,代表这是一个广播报文,会发给局域网内的所有主机。其他主机收到广播报文之后,会进行判断这个广播报文是否是发给自己的,如果是发给自己的,则进行处理,否则就将该广播报文丢弃。

 

动态获取IP

在我们电脑的ip配置里,有静态配置ip地址和动态获取ip地址两种选择。其中,动态获取ip地址就用到了两个特殊的IP地址,0.0.0.0地址和255.255.255.255。

对于动态获取ip地址,如果你的电脑关机重启了之后,则它的IP地址的空的,那这个时候如果想要网上冲浪,那你就需要向DHCP获取一个IP地址。

那么,没有IP地址,我们该怎么编辑该请求IP地址的报文呢,它的源地址是什么呢?同时,就如刚出生的婴儿,你并不认识DHCP,你没有DHCP的IP地址,那目的地址又是什么呢。

既然,我们不知道要发送给谁,那么,就暴力一点,我们进行广播,发送给该局域网内的所有主机,此时目的地址就是广播地址255.255.255.255了。其他主机收到广播报文后,会进行判断,如果是发给自己的,则进行处理,否则就把这个广播报文丢弃。

此时,DHCP服务器终于收到了我的广播了。但是,DHCP怎么知道我们是来请求IP地址的呢,所有我们就需要做一个标记,告诉DHCP服务器我们是来请求IP地址的,于是,在报文里的源地址填了0.0.0.0。

当DHCP服务器看见源地址是0.0.0.0时,它就知道了,我们急需一个IP地址,就会将一个没有使用过的IP地址发送给我,并将这个IP地址标记为已使用。

此时,可能有些人会发现,嗯?我都没有IP地址,那DHCP服务器怎么发送给我报文呢。这儿就涉及到了全球唯一的Mac地址了。