引言

本来打算这次来说说ARP协议的,但是会不可避免的涉及到IP地址,因此这次就来谈谈网络中一个最为重要的角色——IP地址。此次主要谈谈地址相关的部分,协议与路由等相关的话题我们后面再详谈。

什么是IP地址

IP地址(Internet Protocol Address)是属于IP协议(也叫互联网协议、网际协议)中的概念,从英文全称中就能看出来。
在网络通信中,我们经常需要将数据从一台设备发送到另一台设备,IP地址就相当于设备的位置,可以通过IP地址来找到具体的设备。
现在用到的IP协议有版本4(IPv4)和版本6(IPv6)两个版本在使用,除了一些技术性革新,每个版本对地址格式的定义也不一样。由于各种原因,从IPv4向IPv6的迁移是极为漫长的,当前IPv4仍然使用极为广泛,所以我们说的IP地址也都通常指的是IPv4地址,下文如果不特殊说明,IP地址的含义也是指IPv4地址。
并不是每台计算机都会有IP地址,只有连接到网络上的设备才有。

IP地址长什么样

IPv4

IPv4地址长度为32bit,即为4字节,通常为了便于记忆和表示,我们将每个字节表示成十进制的数字,再用点号(.)分隔开来, 该表示方法称为点分十进制。如下图即为192.168.0.1的表示。
image.png
理论上IPv4技术可使用的IP地址最多可有232个(42亿+),看上去像是很多,但由于早期编码与分配并不合理,造成编码实际上被空出或不能使用。加上现在绝大部分家庭都拥有不止一台网络设备,如今IPv4地址资源已经十分紧缺。可以通过一些技术手段(如NAT)临时解决这个问题,我们后面会讲到。解决地址短缺最好的解决方案还是迁移到IPv6版本。

IPv6

IPv6地址长度为128bit,有16个字节,可表示的地址数量已经足够标记地球上的每一粒沙子了,因此这个数量已经足够用了(至少现在看是这样)。
IPv6地址在书写时以8组十六进制数字组成,每组为2个字节,以冒号分割,如:fe80:1248:33ea:c107:f816:3eff:fe6c:7825
每一组十六进制数字中前面的0可以省略,例如 f150:0000:0000:0000:0008:0e00:300d:623b 可写作 f150:0:0:0:8:e00:300d:623b
也可以通过使用双冒号(::)替换一系列零来指定简化表示。例如fe16:0:0:0:0:0:0:a2 可写作 fe16::a2,一个 IPv6 地址中仅可使用一次双冒号。

怎么查看IP地址

同上节MAC地址一样,使用ifconfig命令或ip命令(推荐)时也会显示IP地址。inet字段为IPv4地址,inet6字段为IPv6地址。

  1. $ ip addr show
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4. inet 127.0.0.1/8 scope host lo
  5. valid_lft forever preferred_lft forever
  6. inet6 ::1/128 scope host
  7. valid_lft forever preferred_lft forever
  8. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
  9. link/ether fa:16:3e:6c:78:25 brd ff:ff:ff:ff:ff:ff
  10. inet 10.248.135.114/22 brd 10.248.135.255 scope global eth0
  11. valid_lft forever preferred_lft forever
  12. inet6 fdbd:dc03:ff:1:1:248:135:114/128 scope global
  13. valid_lft forever preferred_lft forever
  14. inet6 fe80::f816:3eff:fe6c:7825/64 scope link
  15. valid_lft forever preferred_lft forever

IP地址也可以被修改,但不能随便修改,这个话题后面会经常接触到,以后再说。

一些特殊的IP地址

本地回环地址

位于127.0.0.1127.255.255.254之间的IP地址称为本地回环地址(Loopback Address),也简称为回环地址。回环地址代表的是本机,在一台自身网络软硬件正常的主机上,回环地址总是可用的。在Linux中默认会有一个名为lo的虚拟网卡对应着回环地址。部分操作系统仅以127.0.0.1作为回环地址,其他地址不可用。

内网地址

我们经常会听到内网IP的说法,简而言之,内网IP就是在局域网内部使用的IP地址,有时候也叫私网IP。内网IP地址只使用固定的IP地址段,如下:

  • 10.0.0.010.255.255.255
  • 172.16.0.0172.31.255.255
  • 192.168.0.0192.168.255.255

这些地址仅会用于局域网内部。有关内网(私网)与外网(公网)的讨论我们后面还会专门进行。

后记

我们可能会看到一些资料上将IP地址分为了A/B/C等大类,但是这种划分如今被废弃了,已不具有实际意义,因此本文未提及。后续我们在讲子网的时候会再次提及这个并说明原因。
本节我们留下了很多话题以后讨论,这是不可避免的,因为有关IP地址的话题要讨论的实在太多,不是简单一两篇文章就能写清楚的。
我们在介绍MAC地址的时候有提到用MAC地址来标记和确认网络设备的位置,本节介绍IP地址时也说到IP地址有相似的功能,那么这两种地址有什么不同呢,下节我们就揭秘下。