HTTP详解

HTTP详解

1. HTTP常见的状态码有哪些

请添加图片描述

  1. 1XX:
  2. 2XX:
    1. 200 OK 成功状态码
    2. 204 NOT CONTENT 成功,但响应头没有BODY数据
    3. 206 Partial Content 是应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分,也是服务器处理成功的状态。
  3. 3XX:类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向
    1. 301 Moved Permanently 永久重定向
    2. 302 Found 临时重定向
    3. 304 Not Modified :告诉客户端可以继续使用缓存
  4. 4XX:客户端发送的报文有误,服务器无法处理
    1. 400 Bad Request
    2. 403 Forbiddend 服务器禁止访问资源
    3. 404 Not Found 请求的资源在服务器上找不到
  5. 5XX
    1. 500
    2. 501 Not Implemented 客户端请求的功能还不支持
    3. 502 Bad Gateway 服务器作为网关或者代理时返回的错误代码,服务器自身工作正常,访问后端服务器出错
2. HTTP 常见的字段
  1. Host: 客户端发送请求时,用来指定服务器的域名
  2. Content-length : 用来防止粘包
  3. Content-type : 用于服务器回应时,告诉客户端,本次数据是什么格式
  4. Encoding-type
  5. Connection : Keep-alive长连接
3. GET 和 POST请求
  1. GET 的含义:是从服务器获取指定的资源
  2. POST的含义:是根据请求负荷(报文body)对指定的资源做出处理
  3. 区别:
    1. GET一般来说没有请求体,请求参数放在URL中。POST请求参数一般放在body中
    2. GET 由于请求参数放在URL 中,有长度限制,且必须是ASCII字符。POST 理论上没有长度限制
    3. 幂等性和安全性的角度:
      1. GET 一般是从服务器端获取指定的资源,一般不改变服务器上的资源,所以说是幂等的。POST请求可能会修改服务器上的资源,非幂等的。
      2. GET一般是安全的,POST一般是不安全的
    4. GET请求一般是可被缓存的,POST请求一般是不可缓存的
  4. 注意点:
    • 可以用 GET 方法实现新增或删除数据的请求,这样实现的 GET 方法自然就不是安全和幂等。
    • 可以用 POST 方法实现查询数据的请求,这样实现的 POST 方法自然就是安全和幂等。
4. HTTP缓存技术
  1. 强制缓存技术
    1. 定义:强缓存指的是只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。
    2. 实现原理:HTTP响应报文中头部字段 —— Cache-Control(优先级较高)和 EXPIRES。
      当浏览器第一次请求资源的时候,服务器返回的响应报文中在返回这个资源的同时,也会在Cache-Control这个字段中设置过期时间。当浏览器第二次请求这个资源的时候,则贤惠通过请求资源的时间和Cache-Coontrol作比较,若小于这个时间,则直接使用缓存,若大于这个时间则重新请求。重新请求后,同样返回报文中会再次更新Cache-Control的时间。
  2. 协商缓存技术
    1. 定义:协商缓存就是与服务端协商之后,通过协商结果来判断是否使用本地缓存
    2. 实现原理:相应码——304.这个相应码告诉浏览器可以使用本地的缓存的资源。这种方法是通过服务器端告知客户端是否可以使用缓存。
    3. 具体分析:基于两种头部实现
      • 请求头部If-Modified-Since 字段和响应头部中的Last-Modified字段实现。后者表示这个相应资源的最后修改时间。两者比较,返回200 OK 或者 304 缓存
      • 请求头部If-None-Match字段和相应头部中的ETag字段实现。ETag表示相应资源的唯一表示符
    4. 为什么会有ETag和Last-Modified两个字段?
      1. 修改时间不能保证资源是否改变
      2. If-Modified-Since检查的粒度是秒级的,若文件在1秒内修改,无法检测到
      3. 有些服务器不能获取文件的最后修改时间
  3. 注意点: 协商缓存这两个字段都需要配合强制缓存中 Cache-Control 字段来使用,只有在未能命中强制缓存的时候,才能发起带有协商缓存字段的请求。
5. HTTP特性 HTTP 1.1
  1. HTTP/1.1的优点:

    1. 简单,报文格式是header + body方式
    2. 灵活和易于扩展,有很多的拓展字段
    3. 跨平台
  2. HTTP/1.1缺点:

    1. 无状态: 服务器端不会记录HTTP状态,相对来说可以减轻服务器端的压力。但是遇到需要身份验证等操作的时候会较麻烦(比如说购物车加入,下单,结算,支付整个过程都涉及到要知道用户的身分才行)

      解决办法:cookies技术:服务器端在接收到客户端发来的第一次请求的时候,相应报文中就会添加一个cookies,后续同一客户端发送请求的时候,带上这个cookies,这样就知道客户端是谁了

    2. 明文传输

    3. 不安全

  3. HTTP/1.1的特性:

    1. 长连接
    2. 管道网络传输:即在同一个TCP连接中,客户端可以发送多个请求,第一个请求出去了不用等响应报文,可以直接发送第二个,减少整体的响应时间。但是由于服务器端必须按照发送顺序接受这些管道的请求,所以可能会导致响应方的队头阻塞
    3. 队头阻塞
6.HTTP 和 HTTPS
  1. 两者的区别:

    1. HTTP是明文传输,HTTPS是加密传输
    2. HTTP连接建立需要三次握手,HTTPS连接的建立需要三次握手加上SSL/TSL的握手
    3. 两者默认的端口号不同 HTTP :80 HTTPS:443
    4. HTTPS协议需要向CA机构申请数字证书
  2. HTTPS解决了HTTP哪些问题?

    1. 窃听风险
    2. 篡改风险
    3. 冒充风险

请添加图片描述

视频详解:

HTTPS

HTTPS与CT证书透明技术

  1. 通过中间人机制伪造证书。同时也类似于wireshark能抓包看到https中的内容
7. HTTP/1.0 /1.1 /2.0 /3.0的区别
  1. HTTP/1.1

    1. 优点
      1. 长连接
      2. 管道通信(但是没有解决响应方队头阻塞的问题)
    2. 缺点:
      1. 请求/响应报文header未经压缩就发送
      2. 分包的时候发送冗长重复的首部
      3. 相应方队头阻塞
      4. 没有请求优先级控制
      5. 请求只能从客户端开始,服务器端只能被动响应
  2. HTTP/2.0

    1. 优点

      请添加图片描述

    2. 缺点

    请添加图片描述

  3. HTTP/3 (QUIC基于UDP的应用层可靠传输协议)

    1. 优点

      请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值