网络协议-IP

@todo: DNS、ARP、DHCP、NAT、ICMP、IGMP

IP 地址的划分

互联网诞生之初,IP 地址显得很充裕,于是计算机科学家们设计了分类地址。IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类:

  • A类地址: 网络地址1字节,主机地址3字节,其中网络地址最高1位必须是0
    • 网络地址占1位,范围是1 — 126(开区间 0000 0000 — 0111 1111)不包括0000 0000 和 0111 111,前者用于表示未知地址,后者表示回环地址
    • 主机地址占3位,表示一个网络地址中最大主机数是2^24 - 2(主机地址全0表示网络地址,全1表示广播地址,所以减2)
    • A类地址范围: 1.0.0.1126.255.255.254
    • 默认子网掩码255.0.0.0
    • 在A类地址中,10.0.0.0到10.255.255.255是私有地址(所谓的私有地址=只能在局域网络中使用)
  • B类地址: 网络地址2字节,主机地址2字节,其中网络地址最高2位必须是10
    • B类地址范围:128.0.0.1191.255.255.254,每个网络中最大主机数65534
    • 默认子网掩码255.255.0.0
    • 在B类地址中,172.16.0.0 — 172.31.255.255是私有地址
  • C类地址: 网络地址3字节,主机地址1字节,其中网络地址最高3位必须是110
    • C类地址范围:192.0.0.1223.255.255.254,每个网络中最大主机数254
    • 默认子网掩码255.255.255.0
    • 在C类地址中,192.168.0.0 — 192.168.255.255是私有地址
  • 而 D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于多播,E 类是预留的分类,暂时未使用。
    ../_images/网络协议-IP-2023-04-26-1.png

因为在 IP 地址中,有两个 IP 是特殊的,分别是主机号全为 1 和全为 0 地址:

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

➤ 子网掩码:subnet mask,掩码的意思就是掩盖掉主机号,剩余的就是网络号。将子网掩码和 IP 地址按位计算 AND,就可得到网络号。

子网掩码可以把(一个网络号表示的)网络更加细化:假设对 C 类地址进行子网划分,网络地址 192.168.1.0,使用子网掩码 255.255.255.192 (192 = 1100 0000)对其进行子网划分。C 类地址中前 24 位是网络号,最后 8 位是主机号,根据子网掩码可知从 8 位主机号中借用 2 位作为子网号:所以192.168.1.0这个网络被分为 4 个子网:分别是 00、01、10、11。

➤ A、B、C 类有个尴尬处境,就是不能很好的与现实网络匹配

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

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

CIDR(Classless Inter-Domain Routing): 这种方式不再有分类地址的概念,32 比特的 IP 地址被划分为两部分,前面是网络号,后面是主机号

比如 10.100.122.2/24,这种地址表示形式就是 CIDR,/24 表示前 24 位是网络号,剩余的 8 位是主机号。

IPv6

  • IPv4 地址是 32 位,8 位为一组,共 4 组,约提供 42 亿个地址,在 2011 年 IPv4 地址已经被分配完了;
  • IPv6 地址是 128 位,16 位为一组,共 8 组,用 : 隔开,如果出现连续的 0 还可以将这些 0 省略,但:不可省略,且一个 IPv6 只能出现一次两个连续 ::

../_images/IPv6-Example.png