- 输入url.
- 浏览器尝试解析域名得到响应的ip. 浏览器会依次在浏览器, OS, 路由器上查询DNS缓存, 如果找到就可以停止继续查询. 如果没有找到对应域名的DNS缓存, 会发起一个对DNS查询的递归搜索.
- 获得对应服务器的IP后, 浏览器尝试建立一个TCP连接.
- 连接建立好之后, 浏览器发起一个HTTP GET请求, header中的Content-Type为'text/html'.
- web server接到这个HTTP请求后, 会尝试将请求转换为响应, 这中间可能包含了其他业务逻辑. 5.1 如果web server配置了反向代理, web server会根据uri将此请求路由到响应的服务器, 等待其响应后再将对应的HTTP Response转发返回给浏览器.
- 浏览器拿到HTTP响应后, 检查其Status Code, Content-type, encoding等包含在header中的信息, 然后尝试从body中解析html.
- 浏览器解析完毕html的基本结构后, 根据情况会发送额外的HTTP请求去获取其它还需要的资源, 例如css, js以及图片.
从WireShark抓包来看, 访问www.vpon.com.tw时, 在第一条HTTP Response返回了200状态码后, 浏览器又通过额外的HTTP GET去获取了js, css以及图片等静态资源. 此外还发送了两条POST请求.
http://edusagar.com/articles/view/70/What-happens-when-you-type-a-URL-in-browser