互联网公司必备网络基础知识

从零开始理解网络是如何运作的——IP、DNS、TCP、HTTP、CDN……这些每天都在用的东西到底是什么。

专为非技术背景的同学设计 —— 不需要任何编程或运维基础。

TCP/IPHTTP/HTTPSDNS CDN负载均衡防火墙 TLS云网络
入门 — 知其然

1 什么是网络?互联网是怎么连起来的?

在讨论任何技术细节之前,我们先搞清楚一个最基本的问题:当你打开一个网页时,究竟发生了什么?你的电脑是怎么和千里之外的服务器"对话"的?

网络就是"设备之间的通信线路"

想象一下:你的手机、电脑、公司的服务器、微信的服务器、淘宝的服务器……这些都是设备。而网络,就是把这些设备连在一起的"通道"——有线的(光纤、网线)和无线的(Wi-Fi、4G/5G)。通过这些通道,设备之间可以互相发送数据。

你的设备 💻 电脑 📱 手机 📺 智能电视 🎮 游戏机 路由器 家庭网络中枢 运营商 电信/联通/移动 互联网 🖥️ 某数据中心 几千台服务器在里面 微信/淘宝/抖音的服务器 🗄️ 另一个数据中心 可能在另一个城市 甚至另一个国家 ☁️ 云服务平台 阿里云/腾讯云/AWS "租"服务器的地方
图:互联网就是一个巨大的"设备互联网络"——你的设备通过路由器→运营商→互联网,连接到世界各地的服务器

这其中有一个非常重要的角色:路由器(Router)。路由器就是网络的"交通指挥员",它的工作是决定数据包该往哪个方向走——就像路口的交通指示牌,告诉每个数据包"去北京的往左,去上海的往右"。

关键理解:互联网不是一个神秘的大云朵,而是由成千上万台路由器通过光纤连接起来的物理网络。每台路由器都知道"邻居"在哪里,通过互相交换信息,逐渐形成了一张全球的"地图"。当你发送数据时,数据包就是在这张"地图"上一跳一跳地到达目的地的。

2 IP地址:每台设备的"门牌号"

在网络上,每台设备都需要一个唯一的地址才能被找到。这个地址就是IP地址

IPv4:最常见的地址格式

IPv4地址长这样:192.168.1.100——四段数字,每段0到255。为什么是255?因为每段实际上是一个8位的二进制数(11111111 = 255),4段共32位,所以IPv4总共能表示约43亿个不同地址。

IPv4地址不够用了!43亿听起来很多,但全球有几十亿人和上百亿台设备。这就是为什么出现了NAT(网络地址转换)——让整个家庭/公司共享一个公网IP,内部用私有IP。也正因如此,IPv6(128位地址,几乎无限)被设计出来,但普及速度很慢。

公网IP vs 私有IP

公网IP私有IP
谁分配运营商(电信/联通/移动)你家路由器自动分配
全球唯一?是的,全球只有这一个不是,不同家庭可以重复使用
能从外网直接访问?可以不能(需要通过NAT转换)
典型例子123.45.67.89192.168.1.100
费用通常需要购买/租赁免费,路由器自带
你家网络 💻 笔记本 192.168.1.10 📱 手机 192.168.1.11 📡 路由器 公网IP: 123.45.67.89 ↑ 对外只看到一个公网IP,内部私有IP对外不可见 ↑
图:NAT(网络地址转换)——多台设备共享一个公网IP

3 域名和DNS:从名字找到地址

IP地址是一串数字,很难记。所以就有了域名(Domain Name)——比如baidu.com、taobao.com。而DNS(Domain Name System,域名系统)就是把域名翻译成IP地址的系统,相当于互联网的电话簿。

域名的结构

https://www.baidu.com .com 顶级域(TLD) baidu 二级域 www 子域 协议://子域.域名.顶级域
图:域名的层级结构,从右向左逐级精细

DNS查询过程

当你在浏览器输入baidu.com时,背后发生的事情:

  1. 浏览器先看自己的缓存——"我之前查过baidu.com吗?"如果有,直接用缓存结果
  2. 问操作系统的缓存——"你还记得baidu.com的IP吗?"
  3. 问本地DNS服务器(通常是你的路由器或运营商提供的)
  4. 本地DNS服务器帮你做"递归查询":先问根DNS→问.com的DNS→问baidu.com的权威DNS→拿到IP地址
  5. 浏览器拿到IP,开始建立连接
实际影响:DNS是每一次上网请求的第一步。如果DNS慢了,你所有网页都会慢。这就是为什么很多公司会部署自己的DNS服务器,或者使用公共DNS(如阿里云的223.5.5.5、腾讯的119.29.29.29、Google的8.8.8.8)来加速。

4 服务器和客户端:谁服务谁?

在网络的语境下,有两种基本角色:

🙋

客户端(Client)

发起请求的一方。你的浏览器、手机App、电脑上的微信,都是客户端。它的工作是"提问"——"给我这个网页""我要看这条消息"。

🖥️

服务端(Server)

响应请求的一方。淘宝的服务器、微信的服务器、百度搜索引擎的服务器,都是服务端。它的工作是"回答"——"这是你要的网页""这是你要的消息"。

这个"请求-响应"模式(Request-Response)是互联网通信的最基本模型——永远是客户端先发请求,服务器再回复。服务器不能主动给客户端发消息(除了一些高级技术如WebSocket,但基本原理如此)。

5 协议是什么?为什么需要协议?

协议(Protocol)就是通信双方约定的"对话规则"——数据用什么格式发、按什么顺序发、出现错误怎么处理。

打个比方:两个人打电话需要协议——"喂"表示开始通话,"你说完了吗"表示一个回合结束,"再见"表示通话结束。如果双方没有约定这些规则,通信就会混乱。

网络协议也是一样。互联网上有几十种协议,每种负责不同的事情,它们层层叠加,形成了一个"协议栈"

应用层:HTTP, HTTPS, DNS, WebSocket 传输层:TCP, UDP 网络层:IP 网络接口层:Wi-Fi, 以太网, 光纤 ← 处理网页/邮件/聊天内容 ← 保证数据可靠到达 ← 找到目标设备在哪 ← 实际的物理传输 每一层使用下一层提供的服务,同时为上一层提供服务
图:TCP/IP四层模型——互联网协议栈
分层的好处:每一层只做自己的事情,不需要关心其他层的细节。HTTP层只关心"网页内容怎么组织",不关心"数据怎么传输到对方"——那是TCP层的事。TCP层只关心"数据完整到达",不关心"走哪条路到对方"——那是IP层的事。这种分层设计让每一层可以独立演进——比如Wi-Fi从Wi-Fi 5升级到Wi-Fi 6,上面所有层完全不受影响。

6 带宽、延迟、丢包:网络的三大指标

在互联网公司,你几乎每天都会听到这三个词。它们衡量的是"网络好不好"

🚚

带宽(Bandwidth)

单位时间内能传多少数据,单位是 Mbps(兆比特每秒)或 Gbps。带宽越大,传得越快。就像水管越粗,水流越大。

家里的宽带 100Mbps = 每秒最多传 12.5MB 数据

