😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍
首先一次完整的 HTTP 请求要经过:建立连接、发送请求、接受响应、关闭连接过程
。当在浏览器输入www.baidu.com,整个网络过程发生了什么,这是经常被问到的问题。首先这块涉及了DNS域名解析相关内容。
DNS域名解析
DNS协议简介
DNS(Domain Name System)
是互联网中用于将域名转换为对应 IP 地址的服务。DNS 使用 UDP 协议的端口 53
进行通信,也可以使用 TCP 协议。它是一个分布式数据库系统,
DNS 如何解析IP地址
用户在浏览器输入 URL 后,
本地域名解析器查询:操作系统会首先检查本地 DNS 缓存中是否有与该域名相关的 IP 地址。如果缓存中存在,会直接返回对应的 IP 地址;否则,会继续进行查询。
本地 DNS 服务器查询:如果本地缓存中没有目标域名的 IP 地址,本地计算机会向配置的本地 DNS 服务器发起查询请求。
DNS 递归查询:本地 DNS 服务器会根据自身的缓存情况,如果没有目标域名的 IP 地址,它会依次向根域名服务器、顶级域名服务器和权威域名服务器发起递归查询,直到找到目标域名对应的 IP 地址。(在递归查询的过程中,域名解析器会逐级查询域名的权威服务器,获取域名对应的 IP 地址记录(A记录或AAAA记录))
获取目标服务器 IP 地址:权威域名服务器返回目标服务器的 IP 地址,本地 DNS 服务器将 IP
地址返回给浏览器。并在本地缓存中保存这个映射关系,以便将来更快地响应相同的查询。
DNS 的查询方式
-
递归查询(Recursive Query)
a. 客户端向本地 DNS 服务器发起查询请求。
b. 本地 DNS 服务器负责递归地向其他 DNS 服务器查询,直到找到目标域名的 IP 地址或查询失败。
c. 本地 DNS 服务器返回查询结果给客户端。 -
迭代查询(Iterative Query)
a. 客户端向本地 DNS 服务器发起查询请求。
b. 本地 DNS 服务器向根域名服务器发起查询请求,根域名服务器返回指向顶级域名服务器的地址。
c. 本地 DNS 服务器向顶级域名服务器发起查询请求,顶级域名服务器返回指向权威域名服务器的地址。
d. 本地 DNS 服务器向权威域名服务器发起查询请求,权威域名服务器返回目标域名的 IP 地址。
e. 本地 DNS 服务器返回查询结果给客户端。 -
追踪迭代查询(Iterative Query Tracing)
用于查看 DNS 查询过程中每一步的详细信息,包括每个 DNS 服务器的响应和转发情况。
小结
递归查询通常由本地 DNS 服务器负责处理,而迭代查询则是DNS系统中不同层级的服务器之间协作完成域名解析的一种方式。
输入URL后,整个网络发生了什么
详细步骤:
当你在浏览器中输入 www.baidu.com 并按下回车键时,浏览器将开始执行以下网络过程的详细步骤:
-
DNS解析过程。。。
-
建立 TCP 连接:浏览器通过目标服务器的 IP 地址建立 TCP 连接。
-
发送 HTTP 请求:浏览器向服务器发送 HTTP 请求,请求访问 URL 的页面。
-
服务器处理请求:服务器接收到请求后,处理并生成响应数据。
-
接收响应数据:服务器将生成的响应数据通过 TCP 连接发送给浏览器。
-
渲染页面:浏览器接收到响应数据,开始解析 HTML、CSS 和 JavaScript,并渲染页面。
-
关闭连接:页面加载完成后,浏览器和服务器之间的 TCP 连接被关闭。
总结
从输入域名到加载页面的整个网络过程,涉及了域名解析、建立 TCP 连接、发送 HTTP 请求、服务器处理请求、接收响应数据、页面渲染等环节。
It is never too late to learn. (活到老学到老)
学习永无止境。