网络-http

leard 发布于 2025-06-13 0 次阅读


http的常见状态码

  • 1xx:信息响应
    • 100:服务器收到请求部分,客户端应继续请求
    • 101:服务器同意切换协议,如http切换到web socket
  • 2xx:成功
    • 200:请求成功
    • 201:请求成功并创建了新资源
    • 204:请求成功但服务器没有返回内容,常用于删除操作
  • 3xx:重定向
    • 301:资源永久移动到新url。客户端应使用新的url访问
    • 302:资源临时移动到新的url,客户端应继续使用原来的url
    • 304:资源未修改,可以使用缓存版本
  • 4xx:客户端错误
    • 400:请求无效,服务器无法处理
    • 401:请求需要身份验证,但是客户端未提供有效验证
    • 403:服务器拒绝请求的执行
    • 404:请求的资源在服务器上未找到
  • 5xx:服务器错误
    • 500:服务器内部错误
    • 502:无效响应
    • 503:服务器暂时无法处理请求

POST和GET的区别

定义

GET通常用来获取资源,POST通常用来提交资源

参数传递

GET通常把参数拼接在url后,POST通常把参数放到请求体里。

GET参数在url上,会暴露,POST参数在请求体里相对于GET会隐蔽一点,配合https加密会更好一点。

幂等性

GET是幂等,POST不是

数据传输

GET有长度限制,POST理论上长度无限。

http请求里包含了什么?

请求行

  • 请求方法:GET、POST...
  • 资源路径(/index.html)
  • HTTP协议版本

请求头

  • 通用请求头:cache-contrl、connection...
  • 请求头部:host、user-agent、accept。authorization...
  • 实体头部:content-type、content-length...

请求体类型

常见类型:

  • 表单:application/x-www-form-urlencoded
  • 多部分数据(常用于上传):multipart/form-data
  • json数据:application/json
  • xml数据:application/xml
  • 文本数据:text/plain

HTTP和HTTPS的区别

  • 数据传输:
    • HTTP:明文传输,易被窃听、篡改
    • HTTPS:通过SSL\TSL协议加密传输
  • 端口使用:
    • HTTP:80
    • HTTPS:443
  • 性能:
    • HTTP:因为无加密,所以快一点
    • HTTPS:加解密增加了开销,但是通过硬件优化,可以缩短差距
  • SEO:
    • HTTP:搜索引擎会降低排名
    • HTTPS:搜索引擎更倾向于展示https

HTTPS的四次握手

RSA算法下:

  1. 客户端问候:发送client hello消息
    • TLS版本
    • 加密算法套件
    • 随机数
  2. 服务器问候:收到client hello消息后
    • 确认TLS版本
    • 确认加密算法套件
    • 再生成一个随机数
    • 向客户端发送服务器证书
  3. 客户端密钥交换、开始加密、客户端完成:
    • 客户端通过CA验证服务器传过来的证书后,再生成一个随机数,通过证书得到的公钥,加密通过客户端交换发送给服务器
    • 通过这三个随机数,作为密钥进行对称加密
    • 发送完数据后会再发送一个客户端完成,这个客户端完成会带上之前的所有数据摘要,防止信息被修改
  4. 服务器开始使用加密、服务器完成:
    • 发送加密数据
    • 发送摘要进行验证

ECDHWE算法下:

  1. 客户端问候:
  2. 服务器问候、服务器密钥交换
  3. 客户端密钥交换、开始加密、客户端完成
  4. 服务器开始加密、服务器完成

http1.0、http2.0、http3.0的区别

http1.0

  • 增加了POST等方法
  • 增加了状态响应码
  • 增加了请求头和响应头
  • 请求中增加了http版本
  • 增加了content-type,使传输数据不再局限于文本

http1.1

  • 增加了keepalive,允许持久连接
  • 支持pipeline
  • 允许响应数据分块
  • 增加缓存控制和管理
  • 增加host头

http2.0

  • 协议从文本变成二进制协议
  • 支持一个TCP连接发起多个请求,移除pipeline
  • 压缩头部,减少数据传输量
  • 允许服务器主动推送数据

http3.0

  • 基于UDP使用QUIC协议
    • 减少延迟
    • 默认使用TLS1.3加密
    • 减少队头阻塞
    • 更快的拥塞控制
    • 允许连接转移
    • 更好的带宽利用,提高传输速度和效率