Skip to content

1. IP 地址基础知识

1.1 IP 地址

IP 地址(IPv4 地址)由 32 位正整数来表示,IP 地址在计算机是以二进制的方式处理的。

而人类为了方便记忆采用了点分十进制的标记方式,也就是将 32 位 IP 地址以每 8 位为组,共分为 4 组,每组以.隔开,再将每组转换成十进制。

所以,IP 地址理论上的最大值也就是:2^32=4294967296 差不多43亿个。

1.2 IP 地址的分类

互联网诞生之初,IP 地址显得很充裕,于是计算机科学家们设计了分类地址。

IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类

对于 A、B、C 类主要分为两个部分,分别是网络号主机号

在每个IP地址段中,最大主机个数,要看主机号的位数,计算公式为:2^主机号数-2,因为有两个 IP 是特殊的:

  • 主机号全为 1 指定某个网络下的所有主机,用于广播
  • 主机号全为 0 指定某个网络

广播地址用于在同一个链路中相互连接的主机之间发送数据包。

广播地址可以分为本地广播直接广播两种。

  • 在本网络内广播的叫做本地广播。例如网络地址为 192.168.0.0/24 的情况下,广播地址是 192.168.0.255。因为这个广播地址的 IP 包会被路由器屏蔽,所以不会到达 192.168.0.0/24 以外的其他链路上。
  • 在不同网络之间的广播叫做直接广播。例如网络地址为 192.168.0.0/24 的主机向 192.168.1.255/24 的目标地址发送 IP 包。收到这个包的路由器,将数据转发给 192.168.1.0/24,从而使得所有 192.168.1.1~192.168.1.254 的主机都能收到这个包(由于直接广播有一定的安全问题,多数情况下会在路由器上设置为不转发。) 。

1.2.1 多播地址

D类地址就是 多播地址。

多播用于将包发送给特定组内的所有主机。

由于广播无法穿透路由,若想给其他网段发送同样的包,就可以使用可以穿透路由的多播。

多播使用的 D 类地址,其前四位是 1110 就表示是多播地址,而剩下的 28 位是多播的组编号。

从 224.0.0.0 ~ 239.255.255.255 都是多播的可用范围,其划分为以下三类:

  • 224.0.0.0 ~ 224.0.0.255 为预留的组播地址,只能在局域网中,路由器是不会进行转发的。
  • 224.0.1.0 ~ 238.255.255.255 为用户可用的组播地址,可以用于 Internet 上。
  • 239.0.0.0 ~ 239.255.255.255 为本地管理组播地址,可供内部网在内部使用,仅在特定的本地范围内有效。

1.2.2 优点

不管是路由器还是主机解析到一个 IP 地址时候,只需要判断其 IP 地址的前面几位就能很快的找到对应的网络地址和主机地址。

这种分类地址的优点就是简单明了、选路(基于网络地址)简单

1.2.3 缺点

  1. 同一网络下没有地址层次,这种 IP 分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。
  2. A、B、C 类有个尴尬处境,就是不能很好的与现实网络匹配。

C 类地址能包含的最大主机数量实在太少了,只有 254 个。 而 B 类地址能包含的最大主机数量又太多了,6 万多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。

这两个缺点,都可以在 CIDR 无分类地址解决。

1.3 无分类地址 CIDR

这种方式不再有分类地址的概念,32 比特的 IP 地址被划分为两部分,前面是网络号,后面是主机号。

一种表示形式 a.b.c.d/x,其中 /x 表示前 x 位属于网络号,x 的范围是 0 ~ 32,这就使得 IP 地址更加具有灵活性。

另一种划分网络号与主机号形式,那就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。 将子网掩码和 IP 地址按位计算 AND,就可得到网络号。

1.3.1 为什么要分离网络号和主机号

因为两台计算机要通讯,首先要判断是否处于同一个广播域内,即网络地址是否相同。如果网络地址相同,表明接受方在本网络上,那么可以把数据包直接发送到目标主机。

