mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-11-06 03:54:10 +00:00
Update 计算机网络 - 应用层.md
补充 DNS 缓存投毒、HSTS 与 HTTP/2 在访问网页过程中的作用。
This commit is contained in:
@@ -55,7 +55,7 @@ DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大
|
||||
- 响应超过 UDP 报文的长度上限:DNS 规定通过 UDP 传输的报文不超过 512 字节(使用 EDNS 扩展后可以更大),超出时服务器返回截断的响应并置 TC 标志,客户端改用 TCP 重新查询;
|
||||
- 区域传送:主域名服务器把整个区域的数据传送给辅助域名服务器,称为 AXFR,使用 TCP;只传送变化部分的增量传送称为 IXFR,可以用 UDP,放不进一个 UDP 报文时同样改用 TCP。
|
||||
|
||||
DNS 报文默认不加密,也不验证来源,常见的攻击有两种:DNS 劫持指的是攻击者控制了用户使用的 DNS 服务器或路由器,把域名解析到自己的地址;DNS 污染指的是在查询途中抢先返回伪造的响应,解析器会接受先到达的那个。防范的方法:
|
||||
DNS 报文默认不加密,也不验证来源,常见的攻击有两种:DNS 劫持指的是攻击者控制了用户使用的 DNS 服务器或路由器,把域名解析到自己的地址;DNS 污染指的是在查询途中抢先返回伪造的响应,解析器会接受先到达的那个。如果递归解析器接受了伪造的记录并缓存下来,就造成了缓存投毒(DNS Cache Poisoning):记录过期或被清除之前,命中这条缓存的查询都会得到错误的地址。防范的方法:
|
||||
|
||||
- DNSSEC:权威服务器对记录签名,解析器验证签名后就能发现伪造的记录;
|
||||
- DNS over HTTPS(DoH)和 DNS over TLS(DoT):加密主机与解析器之间的查询,途中无法查看和篡改;
|
||||
@@ -145,8 +145,8 @@ IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删
|
||||
1. 浏览器解析 URL,得到协议 https、主机名 `www.example.com`、端口(省略时 https 为 443)和路径 /,各部分的含义见 [URL](HTTP.md#url),然后检查缓存,有未过期的缓存时直接使用,见 [缓存](HTTP.md#缓存);
|
||||
2. DNS 解析主机名 `www.example.com`,得到 IP 地址,路径和参数不参与解析;
|
||||
3. 与服务器进行 TCP 三次握手,HTTPS 还要进行 TLS 握手;
|
||||
4. 发送 HTTP 请求。请求通常先到达负载均衡或[反向代理](集群.md#3-反向代理服务器)(例如 Nginx),再转发给某台应用服务器,应用服务器查询缓存或数据库后生成响应。如果响应是重定向,例如只输入 baidu.com 时浏览器补上协议后访问,得到 301 和 `Location: https://www.baidu.com/`(见[附录 A3](#a3-省略协议时的重定向)),浏览器对新地址重新走一遍前面的步骤;
|
||||
5. 浏览器解析 HTML 构建 DOM 树,解析 CSS 构建 CSSOM,两者合成渲染树,再计算每个元素的位置和大小(布局),最后绘制到屏幕上。解析中遇到 CSS、JavaScript、图片等外部资源时另发请求,不带 async 或 defer 的普通脚本(type 不是 module)会暂停 HTML 的解析,直到脚本下载并执行完;
|
||||
4. 发送 HTTP 请求。请求通常先到达负载均衡或[反向代理](集群.md#3-反向代理服务器)(例如 Nginx),再转发给某台应用服务器,应用服务器查询缓存或数据库后生成响应。如果响应是重定向,例如只输入 baidu.com 时浏览器补上协议后访问,得到 301 和 `Location: https://www.baidu.com/`(见[附录 A3](#a3-省略协议时的重定向)),浏览器对新地址重新走一遍前面的步骤。域名在浏览器的 HSTS 记录或预加载列表中时,输入的 http 地址在浏览器内部就改为 https,不会发出这次明文请求,见 [HTTPS](HTTP.md#六https) 中关于 HSTS 的一段;
|
||||
5. 浏览器解析 HTML 构建 DOM 树,解析 CSS 构建 CSSOM,两者合成渲染树,再计算每个元素的位置和大小(布局),最后绘制到屏幕上。解析中遇到 CSS、JavaScript、图片等外部资源时另发请求(HTTP/2 下同一服务器上的资源可以在一个连接上并发请求,见 [HTTP/2.0](HTTP.md#八http20)),不带 async 或 defer 的普通脚本(type 不是 module)会暂停 HTML 的解析,直到脚本下载并执行完;
|
||||
6. 连接保持一段时间供后续请求复用,空闲后关闭,见 [短连接与长连接](HTTP.md#1-短连接与长连接)。
|
||||
|
||||
以下是访问该网址时各阶段的耗时(curl 实测,见[附录 A1](#a1-访问网页各阶段的耗时)):
|
||||
|
||||
Reference in New Issue
Block a user