敲开计算机的开端——浏览器的URL到页面响应并加载所做的处理(转)

  昨天看到一个博主的一篇译文名叫“从输入URL到页面加载完成的过程中发生了什么事情”。一开始我想到的无非就是浏览器发送请求(此过程中通过HTTP处理)到web服务器,然后web服务器解析http请求(spring在web.xml中的DispatchServlet中匹配路径,struts在通过web.xml去struts.xml里面匹配路径),然后Dispatch通过这个路径去找到处理器(controller或者action)在程序里做业务处理,处理完之后返回一个视图对象给页面(spring 是 ModelAndView()),页面把这些参数解析成view在页面上面展示。

  那么这篇文章是从操作系统上对 上述 内容做的操作的概述。

  转自原文地址http://blog.csdn.net/iaiti/article/details/28339145

  译文地址https://stackoverflow.com/questions/2092527/what-happens-when-you-type-in-a-url-in-browser

  若只是一个简单的HttpIPV4, 没有代理

  1.浏览器查询缓存,如果缓存存在跳到第9步。
  2.浏览器询问操作系统服务器的IP地址。
  3.操作系统做DNS查询,返回IP地址给浏览器。
  4.浏览器打开对服务器的TCP连接(如果是HTTPS协议的话会更复杂)。
  5.浏览器通过TCP连接发送HTTP请求。
  6.浏览器接收HTTP响应并且可能关掉TCP连接,或者是重新使用连接处理新请求。
  7.浏览器检查HTTP响应是否为一个重定向(3xx 结果状态码 ),一个验证请求(401),错误(4xx 5xx)等等,这些都是不同响应的正常处理(2xx).
  8.如果响应可缓存,将存入缓存。
  9.浏览器解码响应(例如:如果它是gzziped压缩)。
  10.浏览器决定如何处理这些响应(例如,它是HTML页面,一张图片,一段音乐)。
  11.浏览器展现响应,对未知类型还会弹出下载对话框。
posted @ 2017-12-15 13:32  nemobischon  阅读(114)  评论(0编辑  收藏  举报