浏览器根据输入的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连接建立以及交换机路由器等网络中间设备对报文的转发这些过程。
图片
图片
编程十万问,每天一问。关注我,每天学习一个编程小知识。