路由器寻址工作中,也就是通过这样的方式来找到对应的网络号的,进而把数据包转发给对应的网络内。

1.3.2 子网划分

子网掩码还有一个作用,那就是划分子网。

子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。形式如下:

1.4 公有 IP 地址与私有 IP 地址

在 A、B、C 分类地址,实际上分为公有 IP 地址和私有 IP 地址。

私有IP地址允许组织内部的 IT 人员自己管理、自己分配,而且可以重复。

公有 IP 地址是由 ICANN 组织管理,中文叫「互联网名称与数字地址分配机构」。

IANA 是 ICANN 的其中一个机构,它负责分配互联网 IP 地址,是按洲的方式层层分配。

1.5 IP 地址与路由控制

IP 地址的网络地址这一部分是用于进行路由控制。

路由控制表中记录着网络地址与下一跳应该发送至路由器的地址。在主机和路由器上都会有各自的路由器控制表。

在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配原则。

1.5.1 环回地址

是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。

计算机使用一个特殊的 IP 地址 127.0.0.1 作为环回地址。与该地址具有相同意义的是一个叫做 localhost 的主机名。使用这个 IP 或主机名时,数据包不会流向网络。

1.6 IP 分片与重组

不同类型的数据链路的使用目的不同。使用目的不同,可承载的 最大传输单元 MTU 也就不同。所以 每种数据链路的MTU都是不相同的,如 FDDI 数据链路 MTU 4352、以太网的 MTU 是 1500 字节等。

当 IP 数据包大小大于 MTU 时,IP 数据包就会被分片。

经过分片之后的 IP 数据报在被重组的时候,只能由目标主机进行,路由器是不会进行重组的。

在分片传输中,一旦某个分片丢失,则会造成整个 IP 数据报作废,所以 TCP 引入了 MSS 也就是在 TCP 层进行分片不由 IP 层分片,那么对于 UDP 我们尽量不要发送一个大于 MTU 的数据报文。

1.7 IPv6 基本认识

IPv6 的地址是 128 位的,还有更好的安全性和扩展性,就是 IPv6 相比于 IPv4 能带来更好的网络体验。

IPv6 地址以每 16 位作为一组,用十六进制表示,每组用冒号:隔开。如果出现连续的 0 时还可以将这些 0 省略,并用两个冒号::隔开。但是,一个 IP 地址中只允许出现一次两个连续的冒号。

1.7.1 优点

  • 可分配的地址变多了
  • IPv6 可自动配置,即使没有 DHCP 服务器也可以实现自动分配 IP 地址,真是便捷到即插即用啊。
  • IPv6 包头包首部长度采用固定的值 40 字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能。
  • IPv6 有应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性。

1.7.2 地址类型

  • 单播地址,用于一对一的通信
  • 组播地址,用于一对多的通信
  • 任播地址,用于通信最近的节点,最近的节点是由路由协议决定
  • 没有广播地址

对于一对一通信的 IPv6 地址,主要划分了三类单播地址,每类地址的有效范围都不同。

  • 在同一链路单播通信,不经过路由器,可以使用链路本地单播地址,IPv4 没有此类型
  • 在内网里单播通信,可以使用唯一本地地址,相当于 IPv4 的私有 IP
  • 在互联网通信,可以使用全局单播地址,相当于 IPv4 的公有 IP

1.7.3 IPv4 首部与 IPv6 首部

IPv6 相比 IPv4 的首部改进:

  • 取消了首部校验和字段。因为在数据链路层和传输层都会校验,所以IPv6直接取消了首部的校验
  • 取消了分片/重组相关字段。分片和重组是耗时过程,IPv6不允许在中间路由器进行分片和重组,这种操作只能在源主机和目标主机上进行,大大提高了路由器转发的速度
  • 取消选项字段。选项字段不再是标准IP首部的一部分了,但它并没有消失,而是可能出现在IPv6首部中的下一个首部指出的位置上。删除该选项字段使IPv6的首部成为固定长度的40字节。