HTTP入门和基础工具链

122 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

HTTP协议介绍

蒂姆·伯纳斯·李,英国计算机科学家(1955-)

  • 万维网(1990 HTTP协议)

  • 创办MIT人工智能实验室

HTTP协议

  • 超文本传输协议(Hyper Text Transfer Protocol)

    简单,容易实现,就是处理客户端和服务端通信的,它提供一种标准中间传文本。

    文本协议便于调试,可读。

  • 处理客户端和服务端之间的通信

  • http请求/http返回

  • 网页/json/xml/提交表单......

设计理念:纯文本+无状态 (Statleless)

  • 应用层协议(下面可以是TCP/IP)
  • 信息纯文本传输
  • 无状态
    • 每次请求独立
    • 请求间互不影响
  • 浏览器提供了手段维护状态(Cookie, Session, *Storage等)

HTTP历史

  • 1991 HTTP 0.9 —— 90年出demo,91年是试验版本
  • 1996 HTTP 1.0 —— 已经有广泛的用户了
  • 1999 HTTP 1.1 —— 到现在为止影响面最大的版本
  • 2015 HTTP 2.0 —— 速度提升多

设计的基础因素

  • 带宽
    • 基础网络(线路、设备等)
  • 延迟
    • 浏览器(自己需要计算)
    • DNS查询
    • 建立连接(TCP三次握手)

前端重要的两个指标:跳出率、用户可交互时间(TTI - Time To Interactive)

设计考虑因素

缓存与带宽优化

  • 缓存(加载过的资源不用再加载一遍)

    • http1.0 提供缓存机制如 If-Modified-Since 等基础缓存控制策略
    • http1.1 提供 E-Tag 等高级缓存策略
  • 带宽优化

    • http1.1 利用 range 头获取文件的某个部分,不用把整个文件拿过来
    • http1.1 利用长连接让多个请求在一个TCP连接上排队
    • http2.0 利用多路复用技术同时传输多个请求

压缩/安全性

  • 压缩

    • 主流web服务器如 nginx/express 等都提供 gzip 压缩功能
    • http2.0 采用二进制传输,头部使用 HPACK 算法压缩
  • 安全性 - HTTPS

    • 在 HTTP 和 TCP/IP 之间增加 TSL/SSL 层
    • 数据传输加密(非对称 + 对称加密)

HTTPS

本来 http 协议(应用层)是直接建立在 TCP/IP 协议(TCP:传输层,IP:网络层)之上的,https协议是在其中多了一层 TSL/SSL 层(TSL 和 SSL是二选一的)

  • 安全超文本传输协议(Hyper Text Transfer Protocol Secure)
  • 数据加密传输
    • 防止各种攻击手段(信息泄漏、篡改等)
  • SSL/TSL (Secure Socket Layer / Transport Layer Secure)
    • SSL - 安全套接层
    • TSL - 传输层安全性协议(更安全)
    • 需要在客户端安装证书

Node.js实战http请求

HTTP协议是一个文本传输协议,传输内容是人类可读的文本,大体分成两部分:

  • 请求头(Header) / 返回头
  • 消息体(Body)

Node实现http的基础协议

Chrome/curl/postman/whistle工具初探

cURL,和服务器交互的工具

  • 传输一个URL
  • 支持多种协议(HTTP/HTTPS/FTP/FTPS/SCP/SFTP/DICT/TELNET......)

image-20220605233917112.png

fetch

在网络上获取数据的标准接口

  • 提供对请求/返回对象(标准Promise接口)
  • 提供自定义Header能力
  • 提供跨域能力

image-20220605234202217.png

postman 协作型API开发工具

whistle 跨平台网络调试工具

  • 需要SwitchyOmega插件
  • Node.js开发
  • 支持抓包、重放、替换、修改等