(十)网络协议
1、http的状态码与常用方法
分类 1XX: 收到请求,需要请求者继续执⾏操作,⽐较少⽤
2XX: 请求成功,常⽤的 200
3XX: 重定向,浏览器在拿到服务器返回的这个状态码后会⾃动跳转到⼀个新的URL地址,这个地址可以从 响应的Location⾸部中获取;
好处:⽹站改版、域名迁移等,多个域名指向同个主站导流 必须记住: 301:永久性跳转,⽐如域名过期,换个域名 302:临时性跳转
4XX: 客服端出错,请求包含语法错误或者⽆法完成请求 必须记住:
400: 请求出错,⽐如语法协议 403: 没权限访问 404: 找不到这个路径对应的接⼝或者⽂件 405: 不允许此⽅法进⾏提交,Method not allowed,⽐如接⼝⼀定要POST⽅式,⽽你是⽤了GET
5XX: 服务端出错,服务器在处理请求的过程中发⽣了错误 必须记住:
500: 服务器内部报错了,完成不了这次请求 503: 服务器宕机
http1.0定义了三种:
GET: 向服务器获取资源,⽐如查询请求;
POST: 向服务器提交数据,比如登录提交请求;
Head: 和get类似,返回的响应中没有具体的内容,⽤于获取报头;
http1.1定义了六种:
PUT:⼀般是⽤于更新请求,全量更新;
PATCH:PUT⽅法的补充,部分更新;
DELETE:⽤于删除指定的资源;
OPTIONS: 获取服务器⽀持的HTTP请求⽅法,服务器性能、跨域检查等;
CONNECT: 作为跳板,让服务器代替⽤户去访问其它⽹⻚页,返回给⽤户,网页开发较少用到;
TRACE:回显服务器收到的请求,主要⽤于测试或诊断;
2、cookie与session
http协议无状态,无法识别发起者;通过cookie与session来识别,服务端取cookie中值来生成或修改session;采⽤redis替代session;
区别:cookie数据保存在客户端,session数据保存在服务端;cookie不是很安全,易泄露,需密⽂存储;Cookie⼤⼩和数量存储有限制,4K/4000字节左右;
localstorage:h5的,写到本地文件,重启浏览器依然在;
sessionStorage:重启浏览器就会丢失;
indexDB/webSql有些浏览器没有,所以一般不用;
3、JWT(JSON Web token,替代session)做登录解决方案
JWT:使用公钥密钥 以JSON形式进行通信的⽅法;
JWT格式组成 头部、负载、签名;header(描述加密算法)+payload(要加密的数据对象)+signature(对前两部分进行加密,生成token);一般存在cookie/localstorage/sessionStorage中;
好处:服务端解密token后,可直接使用token中的基本信息,不需要再次查库;token存在客户端,不占服务器资源;
坏处:token需要base64编码,所以必须避免敏感信息;服务端若不存,则有效期内一直有效,无法做失效处理;
4、浏览器输⼊url到看到结果的流程
1、解析url地址是否合法
2、检查浏览器是否有缓存, 如果有直接显示
3、在发送http请求前,需要域名解析(DNS解析),解析获取对应ip地址。
4、浏览器向服务器发起tcp链接,完成tcp三次握⼿
5、握⼿成功后,浏览器向服务器发送http请求
6、服务器收到处理的请求,将数据返回⾄浏览器
7、浏览器收到http响应。
8、浏览器解析响应。如果响应可以缓存,则存⼊缓存
9、浏览器进⾏⻚页⾯渲染
5、同源与跨域
同源策略:浏览器行为,检查当前tab页要执行的js代码是否同源,即来自于同一个域名;是浏览器最基本最核心的安全策略;(协议/域名/端口 均相同)
跨域:浏览器从一个网页访问另一个非同源资源;
解决跨域问题:Http响应头配置允许跨域,设置跨域名:response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));还有设置跨域方法、跨域携带cookie;
6、tcp三次握手建连、tcp四次挥手断连
连接同步请求syn/连接初始序号seq/ack确认/fin关闭请求
三次:防止延迟的syn请求生效;前两次不能带数据防攻击; 四次:确认两边都传完数据; 2倍等待时间:确认最后一个ack成功;
7、TCP与UDP区别
基于连接与无连接;
对系统资源的要求(TCP较多,UDP少);
UDP程序结构较简单;
流模式与数据报模式 ;
TCP保证数据正确性,UDP可能丢包;
TCP保证数据顺序,UDP不保证。
8、http与https区别
- HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
- 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
- HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
- HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。