计算机网络(IPv4部分)

IPv4

IPv4是目前使用最广泛的IP协议,它的地址长度为32位,通常用点分十进制表示。

1
2
3
4
# 32位二进制
11000000.10101000.00000001.00000001
# 点分十进制
192.168.1.1

如何将32位二进制转换为点分十进制呢?将32位二进制分成4组,每组8位,然后将每组转换为十进制,就得到了点分十进制。


如何计算二进制的十进制呢?将二进制的每一位乘以2的n次方,n从0开始,从右往左递增,然后将每一位的结果相加,就得到了十进制。

1
2
3
4
5
# 11000000.10101000.00000001.00000001
# 1*2^7 + 1*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 192
# 1*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 168
# 0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 1
# 0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 1

技巧:一般IPv4地址32位分成4组,每组8位,每组的最大值为255,所以第8位为1的二进制的十进制最大值为255,第8位为0的二进制的十进制最大值为127。


那么,十进制怎么转化成二进制呢?将十进制除以2,得到的余数就是二进制的每一位,然后将商再除以2,得到的余数就是二进制的每一位,以此类推,直到商为0为止,然后将余数从下往上排列,就得到了二进制。

1
2
3
4
5
6
7
8
9
10
# 192
# 192/2 = 96 余数0
# 96/2 = 48 余数0
# 48/2 = 24 余数0
# 24/2 = 12 余数0
# 12/2 = 6 余数0
# 6/2 = 3 余数0
# 3/2 = 1 余数1
# 1/2 = 0 余数1
# 11000000

分类编址IPv4地址

IP地址是指互联网上的每一台主机的地址,它由网络号和主机号组成,网络号用来标识主机所在的网络,主机号用来标识主机。

1
IP地址 = 网络号 + 主机号

A类IP地址一个A类IP地址由1字节的网络地址和3字节主机地址组成,即8位网络地址和24位主机地址,它主要为大型网络而设计的,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到127.0.0.0)。可用的A类网络有127个,每个网络能容纳16777214个主机。其中127.0.0.1是一个特殊的IP地址,表示主机本身,用于本地机器的测试。
2^7 = 128,减去两个保留地址,126个网络。每个网络可容纳2^24 - 2 = 16777214个主机。

注:
A:0-127,其中0代表任何地址,127为回环测试地址,因此,A类ip地址的实际范围是1-126.
默认子网掩码为255.0.0.0

B类IP地址一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,即16位网络地址和16位主机地址,它主要为中型网络而设计的,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
2^14 = 16384,减去两个保留地址,16382个网络。每个网络可容纳2^16 - 2 = 65534个主机。

注:
B:128-191,其中128.0.0.0和191.255.0.0为保留ip,实际范围是128.1.0.0–191.254.0.0。

C类IP地址一个C类IP地址由3字节的网络地址和1字节的主机地址组成,即24位网络地址和8位主机地址,它主要为小型网络而设计的,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
2^21 = 2097152,减去两个保留地址,2097150个网络。每个网络可容纳2^8 - 2 = 254个主机。

注:
C:192-223,其中192.0.0.0和223.255.255.0为保留ip,实际范围是192.0.1.0–223.255.254.0

D类地址用于多点广播(Multicast)。 D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。224.0.0.0到239.255.255.255用于多点广播 。

E类IP地址以“llll0”开始,为将来使用保留。240.0.0.0到255.255.255.254,255.255.255.255用于广播地址。

全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0~172.31.255.255
C类地址:192.168.0.0~192.168.255.255

eg.

1
2
0.0.0.0 是一个特殊的IP地址,表示主机本身,用于本地机器的测试。
以127开头的非全0地址或非全1的地址,表示的是本机的回环地址,即自己访问自己,一般用于测试。
类别可用网络数每个网络可容纳的主机数
A12616777214
B1638265534
C2097150254

划分子网的IPv4地址

子网掩码是用来划分网络地址和主机地址的,它是一个32位的二进制数,其中网络地址部分全为“1”,主机地址部分全为“0”。子网掩码的作用是将IP地址划分为网络地址和主机地址两部分

1
2
IP地址 = 网络号 + 主机号
子网掩码 = 网络号 + 主机号

目的:将一个网络划分为多个子网,以满足不同的网络需求。

32位的子网掩码,从左到右,连续的1表示网络号,连续的0表示主机号。将划分的子网的IPv4地址和子网掩码进行逻辑与运算,得到的结果就是子网的网络号。

eg1.


eg2.

  • 来自 Bilibili 计算机网络微课堂

默认子网掩码

默认子网掩码是指在没有划分子网的情况下,根据IP地址的类别,自动分配的子网掩码。

IP地址类别默认子网掩码子网掩码的二进制表示构成
A255.0.0.011111111.00000000.00000000.000000008位网络号 + 24位主机号
B255.255.0.011111111.11111111.00000000.0000000016位网络号 + 16位主机号
C255.255.255.011111111.11111111.11111111.0000000024位网络号 + 8位主机号

无分类编址CIDR

CIDR(Classless Inter-Domain Routing,无分类域间路由选择),是为了解决IP地址的耗尽问题而提出的。CIDR采用了一种新的IP地址分配方法,它不再将IP地址看成是A、B、C类地址,而是将一个IP地址写成:IP地址/子网掩码的形式,其中“/”后面的数值表示子网掩码中连续的“1”的个数。

优点:CIDR可以将一个网络划分为多个子网,也可以将多个网络合并为一个网络,从而更加灵活地分配IP地址。

  • CIDR使用"斜线记法"来表示IP地址和子网掩码的组合,如:
    eg.

    1
    128.14.35.7/20
  • CIDR实际上是将网络前缀都相同的连续的IP地址块组成一个CIDR块,这样就可以用一个较短的前缀来表示一组IP地址块。

  • 只要知道了CIDR地址块中任何一个IP地址,就可以知道CIDR地址块的全部细节

    • 地址块中最小的IP地址
    • 地址块中最大的IP地址
    • 地址块中的IP地址总数
    • 地址块聚合某类网络数量
    • 地址掩码

eg.

  • 来自 Bilibili 计算机网络微课堂

路由聚合(构造超网)

路由聚合是指将多个路由聚合成一个路由,从而减少路由表的规模,提高路由查找的效率。

路由聚合的基本思想是:将多个具有相同前缀的路由聚合成一个路由,这样就可以用一个较短的前缀来表示一组路由。

eg.

IPv4地址应用规划

为了更好地利用IPv4地址,需要对IPv4地址进行合理的规划,以便于管理和使用。

定长子网掩码(Fixed-Length Subnet Mask)

FLSM:指在一个网络中,所有子网的子网掩码都相同。

  • 使用同一个子网掩码的子网,其主机数相同,这样就方便了管理。

  • 每一个子网分配的主机数都是固定的,这样就不利于灵活地分配IP地址。

eg.


只能划分出2^n 个子网,每个子网的主机数都是2^m-2个,其中n+m=32。造成了大量的IP地址浪费,原因是:每个子网的主机数都是固定的,而实际使用的主机数往往比较少,这样就造成了IP地址的浪费。

可变长子网掩码(Variable-Length Subnet Mask)

VLSM:指在一个网络中,不同子网的子网掩码可以不同。

  • 使用不同子网掩码的子网,其主机数可以不同,这样就方便了管理。

  • 每一个子网分配的主机数都是可变的,这样就利于灵活地分配IP地址。

eg.

总结