前端需要了解的一些 HTTP 基础概念

简介: 前端需要了解的一些 HTTP 基础概念

诞生

  • HTTP/0.9 只允许 GET,纯文本格式(无版本号,后追加为 0.9)
  • HTTP/1.0 (RFC1945,不是标准,只是参考文档)

    • 增加 HEAD、POST 等新方法
    • 增加响应状态码,标记可能的错误原因
    • 引入协议版本号概念
    • 引入 HTTP Header 概念,让 HTTP 处理请求和响应更加灵活
    • 传输的数据不再仅限于文本
  • HTTP/1.1 (RFC2616)

    • 增加了 PUT、DELETE 等新的方法
    • 增加了缓存管理和控制
    • 明确了连接管理,允许持久连接
    • 允许响应数据分块(chunked),利于传输大文件
    • 强制要求 Host 头,让互联网主机托管成为可能
  • HTTP/2 (RFC7540)
以 Google SPDY 协议为基础定制。HTTP/2 还衍生出了 gRPC 等新协议,但目前大多数网站仍在使用 HTTP/1.1
  • 二进制协议,不再是纯文本
  • 可发起多个请求,废弃了 1.1 的管道
  • 使用专用算法压缩头部,减少数据传输量
  • 允许服务器主动向客户端推送数据
  • 增强了安全性,“事实上”要求加密通信
  • HTTP/3
Google 推出的 QUIC 更名而来

HTTP 是什么

HyperText Transfer Protocol

HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
  • 协议:使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式
  • 传输:双向协议,用来在两点之间传输数据的约定和规范
  • 超文本:文本广义为图片、音频、视频、甚至压缩包,超文本关键是超链接,形成杜查非线性、网状的结构关系。

HTTP 不是一个孤立的协议,通常泡在 TCP/IP 协议栈之上,依靠 IP 协议实现寻址和路由、TCP 协议实现可靠数据传输、DNS 协议实现域名查找、SSL/TLS 协议实现安全通信。也有一些协议依赖于 HTTP,如 WebSocket、HTTPDNS 等。

HTTP 相关概念

代理

  • 匿名代理:完全隐匿了被代理的机器,外界看到的 只是代理服务器
  • 透明代理:传输过程中“透明开放”,外界既知道代理也知道客户端
  • 正向代理:靠近客户端,代表客户端向服务器发送请求
  • 方向代理:靠近服务器端,代表服务器响应客户端的请求

TCP/IP 网络分层模型

  • 链接层(link layer, MAC)
  • 网际层(Internet layer,IP)
  • 传输层(transport layer,TCP/UDP)
  • 应用层(application layer,Telnet、SSh、FTP、SMTP、HTTP)

OSI

(Open System Interconnection Reference Model,开放式系统互联通信参考模型)网络分层模型

  • 物理层,电缆、光纤、网卡、集线器等
  • 数据链路层,TCP/IP 的链接层
  • 网络层,TCP/IP 的网际层
  • 传输层, TCP/IP 的传输层
  • 会话层,维护网络中的连接状态,即保持会话和同步
  • 表示层,把数据准换位合适、可以理解的语法和语义
  • 应用层,面向具体的应用传输数据

域名

  • 形式:主机名[.二级域名].顶级域名
  • 域名解析
    DNS 核心系统是一个三层的树状、分布式服务,基本对应域名的结构:

    1. 根域名服务器(Root DNS Server):管理顶级域名服务器,返回 com、net、cn 等顶级域名服务器的 IP
    2. 顶级域名服务器(Top-level DNS Server):管理各自域名下的权威域名服务器,如 com 顶级域名服务器可以 返回 apple.com 域名服务器的 IP
    3. 权威域名服务器(Authoritative):管理自己域名下主机的 IP 地址,比如 apple.com 权威域名服务器可以返回 www.apple.com 的 IP
  • DNS 缓存

    • 大公司、网络运营商的 DNS 服务器(非权威域名服务器),作为用户 DNS 查询的代理,代替用户访问核心 DNS 系统,离用户较近
    • 操作系统也会对 DNS 解析结果做缓存,操作系统还存在“主机映射”文件(hosts)
  • 域名应用

    • 重定向:域名不变, IP 任意变动
    • 名字空间:搭建内部 DNS 作为名字服务器,实现 blog.cellinlab.xyz 、api.cellinlab.xyz 等
    • 负载均衡:

      • 域名解析返回多个 IP
      • 域名解析配置内部策略,返回离客户端最近或当前服务最优的主机
    • 域名屏蔽:对域名不解析,返回错误,让用户无法拿到 IP,从而无法访问
    • 域名劫持(域名污染):访问 A,DNS 给用户 B 的 IP
  • 域名总长度限制在 253 字符内,一级域名不能超过 63 个字符
  • 域名是大小写无关的,但通常使用小写形式
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
26天前
|
缓存 前端开发 UED
前端常见的HTTP状态码
【4月更文挑战第6天】HTTP状态码是服务器对请求的响应状态,分为1xx(处理中)、2xx(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误)五大类。常见的如200(成功)、404(未找到)、500(服务器内部错误)。理解这些状态码有助于优化前端应用的请求处理和调试。
14 1
|
2月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
60 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
|
3月前
|
前端开发 JavaScript UED
轻松入门Axios二:前端开发中的HTTP利器
轻松入门Axios二:前端开发中的HTTP利器
52 0
|
3月前
|
JSON 前端开发 JavaScript
轻松入门Axios:前端开发中的HTTP利器
轻松入门Axios:前端开发中的HTTP利器
40 0
|
5月前
|
网络协议 前端开发 网络性能优化
前端必备-http知识
前端必备-http知识
64 0
|
5月前
|
缓存 前端开发
前端知识笔记(四十三)———http状态码(详细)
前端知识笔记(四十三)———http状态码(详细)
38 0
|
5月前
|
前端开发 安全 网络协议
前端知识笔记(四十二)———http和https详细解析
前端知识笔记(四十二)———http和https详细解析
30 0
|
5月前
|
前端开发 JavaScript
前端知识笔记(四十一)———nodejs发起http或https请求
前端知识笔记(四十一)———nodejs发起http或https请求
28 0
|
5月前
|
缓存 前端开发
前端知识笔记(三十六)———HTTP 缓存机制
前端知识笔记(三十六)———HTTP 缓存机制
25 0
|
5月前
|
缓存 前端开发
前端知识笔记(八)———HTTP一些状态码及详细解释
前端知识笔记(八)———HTTP一些状态码及详细解释
50 0