OSI七层协议:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
TCP协议:三次握手(建立连接)和四次挥手(断开连接)
你能听到吗?
我能听到,你能听到吗?
我能听到
我要断开了
好,我还有一句话没说完
断开了
断开了
Http状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
200 OK 客户端请求成功
301 永久重定向
302 Found 临时性重定向
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
通信是以报文的形式
客户端请求(Request):请求报文 = 请求头 + 空行 + 请求数据
Accept: 客户端可以处理的数据格式
Cookie:服务端的之前给我们的Cookie
服务端响应(Response):响应报文 = 响应头 + 空行 + 响应数据
Status Code:响应状态码
ContentType:响应返回的类型 (文本,utf8)图片等等
SetCookie:服务端给我们的Cookie,要保存起来,下次带过去
Cookie 、Session、Token
都是用来做持久化处理的,目的就是让客户端和服务端相互认识。Http请求默认是不持
久的没有状态的,谁也不认识谁
Cookie: 是存放在客户端的信息,这个信息是来自于服务器返回的信息,
下次请求带过去,如果用户离开网站后,如果Cookie已过期一般是会被清楚的。如果
Cookie没过期下次访问网站还是会带过去。(相对危险)
Session: 是存放在服务器上面的客户端临时信息,用户离开网站是会被清除的。(相对
安全,耗资源)
Token:用户身份的验证,有点类似于 Cookie ,相对来说更安全,一般流程:
1 客户端像服务端申请 Token
2 服务端收到请求,会去验证用户信息,签发一个 Token 给客户端,自己保存 Token
3 客户端收到 Token 会保存起来,每次请求带上 Token
4 服务器收到其他请求,会去验证客户端的 Token , 如果成功返回数据,不成功啥都不给
Http缓存
Cache-Control(缓存策略):Public、private、no-cache、max-age 、no-store(不缓存)
Expires(缓存的过期策略):缓存数据有效的绝对时间,告诉客户端到了这个时间点(比照客户端时间点)后本地缓存就作废了,在这个时间点内客户端可以认为缓存数据有效,可直接从缓存中加载展示。如果有缓存并且过期了那么发起请求,那么服务端会给我们数据?(不一定会给)服务器的数据没有变动就不会给,状态码会变为 304 ,自己拿之前过期的缓存。
详细的解释可参考以下资料:
彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法