⏱️

延迟(Latency)

数据从发送到接收需要多长时间,单位是 ms(毫秒,千分之一秒)。延迟越低,响应越快。就像快递需要几天送达。

本地机房延迟 1-5ms;同城 10-20ms;跨省 30-50ms;跨国 100-300ms

📦

丢包(Packet Loss)

数据包在路上丢失的比例。网络拥堵、设备故障、信号干扰都可能导致丢包。丢包率越高,通信越不可靠。

正常有线网络丢包率 < 0.1%;Wi-Fi 可能到 1-5%;卫星网络更高

重要区分:带宽和延迟是两回事。高带宽不代表低延迟——就像一辆大卡车(高带宽)可以在高速公路上开很远(低延迟),也可能在拥堵的城市里慢慢挪(高延迟)。对于网页浏览和在线会议来说,低延迟通常比高带宽更重要

入门总结

  • 网络 = 设备之间的通信线路,互联网是全球设备的互联
  • IP地址 = 每台设备的门牌号,公网IP全球唯一,私有IP局域网内使用
  • DNS = 把域名翻译成IP地址的系统
  • 客户端/服务端 = 请求方和响应方,互联网的基本角色分工
  • 协议栈 = 网络通信的分层规则体系,每层做自己的事
  • 带宽/延迟/丢包 = 衡量网络质量的三大指标

1 TCP:互联网的"可靠传输"基石

TCP(Transmission Control Protocol,传输控制协议)是互联网最重要的传输层协议。它保证数据完整、有序、不重复地从发送方到达接收方。

TCP的核心能力

能力什么意思怎么做到的
可靠传输发出去的数据,保证对方收到每个数据包都有编号(序列号),接收方收到后发"确认"(ACK)。没收到确认就重发
有序到达数据按发送顺序到达,不会乱序列号机制让接收方可以按正确顺序重新排列数据
流量控制发送方不会太快压垮接收方接收方告诉发送方"我的缓冲区还剩多少空间"(滑动窗口)
拥塞控制不会往网络里塞太多数据发送方根据丢包情况自动调整发送速度(慢启动、拥塞避免)

TCP vs UDP

TCP有个"兄弟"叫UDP(User Datagram Protocol,用户数据报协议)。它的理念完全相反——"发就发了,到不到我不管"

TCPUDP
连接需要先建立连接(三次握手)不需要连接,直接发
可靠性保证送达,自动重传不保证,丢了就丢了
速度较慢(有额外开销)快(没有额外开销)
典型用途网页、邮件、文件传输、聊天消息视频通话、直播、在线游戏、DNS查询
为什么视频通话用UDP?视频通话需要实时性——宁可偶尔花屏或卡一下(丢掉一个包),也不能因为等重传而画面延迟。如果丢了几个视频帧,你几乎注意不到;但如果延迟了半秒,对话就会很不自然。

2 HTTP/HTTPS:网页是怎么传输的

HTTP(HyperText Transfer Protocol,超文本传输协议)是Web的基础协议。你在浏览器里看到的每一个网页,本质上都是通过HTTP从服务器传过来的。

HTTP请求和响应

HTTP的工作模型极其简单——客户端发请求(Request),服务器回响应(Response)

浏览器(客户端) Chrome / Safari 请求 → GET /index.html HTTP/1.1 Host: www.baidu.com Accept: text/html 服务器 Nginx / Apache ← 响应 HTTP/1.1 200 OK Content-Type: text/html
图:HTTP的"请求-响应"模型

HTTP状态码

服务器返回的响应里有一个状态码,告诉你"请求结果如何":

范围含义常见例子
2xx 成功一切正常200 OK(请求成功)、201 Created(资源已创建)
3xx 重定向"你要的东西搬走了"301 永久搬走、302 临时搬走、304 没变,用缓存
4xx 客户端错误"你发的东西有问题"400 请求格式错、401 请先登录、403 你没权限、404 找不到
5xx 服务端错误"服务器自己出问题了"500 服务器内部崩了、502 上游服务器出错、503 服务暂时不可用、504 上游超时

HTTPS = HTTP + 加密

HTTP的数据是明文传输的——任何在中间环节的人(路由器、运营商、Wi-Fi提供者)都能看到你发了什么。HTTPS在HTTP的基础上加了一层TLS/SSL加密,把通信内容加密,这样中间人就只能看到"你在和谁通信"(IP和域名),但看不到"通信的具体内容"。

HTTPS防御了什么?1) 窃听——别人看不到你发的密码、银行卡号等敏感信息;2) 篡改——中间人无法在网页中注入广告或恶意代码;3) 冒充——你可以确认"你确实在访问真正的baidu.com",而不是一个伪造的网站。

3 端口:一台设备上的多个"服务窗口"

一台服务器上可能同时运行着几十个服务——网页服务、数据库服务、邮件服务、SSH远程管理……当数据包到达服务器时,它怎么知道这个包是给哪个服务的?答案就是端口(Port)

如果IP地址是"哪栋楼",端口就是"哪个房间号"。端口号范围是0-65535:

范围分类常见例子
0-1023知名端口80=HTTP, 443=HTTPS, 22=SSH, 3306=MySQL, 6379=Redis
1024-49151注册端口公司内部服务可以在这个范围里约定端口号
49152-65535临时端口你的浏览器连接服务器时,操作系统随机分配一个作为"源端口"
日常应用:当你看到"服务跑在8080端口"或"请确保443端口已开放",指的就是端口号。防火墙规则也常用端口来区分允许哪些流量——比如"只允许80和443端口的访问",意思就是只允许HTTP和HTTPS协议的流量进入。

4 CDN:让网站快起来的"分身术"

假如你的网站服务器在北京,一个广东的用户访问你的网站时,数据需要跨越几千公里。如果每个用户都从北京服务器获取数据,不仅慢,而且北京的服务器很容易被挤爆。

CDN(Content Delivery Network,内容分发网络)就是解决这个问题的——它把网站的静态内容(图片、CSS、JS、视频)提前复制到全球各地的CDN节点上,让每个用户从离自己最近的节点获取数据。

源站 北京服务器 广州节点 CDN缓存 上海节点 CDN缓存 成都节点 CDN缓存 海外节点 CDN缓存 内容同步/回源 👤 广东用户 → 访问广州节点(快!) 👤 上海用户 → 访问上海节点(快!) 👤 海外用户 → 访问海外节点(快!)
图:CDN的工作原理 —— 内容提前分发到各地节点,用户访问最近的节点
CDN不只加速,还能抗DDoS:如果黑客对你的网站发起DDoS攻击(用巨大流量压垮你的服务器),CDN的分布式节点可以帮你吸收和分散攻击流量,因为攻击流量会在CDN层被拦截和清洗,不会全部打到你的源站上。

5 负载均衡:把"客人"合理分配给"服务员"

当一个网站流量很大时,一台服务器扛不住——就像一家餐厅只有一个服务员,客人多了就得排队。解决方案是多部署几台服务器,然后在前端放一个负载均衡器(Load Balancer)——就像一个"门童",把进来的请求合理分配到多台后端服务器上。

