HTTP 相关基础概念

2023-05-17 16:05:13 浏览数 (1)

# 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 等。

# 代理

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

# 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 个字符
  • 域名是大小写无关的,但通常使用小写形式

0 人点赞