目录
科普原理

常见网络协议一览:IP、TCP、UDP、DNS、HTTP、TLS、QUIC

一篇讲清上网最常用的七个协议:各自在哪一层、负责什么,配三张时序图——TCP 连接的一生、DNS 如何逐级查询、QUIC 为什么比 TCP + TLS 快。

最后更新:

协议就是通信双方事先约定好的「规矩」:消息长什么样、先说什么后说什么、出了错怎么办。上网最常打交道的有七个:IP 负责把数据送到正确的设备,TCP 和 UDP 负责交给正确的程序(一个可靠、一个快),DNS 把域名翻译成 IP,HTTP 用来取网页,TLS 负责加密,QUIC 则是把传输和加密合在一起的新一代协议。本文逐个介绍,并用三张时序图展示它们实际是怎么一步步工作的。

插图:左边快递员按顺序递送包裹、每件都要签收,掉了的重新送;右边骑车的人把传单撒向人群,飘走的不去追
  1. ① TCP:编号每段数据带序号,按顺序送达
  2. ② TCP:签收接收方回复确认(ACK)
  3. ③ TCP:重传丢了的数据段会重新发送
  4. ④ UDP:只管发不握手、不等确认,延迟更低
  5. ⑤ UDP:丢了就丢了不重传,适合视频通话、游戏

一张表看懂

协议所在层(TCP/IP)负责什么一句话比喻
IP网络层给设备编地址,把数据包一站站转发到目的地门牌号 + 快递分拣
TCP传输层可靠、按顺序地传输,丢了会重传挂号信,每件都要签收
UDP传输层只管发,不保证送达和顺序,延迟低撒传单
DNS应用层把域名翻译成 IP 地址电话簿
HTTP / HTTPS应用层浏览器和网站之间请求、返回网页点菜和上菜
TLS应用层(TCP 之上)加密传输内容,并验证网站身份装进上锁的信封
QUIC传输层(基于 UDP)自带加密的可靠传输,HTTP/3 的基础更快的挂号信

IP:给每台设备一个地址

IP(Internet Protocol) 是整个互联网的地基。每个数据包都带着源 IP 地址和目标 IP 地址,沿途的路由器只看目标地址,一站一站往前转发,直到送达。

  • IPv4:32 位,写成四段十进制数字,总共约 43 亿个地址,早在多年前就分配完了;
  • IPv6:128 位,写成八组十六进制数字,地址多到几乎用不完,正在逐步普及;
  • 私有地址与 NAT:家里的手机、电脑用的是只在局域网内有效的私有地址(常见的如以 192.168 开头的地址),出门上网时由路由器统一换成运营商分配的公网地址,这个过程叫 NAT(网络地址转换)。

IP 只负责「尽力送到」,不保证一定送到、也不保证顺序。这些问题交给上一层去解决。

TCP 与 UDP:可靠和速度二选一

传输层有两个主角,它们都用端口号区分同一台设备上的不同程序,但性格完全不同:

TCPUDP
连接先握手建立连接不需要,直接发
可靠性每个数据段编号、对方确认,丢了重传不确认、不重传,丢了就丢了
顺序保证按发送顺序交给程序不保证
速度握手和等待确认会带来额外延迟开销小、延迟低
典型用途网页、文件下载、邮件视频通话、在线游戏、直播、DNS 查询

TCP 的可靠是怎么做到的?看一条 TCP 连接从建立到关闭的全过程:

客户端 服务器 建立连接:三次握手 SYN:我想建立连接 1 SYN-ACK:收到,我也准备好了 2 ACK:好 3 传输数据:编号 + 确认 + 重传 数据段 1(第 1–1000 字节) 4 ACK:1000 字节之前都收到了 5 数据段 2(途中丢失) 6 等不到确认,超时 7 重传数据段 2 8 ACK:2000 字节之前都收到了 9 关闭连接:四次挥手 FIN:我这边发完了 10 ACK:知道了 11 FIN:我这边也发完了 12 ACK:好,再见 13
虚线表示途中丢失的数据段。发送方迟迟收不到确认,就会重传。
阶段步骤在做什么
三次握手①–③双方确认彼此都能收发,并交换各自的起始序号
传输数据④–⑤每段数据都有编号;接收方回复 ACK,告诉对方「这个编号之前的我都收到了」
丢包重传⑥–⑨数据段 2 在路上丢了,发送方一直等不到它的确认,超时后自动重传;收到后接收方再确认
四次挥手⑩–⑬双方各自说「我发完了」并得到对方确认,连接才彻底关闭。之所以是四次而不是三次,是因为一方发完时,另一方可能还有数据没发完

这套机制让 TCP 非常可靠,但代价是:一旦丢包,后面的数据都要等它重传完才能交给程序,网络质量差时就会明显卡顿。

DNS:把域名翻译成 IP 地址

DNS 是一个分布在全世界的「分级电话簿」,没有哪一台服务器知道所有域名的 IP,而是按层级分工:

  • 根服务器:知道 .com、.org、.cn 等顶级域归谁管;
  • 顶级域服务器:例如 .com 的服务器,知道 example.com 归哪台服务器管;
  • 权威服务器:由域名的主人设置,掌握这个域名真正的 IP 地址。

