Web 开发需要掌握的网络知识

Web 开发需要掌握的网络知识

0x0 16进制了解

16进制(Hexadecimal,简称 Hex)是一种以16为基数的进位制。
它使用以下16个符号来表示数值:

十进制 十六进制 二进制 十进制 十六进制 二进制
0 0 0000 8 8 1000
1 1 0001 9 9 1001
2 2 0010 10 A 1010
3 3 0011 11 B 1011
4 4 0100 12 C 1100
5 5 0101 13 D 1101
6 6 0110 14 E 1110
7 7 0111 15 F 1111

为什么需要16进制?

在计算机中,最小存储单位是字节 (Byte),一个字节等于8个二进制位 (bit)

表示法 特点
二进制 1010 1000 太长,不便阅读
十进制 168 可读性一般,无法与字节的二进制表示一一对应
十六进制 0xA8 最简洁,与字节的二进制表示一一对应

因此,十六进制最适合表示字节数据。

0x1 网络架构图

flowchart TB
    %% 样式定义
    classDef app fill:#d4f1f9,stroke:#3b82f6,stroke-width:2px,color:#1e3a8a;
    classDef trans fill:#dcfce7,stroke:#22c55e,stroke-width:2px,color:#14532d;
    classDef net fill:#fef9c3,stroke:#facc15,stroke-width:2px,color:#854d0e;
    classDef link fill:#fce7f3,stroke:#ec4899,stroke-width:2px,color:#831843;

    %% TCP/IP 四层模型
    subgraph L4[应用层]
        A1[HTTP]:::app
        A2[TLS]:::app
        A31[HTTP2]:::app
        A32[GRPC]:::app
        A4[FTP]:::app
        A52[HTTP3]:::app
        A51[QUIC]:::app
        A6[DNS]:::app
    end

    subgraph L3[传输层]
        B1[TCP]:::trans
        B2[UDP]:::trans
    end

    subgraph L2[网络层]
        C1[IP]:::net
        C2[ICMP]:::net
        C3[RIP/OSPF/BGP]:::net
        C4[ARP]:::net
    end

    subgraph L1[物理层]
        D1[Ethernet]:::link
        D2[Wi-Fi]:::link
        D3[4G/5G]:::link
    end

    %% 层级连接
    A1 --> B1
    A2 --> B1
    A31 --> B1
    A1 --> A2
    A31 --> A2
    A32 --> A31
    A4 --> B1
    A51 --> B2
    A52 --> A51
    A6 --> B2
    B1 --> C1
    B2 --> C1
    C1 --> D1
    C1 --> D2
    C1 --> D3

0x2 物理层

Ethernet II 帧格式

前导码 帧开始符 MAC 目标地址 MAC 源地址 802.1Q 标签(可选) 以太类型 负载 冗余校验 帧间距
10101010 (0xAA) 7个octet 10101011 (0xAB) 1个octet 6 octets 6 octets (4 octets) 2 octets 46–1500 octets 4 octets 12 octets
64–1518 octets

MTU 不是以太网帧的字段。如果本机网卡发送的帧超过目标主机支持的 MTU,通常情况下目标主机会直接丢弃该帧。

0x3 网络层

IPv4 头部格式

Octet 0 1 2 3
Bit 0-3 4-7 8-13 14-15 16-18 19-31
0 版本 首部长度 区分服务 ECN 报文总长(字节)
32 标识符 标志 分片偏移
64 存活时间 协议 首部检验和
96 源IP地址
128 目标IP地址
160 可选项
448

私有 IPv4 地址

IP地址区块 IP数量
10.0.0.0 – 10.255.255.255 16,777,216
172.16.0.0 – 172.31.255.255 1,048,576
192.168.0.0 – 192.168.255.255 65,536

当一个 IP 数据包的大小超过物理层的 MTU 时,IP 层会把数据包切割成多个切片,每一片都带有相同的标识字段,并通过片偏移指明它在原始数据中的位置。

IPv6 头部格式

Octet 0 1 2 3
Bit 0-3 4-11 12-15 16-23 24-31
0 版本 通信类 流标签
32 有效载荷长度(字节) 下一个头部 跃点限制
64 源IP地址
96
128
160
192 目标IP地址
224
256
288

0x4 传输层

UDP 头部格式

Octet 0 1 2 3
Bit 0-15 16-31
0 源端口 目标端口
32 报文总长(字节) 校验和

TCP 头部格式

Octet 0 1 2 3
Bit 0-3 4-6 7-15 16-31
0 源端口 目标端口
32 序列号
64 确认号
96 头部长度(4字节) 保留 标志 窗口大小
128 校验和 紧急指针
160 可选项
448

0x5 路由

路由示例

子网

