1、DNS---IP:浏览器根据域名解析IP地址
2、建立Tcp:浏览器与WEB服务器建立一个TCP连接 (tcp的三次握手)
3、发送http:浏览器给WEB服务器发送一个HTTP请求
4、响应http:服务器端响应HTTP请求,浏览器得到HTML代码
5、解析Html:浏览器解析HTML代码,并请求HTML代码中的资源
6、关闭Tcp:关闭TCP连接,浏览器对页面进行渲染呈现给用户
浏览器根据访问的域名找到其IP地址,过程如下:
1、浏览器缓存:首先搜索浏览器自身的DNS缓存(缓存的时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否是有域名对应的条目,而且没有过期,如果有则解析到此结束。
2、系统缓存:如果浏览器自身的缓存里面没有找到对应的条目,那么浏览器会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束。
3、路由器缓存:如果系统缓存也没有找到,则会向路由器发送查询请求。
4、ISP(互联网服务提供商) DNS缓存:如果在路由缓存也没找到,最后要查的是ISP缓存DNS的服务器。
Http请求:(4个部分组成)
一个HTTP请求报文包括
请求行(request line):(方法、地址、协议版本 )栗子:GET
/index.html HTTP/1.1
方法:get、put、post、delete等
地址:URL,统一资源定位符,组成:<协议>://<主机>:<端口>/<路径>
端口和路径有时可以省略(HTTP默认端口号是80)
协议版本:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1
请求头部(headers):
是为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。
空行(blank line):请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据。
请求数据(request body):请求数据不在GET方法中使用,而在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最长使用的请求头部是Cntent-Type和Content-Length。
HTTP响应报文:(4部分组成)
状态行(status line): 协议版本、状态码、状态码扫描。
其中协议版本与请求报文一致,状态码描述是对状态码的简单描述。
相应头部(headers):
空行(blank line):响应头部的最后是一个空行,,表示响应数据的开始。
响应数据(response body):用于存放需要返回给客户端的数据信息。
浏览器解析HTML代码,并请求HTML代码中的资源
浏览器拿到HTML文件后,开始解析HTML代码,遇到静态资源时,就向服务器端去请求下载。
关闭TCP连接,浏览器对页面进行渲染呈现给用户
浏览器利用自己内部的工作机制,把请求到的静态资源和HTML代码进行渲染,呈现给用户。