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

本文涉及的产品
.cn 域名,1个 12个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 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 等。

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 个字符
  • 域名是大小写无关的,但通常使用小写形式
相关文章
|
7月前
|
缓存 前端开发 JavaScript
第三章(概念篇) 微前端架构模式
第三章(概念篇) 微前端架构模式
130 0
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
66 3
|
26天前
|
存储 前端开发 JavaScript
前端状态管理:Vuex 核心概念与实战
Vuex 是 Vue.js 应用程序的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。本教程将深入讲解 Vuex 的核心概念,如 State、Getter、Mutation 和 Action,并通过实战案例帮助开发者掌握在项目中有效使用 Vuex 的技巧。
|
1月前
|
自然语言处理 前端开发 JavaScript
深入理解前端中的 “this” 指针:从基础概念到复杂应用
本文全面解析前端开发中“this”指针的运用,从基本概念入手,逐步探讨其在不同场景下的表现与应用技巧,帮助开发者深入理解并灵活掌握“this”的使用。
|
1月前
|
前端开发 开发者
本文将深入探讨 BEM 的概念、原理以及其在前端开发中的应用
BEM(Block-Element-Modifier)是一种前端开发中的命名规范和架构方法,旨在提高代码的可维护性和复用性。通过将界面拆分为独立的模块,BEM 提供了一套清晰的命名规则,增强了代码的结构化和模块化设计,促进了团队协作。本文深入探讨了 BEM 的概念、原理及其在前端开发中的应用,分析了其优势与局限性,为开发者提供了宝贵的参考。
53 8
|
1月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
75 1
|
1月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
40 3
|
2月前
|
前端开发 JavaScript 中间件
前端全栈之路Deno篇(四):Deno2.0如何快速创建http一个 restfulapi/静态文件托管应用及oak框架介绍
Deno 是由 Node.js 创始人 Ryan Dahl 开发的新一代 JavaScript 和 TypeScript 运行时,旨在解决 Node.js 的设计缺陷,具备更强的安全性和内置的 TypeScript 支持。本文介绍了如何使用 Deno 内置的 `Deno.serve` 快速创建 HTTP 服务,并详细讲解了 Oak 框架的安装和使用方法,包括中间件、路由和静态文件服务等功能。Deno 和 Oak 的结合使得创建 RESTful API 变得高效且简便,非常适合快速开发和部署现代 Web 应用程序。
128 2
|
2月前
|
存储 前端开发 JavaScript
前端必备知识:闭包的概念、作用与应用
前端必备知识:闭包的概念、作用与应用
28 1
|
2月前
|
存储 前端开发 NoSQL
拿下奇怪的前端报错(四):1比特丢失导致的音视频播放时长无限增长-浅析http分片传输核心和一个坑点
在一个使用MongoDB GridFS存储文件的项目中,音频和视频文件在大部分设备上播放时长显示为无限,而单独播放则正常。经调查发现,问题源于HTTP Range请求的处理不当,导致最后一个字节未被正确返回。通过调整请求参数,使JavaScript/MongoDB的操作范围与HTTP Range一致,最终解决了这一问题。此案例强调了对HTTP协议深入理解及跨系统集成时注意细节的重要性。