子网(Subnet) 是对 IP 网络的一种划分方式。通过 子网掩码(Subnet Mask) 将一个大的网络划分为多个较小的网络,从而更高效地利用 IP 地址,并便于网络管理与安全控制。

  • IP 地址分为两部分,网络地址和主机号。
  • 将子网掩码于IP地址进行按位与(&)运算得到网络地址。
  • IPv4 中,常用十进制四组表示法表示子网掩码,例如 255.255.255.0。
  • 更为简短的形式叫做CIDR(Classless Inter-Domain Routing)表示法,它给出的是一个地址加上一个斜杠以及网络掩码的二进制表示法中“1”的位数,即网络号中和网络掩码相关的是哪些位。例如,192.168.1.0/24 表示的是一个前24位被用作网络号的IP地址,等价与子网掩码 255.255.255.0。
  • 一个子网中主机号最小的地址为网络地址,最大的地址为广播地址,两个地址不可被分配给主机。例如,192.168.0.0/20(子网掩码为 255.255.240.0)表示的子网中,192.168.0.0 为网络地址,192.168.15.255 为广播地址。

交换机

交换机(Switch)是一种工作在 物理层 的网络设备,主要用于在局域网(LAN)中转发数据包。
它工作在 物理层

  • 交换机通过 MAC 地址表 来识别并转发数据。
  • 当数据帧到达交换机时,交换机会读取其 源 MAC 地址 并更新表项。
  • 根据 目的 MAC 地址,交换机决定将数据帧转发到哪个端口,而不是像集线器一样进行广播。

路由器

路由器(Router) 是一种工作在 网络层 的网络设备,主要功能是负责在 不同网络之间 转发数据包。
它通过 IP 地址 来决定数据的转发路径,是实现互联网互联的重要设备。

  • 路由器接收到数据包后,会读取其中的 目的 IP 地址
  • 根据内置的 路由表(Routing Table),选择最佳路径将数据包转发到下一跳设备。
  • 若没有对应的路径,可以通过 默认网关动态路由协议(如 RIP、OSPF、BGP)来找到转发方式。

详细的路由过程

A 给 B 发送包

  1. 首先通过 B 的 IP 地址判断,A 和 B 在同一个子网
  2. 然后通过 ARP 获取 B 的 MAC 地址

    ARP 是一种网络协议,用于在 已知 IP 地址的情况下,获取其对应的 MAC 地址。它工作在 网络层和物理层之间,是 IPv4 网络通信中必不可少的协议。当一台主机要向同一局域网内的另一台主机发送数据时,需要知道目标设备的 MAC 地址。若 ARP 缓存表中没有记录,主机会广播一个 ARP 请求,目标设备收到后会回应 ARP 响应。

  3. A 将目标 IP 地址和目标 MAC 地址都填为 B 后发送出去
  4. 交换机1 收到包后根据 MAC 地址判断为 B 将包转发给 B

A 给 C 发送包

  1. 首先通过 C 的 IP 地址判断,A 和 C 不在同一个子网
  2. 然后通过 ARP 获取 A 的默认网关(即路由器1)的 MAC 地址
  3. A 将目标 IP 地址填为 C ,目标 MAC 地址填为 路由器1 后发出
  4. 路由器1 收到包后根据 IP 地址和路由表确定应该往交换机2方向发送
  5. 路由器1 通过 ARP 获取 C 的 MAC 地址
  6. 路由器1 将包的目标 MAC 地址填为 C 后发出
  7. 交换机2 收到包后根据 MAC 地址转发给 C

A 给 E 发送包

  1. 首先通过 E 的 IP 地址判断,A 和 C 不在同一个子网下
  2. 然后通过 ARP 获取 A 的默认网关(即路由器1)的 MAC 地址
  3. A 将目标 IP 地址填为 C ,目标 MAC 地址填为路由器1 后发出
  4. 路由器1 收到包后根据 IP 地址和路由表确定应该往路由器2 方向发送
  5. 路由器1 通过子网判段,E 不在它连接的子网内,目标 MAC 地址填为路由器后发出
  6. 路由器2 根据目标 IP 地址判断数据包是从内网发往公网的,此时会启用 NAT。路由器为该连接分配一个可用端口,并将数据包的源 IP 地址替换为其在公网中的 IP 地址,同时将源端口改为所分配的端口,再转发至公网。

    NAT(Network Address Translation),又称 IP 动态伪装,是一种在 IP 数据包通过路由器或防火墙时重写来源或目的 IP 地址或端口的技术。这种技术普遍应用于有多台主机,但只通过一个公有 IP 地址访问互联网的私有网络中。NAT 部署简便,并且保证了对现有 TCP/IP 协议栈的兼容性,因此在实际应用中得到了广泛采用。然而,NAT 也让主机之间的通信变得复杂,导致了通信效率的降低。

  7. 当 E 收到数据包并发送响应时,返回的数据包会沿着 NAT 映射的路径回到内网。