👤 👤 👤 👤 👤 大量用户请求 负载均衡器 服务器 A 服务器 B 服务器 C 服务器 D 分配策略: · 轮询(一人一次) · 最少连接数 · 根据响应时间
图:负载均衡器将请求分配到多台服务器

常见的负载均衡工具有Nginx、HAProxy,以及云服务商提供的CLB/ALB(云负载均衡)。负载均衡器本身也会做健康检查——如果某台服务器挂了,它会自动跳过那台,把请求发给正常的服务器。

6 防火墙与网络安全基础

防火墙(Firewall)就是网络的一道"安检门"——它根据预设的规则,决定哪些流量可以通过,哪些被拦截

防火墙怎么工作?

防火墙规则通常基于"五元组"来判断:

  • 源IP:数据从哪来?(比如:只允许公司内网IP访问数据库)
  • 目标IP:数据要去哪?
  • 源端口 / 目标端口:是什么服务?(比如:只开放80和443端口)
  • 协议:TCP还是UDP?
  • 动作:放行(Allow)还是拒绝(Deny)?
安全原则——最小权限:一个好的防火墙规则是"默认全部拒绝,只开放必要的"。比如一台数据库服务器,应该只允许应用服务器的IP访问它的数据库端口(3306),拒绝其他所有来源。这就像公司大门——默认是锁着的,只有持工卡的人能进。

常见的网络安全威胁

攻击类型攻击方式防护思路
DDoS用海量流量把服务器压垮CDN分散 + 流量清洗 + 限流
SQL注入在输入框里塞恶意数据库命令参数化查询、输入校验
XSS在网页中注入恶意脚本输出编码、内容安全策略
中间人攻击在通信途中窃听或篡改数据HTTPS加密、证书验证

7 Token与身份认证:为什么登录一次就够了?

打开淘宝、刷微信、看钉钉——你只需要登录一次,后面几天甚至几周都不用再输入密码。这是怎么做到的?答案就是Token(令牌)

在讲Token之前,我们先思考一个问题:为什么需要"登录状态"?因为HTTP协议本身是"无状态"的——服务器每次收到请求,都不知道这个请求是谁发的、和上一个请求是不是同一个人。这就像一个餐厅服务员,每次你点一道菜,他都问"您是哪桌的来着?"

Session + Cookie:最传统的方案

这是最老牌、也最成熟的做法:登录成功后,服务器生成一个Session(会话)——在服务器内存或数据库里记一条"张三已登录"的记录,然后给客户端发一个Session ID——一串随机字符。客户端把这个Session ID存在Cookie(浏览器里的一种小块数据存储空间)里,之后每次请求浏览器自动把Cookie带过去,服务器根据Session ID找到对应的用户信息。

Session + Cookie 认证流程: ① 第一次:用户输入账号密码登录 ② 服务器验证密码正确 → 创建 Session: user_id=张三 ③ 返回 Session ID 给浏览器 Set-Cookie: SESSION_ID=abc123xyz ④ 之后每次请求,浏览器自动带上 Cookie: SESSION_ID=abc123xyz 服务器收到后根据 Session ID 查到"哦,这是张三",就无需再次输入密码
图:Session + Cookie 认证流程——服务器记状态,客户端存凭证

Session + Cookie 的优缺点:优点是简单成熟、服务器可以随时"踢掉"一个用户(删除Session即可)。缺点是服务器需要存储所有用户的Session——当用户量达到几百万时,Session存储就成了负担。而且Session ID 存在 Cookie 里,Cookie 绑定了域名,在跨域场景(比如前后端分离的App)就不太好用。

Token(令牌)认证:更现代的方案

为了解决 Session 方案的痛点,诞生了Token 认证。它的核心思想很简单:

  • 登录成功后,服务器生成一个 Token——就是长这样的一串字符:eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoi5byg5LiJIn0.xQ6f_8
  • 这个 Token 本身就是一张"身份凭证"——它里面包含了"我是谁、我有什么权限、Token什么时候过期"等信息
  • 服务器不需要存储这个 Token——它只需要验证 Token 上的签名,确认"这个 Token 确实是我签发的,没被篡改过"
  • 之后的每次请求,客户端把这个 Token 贴在请求头里发过去,服务器验证通过就识别出用户了
Token 认证流程(最常用的 JWT 方案): ① POST /login {user, password} ② 验证密码 → 签发Token token = 签名(用户信息+过期时间) ③ 客户端保存Token (localStorage / 内存) ———— 之后的每次请求 ———— ④ 发请求时带上Token Authorization: Bearer eyJhbGci... (放在HTTP请求头里) ⑤ 服务器验证Token签名 ✓ 签名有效 → 解析出用户信息 ✗ 签名无效/已过期 → 拒绝请求(401)
图:Token 认证流程——服务器签发Token后不需要存储,后续只验证签名

JWT:最主流的Token格式

JWT(JSON Web Token,读作"jot")是目前最主流的 Token 格式。一个 JWT 长这样,由三个部分组成,用点号分隔:

eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjEyMzQ1LCJyb2xlIjoiYWRtaW4iLCJleHAiOjE3MTYyMDU2MDB9.xQ6f_8KpW3mZ9L2vR7sY1aB4cD5eF6gH7iJ8kL9mN0 ← Header(头部)→ ← Payload(载荷)→ ← Signature(签名)→ 签名算法 + Token类型 {"alg":"HS256","typ":"JWT"} 用户信息 + 权限 + 过期时间 {"userId":12345,"role":"admin","exp":1716205600} 防篡改的数字签名 HMACSHA256(header.payload, 密钥) Header 和 Payload 只是 Base64 编码(不是加密!任何人都能解码看内容),签名保证不被篡改
图:JWT 的三段结构——头部、载荷、签名
重要安全提示:JWT 的 Payload(载荷)只是用 Base64 编码,不是加密——任何人都能用工具解码看到里面的内容。所以绝不要把密码、银行卡号等敏感信息放进 JWT。JWT 的安全性在于签名——如果攻击者篡改了载荷里的内容,签名就对不上了,服务器会直接拒绝。

Token 存哪里?Cookie vs localStorage vs 内存

存储位置优点缺点适用场景
Cookie 浏览器自动带、可设 HttpOnly 防JS读取(安全) 有域名限制、大小限制(4KB) 传统Web应用的Session ID
localStorage 容量大(5MB)、跨标签页共享、永久存储 JS可以读取(XSS攻击可能窃取Token) SPA单页应用保存JWT
内存(变量) 最安全(关页面就没了) 刷新页面就丢失,需要重新登录 高安全要求的场景

Refresh Token:"长期有效"的秘密

你可能有过这样的体验:关掉浏览器,第二天打开网页,还是登录状态。但Token通常有过期时间(比如15分钟)——这是怎么做到的?

双Token机制: Access Token(访问令牌) 有效期短(15分钟-2小时) 每次请求都带着它 Refresh Token(刷新令牌) 有效期长(7天-30天) 只在Access Token过期时用 Access Token过期 → 自动用Refresh Token换一个新的Access Token → 用户无感知 Refresh Token过期 → 真的需要重新输入密码了
图:双Token机制——短命的Access Token + 长命的Refresh Token,既安全又方便

