浅谈《图解HTTP》

感悟

滑至尾页的那一刻,内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂,但此刻却觉得她是如此清晰而可爱的呈现在哪里。

介绍中说,《图解HTTP》适合作为第一本网络协议书。确实,它就像一座桥梁,连接了 "零基础" 与 "系统性学习",对入门者及其友好。

不过,从辩证的角度来看,这毕竟是十年前的老书了,HTTP早以更新至HTTP/3,而本书是以HTTP/1.1为核心讲解,多少让人有点遗憾。不过好在,该有的知识点,还都有( •̀ ω •́ )✧

核心知识点

  • 系统的讲解了 HTTP/1.1 协议核心内容:
    • 报文格式(请求行、首部字段、实体主体)
    • 状态码(如200、404、503)
    • 缓存机制(Cache-Control、ETag)
    • Cookie与会话管理
  • 对HTTP加密原理(SSL/TLS握手、混合加密机制)的简化解释足够清晰。

当然,我写这篇博客的意义不是为了赞美或批评《图解HTTP》。接下来,我会把大纲列出,用最白的话,来叙述每章大致内容,方便日后浏览、复习。

总览大纲


一、了解Web及网络

1、使用HTTP协议访问Web:

客户端与服务器端之间 在遵守一个叫HTTP协议的规范前提下,进行交流。

2、HTTP的诞生:

早期,世界各地知识分子为了共享知识,于是诞生了Web。以HTML(SGML标准通用标记语言)、HTTP(文档传递协议)、URL(指定文档所在地址的统一资源定位符)为基础形成了WWW(World Wide Web,万维网)。

3、网络基础TCP/IP:

TCP/IP也就是TCP/IP协议族,HTTP是它内部的一个子集。TCP/IP按层次分可分为四层:应用层(HTTP·主要)、传输层(TCP·主要)、网络层(IP·主要)、链路层(网络·主要)。

4、与HTTP关系密切的协议:IP、TCP和DNS:

IP协议(包括 IP地址、MAC地址)为寻找到传输目的地而存在。

TCP协议,功能有:为建立连接,实现三次握手(SYN、SYN/ACK、ACK)。将大块数据分割成以报文段等。

5、负责域名解析的DNS服务:

计算机适合辨别二进制,而人适合记忆字母。所以在为主机名和域名赋名时,用字母。在查找对应计算机时,通过DNS将对应字母转化为二进制。

6、各种协议与HTTP协议的关系:

大致是相互配合,传递信息。

HTTP协议生成报文->TCP协议切割->IP协议进行传递中转->TCP协议组装->HTTP协议响应

7、URI与URL:

URI(统一资源标识符)、URL(统一资源定位符)。

其中URL是URI的子集。

URI格式:


二、简单的HTTP协议

1、HTTP协议用于客户端和服务器之间的通讯:

请求的一端是客户端,响应的一端是服务器端。通信时两者皆存在,两者身份可互换。

2、通过请求和响应的交换达成通信:

字面意思,你问他要,并且他给你了,代表你俩交流成功。

3、HTTP是不保存状态的协议:

简而言之,客户端与服务器端都有健忘症,他俩都不记得曾经说过啥,也就是不论发多少个http协议,双方都记不住。

4、请求URI定位资源:

互联网上的所有资源都被URI打了个标记,就相当与你家的地址,只要知道URI就能找到资源所在地。

5、告知服务器意图的HTTP方法

GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT、LINK、UNLINE等

重点:大写

6、使用方法下达命令:

其中,有三个较为常用:

7、持久连接节省通信量:

每次通信都需要TCP连接,完毕后在断开。大规模通信情况下,会极大的增加开销。于是就找了个持久的通道。

8、使用Cookie的状态管理:

前面不是说,服务器与客户端健忘吗,记不住曾经发过的http协议。于是搞了个备忘录,起名叫Cookie,专门用来提醒对方。


三、HTTP报文内的HTTP信息

1、HTTP报文:

应用层通过http协议生成的。

结构为:报文首部、报文主体。两部分通过 空行(CR+LF) 分割开。

2、请求报文及响应报文的结构:

3、编码提升传输效率:

就是传输的数据太大,压缩一下在传输。就像用微信传输时,一般先压缩为zip格式,在发送。

4、发送多种数据的多部份对象集合:

这里的多部分对象为:文本、图片、音频等,需要在传输时划分开。

5、获取部分内容的范围请求:

举个简单的例子,在网上下载东西时,总是1%、1%的下载,每次只申请百分之一的资源。