0x6 网络安全

非对称加密算法与数字签名

非对称加密(Asymmetric Encryption),也称为 公钥加密,是一类使用 一对密钥(公钥与私钥)来实现加密与解密的算法。
使用公钥加密的信息,只能由对应的私钥解密。使用私钥签名的信息,可以用对应的公钥验证

sequenceDiagram
    participant Sender as 发送方
    participant Receiver as 接收方

    Sender->>Sender: 对消息做哈希运算
    Sender->>Sender: 用私钥加密哈希值生成签名
    Sender->>Receiver: 发送 [消息 + 签名]

    Receiver->>Receiver: 对收到的消息做哈希运算
    Receiver->>Receiver: 用发送方公钥解密签名得到原哈希
    Receiver->>Receiver: 比较两者是否一致

X509 证书链示例

Google Trust Services R1 CA 证书

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
02:03:e5:93:6f:31:b0:13:49:88:6b:a2:17
Signature Algorithm: sha384WithRSAEncryption
Issuer: C=US, O=Google Trust Services LLC, CN=GTS Root R1
Validity
Not Before: Jun 22 00:00:00 2016 GMT
Not After : Jun 22 00:00:00 2036 GMT
Subject: C=US, O=Google Trust Services LLC, CN=GTS Root R1
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
00:b6:11:02:8b:1e:e3:a1:77:9b:3b:dc:bf:94:3e:
b7:95:a7:40:3c:a1:fd:82:f9:7d:32:06:82:71:f6:
f6:8c:7f:fb:e8:db:bc:6a:2e:97:97:a3:8c:4b:f9:
2b:f6:b1:f9:ce:84:1d:b1:f9:c5:97:de:ef:b9:f2:
a3:e9:bc:12:89:5e:a7:aa:52:ab:f8:23:27:cb:a4:
b1:9c:63:db:d7:99:7e:f0:0a:5e:eb:68:a6:f4:c6:
5a:47:0d:4d:10:33:e3:4e:b1:13:a3:c8:18:6c:4b:
ec:fc:09:90:df:9d:64:29:25:23:07:a1:b4:d2:3d:
2e:60:e0:cf:d2:09:87:bb:cd:48:f0:4d:c2:c2:7a:
88:8a:bb:ba:cf:59:19:d6:af:8f:b0:07:b0:9e:31:
f1:82:c1:c0:df:2e:a6:6d:6c:19:0e:b5:d8:7e:26:
1a:45:03:3d:b0:79:a4:94:28:ad:0f:7f:26:e5:a8:
08:fe:96:e8:3c:68:94:53:ee:83:3a:88:2b:15:96:
09:b2:e0:7a:8c:2e:75:d6:9c:eb:a7:56:64:8f:96:
4f:68:ae:3d:97:c2:84:8f:c0:bc:40:c0:0b:5c:bd:
f6:87:b3:35:6c:ac:18:50:7f:84:e0:4c:cd:92:d3:
20:e9:33:bc:52:99:af:32:b5:29:b3:25:2a:b4:48:
f9:72:e1:ca:64:f7:e6:82:10:8d:e8:9d:c2:8a:88:
fa:38:66:8a:fc:63:f9:01:f9:78:fd:7b:5c:77:fa:
76:87:fa:ec:df:b1:0e:79:95:57:b4:bd:26:ef:d6:
01:d1:eb:16:0a:bb:8e:0b:b5:c5:c5:8a:55:ab:d3:
ac:ea:91:4b:29:cc:19:a4:32:25:4e:2a:f1:65:44:
d0:02:ce:aa:ce:49:b4:ea:9f:7c:83:b0:40:7b:e7:
43:ab:a7:6c:a3:8f:7d:89:81:fa:4c:a5:ff:d5:8e:
c3:ce:4b:e0:b5:d8:b3:8e:45:cf:76:c0:ed:40:2b:
fd:53:0f:b0:a7:d5:3b:0d:b1:8a:a2:03:de:31:ad:
cc:77:ea:6f:7b:3e:d6:df:91:22:12:e6:be:fa:d8:
32:fc:10:63:14:51:72:de:5d:d6:16:93:bd:29:68:
33:ef:3a:66:ec:07:8a:26:df:13:d7:57:65:78:27:
de:5e:49:14:00:a2:00:7f:9a:a8:21:b6:a9:b1:95:
b0:a5:b9:0d:16:11:da:c7:6c:48:3c:40:e0:7e:0d:
5a:cd:56:3c:d1:97:05:b9:cb:4b:ed:39:4b:9c:c4:
3f:d2:55:13:6e:24:b0:d6:71:fa:f4:c1:ba:cc:ed:
1b:f5:fe:81:41:d8:00:98:3d:3a:c8:ae:7a:98:37:
18:05:95
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Subject Key Identifier:
E4:AF:2B:26:71:1A:2B:48:27:85:2F:52:66:2C:EF:F0:89:13:71:3E
Signature Algorithm: sha384WithRSAEncryption
Signature Value:
9f:aa:42:26:db:0b:9b:be:ff:1e:96:92:2e:3e:a2:65:4a:6a:
98:ba:22:cb:7d:c1:3a:d8:82:0a:06:c6:f6:a5:de:c0:4e:87:
66:79:a1:f9:a6:58:9c:aa:f9:b5:e6:60:e7:e0:e8:b1:1e:42:
41:33:0b:37:3d:ce:89:70:15:ca:b5:24:a8:cf:6b:b5:d2:40:
21:98:cf:22:34:cf:3b:c5:22:84:e0:c5:0e:8a:7c:5d:88:e4:
35:24:ce:9b:3e:1a:54:1e:6e:db:b2:87:a7:fc:f3:fa:81:55:
14:62:0a:59:a9:22:05:31:3e:82:d6:ee:db:57:34:bc:33:95:
d3:17:1b:e8:27:a2:8b:7b:4e:26:1a:7a:5a:64:b6:d1:ac:37:
f1:fd:a0:f3:38:ec:72:f0:11:75:9d:cb:34:52:8d:e6:76:6b:
17:c6:df:86:ab:27:8e:49:2b:75:66:81:10:21:a6:ea:3e:f4:
ae:25:ff:7c:15:de:ce:8c:25:3f:ca:62:70:0a:f7:2f:09:66:
07:c8:3f:1c:fc:f0:db:45:30:df:62:88:c1:b5:0f:9d:c3:9f:
4a:de:59:59:47:c5:87:22:36:e6:82:a7:ed:0a:b9:e2:07:a0:
8d:7b:7a:4a:3c:71:d2:e2:03:a1:1f:32:07:dd:1b:e4:42:ce:
0c:00:45:61:80:b5:0b:20:59:29:78:bd:f9:55:cb:63:c5:3c:
4c:f4:b6:ff:db:6a:5f:31:6b:99:9e:2c:c1:6b:50:a4:d7:e6:
18:14:bd:85:3f:67:ab:46:9f:a0:ff:42:a7:3a:7f:5c:cb:5d:
b0:70:1d:2b:34:f5:d4:76:09:0c:eb:78:4c:59:05:f3:33:42:
c3:61:15:10:1b:77:4d:ce:22:8c:d4:85:f2:45:7d:b7:53:ea:
ef:40:5a:94:0a:5c:20:5f:4e:40:5d:62:22:76:df:ff:ce:61:
bd:8c:23:78:d2:37:02:e0:8e:de:d1:11:37:89:f6:bf:ed:49:
07:62:ae:92:ec:40:1a:af:14:09:d9:d0:4e:b2:a2:f7:be:ee:
ee:d8:ff:dc:1a:2d:de:b8:36:71:e2:fc:79:b7:94:25:d1:48:
73:5b:a1:35:e7:b3:99:67:75:c1:19:3a:2b:47:4e:d3:42:8e:
fd:31:c8:16:66:da:d2:0c:3c:db:b3:8e:c9:a1:0d:80:0f:7b:
16:77:14:bf:ff:db:09:94:b2:93:bc:20:58:15:e9:db:71:43:
f3:de:10:c3:00:dc:a8:2a:95:b6:c2:d6:3f:90:6b:76:db:6c:
fe:8c:bc:f2:70:35:0c:dc:99:19:35:dc:d7:c8:46:63:d5:36:
71:ae:57:fb:b7:82:6d:dc

