DNS解析
DNS目的:将域名解析成 IP 地址
DNS: 我们可以将其理解成一个黑盒【 但不要理解成一台服务器】,为了防止 单点故障 和 缓解域名服务器 的压力,所以有了 树形结构 的 分布式域名系统【数据库】。
DNS解析的过程:
1.查询浏览器缓存文件中是否存在,如果有,结束解析,否则转2
2. 浏览器 检查 操作系统host文件 是否存在 已解析过的结果,如果设置过的话,浏览器就会使用这个解析结果。
3. 如果此时还没有 解析成功, 就会请求 本地域名服务器【自己设置的DNS地址】,很大一部分域名解析服务到这里就结束了。
4. 如果还没有成功, 就会直接到 根域名服务器 ,请求解析。
5. 此时 根域名服务器 会返回一个 顶级域名服务器的地址【比如 .com】。
6. 本地域名服务器 会 继续向 返回的顶级域名服务器地址 请求解析【baidu.com】,返回 对应 权限域名服务器【也就是百度公司注册网址使用的域名服务器】 的 IP 地址
7. 本地域名服务器 向 权限域名服务器 请求 [www.baidu.com] 对应的IP地址,返回结果
8.本地域名服务器 缓存映射关系
9.本地域名服务器 将结果返回给 客户端,用户将其缓存到本地,至此 地址解析完成。
本地域名服务器 和 根域名服务器 之间采用的是 迭代查询,不是递归查询
TCP链接建立
三次握手
1.客户端 A发送 链接请求报文段, 客户端进入
(同步已发送状态)。
2.服务器B收到请求后,如果同意链接 向 A 发送确认,服务器端进入
(同步收到状态)
3.客户端 A 收到 B的确认之后,再次向 服务器端 发送确认,此时 客户端进入链接状态。 服务器端收到 A的确认之后,也进入链接建立状态。
HTTP链接建立
客户端发送 http 请求,服务器端响应 http请求。
浏览器获得 html 代码, 请求代码中的资源。
最后浏览器通过渲染,显示页面。
TCP 链接释放
四次握手
1. 客户端A 发送 链接释放 报文, 客户端A 进入
(终止等待状态一),
2. 服务器B 收到 A 的请求后,发送确认,服务器端进入
(关闭等待状态)【此时服务器可能还有数据要向 客户端发送】,客户端A 收到 服务器端B 的确认之后,进入
(终止等待状态二)
【单方向终止】
3.当服务器端B 发送完数据后, 向A发送 TCP 关闭连接请求,
4.客户端A 向 服务器端B 发送确认,连接释放。
参考博客:
1.https://blog.csdn.net/m0_37812513/article/details/78775629
2.https://www.cnblogs.com/Qing-840/p/9283367.html