从输入baidu.com到得到网页的全过程?

尽可能详细地讲述一下从输入baidu.com到得到网页的全过程?


好的,面试官
其实呢,这个过程就包括了请求和响应的全过程了,
因为响应的路径是请求的逆过程,所以我就只介绍请求的完整过程吧,这个过程又可以细分为三个子过程:

  1. 请求从客户端发出
  2. 请求在网络中传输
  3. 经历服务端全链路请求
    接下来,我会详细描述一下这三个子过程:

第一,请求从客户端发出,从会经历一次从应用层到物理层的数据传输

在我们输入域名回车之后,浏览器会对 url 进行解析,并根据得到的请求协议、服务器域名以及路径path等信息生成 http 报文。这一步是在应用层上完成的。
因为应用层的下一层是传输层,tcp 报文里需要用到 源ip 和 目标ip,所以在将 http 报文下放到传输层之前需要先进行 DNS,域名解析。
域名解析完之后,便可以得到目的ip,传输层也就可以通过三次握手和服务端建立 tcp 连接。
传输层的数据会下放到网络层,生成ip报文,用于网络间传输
ip 报文会下放到 数据链路层,用于生成 MAC 报文,用于两点间传输
接着会到达物理层,在网卡处将数字信号转换为电信号,
至此,请求就发出了客户端,到达了浩瀚的网络世界。

第二,请求在网络中传输

这个过程,主要是会经历一些交换机、路由器之类的,最终请求会被路由到服务端。

第三,经历服务端全链路请求

这个主要要看服务端架构的设计了,不过的架构链路有所不同,
但是一般都会经历防火墙,网关,负载均衡器,最终服务器等;
在到达了服务器的时候,还会经历一次从物理层上传到应用层的过程,这个其实就是请求出客户端发出的逆过程嘛。


在收到客户端的请求之后,服务端会返回对应的响应数据,最终由浏览器进行渲染也就得到了我们可以看到的页面了。

你可能感兴趣的:(http,https,tcp/ip,后端,架构)