Google Trust Services WR2 证书

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
7f:f0:05:a0:7c:4c:de:d1:00:ad:9d:66:a5:10:7b:98
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=Google Trust Services LLC, CN=GTS Root R1
Validity
Not Before: Dec 13 09:00:00 2023 GMT
Not After : Feb 20 14:00:00 2029 GMT
Subject: C=US, O=Google Trust Services, CN=WR2
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:a9:ff:9c:7f:45:1e:70:a8:53:9f:ca:d9:e5:0d:
de:46:57:57:7d:bc:8f:9a:5a:ac:46:f1:84:9a:bb:
91:db:c9:fb:2f:01:fb:92:09:00:16:5e:a0:1c:f8:
c1:ab:f9:78:2f:4a:cc:d8:85:a2:d8:59:3c:0e:d3:
18:fb:b1:f5:24:0d:26:ee:b6:5b:64:76:7c:14:c7:
2f:7a:ce:a8:4c:b7:f4:d9:08:fc:df:87:23:35:20:
a8:e2:69:e2:8c:4e:3f:b1:59:fa:60:a2:1e:b3:c9:
20:53:19:82:ca:36:53:6d:60:4d:e9:00:91:fc:76:
8d:5c:08:0f:0a:c2:dc:f1:73:6b:c5:13:6e:0a:4f:
7a:c2:f2:02:1c:2e:b4:63:83:da:31:f6:2d:75:30:
b2:fb:ab:c2:6e:db:a9:c0:0e:b9:f9:67:d4:c3:25:
57:74:eb:05:b4:e9:8e:b5:de:28:cd:cc:7a:14:e4:
71:03:cb:4d:61:2e:61:57:c5:19:a9:0b:98:84:1a:
e8:79:29:d9:b2:8d:2f:ff:57:6a:66:e0:ce:ab:95:
a8:29:96:63:70:12:67:1e:3a:e1:db:b0:21:71:d7:
7c:9e:fd:aa:17:6e:fe:2b:fb:38:17:14:d1:66:a7:
af:9a:b5:70:cc:c8:63:81:3a:8c:c0:2a:a9:76:37:
ce:e3
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
X509v3 Subject Key Identifier:
DE:1B:1E:ED:79:15:D4:3E:37:24:C3:21:BB:EC:34:39:6D:42:B2:30
X509v3 Authority Key Identifier:
E4:AF:2B:26:71:1A:2B:48:27:85:2F:52:66:2C:EF:F0:89:13:71:3E
Authority Information Access:
CA Issuers - URI:http://i.pki.goog/r1.crt
X509v3 CRL Distribution Points:
Full Name:
URI:http://c.pki.goog/r/r1.crl

