浏览器:是安装在电脑里面的一个软件,能够将页面内容渲染出来呈现给用户查看,并让用户与网页进行交互。
常见的主流浏览器:
常见的主流浏览器有:Chrome、Safari、Firefox、Opera、Edge 等。
输入 URL,浏览器访问一个网页的过程:
- 在浏览器地址栏中输入网址,按下回车。
- 浏览器向 DNS 域名解析服务器发出解析域名的请求。
- DNS 域名解析服务器将域名解析为对应的 IP 地址,并返回给浏览器。
- 浏览器根据 IP 地址与目标服务器建立 TCP 连接。
- 浏览器发送请求报文给服务器 。
- 服务器接收并处理浏览器请求,返回响应报文。
- 浏览器接收响应报文,解析内容呈现给用户,并请求 HTML 代码中的其他资源(例如 JS、CSS、图片等)。
- 收发报文结束,释放 TCP 连接。
上述浏览器访问一个网页的过程中,不考虑浏览器有这个网页的资源缓存和 DNS 缓存的情况。
- 有资源缓存的话:就可以直接使用缓存资源或者只需要再向服务器确认一下资源是否过期可用即可。
- 有 DNS 缓存的话:浏览器向本地 DNS 服务器请求对该域名的解析,本地 DNS 服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求;本地 DNS 服务器中如果没有关于这个域名的解析结果的缓存,则迭代查询向整个 DNS 系统请求解析,获得应答后将结果反馈给浏览器。
通过浏览器访问某个网页,服务器会返回对应的配置好的 HTML 文件,浏览器将 HTML 文件下载完成后进行解析,解析的过程中发现有 link 元素、script 元素、image 元素、font 元素等,再向服务器请求 CSS 文件、JS 文件、图片资源、字体资源等。
域名解析过程:
有两种域名解析过程:
- 递归查询(比较少用):
- 主机最开始向本地域名服务器请求查询,如果本地域名查不到,本地域名服务器就要寻求根域名服务器的帮助。
- 如果根域名服务器无法解析完整域名,根域名服务器就要请求顶级域名服务器的帮助。
- 如果顶级域名服务器无法解析完整域名,顶级域名服务器就要继续请求权限域名服务器的帮助。
返回解析结果时也是按照上面的顺序,权限域名服务器返回解析结果给顶级域名服务器;顶级域名服务器返回解析结果给根域名服务器;根域名服务器返回解析结果给本地域名服务器;本地域名服务器返回解析结果给主机。
一个接着一个寻求另一个人的帮助。
- 迭代查询:
- 主机最开始向本地域名服务器请求查询,如果本地域名查不到,本地域名服务器就会寻求根域名服务器的帮助。
- 如果根域名服务器无法解析完整域名,根域名服务器就会告诉本地域名服务器应该接着去找哪个顶级域名服务器,本地域名服务器就要请求顶级域名服务器的帮助。
- 如果顶级域名服务器无法解析完整域名,顶级域名服务器就会告诉本地域名服务器应该接着去找哪个权限域名服务器,本地域名服务器就要继续请求权限域名服务器的帮助。
一直是本地域名服务器在寻求帮助。