你的设备并不会自己挨个去问,而是把问题交给一台递归 DNS 服务器(通常是运营商或路由器提供的),由它代劳:

你的设备 递归 DNS 根服务器 .com 服务器 权威服务器 查 example.com 1 缓存里没有 2 它在哪? 3 去问 .com 4 example.com 在哪? 5 去问它的权威服务器 6 example.com 的 IP 是多少? 7 返回 IP 地址 8 按 TTL 缓存 9 返回 IP 地址 10
你的设备只问一次;逐级查询的工作都由递归 DNS 服务器代劳,结果会被缓存。
步骤在做什么
①你的设备向递归 DNS 发出一次查询,然后等结果
②递归 DNS 先查自己的缓存;有就直接跳到 ⑩,没有才往下问
③–④问根服务器,根服务器不知道具体答案,但告诉它「去问 .com 的服务器」
⑤–⑥问 .com 服务器,得到「去问 example.com 的权威服务器」
⑦–⑧问权威服务器,拿到真正的 IP 地址
⑨按网站设置的 TTL(存活时间)把结果缓存起来,之后别人再问就不用重新查
⑩把 IP 地址返回给你的设备

DNS 查询默认用 UDP、不加密,所以沿途的网络能看到你查了哪些域名,甚至可能返回错误的结果。这也是加密 DNS(DoH、DoT)出现的原因。

HTTP / HTTPS:取网页用的协议

HTTP 规定了浏览器怎么「点菜」、网站怎么「上菜」:请求里写明方法(GET 取、POST 提交)和地址,响应里带上状态码和内容。HTTPS 就是「HTTP + TLS」,在加密的通道里跑 HTTP。

版本跑在什么上面主要改进
HTTP/1.1TCP一条连接同一时间只能处理一个请求,网页资源多时要排队或开多条连接
HTTP/2TCP一条连接里可以同时传多个请求(多路复用),报头压缩
HTTP/3QUIC(UDP)解决 TCP 丢包时「一个卡住全部等」的问题,连接建立更快

TLS:给通信加密,并证明「你是你」

TLS 位于 TCP 之上、HTTP 之下,做两件事:

  1. 身份验证:网站出示由可信机构签发的证书,浏览器核对证书上的域名、有效期和签名,防止你连到冒充的网站;
  2. 加密:双方通过密钥交换算出一把只有彼此知道的会话密钥,之后的内容都用它加密。

TLS 握手的每一步在 打开一个网页时发生了什么 里有完整的时序图,这里不再重复。

QUIC:把传输和加密合二为一

QUIC 最初由 Google 设计,现在是 HTTP/3 的基础。它跑在 UDP 之上,自己实现了可靠传输,并且把 TLS 1.3 直接内置进来。最直观的好处是建立连接更快:

客户端 服务器 TCP + TLS 1.3:第 2 次往返后才能发请求 SYN 1 SYN-ACK 2 ACK + ClientHello 3 ServerHello + 证书 + Finished 4 Finished + HTTP 请求 5 QUIC:第 1 次往返后就能发请求 Initial:ClientHello 6 ServerHello + 证书 + Finished 7 Finished + HTTP 请求 8
粗线表示已加密的 HTTP 请求。TCP + TLS 要两次往返之后才能发出,QUIC 一次往返就够了。
发出第一个 HTTP 请求之前原因
TCP + TLS 1.3需要 2 次往返(①–④)先做 TCP 三次握手,再做 TLS 握手,两件事前后排队
QUIC只需要 1 次往返(⑥–⑦)连接和加密的握手合并在同一组消息里完成

在延迟 200 毫秒的跨境线路上,少一次往返就是少等 0.2 秒。QUIC 还有两个优点:

  • 一个请求丢包不会卡住其他请求:每个请求在 QUIC 里是独立的「流」,不像 TCP 那样一个丢包所有数据都得等;
  • 换网络不断线:手机从 Wi-Fi 切到移动数据,IP 地址变了,TCP 连接会断开,而 QUIC 用连接 ID 识别连接,可以无缝接上。

相关阅读

常见问题

打游戏、视频通话为什么多用 UDP?

这些场景更怕「慢」而不是「丢」。TCP 遇到丢包会停下来等重传,画面和声音就会卡住;UDP 不等,丢了一两个包最多是一瞬间的画质下降或杂音,整体更流畅。

IPv6 和 IPv4 有什么区别?

最主要的区别是地址长度:IPv4 是 32 位,总共约 43 亿个地址,早已不够用;IPv6 是 128 位,地址数量几乎用不完。现在两者并存,很多网络同时支持。

网站用了 HTTP/3,我需要做什么吗?

不需要。主流浏览器会自动和支持 HTTP/3 的网站协商使用,不支持时自动退回 HTTP/2 或 HTTP/1.1。

还没有安装穿山甲?

支持 iPhone / iPad、Mac、Windows 与 Android。新用户注册即送 7 天会员体验。

下载客户端
← 全部文章