X509v3 Certificate Policies:
Policy: 2.23.140.1.2.1
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
45:75:8b:e5:1f:3b:44:13:96:1a:ab:58:f1:35:c9:6f:3d:d2:
d0:33:4a:86:33:ba:57:51:4f:ee:c4:34:da:16:12:4c:bf:13:
9f:0d:d4:54:e9:48:79:c0:30:3c:94:25:f2:1a:f4:ba:32:94:
b6:33:72:0b:85:ee:09:11:25:34:94:e1:6f:42:db:82:9b:7b:
7f:2a:9a:a9:ff:7f:a9:d2:de:4a:20:cb:b3:fb:03:03:b8:f8:
07:05:da:59:92:2f:18:46:98:ce:af:72:be:24:26:b1:1e:00:
4d:bd:08:ad:93:41:44:0a:bb:c7:d5:01:85:bf:93:57:e3:df:
74:12:53:0e:11:25:d3:9b:dc:de:cb:27:6e:b3:c2:b9:33:62:
39:c2:e0:35:e1:5b:a7:09:2e:19:cb:91:2a:76:5c:f1:df:ca:
23:84:40:a5:6f:ff:9a:41:e0:b5:ef:32:d1:85:ae:af:25:09:
f0:62:c5:6e:c2:c8:6e:32:fd:b8:da:e2:ce:4a:91:4a:f3:85:
55:4e:b1:75:d6:48:33:2f:6f:84:d9:12:5c:9f:d4:71:98:63:
25:8d:69:5c:0a:6b:7d:f2:41:bd:e8:bb:8f:e4:22:d7:9d:65:
45:e8:4c:0a:87:da:e9:60:66:88:0e:1f:c7:e1:4e:56:c5:76:
ff:b4:7a:57:69:f2:02:22:09:26:41:1d:da:74:a2:e5:29:f3:
c4:9a:e5:5d:d6:aa:7a:fd:e1:b7:2b:66:38:fb:e8:29:66:ba:
ef:a0:13:2f:f8:73:7e:f0:da:40:11:1c:5d:dd:8f:a6:fc:be:
db:be:56:f8:32:9c:1f:41:41:6d:7e:b6:c5:eb:c6:8b:36:b7:
17:8c:9d:cf:19:7a:34:9f:21:93:c4:7e:74:35:d2:aa:fd:4c:
6d:14:f5:c9:b0:79:5b:49:3c:f3:bf:17:48:e8:ef:9a:26:13:
0c:87:f2:73:d6:9c:c5:52:6b:63:f7:32:90:78:a9:6b:eb:5e:
d6:93:a1:bf:bc:18:3d:8b:59:f6:8a:c6:05:5e:52:18:e2:66:
e0:da:c1:dc:ad:5a:25:aa:f4:45:fc:f1:0b:78:a4:af:b0:f2:
73:a4:30:a8:34:c1:53:7f:42:96:e5:48:41:eb:90:46:0c:06:
dc:cb:92:c6:5e:f3:44:44:43:46:29:46:a0:a6:fc:b9:8e:39:
27:39:b1:5a:e2:b1:ad:fc:13:ff:8e:fc:26:e1:d4:fe:84:f1:
50:5a:8e:97:6b:2d:2a:79:fb:40:64:ea:f3:3d:bd:5b:e1:a0:
04:b0:97:48:1c:42:f5:ea:5a:1c:cd:26:c8:51:ff:14:99:67:
89:72:5f:1d:ec:ad:5a:dd