既能防止一次性传输内容过大,而且能在突然断网后,在联网之后知道从哪里重新申请资源。

6、内容协商返回最合适的内容:

相当于,你申请过来了一个网站的大概框架,里面数据返回的具体内容,是中文还是其他语言,是经过辨别你发的请求后给出的。


四、返回结构的HTTP状态码

1、状态码告知从服务器端返回的请求结果:

通过状态码,你能知道你发出的请求是正确还是错误。她就相当于反馈。

2、2XX 成功:

  • 200 OK
  • 204 No Content
  • 206 Partial Content

3、3XX 重定向:

  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 307 Temporary Redirect

4、4XX 客户端错误:

  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found

5、5XX 服务器错误:

  • 500 Internal Server Error
  • 503 Service Unavailable

五、与HTTP写作的Web服务器

1、用单台虚拟主机实现多个域名:

相当于厉害点的人格分裂症、这个人还顶聪明。有一个主人格,并且能有意识的切换人格。

2、通信数据转发程序:代理、网关、隧道

代理:相当于中间人角色,你拿不了的东西,让代理替你拿,在交给你。(VPN)

网关:让不同协议之间通信,功能上类似代理。

隧道:使用 SSL 加密手段建立的一个通信线路

3、保存资源的缓存:

缓存是指代理服务器或客户端本地磁盘内保存的资源副本。再次请求时,如果缓存中有,就可以直接用,而不用,在向服务器发出请求。


六、HTTP首部

1、HTTP报文首部:

前面已经看过了(三-2)分为:请求报文首部与响应报文首部。

2、HTTP首部字段

分别就是下方的3、4、5、6。

通用首部字段、请求首部字段、响应首部字段、实体首部字段。

3、HTTP/1.1 通用首部字段

通用首部字段是指,请求报文和响应报文双方都会使用的首部。

4、请求首部字段

请求首部字段是从客户端往服务器端发送请求报文中所使用的字段, 用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等 内容。

5、响应首部字段

响应首部字段是由服务器端向客户端返回响应报文中所使用的字段, 用于补充响应的附加信息、服务器信息,以及对客户端的附加要求等 信息。

6、实体首部字段

实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息。

7、为Cookie服务的首部字段

8、其他首部字段

HTTP 首部字段是可以自行扩展的。所以在 Web 服务器和浏览器的应 用上,会出现各种非标准的首部字段。


七、确保Web安全的HTTPS

1、HTTP的缺点:

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

2、HTTP + 加密 + 认证 + 完整性保护 = HTTPS:

简单来说就是:HTTP协议+SSL/TLS协议+有信誉的认证公司+确保发送的信息是完整的=HTTPS

φ(* ̄0 ̄)。所以HTTPS就是,穿上了安全服的HTTP。


八、确认访问用户身份的认证

1、何为认证:

简单点说,就是计算机本身无法判断坐在显示器前的使用者的身份。所以需要类似账号密码的认证。

2、BASIC认证:

就是简单的账号、密码认证,虽被Base64编码,但是在传输过程中几乎仍为明文传输,容易被监听窃取。

3、DIGEST认证:

为弥补 BASIC 认证存在的弱点,从 HTTP/1.1 起就有了 DIGEST 认证。 DIGEST 认证同样使用质询 / 响应的方式 (challenge/response),但不会像 BASIC 认证那样直接发送明文密码。但仍然无法从根本上解决问题。

4、SSL客户端认证:

SSL是凭借着,证书进行认证。相当于你找了个担保人。但实际操作可远不止这么简单,具体去下方链接了解一下吧( ̄︶ ̄)↗ 

5、基于表单认证:

简而言之,就是用户通过表单提交账号密码,服务器验证身份后授权访问。


九、基于HTTP的功能

1、基于HTTP的协议:

这个小节的大概意思是,Web长大了,http配不上了,但又因为抛弃不了http。所以就给http,又扩展了些新功能,让他适应Web。

2、消除HTTP瓶颈的SPDY:

SPDY通过多路复用、头部压缩和服务器推送降低延迟,提升了加载速度。

3、使用浏览器进行全双工通信的WebSocket:

WebSocket全双工通信的大致流程为:1. 客户端发起HTTP升级请求(Upgrade: websocket),服务端响应101状态码切换协议;2. TCP连接保持,双方通过数据帧实时双向通信;3. 数据以消息形式传输,无需重复握手;4. 任一端可发送关闭帧终止连接,实现低延迟双向通信。

