zoukankan      html  css  js  c++  java
  • (十)网络协议

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

  • 相关阅读:
    一些使用Android设备调试功能的注意事项(挖职位)
    Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; neste
    HIbernate java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
    applicationContext.xml 配置
    No setter found for property 'userDAO' in class 'com.ssh.service.impl.User1Service'
    structs 源码示例
    基于MyEclipse+9.0+++Tomcat+7.0的SSH+平台搭建
    struts2错误:The Struts dispatcher cannot be found.
    使用Struts2开发Java Web应用程序(目录)
    MyEclipse中导入Spring 4.0源码
  • 原文地址:https://www.cnblogs.com/huasky/p/14743869.html
Copyright © 2011-2022 走看看