IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP指南 -> 正文阅读

[网络协议]HTTP指南

HTTP 初识

  • HTTP 协议:Hyper Text Transfer Prototcal,超文本传输协议,在计算机网络中属于应用层协议,基于传输层的 TCP 协议。特点有基于请求返回响应、简单可扩展、无状态。
    image.png

  • HTTP 协议工作流程
    image.png

HTTP 协议分析

  • HTTP 协议的发展
    image.png

  • HTTP 报文分析

    • Method

      • 安全的(safe)Method:不会修改服务器的数据的方法:GET、HEAD、OPTIONS
      • 幂等的(idempotent)Method:同样的请求被执行一次与连续执行多次效果是一样的,服务器的状态也是一样的,所有 safe 的方法都是 idempotent 的:GET、HEAD、OPTIONS、DELETE
        image.png
    • 状态码
      image.png

    • RESTful API
      image.png

    • 常用请求头
      image.png

    • 常用响应头
      image.png

    • 缓存
      image.png

    • 缓存使用过程
      image.png

    • Cookie

      • Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能
      • Cookie 主要用于以下三个方面:
        • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
        • 个性化设置(如用户自定义设置、主题等)
        • 浏览器行为跟踪(如跟踪分析用户行为等)
          image.png
  • HTTP/2

    • 更快、更稳定、更简单
    • 帧是 HTTP/2 通信的最小单位,每个帧都包含帧头,也会标识出当前帧所属的数据流
    • 二进制编码(HTTP1.x 的解析是基于文本的)
    • header 压缩,HTTP/2使用 encoder 来减少需要传输的header大小,通讯双方各自 cache 一份 header fields 表,既避免了重复header的传输,又减小了需要传输的大小
    • 交错发送,接收方重组织
    • 消息:与逻辑请求或响应消息对应的完整的一系列帧
    • 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
    • HTTP/2 连接都是永久的,而且仅需要每个来源一个连接
    • 流控制:阻止发送方向接收方发送大量数据的机制
  • HTTPS:Hypertext Transfer Protocol Secure

    • 经过 TSL/SSL 加密
    • 对称加密:加密和解密都是使用同一个密钥;非对称加密:加密和解密需要使用公钥和私钥两个不同的密钥
    • HTTPS 协议使用对称加密和非对称加密混用的加密方法
      image.png

HTTP 常见场景

  • 静态资源

    • 静态资源解决方案:缓存 + CDN + 文件名hash
    • CDN(Content Delivery Network):通过用户就近性和服务器负载的判断,CDN 确保内容以一种极为高效的方式为用户的请求提供服务
    • 文件名hash 为了防止因缓存而出现的静态资源不更新的问题
  • 跨域解决方案

    • CORS
      image.png
    • 代理服务器
      • 同源策略是浏览器的安全策略,不是 HTTP 协议的
        image.png
    • Iframe 通信,问题较多,很少使用
  • 常见场景:网站登录后,下次进入网站怎么记录得到用户状态信息

    • Session + Cookie (鉴权)
      image.png
    • JWT(JSON web token)
      image.png
  • 常见场景:子应用如何做到自动登录(不同的网站,例如头条官网跳转到头条号网站,用户自动登录)

    • SSO(Single Sign On,单点登录)
      image.png

HTTP 实际应用

  • 浏览器 AJAX 之 XHR(XMLHttpRequest)
    image.png
    image.png

  • 浏览器 AJAX 之 Fetch

    • XMLHttpRequest 的升级版
    • 使用 Promise
    • 模块化设计,Response,Request,Header 对象
    • 通过数据流处理对象,支持分块读取
      image.png
  • Node 标准库之 HTTP、HTTPS

    • 默认模块,无需安装其他依赖
    • 功能有限/不是十分友好
  • 常用请求库之 axios

    • 支持浏览器、node 环境
    • 内置 Promise,有丰富的拦截器
      image.png
  • 网络优化

    • image.png
    • 预解析、预连接
    <link rel="dns-prefetch" href="//xxx.com">
    <link rel="preconnect" href="//cdn.xxx.com" crossorigin>
    
  • 稳定性

    • image.png
    • 重试是保证稳定的有效手段,但要防止加剧恶劣情况
    • 缓存合理使用,作为最后一道防线
  • HTTP 扩展

    • WebSocket

      • 浏览器与服务器进行全双工通讯的网络技术
      • 典型场景:实时性要求高例如聊天室,游戏等
      • URL 使用 ws:// 或 wss:// 等开头
        image.png
    • QUIC:Quik UDP Internet Connection 基于 UDP,应用暂不多

      • 0-RTT 建联(首次建联除外)
      • 类似 TCP 的可靠传输
      • 类似 TLS 的加密传输,支持完美前向安全
      • 用户空间的拥塞控制,最新的 BBR 算法
      • 支持 h2 的基于流的多路复用,但没有 TCP 的 HOL 问题
      • 前向纠错 FEC
      • 类似 MPTCP 的 Connection migration
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:18:35  更:2022-01-24 11:19:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:22:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码