这样设计的好处是:即使黑客截获了Access Token,它的有效期也很短,造成的损害有限。而Refresh Token只在"换新Token"时用一次,被截获的概率低得多。

OAuth:让第三方App"用你的身份"

生活中还有一个常见场景:你用"微信扫一扫"登录一个网站,或者你允许一个第三方App访问你的钉钉通讯录。这背后用的是OAuth 2.0——一个让用户授权第三方应用"代表你来访问某些数据"的协议。

OAuth 的本质是"你不把密码给第三方App,而是给它一张由你授权的临时通行证"。比如你想让一个日历App读取你的钉钉日程——不需要把你的钉钉密码告诉日历App,而是钉钉给你一个弹窗问"你是否允许日历App读取日程?",你点"同意"后,钉钉给日历App发一个Token,日历App用这个Token去读取你的日程。

四种Token小结:1) Session ID — 随机字符串,存在服务器,配Cookie使用;2) JWT — 自包含信息的Token,服务器无需存储,靠签名验证;3) Access Token + Refresh Token — 双Token机制,兼顾安全和便利;4) OAuth Token — 第三方授权时的Token,允许App代表用户操作。

中等阶段总结

  • TCP = 保证数据可靠到达的传输协议,核心是序列号+确认+重传
  • UDP = 不保证可靠但速度快,用于视频、直播、游戏
  • HTTP/HTTPS = Web的基础协议,HTTPS在HTTP上加了一层加密
  • 端口 = IP是"哪栋楼",端口是"哪个房间"
  • CDN = 把内容提前分发到各地,让用户就近访问
  • 负载均衡 = 把请求合理分配给多台服务器
  • 防火墙 = 网络的安检门,按规则放行或拦截流量
  • Token认证 = 登录后服务器发一个"令牌",之后每次请求带令牌就不需要再输密码;Session/Cookie是传统方案,JWT是目前最主流的Token格式,Refresh Token让"长期免登录"成为可能

1 TCP三次握手和四次挥手深度解析

在中级阶段我们知道TCP是"面向连接"的——通信前需要建立连接。这个建立连接的过程就叫三次握手(Three-Way Handshake)

三次握手:建立连接

客户端 服务器 状态: SYN_SENT ① SYN (seq=x) "你好,我想和你建立连接" 状态: SYN_RCVD ② SYN+ACK (seq=y, ack=x+1) "好的,我收到了,我也准备好了" 状态: ESTABLISHED ③ ACK (ack=y+1) "收到,我们开始传输数据吧" 连接建立!开始传输实际数据
图:TCP三次握手——之所以是三次而不是两次,是为了防止历史连接被错误建立

三次握手的核心原因是:网络可能延迟,旧的连接请求可能滞留在网络中延迟到达。如果是两次握手,一个滞后的旧SYN到达服务器后,服务器会错误地认为这是新连接请求并开始准备资源。三次握手通过最后的ACK确认,避免了这种情况。

四次挥手:关闭连接

关闭连接需要四次通信,因为TCP是全双工(两个方向独立传输)的——每个方向都需要独立关闭:

主动关闭方 被动关闭方 ① FIN "我没数据要发了" ② ACK "知道了" [被动方可能还有数据要发……] ③ FIN "我也没数据了" ④ ACK "收到,拜拜" 进入 TIME_WAIT 状态 等待 2MSL(约60秒)后彻底关闭 TIME_WAIT 的作用:确保最后一个 ACK 到达对方,防止旧连接数据干扰新连接
图:TCP四次挥手——因为全双工,每个方向都要独立关闭

2 TLS/SSL加密原理:HTTPS的"安全引擎"

HTTPS之所以安全,是因为它在HTTP下面加了一层TLS(Transport Layer Security,传输层安全协议)。TLS的核心工作就是在客户端和服务器之间建立一条加密通道

对称加密 vs 非对称加密

🔑

对称加密

加密和解密用同一把钥匙。速度极快(几百MB/秒),但问题是——怎么把这个钥匙安全地告诉对方?你总不能在公开场合喊"我们的密码是123456"。

例子:AES-256-GCM(目前最主流的对称加密算法)

🔐

非对称加密

加密和解密用不同的钥匙——公钥公开(可以加密,但不能解密),私钥保密(可以解密)。慢(比对称加密慢几百倍),但解决了"安全传递钥匙"的问题。

例子:RSA、ECDHE(椭圆曲线密钥交换)

TLS的精妙设计:两者结合

TLS握手阶段的流程:

  1. 用非对称加密来安全地协商出一个"临时会话密钥"(不需要事先知道对方是谁)
  2. 用对称加密来传输后续的所有实际数据(速度快)

这就像:用装甲车(非对称加密,慢但安全)把保险箱钥匙(会话密钥)送到对方手上,然后双方用这把钥匙开保险箱(对称加密,快),往里面放东西。

TLS还做了身份验证:通过数字证书证明"我真的是baidu.com"。证书由受信任的CA(证书颁发机构)签发,浏览器里预装了几十个根CA的证书。当你访问一个HTTPS网站时,浏览器会自动验证它的证书是否由这些受信任的CA签发、是否在有效期内、域名是否匹配。如果验证失败,浏览器会显示"不安全"的警告。

3 HTTP/2 和 HTTP/3

HTTP/1.1 是1999年发布的,用了20多年。但它有很多问题,所以后来有了HTTP/2和HTTP/3。

HTTP/1.1HTTP/2HTTP/3
发布年份199920152022
底层协议TCPTCPQUIC(基于UDP)
连接复用一个TCP连接一次只能处理一个请求多路复用,一个连接并行处理多个请求多路复用,且无队头阻塞
头部压缩无(每次都发完整头部)HPACK 压缩QPACK 压缩
加密可选虽然不是必须,但浏览器强制HTTPS内置加密(TLS 1.3)
连接迁移不支持不支持支持(Wi-Fi切4G不断连)
HTTP/3最大的创新——无队头阻塞:在HTTP/2中,如果多路复用中有一个数据包丢了,TCP层会要求重传这个包,导致这个连接上的所有数据流都被阻塞。HTTP/3基于QUIC(UDP之上的一套新协议),每个数据流独立——一个流丢包了,其他流不受影响。这在网络不稳定的场景(比如移动网络)下体验提升非常明显。

4 反向代理和Nginx

在中级阶段我们提到了负载均衡,它的核心工具就是反向代理(Reverse Proxy)

正向代理 vs 反向代理

正向代理代理的是客户端——帮客户端去访问外网(比如公司代理、翻墙工具)。反向代理代理的是服务端——帮服务器接收外部请求。两者的相同之处在于:都是"中间人",客户端不知道(或不关心)最终是谁在服务。

反向代理的工作流程: 用户 Nginx 应用服务器1 应用服务器2 应用服务器3 Nginx 做的不仅是分发请求,它还能: TLS终止 / 静态文件服务 / 缓存 / 限流 / URL重写 / 日志记录
图:Nginx 作为反向代理,接收外部请求并转发给后端服务器

