持续创作,加速成长!这是我参与「掘金日新计划 · 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......)
fetch
在网络上获取数据的标准接口
- 提供对请求/返回对象(标准Promise接口)
- 提供自定义Header能力
- 提供跨域能力
postman 协作型API开发工具
whistle 跨平台网络调试工具
- 需要SwitchyOmega插件
- Node.js开发
- 支持抓包、重放、替换、修改等