(十)网络协议

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成功;

原文地址:https://www.cnblogs.com/huasky/p/14743869.html