Google 域名证书

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
64:ab:a0:8b:b9:25:2d:64:12:d8:be:8b:96:7f:38:ab
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=Google Trust Services, CN=WR2
Validity
Not Before: Sep 8 08:34:53 2025 GMT
Not After : Dec 1 08:34:52 2025 GMT
Subject: CN=*.google.com
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:12:06:77:77:f6:5c:88:c7:0a:d3:02:70:b0:41:
77:e8:a3:cb:22:75:b1:8b:8f:92:df:51:13:f3:13:
76:17:69:f3:72:c2:f6:c4:b6:4c:c0:25:23:94:14:
1c:18:07:a5:8f:9b:82:a1:f8:ea:dd:9f:69:16:60:
16:97:53:64:aa
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Key Usage: critical
Digital Signature
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Subject Key Identifier:
86:54:1E:8E:99:B0:05:78:9E:A7:57:11:74:6A:9A:63:74:16:A7:53
X509v3 Authority Key Identifier:
DE:1B:1E:ED:79:15:D4:3E:37:24:C3:21:BB:EC:34:39:6D:42:B2:30
Authority Information Access:
OCSP - URI:http://o.pki.goog/wr2
CA Issuers - URI:http://i.pki.goog/wr2.crt
X509v3 Subject Alternative Name:
DNS:*.google.com, DNS:*.appengine.google.com, DNS:*.bdn.dev, DNS:*.origin-test.bdn.dev, DNS:*.cloud.google.com, DNS:*.crowdsource.google.com, DNS:*.datacompute.google.com, DNS:*.google.ca, DNS:*.google.cl, DNS:*.google.co.in, DNS:*.google.co.jp, DNS:*.google.co.uk, DNS:*.google.com.ar, DNS:*.google.com.au, DNS:*.google.com.br, DNS:*.google.com.co, DNS:*.google.com.mx, DNS:*.google.com.tr, DNS:*.google.com.vn, DNS:*.google.de, DNS:*.google.es, DNS:*.google.fr, DNS:*.google.hu, DNS:*.google.it, DNS:*.google.nl, DNS:*.google.pl, DNS:*.google.pt, DNS:*.googleapis.cn, DNS:*.googlevideo.com, DNS:*.gstatic.cn, DNS:*.gstatic-cn.com, DNS:googlecnapps.cn, DNS:*.googlecnapps.cn, DNS:googleapps-cn.com, DNS:*.googleapps-cn.com, DNS:gkecnapps.cn, DNS:*.gkecnapps.cn, DNS:googledownloads.cn, DNS:*.googledownloads.cn, DNS:recaptcha.net.cn, DNS:*.recaptcha.net.cn, DNS:recaptcha-cn.net, DNS:*.recaptcha-cn.net, DNS:widevine.cn, DNS:*.widevine.cn, DNS:ampproject.org.cn, DNS:*.ampproject.org.cn, DNS:ampproject.net.cn, DNS:*.ampproject.net.cn, DNS:google-analytics-cn.com, DNS:*.google-analytics-cn.com, DNS:googleadservices-cn.com, DNS:*.googleadservices-cn.com, DNS:googlevads-cn.com, DNS:*.googlevads-cn.com, DNS:googleapis-cn.com, DNS:*.googleapis-cn.com, DNS:googleoptimize-cn.com, DNS:*.googleoptimize-cn.com, DNS:doubleclick-cn.net, DNS:*.doubleclick-cn.net, DNS:*.fls.doubleclick-cn.net, DNS:*.g.doubleclick-cn.net, DNS:doubleclick.cn, DNS:*.doubleclick.cn, DNS:*.fls.doubleclick.cn, DNS:*.g.doubleclick.cn, DNS:dartsearch-cn.net, DNS:*.dartsearch-cn.net, DNS:googletraveladservices-cn.com, DNS:*.googletraveladservices-cn.com, DNS:googletagservices-cn.com, DNS:*.googletagservices-cn.com, DNS:googletagmanager-cn.com, DNS:*.googletagmanager-cn.com, DNS:googlesyndication-cn.com, DNS:*.googlesyndication-cn.com, DNS:*.safeframe.googlesyndication-cn.com, DNS:app-measurement-cn.com, DNS:*.app-measurement-cn.com, DNS:gvt1-cn.com, DNS:*.gvt1-cn.com, DNS:gvt2-cn.com, DNS:*.gvt2-cn.com, DNS:2mdn-cn.net, DNS:*.2mdn-cn.net, DNS:googleflights-cn.net, DNS:*.googleflights-cn.net, DNS:admob-cn.com, DNS:*.admob-cn.com, DNS:*.gemini.cloud.google.com, DNS:googlesandbox-cn.com, DNS:*.googlesandbox-cn.com, DNS:*.safenup.googlesandbox-cn.com, DNS:*.gstatic.com, DNS:*.metric.gstatic.com, DNS:*.gvt1.com, DNS:*.gcpcdn.gvt1.com, DNS:*.gvt2.com, DNS:*.gcp.gvt2.com, DNS:*.url.google.com, DNS:*.youtube-nocookie.com, DNS:*.ytimg.com, DNS:ai.android, DNS:android.com, DNS:*.android.com, DNS:*.flash.android.com, DNS:g.cn, DNS:*.g.cn, DNS:g.co, DNS:*.g.co, DNS:goo.gl, DNS:www.goo.gl, DNS:google-analytics.com, DNS:*.google-analytics.com, DNS:google.com, DNS:googlecommerce.com, DNS:*.googlecommerce.com, DNS:ggpht.cn, DNS:*.ggpht.cn, DNS:urchin.com, DNS:*.urchin.com, DNS:youtu.be, DNS:youtube.com, DNS:*.youtube.com, DNS:music.youtube.com, DNS:*.music.youtube.com, DNS:youtubeeducation.com, DNS:*.youtubeeducation.com, DNS:youtubekids.com, DNS:*.youtubekids.com, DNS:yt.be, DNS:*.yt.be, DNS:android.clients.google.com, DNS:*.android.google.cn, DNS:*.chrome.google.cn, DNS:*.developers.google.cn, DNS:*.aistudio.google.com
X509v3 Certificate Policies:
Policy: 2.23.140.1.2.1
X509v3 CRL Distribution Points:
Full Name:
URI:http://c.pki.goog/wr2/oBFYYahzgVI.crl

