网络基础

主要是记录一些网络知识的基础概念。

IP 地址

IPv4 是 32 位的长度,而 Ipv6 则是 128 位的长度。

IPv4 地址

通常采用点分四组或和点分十进制表示法。例如:165.195.130.107。里面的每个数字范围是 [0,255]。实际上这种结构是二进制结构的简单写法。

下民看看点分四组同二进制表示法的区别

点分四组 二进制表示
0.0.0.0 00000000 00000000 00000000 00000000
1.2.3.4 00000001 00000010 00000011 00000100
255.255.255.255 11111111 11111111 11111111 11111111

IPv6 地址

通常由四个称之为块或者字段的十六进制数字组成,由冒号分割。但是因为太长了,通常可以简写。规则如下:

  • 一个块中的前导零必须省略。例如:5f05:2000:80ad:5800:58:800:2023:1d71 非省略写法为 5f05:2000:80ad:5800:0058:0800:2023:1d71
  • 全零的块可以省略,可以使用::代替,但是每个地址只能用一次,而且只能用在影响最大的地方。比如:2001:0db8:0:0:0:0:0:2 简写为 2001:0db8::2
  • IPv6 内嵌入 IPv4 地址使用混合符号形式,紧接着 IPv4 部分的地址块的值为 ffff,地址的其余部分使用点分四组的方式。例如:::ffff:10.0.0.1 可表示 IPv4 地址 10.0.0.1
  • af 的十六进制数字都应该使用小写表示。
十六进制表示 二进制表示
5f05:2000:80ad:5800:0058:0800:2023:1d71 0101111100000101 0010000000000000
1000000010101101 0101100000000000
0000000001011000 0000100000000000
0010000000100011 0001110101110001
::1 0000000000000000 0000000000000000
0000000000000000 0000000000000000
0000000000000000 0000000000000000
0000000000000000 0000000000000001

这里还要注意一个事情,就是因为 IPv6 使用 : 分割,那么在包含地址的 URL 时可能会跟其他的分隔符混淆,所以需要使用括号字符 [] 包围 IPv6 地址。

1
http://[f05:2000:80ad:5800:0058:0800:2023:1d71]:443/

分类寻址

每个单播 IP 地址都有一个网络部分,用于表示接口使用的 IP 地址在那个网络中可被发现;以及一个主机地址,用于识别出网络部分给出的网络中的特定主机。IPv4 地址空间最初分为五类,此处说的标志位其实指的是二进制的前导数字:

网络标志位 地址范围 适用范围
A 0 0.0.0.0 ~ 127.255.255.255 大量主机的大型网络
B 10 128.0.0.0 ~ 191.255.255.255 中等规模主机的网络
C 110 192.0.0.0 ~ 223.255.255.255 小型局域网
D 1110 224.0.0.0 ~ 239.255.255.255 组播地址
E 11110 240.0.0.0 ~ 255.255.255.255 保留

A,B,C 类用于为单播地址中的接口分配地址。D 类为组播地址。0.0.0.0 是特殊地址,表示本网主机。

子网掩码

子网掩码是由一台主机或路由器使用的分配位,以确定如何从一台设备中获取对应 IP 地址中获取网络和子网信息。前面说到,IP 地址实际上是二进制数字的十进制表示。当前子网掩码是由一些 1 后跟一些 0 构成。

点分十进制表示 容易记的格式 二进制表示
128.0.0.1 /1 10000000 00000000 00000000 00000000
255.0.0.0 /8 11111111 00000000 00000000 00000000
255.192.0.0 /10 11111111 11000000 00000000 00000000
255.255.255.0 /24 11111111 11111111 11111111 00000000
255.255.255.255 /32 11111111 11111111 11111111 11111111

通过子网掩码可以确定一个 IP 地址的网络和子王部分的结束和主机部分开始。

比如说我的本地 IP 是 192.168.1.12/24。 通过下面的这样就可以分析:

1
2
3
地址: 11000000 10101000 00000001 00001100 192.168.1.12
掩码: 11111111 11111111 11111111 00000000 255.255.255.255
结果: 11000000 10101000 00000001 00000000 192.168.1.0

这里的结果地址子网掩码进行运算。

广播地址

子网广播地址通过将 IPv4 地址的网络/子网部分设置为适当值。以及主机部分的所有制设置为1而形成。

比如说我的本地 IP 是 192.168.1.12/24。 通过下面的这样就可以分析:

1
2
3
   地址: 11000000 10101000 00000001 00001100 192.168.1.12
掩码取反: 00000000 00000000 00000000 11111111 0.0.0.255
或的结果: 11000000 10101000 00000001 11111111 192.168.1.255

子网广播地址由子网掩码首先取反,然后与 IPv4 地址进行或运算构建而成。

除了子网广播,特殊用途地址 255.255.255.255 被保留为本地网络广播。它不会被路由器转发。

IPv6 没有任何广播地址,广播地址可用于 IPv4 中,而 IPv6 仅使用组播地址。

特殊用途的 IP 地址

TODO