笔记介绍
这份笔记是《网络是怎样连接的》一书的核心框架版。内容严格按照书本章节整理,提炼每一章要解答的关键问题,并使用书中的知识点进行简洁、准确的回答。
笔记不包含多余的扩展和复杂格式,只保留最核心的知识点和流程,适合快速建立网络通信的整体知识框架,也可以作为后续深入精读的基础和索引。
后续我还会更新本书的深度精读版,对每一章的原理、细节和关键概念进行更详细的讲解。希望这份核心笔记能帮助大家更轻松、更系统地学习计算机网络。
第一章:浏览器生成消息
1. 浏览器解析网址的完整流程是怎样的?
当我们在浏览器输入网址并按下回车后,浏览器首先会对 URL 进行解析,把一长串地址拆分成计算机能理解的各个部分:
- 协议:http /https
- 域名:如 www.example.com
- 路径:如 /index.html
- 参数:如?id=1
解析完成后,浏览器会判断访问类型:
- 如果是网络地址(http/https),就进入网络访问流程:DNS 查询 → 建立连接 → 发送请求。
- 如果是本地文件,则直接打开文件,不经过网络。
简单说:浏览器先 “读懂网址”,再委托操作系统去联网。
2. HTTP 请求消息的实际数据结构与格式是什么?
HTTP 请求消息是浏览器发给服务器的 “正式信件”,结构固定、清晰,一共三部分:
请求行:
格式:方法 + URI + HTTP 版本示例: GET /index.html HTTP/1.1
请求头:
多行键值对,用来告诉服务器附加信息,例如:
- Host:主机名
- User-Agent:浏览器信息
- Accept:能接收的数据类型格式:字段名:
空行 + 消息体
- 必须有一个空行,分隔头部和内容。
- GET 一般没有消息体。
- POST 会在空行后放提交的数据。
完整格式:
请求行
头字段 1: 值
头字段 2: 值
(空行)
消息体
3. 浏览器向 DNS 服务器查询域名对应 IP 地址的具体机制是什么?
浏览器自己不直接发网络包,它只做一件事:调用操作系统提供的功能。
完整流程:
总结:浏览器只负责 “调用系统 API”,真正和 DNS 服务器通信的是操作系统。
4. 上万台 DNS 服务器通过何种接力方式完成 IP 地址的查询?
DNS 采用分层、递归、迭代的接力查询,像 “层层问路”。
先分清两个核心概念:
- 递归查询:帮我查到底,我只要最终答案。
- 迭代查询:我不直接给答案,我告诉你下一站找谁。
完整接力过程
① 本机 → 本地 DNS(递归查询)
-
操作系统向本地 DNS 发送请求:“请帮我查到 www.xxx.com 的 IP,我只要结果。”
-
本地 DNS 先查缓存,有就直接返回;没有就开始向上级问路。
② 本地 DNS → 根 DNS(迭代)
-
根服务器:我不知道具体 IP,但我知道 .com 在哪里,给你顶级域 DNS 地址。
③ 本地 DNS → 顶级域 DNS(迭代)
-
顶级域服务器:我不知道具体 IP,但我知道这个域名的权威 DNS 在哪里。
④ 本地 DNS → 权威 DNS(迭代)
-
权威 DNS:这是该域名真正的 IP,直接返回。
⑤ 本地 DNS → 本机(返回结果)
-
本地 DNS 缓存 IP,再把最终结果返回给操作系统和浏览器。
一句话总结:本机只发起递归,本地 DNS 负责跑腿迭代,根→顶级域→权威一层层接力指路,最后拿到 IP。
5. 浏览器将请求消息委托给操作系统发送至 Web 服务器的过程是怎样的?
浏览器不直接碰网卡、不直接发包,所有网络操作都委托给操作系统完成。
流程:
- 封装成 TCP 段
- 再封装成 IP 包
- 交给网卡驱动
- 通过网卡发送到网络
总结:浏览器只负责生成 HTTP 消息和调用 API,真正发包、建连接、走网络的全是操作系统。