Nginx能做的事远不止负载均衡——它还可以做TLS终止(在Nginx层解密HTTPS,后端服务器用明文HTTP,减轻后端压力)、静态文件服务限流缓存等。它是目前互联网公司最常用的Web服务器和反向代理软件。

5 云网络基础:VPC、子网、NAT网关

在互联网公司,你的服务大概率是跑在云上的(阿里云、腾讯云、AWS等)。理解云网络的基本概念,是与工程师沟通的基础。

VPC(虚拟私有云)—— 你在云上的"专属网络空间"

VPC(Virtual Private Cloud,虚拟私有云)就是在公有云上划出来的一块逻辑隔离的私有网络区域。你在VPC内部可以自由定义IP地址范围、划分子网(Subnet)、设置路由规则,同时与外界保持隔离。可以把它理解为"在云上租了一层或一栋楼,里面完全是你的私人空间"。

VPC (10.0.0.0/16) — 你的私有网络 公有子网 (Public Subnet) 10.0.1.0/24 Nginx / 负载均衡器 有公网IP,可以被外部访问 ← 经 NAT 网关访问外网 私有子网 (Private Subnet) 10.0.2.0/24 应用服务器 无公网IP 数据库 无公网IP 不能直接被外网访问(更安全)
图:典型的云网络VPC架构——公有子网放对外服务,私有子网放数据库等内部服务

关键组件

组件作用类比
VPC云上的私有网络空间你在云上"租的一栋楼"
子网(Subnet)VPC内部的网络分区楼里的"不同楼层"
NAT网关让私有子网中的服务器能访问外网(但不能被外网访问)内线电话可以打出去,但外面打不进来
安全组实例级别的防火墙规则每个房间的门禁卡
路由表决定子网间的流量怎么走楼内的"指路牌"

6 常见网络问题排查思路

当用户反馈"网站打不开了",作为产品经理,你不需要亲自排查,但了解排查思路能让你更高效地和工程师沟通:

第一步:确定问题范围

是所有用户都打不开,还是只有某个用户?是所有页面都打不开,还是某个特定页面?是第一次打不开还是之前也打不开?这些信息能帮工程师快速定位问题层次。

第二步:DNS是否正常?

用nslookup或dig命令检查域名能否解析到正确的IP。如果DNS解析不了,问题可能出在DNS服务商或域名配置上。

第三步:网络是否通?

用ping检查目标服务器是否可达。用traceroute(或tracert)查看数据包经过了哪些路由节点,在哪一跳断了。

第四步:端口是否开放?

用telnet或nc检查目标端口是否可达。ping通了但端口不通,可能是防火墙、安全组、或者服务没启动。

第五步:服务是否正常?

检查HTTP状态码——是4xx(客户端问题)还是5xx(服务端问题)?检查服务器负载、内存、磁盘是否正常。看最近的部署记录——是不是发了新版本导致的?

几个常用排查命令(了解即可,不用自己跑):ping(测连通性)→ nslookup(测DNS)→ curl -v(看HTTP交互全过程)→ telnet IP 端口(测端口是否通)。当你听到工程师说"ping不通""DNS解析有问题""端口被封了""502 Bad Gateway",现在你应该知道这些术语大概在说什么了。

7 微服务架构中的网络

现代互联网公司普遍使用微服务架构——把一个大的应用拆成很多个小的独立服务,每个服务负责一个具体的功能。那么这些服务之间怎么通信呢?

服务间通信方式

方式原理适用场景
HTTP/REST API服务A通过HTTP请求调用服务B的接口大多数同步调用场景
gRPCGoogle开发的高性能RPC框架,基于HTTP/2高性能、低延迟的服务间调用
消息队列服务A把消息发到队列,服务B从队列拿消息(异步)不需要即时回复的场景,如发邮件、数据处理
服务网格(Service Mesh)在每个服务旁边放一个"边车"代理,统一管理通信、安全、监控大型微服务集群的复杂治理

API网关

在微服务架构下,外部请求不会直接打到单个服务上,而是先经过一个API网关(API Gateway)。API网关做:身份验证、限流、路由转发、日志记录、协议转换。就像公司的前台——所有访客先到前台登记、验证身份,再由前台引导到对应的会议室。

8 互联网架构的"水多了加面"哲学

你可能会觉得:负载均衡就是"多放几台服务器",CDN就是"多放几个缓存节点",防火墙就是"多加一道门禁"。这些东西本质上不都是在"水多了加面,面多了加水"吗?

你说对了。互联网架构的核心哲学,就是在各种"不平衡"中寻找平衡。理解了这一点,你就抓住了所有技术决策的本质。

一切问题的根源:资源永远不够

任何一个互联网服务,永远面临四个维度的压力:

你的服务 一台服务器 ↑ 用户量增长(流量压力) ↑ 数据量增长(存储压力) ↓ 硬件故障(可用性压力) ↓ 网络延迟(地理压力)
图:一台服务器面临四个维度的压力,每个维度都需要对应的"加面"或"加水"策略

四大"和面"策略

面对这四种压力,互联网工程师的应对策略本质上就是"不够就加":

压力表现"加水""加面"
流量太大 服务器CPU飙到100%,响应越来越慢 水平扩展:多加几台服务器(负载均衡) 垂直扩展:换更好的服务器(加CPU/内存)
数据太多 数据库查询越来越慢,磁盘满了 分库分表:把数据分散到多个数据库 读写分离:一个库专门写,多个库专门读
用户太远 跨省跨国用户访问很慢 CDN + 多机房:在各地部署节点 专线:拉更快的网络线路
机器坏了 某台服务器宕机或硬盘报废 冗余 + 自动切换:多备几台,挂了自动切 高可用架构:异地多活、热备份

"面"和"水"的精妙之处在于"合适的比例"

纯粹"加水"(堆机器)有一个致命的问题:边际效益递减。从1台服务器加到2台,性能可能提升80%;从10台加到11台,性能只提升5%;从1000台加到1001台……几乎没区别了。更糟的是,机器越多,管理复杂度急剧上升——1000台机器的协调、监控、故障处理,不是100台的10倍,而是100倍。

"水多了加面"的真实案例:某电商平台在大促期间,系统被海量请求打垮。紧急加了200台服务器(加水),结果请求涌进来后,数据库扛不住(面不够),于是给数据库也扩容(加面)。接着发现缓存被击穿(水又多了),又紧急加缓存层(再加面)……就这样"水多了加面,面多了加水",折腾了一整晚才稳住。这个案例说明:系统的瓶颈是会"转移"的,一个地方补强了,压力就会传导到下一个薄弱环节。

负载均衡的四种经典策略——"和面的手法"

既然要多台服务器一起工作,那请求来了该分给谁?负载均衡器有不同的分配策略

🔄

轮询(Round Robin)

一人一次,轮流来。请求1→服务器A,请求2→服务器B,请求3→服务器C,请求4→服务器A……最简单的策略,适合所有服务器配置相同的场景。

⚖️

加权轮询(Weighted)

能力强的多干活。如果服务器A的配置是B的两倍,就设权重2:1——A处理2个请求,B处理1个。适合混合部署不同配置的机器。