CT Precertificate SCTs:
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : CC:FB:0F:6A:85:71:09:65:FE:95:9B:53:CE:E9:B2:7C:
22:E9:85:5C:0D:97:8D:B6:A9:7E:54:C0:FE:4C:0D:B0
Timestamp : Sep 8 09:34:58.745 2025 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:44:02:20:15:C1:3B:7D:F1:F3:B7:C8:95:B0:C2:01:
ED:27:F4:3C:75:E9:AD:5A:B8:B9:A2:3C:DF:4A:FE:9D:
79:25:FF:58:02:20:09:E0:9D:52:99:84:4C:52:92:41:
CF:32:37:7E:D7:EF:05:5E:42:96:C1:43:33:DA:12:76:
B5:73:83:77:23:C1
Signed Certificate Timestamp:
Version : v1 (0x0)
Log ID : 12:F1:4E:34:BD:53:72:4C:84:06:19:C3:8F:3F:7A:13:
F8:E7:B5:62:87:88:9C:6D:30:05:84:EB:E5:86:26:3A
Timestamp : Sep 8 09:34:58.635 2025 GMT
Extensions: none
Signature : ecdsa-with-SHA256
30:44:02:20:2A:EB:BF:BA:40:70:1A:B2:94:6D:B2:5C:
05:AA:3C:C2:D4:47:46:41:B7:07:2F:89:5E:C5:0E:D5:
97:6A:46:C9:02:20:3C:A1:02:08:E2:4F:E7:00:B4:42:
5E:58:5D:11:B5:AA:15:A9:F9:AB:85:65:55:7B:8C:A6:
22:B7:FB:66:7D:39
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
60:56:a7:3d:11:c5:3c:03:f7:4a:59:35:7d:48:79:bb:f8:58:
f0:10:9d:95:71:3f:f0:29:89:ca:8b:01:22:68:19:50:62:99:
b3:7b:d0:77:6a:82:c2:68:f5:3f:df:90:de:6b:92:1a:ed:5a:
82:8b:69:2e:98:10:0c:be:43:ef:fa:75:2d:bc:a3:79:ad:34:
99:49:9f:23:df:eb:35:34:fc:c8:62:28:93:b6:c5:12:90:7b:
94:8f:b6:e6:e0:be:6a:01:dd:cd:d9:61:c6:6c:cd:0b:79:ca:
b8:93:65:4d:b6:a7:55:cb:80:ba:b3:03:4c:da:af:49:d6:e4:
60:ab:48:7e:56:59:06:2e:2b:b0:5f:2d:04:84:eb:ed:36:f4:
47:9a:3c:1b:79:ec:01:f8:09:59:dc:c3:41:c1:eb:6d:08:08:
fd:37:4b:02:cd:fb:d0:48:76:28:64:bd:88:ae:6c:d6:e3:02:
13:02:5e:76:e5:23:e4:95:44:52:54:12:28:86:f5:e5:b4:b2:
91:e7:f3:2a:f7:d4:19:a0:99:df:c0:9f:8c:34:b9:56:a3:9f:
4e:cb:85:7d:9a:60:25:c0:f5:85:6d:3c:d4:62:30:db:9b:60:
fb:34:dc:95:be:53:27:4e:02:65:57:f5:fa:d8:ea:bb:92:e3:
e4:a7:12:36