4、期盼已久的HTTP/2.0

HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验。

5、Web服务器管理文件的WebDAV

WebDAV(Web-based Distributed Authoring and Versioning,基于万维网 的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。

除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的 版本控制功能。

简而言之,WebDAV 是用于 Web 服务器管理文件的扩展协议,支持多种文件操作。


十、构建Web内容的技术

1、HTML:

HTML(HyperText Markup Language,超文本标记语言)是为了发送 Web 上的超文本(Hypertext)而开发的标记语言。

超文本是一种文档 系统,可将文档中任意位置的信息与其他信息(文本或图片等)建立 关联,即超链接文本。

标记语言是指通过在文档的某部分穿插特别的 字符串标签,用来修饰文档的语言。我们把出现在 HTML 文档内的 这种特殊字符串叫做 HTML 标签(Tag)。

2、动态HTML:

所谓动态 HTML(Dynamic HTML),是指使用客户端脚本语言将静 态的 HTML 内容变成动态的技术的总称。鼠标单击点开的新闻、 Google Maps 等可滚动的地图就用到了动态 HTML。

动态 HTML 技术是通过调用客户端脚本语言 JavaScript,实现对 HTML 的 Web 页面的动态改造。利用 DOM(Document Object Model,文档对象模型)可指定欲发生动态变化的 HTML 元素。

3、Web应用:

Web 应用是指通过 Web 功能提供的应用程序。

4、数据发布格式及语言:

里面有可拓展的标记语言XML,具有信息聚合功能的RSS,轻量级数据标记语言JSON


十一、Web的攻击技术

1、针对Web的攻击技术:

攻击分为主动攻击(主动出击)与被动攻击(诱导用户自己掉进陷阱)两种。

2、因输出值转义不完全引发的安全漏洞:

意如其名,问题就出在了转义上。

3、因设置或设计上的缺陷引发的安全漏洞:

一般有强制浏览、不正确的错误消息处理、开放重定向等。

4、因会话管理疏忽引发的安全漏洞:

会话管理是用来管理用户状态的必备功能,但是如果在会话管理上有 所疏忽,就会导致用户的认证状态被窃取等后果。

5、其他安全漏洞:

一般有密码破解、点击劫持、DoS 攻击、后门程序等。


到这里基本结束,如有错,请及时私信,必会接纳。( •̀ ω •́ )✧


参考书籍:

《图解HTTP》


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12014.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【hot100】刷题记录(12)-回文链表

题目描述: 给你一个单链表的头节点 head ,请你判断该链表是否为 回文链表 。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2: …

Deep Sleep 96小时:一场没有硝烟的科技保卫战

2025年1月28日凌晨3点,当大多数人还沉浸在梦乡时,一场没有硝烟的战争悄然打响。代号“Deep Sleep”的服务器突遭海量数据洪流冲击,警报声响彻机房,一场针对中国关键信息基础设施的网络攻击来势汹汹! 面对美国发起的这场…

自动化构建-make/Makefile 【Linux基础开发工具】

文章目录 一、背景二、Makefile编译过程三、变量四、变量赋值1、""是最普通的等号2、“:” 表示直接赋值3、“?” 表示如果该变量没有被赋值,4、""和写代码是一样的, 五、预定义变量六、函数**通配符** 七、伪目标 .PHONY八、其他常…

【Three.js+React】教程001:绘制简单的盒子

文章目录 React整合Three.js创建项目绘制一个简单的盒子添加坐标辅助器React整合Three.js 在 React 中结合 Three.js 进行 3D 开发,可以使用 React + Three.js + @react-three/fiber 进行高效渲染,同时配合 @react-three/drei 提供的封装工具,让开发更加简洁。 创建项目 …

K8S集群架构及主机准备

本次集群部署主机分布K8S集群主机配置主机静态IP设置主机名解析ipvs管理工具安装及模块加载主机系统升级主机间免密登录配置主机基础配置完后最好做个快照备份 2台负载均衡器 Haproxy高可用keepalived3台k8s master节点5台工作节点(至少2及以上)本次集群部署主机分布 K8S集群主…

SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言

目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…

3.5.7 基于横盘结构的分析体系——缠论(背驰/背离)

背离(背驰) 本文讨论背离主要从量价和时空的角度来讨论。涉及的背离类型如下表: 角度 类型 成交量和价格 量价背离 时间和空间 MACD背离 笔背离 盘整背离 趋势背离 表1-9 背离的角度和类型。 从成交量和价格的角度,本文…

51c嵌入式~电路~合集25

我自己的原文哦~ https://blog.51cto.com/whaosoft/13241709 一、“开关电源”和“普通电源”的区别 什么叫开关电源 随着电力电子技术的发展和创新,使得开关电源技术也在不断地创新。目前,开关电源以小型、轻量和高效率的特点被广泛应用几乎所有的电…

深度学习 Pytorch 基础网络手动搭建与快速实现

为了方便后续练习的展开,我们尝试自己创建一个数据生成器,用于自主生成一些符合某些条件、具备某些特性的数据集。 导入相关的包 # 随机模块 import random# 绘图模块 import matplotlib as mpl import matplotlib.pyplot as plt# 导入numpy import nu…

【文件上传】

目录 一. 介绍二. 本地存储三. 阿里云OSS3.1 准备工作3.2 入门程序3.3 案例集成3.4 程序优化 \quad 一. 介绍 \quad 三要素缺一不可 \quad 二. 本地存储 \quad 解决相同命名覆盖问题 \quad 三. 阿里云OSS \quad \quad 3.1 准备工作 \quad \quad 3.2 入门程序 \quad \quad 3.3…

Deepseek-R1 和 OpenAI o1 这样的推理模型普遍存在“思考不足”的问题

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Vue3的el-table-column下拉输入实时查询API数据选择的实现方法

由于本人对el-table-column有下拉输入选择的要求&#xff0c;根据网上搜索的资料及本人优化&#xff0c;推出我比较满意的方法&#xff0c;供各位读者参考使用。 效果图 el-table-column写法 <el-table-columnlabel"货品编号"align"center"prop"…

Electron使用WebAssembly实现CRC-8 MAXIM校验

Electron使用WebAssembly实现CRC-8 MAXIM校验 将C/C语言代码&#xff0c;经由WebAssembly编译为库函数&#xff0c;可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-8 MAXIM格式校验的方式。 CRC-8 MAXIM校验函数WebAssembly源文件 C语言实现C…

使用 Elastic Cloud Hosted 优化长期数据保留:确保政府合规性和效率

作者&#xff1a;来自 Elastic Jennie Davidowitz 在数字时代&#xff0c;州和地方政府越来越多地承担着管理大量数据的任务&#xff0c;同时确保遵守严格的监管要求。这些法规可能因司法管辖区而异&#xff0c;通常要求将数据保留较长时间 —— 有时从一年到七年不等。遵守刑事…

安卓(android)饭堂广播【Android移动开发基础案例教程(第2版)黑马程序员】

一、实验目的&#xff08;如果代码有错漏&#xff0c;可查看源码&#xff09; 1.熟悉广播机制的实现流程。 2.掌握广播接收者的创建方式。 3.掌握广播的类型以及自定义官博的创建。 二、实验条件 熟悉广播机制、广播接收者的概念、广播接收者的创建方式、自定广播实现方式以及有…

OPENPPP2 —— VMUX_NET 多路复用原理剖析

在阅读本文之前&#xff0c;必先了解以下几个概念&#xff1a; 1、MUX&#xff08;Multiplexer&#xff09;&#xff1a;合并多个信号到单一通道。 2、DEMUX&#xff08;Demultiplexer&#xff09;&#xff1a;从单一通道分离出多个信号。 3、单一通道&#xff0c;可汇聚多个…

【Linux】从硬件到软件了解进程

个人主页~ 从硬件到软件了解进程 一、冯诺依曼体系结构二、操作系统三、操作系统进程管理1、概念2、PCB和task_struct3、查看进程4、通过系统调用fork创建进程&#xff08;1&#xff09;简述&#xff08;2&#xff09;系统调用生成子进程的过程〇提出问题①fork函数②父子进程关…

Deep Crossing:深度交叉网络在推荐系统中的应用

实验和完整代码 完整代码实现和jupyter运行&#xff1a;https://github.com/Myolive-Lin/RecSys--deep-learning-recommendation-system/tree/main 引言 在机器学习和深度学习领域&#xff0c;特征工程一直是一个关键步骤&#xff0c;尤其是对于大规模的推荐系统和广告点击率预…

AI智慧社区--Excel表的导入导出

Excel表导入导出的环境配置 1.导入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>${easypoi.version}</version></dependency>2.配置Excel的导入导出以及…

【C++】B2122 单词翻转

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 &#x1f4af;一、我的做法代码实现&#xff1a;代码解析思路分析 &#x1f4af;二、老师的第一种做法代码实现&a…