📊

最少连接(Least Connections)

谁清闲发给谁。检查每台服务器当前正在处理的请求数,把新请求发给最闲的那台。适合请求处理时间不均衡的场景(有的请求快有的慢)。

🎯

一致性哈希(Consistent Hash)

同一个用户的请求发给同一台服务器。这样服务器可以把用户数据缓存在本地,不用每次都去数据库查。适合需要"粘性会话"的场景。

弹性伸缩(Auto Scaling)—— 自动"和面"

最理想的状态是:系统自己感知负载,自动加水加面。这就是云服务提供的弹性伸缩(Auto Scaling)能力:

  • 指标监控:持续监控 CPU 使用率、内存、请求延迟等
  • 触发规则:"当 CPU 超过 70% 持续 3 分钟,就加一台服务器"
  • 自动扩容:自动创建新服务器并加入负载均衡
  • 自动缩容:"当 CPU 低于 30% 持续 10 分钟,就减一台(省钱)"
理解了"水多了加面",你就理解了所有技术选型的本质:没有银弹(万能方案),只有对当下形势的权衡。负载均衡是"流量层面的和面",CDN是"地理层面的和面",数据库读写分离是"存储层面的和面",微服务拆分是"组织层面的和面"——本质都一样:找到瓶颈,然后在瓶颈处加资源或改结构。

进阶阶段总结

  • 三次握手/四次挥手 = TCP连接建立和关闭的机制,三次防旧连接,四次因全双工
  • TLS加密 = 非对称加密(安全协商密钥)+ 对称加密(快速传输数据)的结合
  • HTTP/2和HTTP/3 = 多路复用、无队头阻塞、连接迁移等新一代Web协议特性
  • Nginx反向代理 = 不仅是负载均衡,还能做TLS终止、缓存、限流等
  • 云网络 = VPC是私有网络空间,公有子网对外、私有子网对内,NAT网关通外网
  • 排查思路 = DNS→连通性→端口→服务,逐层排查
  • 微服务网络 = 服务间通过HTTP/gRPC/消息队列通信,API网关统一入口
  • "水多了加面" = 互联网架构的本质哲学——流量大就加服务器(负载均衡),数据多就分库,用户远就CDN,机器坏了就冗余。系统瓶颈会"转移",永远在动态平衡中

📖 网络关键概念详解百科

下面是30个核心网络概念的完整讲解,每一个都按"是什么 → 为什么重要 → 和什么有关 → 举个例子"展开。点击条目展开:

板块一:基础概念

1. IP地址 — 设备的"网络门牌号"

是什么:IP地址是网络中每台设备的唯一标识。IPv4由四段数字组成(如192.168.1.100),32位,可表示约43亿个地址。IPv6由八组十六进制数组成(如2001:db8::1),128位,几乎无限。

为什么重要:没有IP地址,数据包就找不到目标——就像寄信没有地址。它是网络通信最基础的概念。公网IP和私有IP的区分直接决定了"外网能否访问这台设备"。

举个例子:你在浏览器输入baidu.com,DNS把它翻译成110.242.68.66(百度服务器的公网IP),然后你的请求就发往这个地址。

2. DNS — 互联网的"电话簿"

是什么:DNS(Domain Name System,域名系统)是把域名翻译成IP地址的分布式数据库系统。它分级管理——从根DNS→顶级域DNS→权威DNS,逐级查询。

为什么重要:每次上网的第一个步骤就是DNS查询。DNS慢了,所有网页都慢。DNS错了(被劫持或污染),你就会被引导到错误的网站。

举个例子:DNS就像电话号码簿——你查"张三"(域名),电话簿给你"138xxxx1234"(IP地址),然后你拨号过去。

3. 域名 — 给人看的"网站名字"

是什么:域名是IP地址的"人类可读版"。从右向左分级:.com是顶级域,baidu是二级域,www是子域。完整的域名还需要配置各种DNS记录——A记录指向IPv4,AAAA记录指向IPv6,CNAME做别名,MX指定邮件服务器。

举个例子:mail.baidu.com — .com(顶级域)、baidu(二级域)、mail(子域,表示邮件服务)。

4. 协议 — 通信的"对话规则"

是什么:协议是通信双方约定的数据格式和交互顺序。网络协议分四层——应用层(HTTP/DNS)、传输层(TCP/UDP)、网络层(IP)、网络接口层(Wi-Fi/以太网)。每一层使用下一层提供的服务,同时为上一层提供服务。

为什么重要:分层设计是网络最核心的架构思想。每一层可以独立演进(比如Wi-Fi 5升级到Wi-Fi 6不影响上面所有层),这保证了互联网的灵活性和可扩展性。

5. 路由器 — 网络的"交通指挥员"

是什么:路由器是连接不同网络、决定数据包转发路径的设备。它内部维护一张"路由表",记录了"去某个IP段该走哪个出口"。数据包在互联网上就是通过一个个路由器的"接力"到达目的地的。

举个例子:你从北京发数据到深圳的服务器,数据包可能经过:你家路由器→小区交换机→运营商骨干网→广州出口→深圳机房,沿途可能有十几个路由器参与了转发。

6. 带宽 — 网络的"水管粗细"

是什么:带宽是单位时间内能传输的最大数据量,单位是bps(比特每秒)。注意区分:100Mbps(兆比特每秒)≠ 100MB/s(兆字节每秒),1 Byte = 8 bits,所以100Mbps ≈ 12.5MB/s。

为什么重要:带宽决定了"能传多快"。视频网站需要高带宽(视频数据量大),聊天应用带宽需求低(文字数据量小)。

7. 延迟 — 网络的"反应速度"

是什么:延迟(Latency)是数据从发送到接收所需的时间,单位是ms(毫秒)。光速限制了物理延迟的下限——光在光纤中从北京到深圳大约需要10ms,到纽约大约需要70ms。实际延迟还包括路由器处理、排队等开销。

为什么重要:对于网页浏览和在线会议,低延迟比高带宽更重要。延迟超过100ms,视频通话就会不自然;超过200ms,在线游戏的体验就很差。

8. 丢包 — 数据的"路上遗失"

是什么:丢包(Packet Loss)是数据包在网络传输中丢失的比例。原因包括:网络拥堵(路由器缓冲区满了就丢弃)、物理错误(信号干扰、网线坏了)、设备故障等。TCP会检测丢包并重传,UDP不会。

举个例子:Wi-Fi信号不好时,视频会议出现卡顿和马赛克——这就是丢包的表现。不是网速慢(带宽够),而是数据包在传输中丢了。

板块二:传输层

9. TCP — 可靠的"挂号信"

是什么:TCP(传输控制协议)是面向连接的可靠传输协议。通过序列号(每个字节编号)+ 确认(收到后回复ACK)+ 重传(超时未收到ACK则重发)+ 流量控制(滑动窗口)+ 拥塞控制(慢启动)等机制,保证数据完整有序到达。

为什么重要:互联网上绝大多数应用都基于TCP——网页(HTTP)、邮件、文件传输、远程登录。它是互联网可靠性的基石。

10. UDP — 快速的"明信片"