X509 证书体系

flowchart TD
    RootCA["根证书机构 (Root CA)"]
    IntermediateCA["中级证书机构 (Intermediate CA)"]
    EndEntity["终端实体 (服务器/用户证书)"]
    Client["客户端 (浏览器/应用)"]

    RootCA -->|签发证书| IntermediateCA
    IntermediateCA -->|签发证书| EndEntity
    EndEntity -->|提供证书给| Client
    Client -->|验证证书链 & 根证书可信| RootCA

    style RootCA fill:#f96,stroke:#333,stroke-width:1px
    style IntermediateCA fill:#fc9,stroke:#333,stroke-width:1px
    style EndEntity fill:#9cf,stroke:#333,stroke-width:1px
    style Client fill:#cfc,stroke:#333,stroke-width:1px

TLS 握手

sequenceDiagram
    participant C as Client
    participant S as Server

    C->>S: ClientHello (支持的协议版本、加密套件、随机数)
    S->>C: ServerHello (选择的协议版本、加密套件、随机数)
    S->>C: Certificate (服务器证书)
    S->>C: ServerHelloDone
    C->>S: ClientKeyExchange (预主密钥或公钥加密)
    C->>S: ChangeCipherSpec
    C->>S: Finished (握手摘要)
    S->>C: ChangeCipherSpec
    S->>C: Finished (握手摘要)

中间人攻击

sequenceDiagram
    participant Client as 客户端
    participant Attacker as 攻击者(中间人)
    participant Server as 真实服务器

    Client->>Attacker: 发起TLS握手 (请求example.com证书)
    Note over Attacker: 拦截请求<br>并伪造证书<br>(由恶意CA或本地根证书信任)
    Attacker->>Client: 返回伪造证书 (客户端验证通过)
    Note over Client: 客户端以为自己<br>在和真实服务器通信

    Client->>Attacker: 建立TLS会话 (与伪造证书)
    Attacker->>Server: 建立真实TLS会话 (使用真实证书)

    Client->>Attacker: 发送加密数据
    Attacker->>Attacker: 解密并篡改/窃听
    Attacker->>Server: 转发修改后的数据

    Server->>Attacker: 返回响应数据
    Attacker->>Attacker: 解密并修改
    Attacker->>Client: 转发伪造响应

    Note over Client,Server: 攻击者成功在双方之间解密并篡改数据

0x7 代理

应用层代理

sequenceDiagram
    participant App as 应用
    participant Proxy as 代理客户端
    participant ProxyServer as 代理服务器
    participant BlockedSite as 被墙网站

    App->>Proxy: 通过代理协议建立连接
    App->>Proxy: 通过代理客户端访问目标网站
    Proxy->>ProxyServer: 将请求流量封装并发送给代理服务器
    ProxyServer->>BlockedSite: 访问目标网站
    BlockedSite-->>ProxyServer: 返回响应内容
    ProxyServer-->>Proxy: 将响应流量封装并返回给代理客户端
    Proxy-->>App: 将响应返回给应用

应用层代理不需要任何高级权限就能实现代理,但需要应用支持代理协议

网络层代理

sequenceDiagram
    participant App as 应用
    participant Proxy as 代理客户端 (with Fake DNS)
    participant ProxyServer as 代理服务器
    participant TrueDNS as 真实 DNS 服务器
    participant BlockedSite as 被墙网站

    Note over App,Proxy: 客户端发起 DNS 查询
    App->>Proxy: 查询 example.com 的 DNS
    Proxy-->>App: 返回 Fake IP
    Note over App: 客户端以为得到了真实 IP
    App->>Proxy: 访问 Fake IP
    Proxy->>ProxyServer: 将请求流量封装并发送给代理服务器
    Note over ProxyServer: 代理服务器解析真实域名
    ProxyServer->>TrueDNS: DNS 查询 example.com
    TrueDNS-->>ProxyServer: 返回真实 IP
    ProxyServer->>BlockedSite: 访问真实 IP
    BlockedSite-->>ProxyServer: 返回响应
    ProxyServer-->>Proxy:  将响应流量封装并返回给代理
    Proxy-->>App: 将响应返回给应用
    Note over App: 客户端通过 Fake IP 访问到了被屏蔽网站

网络层代理能够让所有应用的流量经过代理,而无需应用自身支持代理协议。由于网络层代理需要修改系统网络设置,因此需要管理员权限。