发现许多之前学习的计算机网络的知识都忘记了,虽然用的不多,但用一次就得查一次。好记性不如烂笔头,索性把一些基本概念记下来吧,后面可能会不断扩充一些知识。

IPv4

确定网络地址和默认网关

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
直接上例题:IP 地址为 141.14.72.24,子网掩码为 255.255.224.0,那么它的网络地址和默认网关是多少

// ----计算网络地址----

将 IP 地址和子网掩码转换为二进制

IP 地址: 10001011.00001110.01000000.00000000
子网掩码: 11111111.11111111.11100000.00000000

将 IP 地址和子网掩码进行“与”运算

10001011.00001110.01000000.00000000
&
11111111.11111111.11100000.00000000
=
10001011.00001110.01000000.00000000

将结果转换为十进制
10001011.00001110.01000000.00000000 = 141.14.64.0
因此,网络地址为 141.14.64.0

// ----确定默认网关----

默认网关是连接不同网络的路由器,默认网关的 IP 地址通常是网络地址的第一个可用地址

在这个例子中,默认网关可以是 141.14.64.1 也可以是 141.14.64.100,只要是 141.14.64.1-141.14.64.254 下的可用地址就都可以

// ----补充说明----

在上面的例子中我们发现默认网关不能是 141.14.64.0 和 141.14.64.255,不只是默认网关,这两个 IP 地址也不能被分配给设备使用

之所以不能是 141.14.64.0,是因为 IP 地址的主机位全为 0 通常用作网络地址,表示整个网络的起始地址

不能用 141.14.64.255,是因为 IP 地址主机位全是 255 的地址一般作为广播地址,用于将数据包发送到同一网络中的所有设备,因此不能被分配为 IP 地址

A 类、B 类、C 类地址的范围

ABC 类地址的范围如下:

类别 网络地址范围 主机地址范围 子网掩码
A类 1.0.0.0-126.255.255.254 0.0.0.1-255.255.255.254 255.0.0.0
B类 128.0.0.0-191.255.255.254 0.0.0.1-255.255.255.254 255.255.0.0
C类 192.0.0.0-223.255.255.254 0.0.0.1-255.255.255.254 255.255.255.0

此外,10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16 是保留地址,不能在公共互联网上使用(IP 地址后面的 /8、/12 和 /16 代表子网掩码的位数,也就是网络地址的位数)。

IPv4 保留地址详情:

  1. 0.0.0.0:表示当前网络,通常用于网络配置。
  2. 127.0.0.0-127.255.255.255:回环地址(loopback),用于本地机器之间进行通信,例如 127.0.0.1 是本地机器自身。
  3. 10.0.0.0-10.255.255.255:私有 IP 地址范围,用于内部私有网络。
  4. 172.16.0.0-172.31.255.255:私有 IP 地址范围,用于内部私有网络。
  5. 192.168.0.0-192.168.255.255:私有 IP 地址范围,用于内部私有网络。
  6. 255.255.255.255:表示广播地址。

IPv6

IPv6 公网网址范围

IPv6 公网地址范围一般是从 2000::/3 到 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff,不过目前已分配 IPv6 的公网地址都是 2xxx: 开头的。

IPv6 保留地址

  1. ::1/128回环地址,类似于 IPv4 的 127.0.0.1。
  2. fc00::/7一个预留的内网地址段。
  3. fd00::/8用于内部私有网络。
  4. fe80::/10链路本地地址(link-local),用于同一个链路上的通信(也可以粗暴地理解为内部私有网络)。
  5. ff00::/8多播地址范围。

IPv6 地址后面的/数字表示地址前缀长度(可以理解为 IPv4 的网络前缀长度),也称为子网掩码

IPv6 地址如果需要加端口号,要用[]把 IPv6 地址括起来然后在后面加上:端口号,例如[2001:ab1:cd00::]:80