是什么:UDP(用户数据报协议)是无连接的不可靠传输协议——直接发包,不确认,不重传。优点是快(没有建立连接和确认的开销),代价是不可靠。

为什么重要:实时应用(视频通话、直播、在线游戏、VoIP)需要UDP的速度,不需要TCP的可靠性——丢几个视频帧几乎看不出来,但延迟半秒就很难受。

11. 三次握手 — TCP的"连接建立仪式"

是什么:三次握手是TCP建立连接的过程:①客户端发SYN→②服务器回SYN+ACK→③客户端回ACK。三次的原因是为了防止网络中滞留的历史连接请求被错误建立。

为什么重要:每次HTTP请求(在非keep-alive模式下)都要经过三次握手,这会增加约1个RTT(往返时间)的延迟。这就是为什么持久连接(keep-alive)和多路复用(HTTP/2)能显著提升性能。

12. 端口 — 一台设备上的"多个窗口"

是什么:端口是传输层的16位标识符(0-65535),用于区分一台设备上运行的不同网络服务。IP地址+端口 = 唯一标识一个网络进程。0-1023是知名端口(80=HTTP, 443=HTTPS, 22=SSH),1024-49151是注册端口,49152-65535是临时端口。

举个例子:同一台服务器上,Nginx监听80端口处理HTTP请求,MySQL监听3306端口等待数据库查询,SSH监听22端口等待远程登录。一个数据包到达服务器后,根据目标端口号就知道该交给哪个程序。

板块三:应用层

13. HTTP — Web的"通用语言"

是什么:HTTP(超文本传输协议)是Web的基础协议,无状态、基于"请求-响应"模型。请求包含方法(GET/POST/PUT/DELETE)、URL、头部(Headers)、可选的请求体(Body)。响应包含状态码、头部、响应体。

为什么重要:你看到的每一个网页、App调用的每一个后端接口,绝大多数都使用HTTP。理解HTTP方法是GET(获取)还是POST(提交),理解状态码是4xx(你的问题)还是5xx(服务器的问题),是和工程师沟通的基础。

14. HTTPS — 加密的HTTP

是什么:HTTPS = HTTP + TLS加密。TLS在TCP连接建立后进行握手——协商加密算法、验证服务器证书、交换密钥,之后所有HTTP数据都被加密传输。TLS同时提供加密(防窃听)、完整性校验(防篡改)、身份认证(防冒充)。

为什么重要:没有HTTPS,你在网页上输入的密码、银行卡号都可能被中间人看到。现代浏览器会标记HTTP网站为"不安全"。微信小程序、支付宝等平台都强制要求HTTPS。

15. TLS/SSL — HTTPS的"安全引擎"

是什么:TLS(传输层安全协议)用非对称加密(RSA/ECDHE)安全协商出一个共享密钥,然后用对称加密(AES)加密后续所有数据。通过数字证书(由CA签发)验证服务器身份。

为什么重要:TLS是整个互联网安全的基础。理解它的基本设计——用慢但安全的非对称加密来协商session key,再用快的对称加密传输数据——是理解网络安全的起点。

16. WebSocket — 让服务器能"主动说话"

是什么:WebSocket是在单个TCP连接上实现全双工通信的协议。HTTP是"请求-响应"模式,服务器不能主动给客户端发消息。WebSocket建立连接后,双方可以随时互相发送数据。

为什么重要:聊天消息、股票行情、协作编辑、在线游戏的实时更新——这些场景都需要服务器主动推送数据。WebSocket让这些成为可能。

17. API — 程序之间的"对话方式"

是什么:API(应用程序编程接口)是不同软件组件之间通信的约定——定义了"怎么请求"和"返回什么"。Web API通常使用HTTP,数据格式常用JSON(一种键值对格式的数据表示法)。RESTful API是目前最主流的API设计风格。

为什么重要:前端App和后端服务器通过API通信,不同公司的服务通过API对接(比如你的网站调用微信支付API)。理解API就像理解不同部门之间的"工作交接单"格式。

板块四:架构与工程

18. CDN — 让内容"分身"到全球

是什么:CDN(内容分发网络)把网站的静态资源(图片、CSS、JS、视频)预先复制到分布在全球各地的边缘节点上。用户访问网站时,静态资源从离他最近的节点返回,而不是从源站(可能很远)。

为什么重要:CDN除了加速,还能抗DDoS攻击(攻击流量分散到多个CDN节点,不会集中到源站),节省带宽成本(大部分流量被CDN承担)。互联网公司几乎都在用CDN。

19. 负载均衡 — 把"客人"分给多个"服务员"

是什么:负载均衡器(如Nginx、HAProxy)将大量请求按一定策略(轮询、最少连接、IP哈希、加权轮询、一致性哈希……)分配给多台后端服务器。同时做健康检查——如果某台服务器宕机,自动跳过它。负载均衡是水平扩展的核心工具。

为什么重要:单台服务器有性能上限。负载均衡是互联网规模化的基础——没有它,任何日活超过几千的网站都无法运行。

19b. 水平扩展 vs 垂直扩展 — 互联网的"和面"哲学

是什么:当系统扛不住时,有两种扩容思路——垂直扩展(Scale Up):给现有的服务器加更多CPU、内存、硬盘(换更好的机器);水平扩展(Scale Out):多买几台普通服务器,通过负载均衡协同工作(加更多机器)。

为什么重要:垂直扩展有天花板(最贵的服务器也有上限),而且贵(一台顶级服务器的价格可能顶20台普通服务器)。水平扩展几乎无限(可以加几千台),而且可以用廉价机器实现高可靠性——任何一台坏了都不影响整体。互联网公司几乎全部选择水平扩展。

"水多了加面"的来源:水平扩展的本质就是"流量多了加服务器,服务器多了发现数据库扛不住就分库,数据库分多了发现网络成了瓶颈又加带宽……"永远在动态平衡中。

20. 反向代理 — 服务器的"前台"

是什么:反向代理(Reverse Proxy)接收客户端请求后转发给后端服务器,对客户端"假装"自己就是服务器。它可以做TLS终止、缓存、压缩、限流、安全防护。正向代理代理客户端(帮客户端隐藏身份访问),反向代理代理服务端(帮服务器接收、过滤、分发请求)。

为什么重要:反向代理是几乎所有Web架构的标配。Nginx是最流行的反向代理软件。它让后端服务器可以专注于业务逻辑,不用处理TLS、静态文件、限流等通用问题。

21. 防火墙 — 网络的"安检门"

是什么:防火墙根据预设规则(基于IP、端口、协议)决定放行还是拦截流量。常见类型包括网络防火墙(保护整个网段)、主机防火墙(保护单台机器,如iptables)、WAF(Web应用防火墙,专门防御HTTP层面的攻击)。

举个例子:数据库服务器(3306端口)的安全组规则设为"只允许来自应用服务器内网IP的访问,拒绝其他所有来源"——这就是防火墙在做的事。

22. VPC — 云上的"专属网络"

