浏览器从输入URL到展示页面,经历了哪些过程?

系统 浏览器
浏览器输入URL到展示网页内容,需要经过浏览器解析URL、DNS解析域名IP地址、查找路由表确定出口网卡和源IP地址、ARP地址解析获取主机网关下一跳的MAC地址、TCP连接建立以及交换机路由器等网络中间设备对报文的转发这些过程。

浏览器根据输入的URL通过HTTP或者HTTPS协议发起对远端Web服务器的请求,Web服务器返回对应请求的数据给浏览器,然后浏览器将数据解释渲染并最终展示给用户。整个过程涉及到网络中各种协议的交互以及各种设备对报文的转发,主要流程有:

图片图片

1、浏览器进行URL解析和生成HTTP请求

浏览器首先对URL进行解析,确定要访问的Web服务器和文件名,然后生成要发送给Web服务器的请求信息。当然,在生成HTTP请求之前,浏览器还会查看本地缓存是否已经缓存有要请求的资源,如果有,就直接返回缓存资源显示出来。如果没有,才会继续进行后面的请求流程。

图片图片

图片图片

图片图片

图片图片

图片图片

2、生成TCP报文段,准备发起TCP连接

HTTP是基于TCP 协议传输的,在做完应用层HTTP请求的准备后,客户端主机开始进行TCP报文段头部的封装。

图片图片

图片图片

3、DNS解析域名得到服务器的IP地址

传输层TCP报文段组装好后,开始进入网络层进行IP数据报的组装,但是URL中请求服务器资源使用的是域名,而网络中标识服务器位置使用的是IP地址,所以先要通过DNS域名解析协议进行域名解析,先获取到服务器域名对应的IP地址。

图片图片

DNS进行域名解析的过程是,先查浏览器DNS缓存,再查hosts主机文件,最后查DNS服务器,由于DNS服务器采用的是层级结构,所以DNS查询采用的是递归迭代查询。

图片图片

图片图片

图片图片

4、IP路由寻址和生成IP数据报

传输层TCP处理完后,开始进行网络层IP数据报的处理。特别是对于多网卡客户端主机,访问服务器的IP数据报需要确定从哪个网卡发出去,所以需要进行路由寻址查找路由表确定报文发出去的网口,从而确定IP数据报的源IP地址。

图片图片

图片图片

图片图片

5、ARP请求下一跳网关MAC地址

IP数据报组装完成之后,需要进行以太网帧的封装,以太网帧头的源MAC就是报文发出网卡的MAC,而目的MAC就是路由表中指定的下一跳网关IP对应的MAC,这时候需要通过ARP地址解析协议来请求获取下一跳网关的MAC的地址,从而确定以太网帧头的目的MAC。

图片图片

图片图片

图片图片

6、报文经过网络发往WEB服务器

经过前面的各种处理,请求报文已经组装完成,现在可以从客户端主机网卡发送出去了,整个网络是经过大量的交换机和路由器互联的,报文会经过这些设备的转发最终到达Web服务器。

图片图片

图片图片

图片图片

7、服务器返回响应报文

服务器收到请求报文后,首先检查报文的目的MAC是否是自己网卡的MAC,目的IP是否是自己网卡的IP,然后查看传输层TCP协议的端口,确认是Web服务进程监听的端口,所以将请求报文交给Web服务进程进行处理。Web服务进程将请求的网页内容封装成响应报文,然后通过网卡发出去,响应报文经过网络中的交换机和路由器转发到达客户端主机,并最终通过客户端主机的浏览器将响应报文中的网页内容渲染展示出来。

图片图片

图片图片

整体上看,浏览器输入URL到展示网页内容,需要经过浏览器解析URL、DNS解析域名IP地址、查找路由表确定出口网卡和源IP地址、ARP地址解析获取主机网关下一跳的MAC地址、TCP连接建立以及交换机路由器等网络中间设备对报文的转发这些过程。

图片图片

图片图片

编程十万问,每天一问。关注我,每天学习一个编程小知识。

责任编辑:武晓燕 来源: 编程十万问
相关推荐

2018-11-19 16:10:30

浏览器urlhttp

2010-07-06 10:11:25

浏览器

2017-04-11 13:54:49

HTTPURLHTML

2022-01-10 08:50:13

URL前端页面

2017-03-29 15:50:09

AndroidApp框架

2017-09-22 13:24:20

2020-01-10 08:54:24

URLDNSTCP

2020-03-18 08:56:27

页面网址内容

2016-09-18 17:27:06

2018-09-14 14:20:43

人肉智能运维

2024-05-07 08:47:55

2018-04-27 14:55:53

WeburlDNS域名解析

2024-05-06 10:53:22

浏览器TCPHTTPS

2021-03-01 06:21:56

Chrome浏览器HTTPS

2023-01-14 16:11:27

浏览器URL回车

2015-06-12 10:03:05

QQ浏览器

2022-04-28 07:52:05

HTTP浏览器

2011-05-06 09:36:16

动态页面

2018-01-03 15:17:26

2024-11-15 16:27:58

函数结构存储
点赞
收藏

51CTO技术栈公众号