mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-31 11:05:36 +00:00
Update 计算机网络 - 应用层.md
域名改为代码格式,避免被识别为链接;调整两张配图的说明。
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 172 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 108 KiB |
@@ -27,7 +27,7 @@
|
||||
|
||||
DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据。
|
||||
|
||||
域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。例如 com 是顶级域名,example.com 是二级域名,www.example.com 是三级域名;完整的写法是 www.example.com.,最右边的点代表根。
|
||||
域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。例如 com 是顶级域名,example.com 是二级域名,www.example.com 是三级域名;完整的写法是 `www.example.com.`,最右边的点代表根。
|
||||
|
||||
以解析 www.example.com 为例:主机先查浏览器缓存、操作系统缓存和 hosts 文件,没有命中就向本地 DNS 服务器查询。本地 DNS 服务器依次询问根服务器、com 顶级域服务器和 example.com 的权威服务器,前两者只返回下一级服务器的地址,权威服务器返回最终的 IP 地址。
|
||||
|
||||
@@ -35,7 +35,7 @@ DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转
|
||||
|
||||
主机到本地 DNS 服务器是递归查询,主机只等最终结果;本地 DNS 服务器到其它服务器是迭代查询,由它自己一步步问下去。每一级的结果都按 TTL 缓存,所以大多数查询在本地 DNS 服务器甚至主机上就能得到结果。
|
||||
|
||||
TTL 是每条记录自带的缓存时间,单位为秒,由权威服务器给出,缓存中的记录每过一秒剩余时间减 1。例如把公共 DNS 223.5.5.5 作为本地 DNS 服务器,查询 www.jd.com(dig 实测,见[附录 A2](#a2-dns-的-ttl-与-cname)):
|
||||
TTL 是每条记录自带的缓存时间,单位为秒,由权威服务器给出,缓存中的记录每过一秒剩余时间减 1。例如把公共 DNS 223.5.5.5 作为本地 DNS 服务器,查询 `www.jd.com`(dig 实测,见[附录 A2](#a2-dns-的-ttl-与-cname)):
|
||||
|
||||
```text
|
||||
www.jd.com. 74 IN CNAME www.jd.com.gslb.qianxun.com.
|
||||
@@ -142,10 +142,10 @@ IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删
|
||||
|
||||
在浏览器中输入 https://www.example.com/ 并回车后,主要经过以下步骤:
|
||||
|
||||
1. 浏览器解析 URL,得到协议 https、主机名 www.example.com、端口(省略时 https 为 443)和路径 /,各部分的含义见 [URL](HTTP.md#url),然后检查缓存,有未过期的缓存时直接使用,见 [缓存](HTTP.md#缓存);
|
||||
2. DNS 解析主机名 www.example.com,得到 IP 地址,路径和参数不参与解析;
|
||||
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-省略协议时的重定向)),浏览器对新地址重新走一遍前面的步骤;
|
||||
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 的解析,直到脚本下载并执行完;
|
||||
6. 连接保持一段时间供后续请求复用,空闲后关闭,见 [短连接与长连接](HTTP.md#1-短连接与长连接)。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user