是什么:VPC(虚拟私有云)是公有云中一块逻辑隔离的私有网络区域。你可以自定义IP段、划分子网、配置路由表和网关。公有子网(有公网IP)放对外服务(如Nginx),私有子网(只有内网IP)放内部服务(如数据库),通过NAT网关让私有子网能访问外网。

为什么重要:在云时代,VPC是企业网络架构的基本单元。理解公有/私有子网的划分是理解安全架构的基础。

23. NAT — 让多台设备共用一个公网IP

是什么:NAT(网络地址转换)将内网私有IP转换为公网IP。当内网设备访问外网时,路由器把源IP从私有IP改为自己的公网IP并记录映射;收到回复时再改回来。这允许多台设备共享一个公网IP上网。但副作用是外网无法主动连接内网设备。

举个例子:你家三台手机、两台电脑、一台电视——都通过路由器的一个公网IP上网。对互联网来说,你家的所有流量都来自同一个公网IP,路由器在内部根据NAT表区分是哪个设备的流量。

24. DDoS — 用"人海战术"搞垮服务器

是什么:DDoS(分布式拒绝服务攻击)是攻击者控制大量"僵尸设备"(被黑的电脑、摄像头等)同时向目标服务器发请求,耗尽目标的带宽或计算资源,使正常用户无法访问。防护手段包括CDN分散流量、流量清洗(识别并过滤攻击流量)、黑洞路由(把攻击流量导入"无底洞")。

25. API网关 — 微服务的"统一入口"

是什么:API网关是微服务架构的统一入口层,所有外部请求先到API网关,由它负责身份认证、限流、路由转发、协议转换、日志记录,然后转发到对应的内部微服务。就像公司的前台——统一接待、验证身份、指引到正确的地方。

为什么重要:没有API网关,每个微服务都要自己处理认证、限流等通用逻辑,而且外部需要知道每个微服务的地址——这在安全和运维上都是灾难。

板块五:安全认证

26. Token(认证令牌)— "登录后的通行证"

是什么:Token 是用户登录成功后,服务器签发的一张数字"通行证"。客户端保存这个 Token,之后每次请求都带上它,服务器验证通过后就知道"这是谁"了。Token 本身包含了用户身份、权限、过期时间等信息,并通过数字签名防止被篡改。注意:这个Token和LLM大模型中的Token(词元)是完全不同的两个概念,只是在中文里共享了同一个英文词。

为什么重要:没有 Token,你每次刷新页面都要重新输入密码。Token 让"免密登录"成为可能。它是现代互联网应用(Web、App、小程序)身份认证的基础设施。

举个例子:你登录淘宝后关掉App,过了一小时打开,还是登录状态——这就是Token在工作。你的手机里存着淘宝的Token,每次打开App时它自动把Token发给服务器,服务器认出你,就不需要你重新输密码。

27. Session(会话)— 服务器记的"我见过你"

是什么:Session 是服务端记录用户状态的机制。用户登录成功后,服务器在内存或数据库里创建一条记录:"Session ID = abc123,对应的用户 = 张三,登录时间 = 14:30"。客户端只需记住 Session ID(通常通过 Cookie 发送),服务器根据 Session ID 查到对应的用户信息。

为什么重要:Session 是最传统的认证方案,至今仍在大量使用。它的一个独特优势是——服务器可以随时"销毁"一个Session(比如管理员强制踢掉某个用户),因为Session数据存在服务端。

和 Token 的区别:Session 的状态存在服务器端(服务器要维护Session表),Token(如JWT)的状态存在客户端(Token本身就自包含用户信息)。Session 像"存折"——余额信息存在银行(服务器),你手里只有一个账号;Token 像"钞票"——面值信息印刷在钞票上(Token本身包含金额),银行不需要查记录。

28. Cookie — 浏览器里的小"记事本"

是什么:Cookie 是浏览器本地存储的一小块数据(最大4KB),由服务器通过 Set-Cookie 响应头设置,浏览器会自动保存并在后续请求中自动附带。每个 Cookie 绑定一个域名(如只有 baidu.com 能读取 baidu.com 的 Cookie)。可以设置过期时间(Expires)和访问限制(HttpOnly禁止JS读取、Secure只在HTTPS下传输)。

为什么重要:Cookie 是 HTTP"无状态"问题的传统解决方案——它让服务器能给不同的请求"关联到同一个人"。即使你不懂技术,Cookie 也每天影响着你——"记住密码"、购物车、"猜你喜欢"背后都有 Cookie 的影子。

举个例子:你访问淘宝时,浏览器自动把 Cookie(里面有你上次登录时保存的 Session ID)发给服务器,服务器认出你,首页就显示出"张三,你好"和你最近的浏览记录——这一切在几毫秒内完成,而你什么都感觉不到。

29. JWT(JSON Web Token)— 最主流的 Token 格式

是什么:JWT(读作"jot")是目前最主流的 Token 格式。由三段 Base64 编码的字符串用点号连接:Header(头部,说明签名算法)+ Payload(载荷,包含用户信息、权限、过期时间)+ Signature(签名,用密钥对前两段计算得出)。服务器收到 JWT 后用密钥验签——签名对上就是真的,对不上就是假的。

为什么重要:JWT 是无状态的——服务器不需要存储任何 Session 数据,只需要验证签名就能确认 Token 有效。这让它在分布式系统(多台服务器协同工作)和跨服务场景下优势明显。

安全提醒:JWT 的 Payload 是 Base64 编码,不是加密——任何人都能解码看到内容。所以绝不能把密码、银行卡号放进 JWT。安全性全靠签名——篡改了内容,签名就对不上。

30. OAuth 2.0 — "用微信登录"背后的协议

是什么:OAuth 2.0 是一套授权协议,让用户可以在不透露密码的情况下,授权第三方应用访问自己的数据。典型流程:你在一个网站点"用微信登录"→跳转到微信页面→微信问你"是否允许该网站获取你的头像和昵称?"→你点同意→微信给网站一个 Token→网站用这个 Token 获取你的头像和昵称。整个过程,你的微信密码从未离开过微信。

为什么重要:没有 OAuth,"用XX登录"、"允许XX访问你的通讯录"等功能都无法安全实现。OAuth 是互联网"互联互通"的安全基础。

📚 进一步学习资源

经典书籍

在线资源

☁️

Cloudflare Learning Center

Cloudflare 的学习中心,用通俗易懂的图文解释 CDN、DNS、DDoS、TLS 等概念。非常适合非技术背景。

🔗 cloudflare.com/learning

🎬

《How DNS Works》

一个可视化的 DNS 科普网站,用连环画的形式展示 DNS 查询的全过程。

🔗 howdns.works

🔐

《How HTTPS Works》

同样用连环画解释 HTTPS 和 TLS 的工作原理,生动有趣。

🔗 howhttps.works

📡

《The Illustrated TLS Connection》

TLS 1.3 每一步握手的可视化展示,能看到每一字节的含义。

🔗 tls13.ulfheim.net

给产品经理的参会建议:如果能熟练使用"DNS解析→TCP握手→TLS加密→HTTP请求→反向代理→负载均衡→后端处理→CDN回源"这条链路来描述一个网页请求的完整旅程,在技术大会上就足以让工程师刮目相看。