目录
一、地址栏按下回车后会发送什么?
1.URL解析:
首先判断你输入的是一个合法的URL
还是一个待搜索的关键词,并且根据你输入的内容进行对应操作
URL
的解析第过程中的第一步,一个url
的结构解析如下:
2.DNS查询:
也就是将域名传到对应服务器进行查询获得其对应的IP
例如:访问www.baidu.com 时候将 www.baidu.com 发送到服务器 挨个查询后 从有该域名权限服务器返回其IP地址
3.TCP连接(三次握手)
- 在TCP/IP协议中,TCP协议提供可靠的连接bai服务,采用三次握手建立一个连接.
- 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
- 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
确认客户端、服务端能发能收
4.HTTP请求:
当建立tcp
连接之后,就可以在这基础上进行通信,浏览器发送 http
请求到目标服务器
请求的内容包括:
- 请求行
- 请求头
- 请求主体
1.请求方法:(增删改查(常用))
2.POST(携带请求体):新建数据
4.DELETE:删除数据
3.PUT(携带请求体)(完整数据覆盖)/PATCH(补丁:局部修改):更新数据
PUT居多,即使是局部修改都会新建一个完整数据去覆盖
1.GET:获取数据
get 和 post的区别
1.get请求获取数据 post请求提交数据
2.get请求的数据在地址栏中 POST请求在请求体里
3.get携带的数据有上限 POST理论上没有限制
还有其他不常用的三种其他请求方式
2.请求表头:
- Accept:客户端接受的数据类型
- Accepct-Encoding :能接收的压缩编码 (gzip 压缩算法(默认))
- Accept-Language:能接收的语言
- connection(连接):keep-alive(保持连接活跃直到所有页面资源加载完为止再4次挥手断开连接)
- content-length: 客户端发送的数据长度
- cookie:携带客户端用户信息
- host:访问的主机/ip名
- referer:来源(从哪里接入(访问)该网站,通常用于网站数据统计)
- user-agent:浏览器下信息(统计意义,统计来自什么浏览器)
- content-Type:客户端发送的实体数据格式(请求体的数据格式)(get请求通常无此字段)
- if-none-macth:(通过指纹判断)
数据指纹 通过数据指纹(E-tag)可以判断页面是否有更新 如果有更新则从服务端加载渲染新的html,如果没有则从缓存里加载页面(携带上次数据的指纹E-tag)
E-tag是唯一值
12.if-modified-since:
携带上次数据的最后更新时间(通过最一次更新时间判断)
通过数据的最后更新时间来判断是否需要服务端加载或本地缓存渲染
5、响应报文:
1..响应报文
1.状态码:
1开头:请求还在继续,一般看不到
2开头:请求成功
200:标准请求成功
201:创建成功 表示数据已经添加到数据库
203:服务器已成功处理了请求
3开头:重定向
301:永久重定向 浏览器会永久记录 只可能会出现在第一次访问时
302:临时重定向:跟业务逻辑关联,登录页与内容页跳转
304:数据未更新/修改(使用的是缓存的数据)
305:使用代理
4客户端错误
5服务端错误
2.消息报头(响应头)
1.content-type:text/html# 服务端给客户端的数据类型
2.content-length:数据长度
3.content-Encoding:服务端Content-Encoding从Accept-Encoding客户端 发送支持解压编码的列表中选一种编码发送给客户端
4.cache-control:
1 缓存时间-maxAge(3600) 一个小时内不刷新数据
2.旧版本 cache-cintrol-expires:时间(这段时间内不刷新/更新数据)
5.E-tag:数据指纹
客户端访问服务器,服务器会给一个E-tag
当客户端携带E-tag访问客户端时,比对E-tag是否修改
6.Last-Modiied:最后一次更新的时间
7.Access-control-Allow-Origin:xxx 允许那些前端跨域访问我
8.Date:响应时间
9.set-cookie:服务端写入客户端的cookie
10.server 服务器类型
响应报文后立马进行四次挥手
6.页面渲染
二、缓存机制:
正常操作:强制缓存有效,协商缓存有效
手动刷新:强制缓存失效,协商缓存有效
强制刷新:强制缓存无效,协商缓存无效
强缓存:
不用跟服务器进行通信,
直接使用本地缓存的资源
协商缓存:
首先,将所缓存资源的信息发送给服务器,
其次,让服务器判断资源是否已经更新了,若已更新,则返回200状态,到服务器请求更新后的资源;
若没有更新,则返回304状态,告诉浏览器可直接使用本地缓存的资源