通过浏览器请求一个域名IP

  1. 浏览器内部都有dns客户端,它先查询本地dns缓存中是否有该域名的IP,如果有就直接去访问该IP。如果没有,该dns客户端先要查找自己主机所设置的dns服务器,然后去该dns服务器去查询IP。
  2. 如果该dns服务器本地缓存中有该域名的A记录(域名与IP地址的对应记录),则直接返回给浏览器中的dns客户端。没有该域名的A记录,就通过递归的方式向上询问其他dns服务器,也许问到了根dns服务器才找到了答案。于是这条路上所有被询问过的dns服务器,都将此域名对应的A记录缓存到自己的cache中,以备下次再有相同域名查询时好直接返回。
  3. 浏览器中的dns客户端得到此域名的IP地址后,也将该域名和IP放在自己的缓存中,以备下次用户再键入统一域名时,避免再查一次IP。
  4. 浏览器开始通过网络用http协议访问该IP地址的80端口(默认是80端口,除非特别指定)。
  5. 一般情况下该IP对应的设备不是最终的Web服务器,很少有人把Web服务器直接暴露在公网。假设该IP对应的设备是台网关(一般是硬件路由设备),该网关检查本地缓存中是否有相关Web服务器的缓存,若有则直接将该http请求分配给缓存中的Web服务器。否则从服务器列表中重新分配一台Web服务器,将该http请求转发给该Web服务器处理。随后将该Web服务器的IP地址(一般是内网地址)和端口号缓存起来,以备下次该用户的请求到来时,依然给该Web服务器。有的网关可以识别用户cookie信息,从而可以将请求再次落到上一个请求的Web服务器上。
  6. Web服务器拿到请求后,如果是静态请求,先检查自己的缓存中是否有该页面的记录,否则直接从硬盘上取出页面,将其返回后,再存入本地静态缓存中。如果动态请求,先交给自己的cgi去处理。
  7. cgi拿到数据后,先检查自己的缓存系统,如memcache,如果缓存中没有,与数据库建立连接,向数据库发出请求。
  8. 数据库也是先检查自己的缓存,如没有结果集,则从表中检索到数据后返回,并将结果缓存起来。
  9. cgi拿到数据后,返回给Web服务器,并将数据缓存到memcache中。
  10. Web服务器拿到数据后,将数据返回给网关。由于是动态数据不需要缓存。
  11. 网关拿到数据后,直接返回给浏览器。
  12. 如果浏览器发现其中有静态数据,如图片,也将静态数据缓存到用户的internet临时目录。

    参考文献:《操作系统真象还原》,郑刚

浏览器发送请求到后端服务器再到浏览器的具体流程如下: 1. 用户在浏览器中输入 URL 地址或者点击页面上的链接。 2. 浏览器解析 URL 地址,获取服务器的主机名(例如:www.example.com)和端口号(默认为80)。 3. 浏览器通过 DNS(域名系统)将主机名解析为对应的 IP 地址。 4. 浏览器建立与服务器的 TCP(传输控制协议)连接。 5. 浏览器向服务器发送 HTTP(超文本传输协议)请求,包括请求方法(GET、POST等)、请求头(例如用户代理、Cookie等)和请求正文(例如表单数据)。 6. 服务器接收到请求后,根据请求的路径和方法,调用相应的处理程序(例如一个后端接口或者一个静态文件)。 7. 服务器处理完请求后,将响应结果封装成 HTTP 响应,包括状态码(例如200表示成功)、响应头(例如内容类型、缓存策略等)和响应正文(例如HTML、JSON等)。 8. 服务器将封装好的 HTTP 响应发送回浏览器。 9. 浏览器接收到响应后,根据响应头中的内容类型进行解析,并将响应正文渲染到页面上。 10. 如果响应中包含其他资源(例如图片、CSS、JavaScript文件等),浏览器会根据资源的 URL 发送额外的请求,重复上述流程,直到页面中的所有资源都加载完毕。 11. 浏览器关闭与服务器的 TCP 连接。 这是一个简化的描述,实际的流程可能会涉及更多细节和步骤,例如缓存、HTTPS 安全连接等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值