第一步:输入网址
用户输入网址(baidu.com),即统一资源定位符(URL)。
第二步:DNS解析
浏览器查找baidu.com网站所在的服务器IP地址。(为什么用域名不直接用IP?因为域名比较好记,有语义作用。)
浏览器依次从浏览器缓存,系统缓存,路由器缓存,ISP DNS缓存中查找是否有该域名和对应的IP。如果都没有找到,则向根域名服务器查找域名及对应的IP,根域名服务器把请求转发到下一级,直到找到IP。
第三步:发送HTTP请求
HTTP报文是包裹在TCP报文中发送的,服务器端收到TCP报文时会解包提取出HTTP报文。HTTP是明文,而HTTPS对HTTP进行了加密。这里又涉及到三次握手,四次分手。
HTTP请求报文是由三部分组成: 请求行, 请求报头和请求正文。
第四步:服务器处理请求并返回HTTP报文
Web服务器接收用户的处理请求并交给网站,或者接受请求反向代理到其他web服务器。后台处理请求,封装成HTTP报文。服务器返回给浏览器的文本信息,通常HTML, CSS, JS, 图片等文件就放在这一部分。
第五步:网站处理
(MVC模型:模型model,视图views,控制器controller)
网站接受到用户的请求后,交给控制器处理,模型在数据库里查找数据并返回给控制器,控制器将数据传到视图模版上,最后组合成一个html,再发到浏览器。
第六步:浏览器处理
html字符串被浏览器接受后,被读取并解析。当解析到link标签后重新发送请求获取cs;当解析到script标签后重新发送请求获取js并执行代码;当解析到img标签后发送请求获取图片。
浏览器根据html和css计算得到渲染树,绘制到屏幕上;js将会被执行。
网友评论