浅谈《图解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》


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android学习制作app(ESP8266-01S连接-简单制作)

一、理论 部分理论见arduino学习-CSDN博客和Android Studio安装配置_android studio gradle 配置-CSDN博客 以下直接上代码和效果视频,esp01S的收发硬件代码目前没有分享,但是可以通过另一个手机网络调试助手进行模拟。也可以直接根据我的代码进行改动…

使用mybatisPlus插件生成代码步骤及注意事项

使用mybatisPlus插件可以很方便的生成与数据库对应的PO对象,以及对应的controller、service、ImplService、mapper代码,生成这种代码的方式有很多,包括mybatis-plus提供的代码生成器,以及idea提供的代码生成器,无论哪一…

FFmpeg(7.1版本)在Ubuntu18.04上的编译

一、从官网上下载FFmpeg源码 官网地址:Download FFmpeg 点击Download Source Code 下载源码到本地电脑上 二、解压包 tar -xvf ffmpeg-7.1.tar.xz 三、配置configure 1.准备工作 安装编译支持的软件 ① sudo apt-get install nasm //常用的汇编器,用于编译某些需要汇编…

CMake的QML项目中使用资源文件

Qt6.5的QML项目中,我发现QML引用资源文件并不像QtWidgets项目那样直接。 在QtWidgets的项目中,我们一般是创建.qrc​资源文件,然后创建前缀/new/prefix​,再往该前缀中添加一个图片文件,比如:test.png​。…

微信登录模块封装

文章目录 1.资质申请2.combinations-wx-login-starter1.目录结构2.pom.xml 引入okhttp依赖3.WxLoginProperties.java 属性配置4.WxLoginUtil.java 后端通过 code 获取 access_token的工具类5.WxLoginAutoConfiguration.java 自动配置类6.spring.factories 激活自动配置类 3.com…

KNIME:开源 AI 数据科学

KNIME(Konstanz Information Miner)是一款开源且功能强大的数据科学平台,由德国康斯坦茨大学的软件工程师团队开发,自2004年推出以来,广泛应用于数据分析、数据挖掘、机器学习和可视化等领域。以下是对KNIME的深度介绍…

如何让DeepSeek恢复联网功能?解决(由于技术原因,联网搜索暂不可用)

DeekSeek提示:(由于技术原因,联网搜索暂不可用) 众所周知,因为海外黑客的ddos攻击、僵尸网络攻击,deepseek的联网功能一直处于宕机阶段,但是很多问题不联网出来的结果都还是2023年的&#xff0c…

【优先算法】专题——前缀和

目录 一、【模版】前缀和 参考代码: 二、【模版】 二维前缀和 参考代码: 三、寻找数组的中心下标 参考代码: 四、除自身以外数组的乘积 参考代码: 五、和为K的子数组 参考代码: 六、和可被K整除的子数组 参…

刷题记录 动态规划-6: 62. 不同路径

题目:62. 不同路径 难度:中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &#x…

梯度、梯度下降、最小二乘法

在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降是最常采用的方法之一,另一种常用的方法是最小二乘法。 1. 梯度和梯度下降 在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式…

基于STM32的智能安防监控系统

1. 引言 随着物联网技术的普及,智能安防系统在家庭与工业场景中的应用日益广泛。本文设计了一款基于STM32的智能安防监控系统,集成人体感应、环境异常检测、图像识别与云端联动功能,支持实时报警、远程监控与数据回溯。该系统采用边缘计算与…

优化代码性能:利用CPU缓存原理

在计算机的世界里,有一场如同龟兔赛跑般的速度较量,主角便是 CPU 和内存 。龟兔赛跑的故事大家都耳熟能详,兔子速度飞快,乌龟则慢吞吞的。在计算机中,CPU 就如同那敏捷的兔子,拥有超高的运算速度&#xff0…

Notepad++消除生成bak文件

设置(T) ⇒ 首选项... ⇒ 备份 ⇒ 勾选 "禁用" 勾选禁用 就不会再生成bak文件了 notepad怎么修改字符集编码格式为gbk 如图所示

如何创建折叠式Title

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverGrid组件相关的内容,本章回中将介绍SliverAppBar组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverAppBar和普通的AppBar类似,它们的…

K个不同子数组的数目--滑动窗口--字节--亚马逊

Stay hungry, stay foolish 题目描述 给定一个正整数数组 nums和一个整数 k,返回 nums 中 「好子数组」 的数目。 如果 nums 的某个子数组中不同整数的个数恰好为 k,则称 nums 的这个连续、不一定不同的子数组为 「好子数组 」。 例如,[1,2,…

Chromium132 编译指南 - Android 篇(一):编译前准备

1. 引言 欢迎来到《Chromium 132 编译指南 - Android 篇》系列的第一部分。本系列指南将引导您逐步完成在 Android 平台上编译 Chromium 132 版本的全过程。Chromium 作为一款由 Google 主导开发的开源浏览器引擎,为众多现代浏览器提供了核心驱动力。而 Android 作…

webpack传输性能优化

手动分包 基本原理 手动分包的总体思路是:先打包公共模块,然后再打包业务代码。 打包公共模块 公共模块会被打包成为动态链接库(dll Dynamic Link Library),并生成资源清单。 打包业务代码 打包时,如果…

6 [新一代Github投毒针对网络安全人员钓鱼]

0x01 前言 在Github上APT组织“海莲花”发布存在后门的提权BOF,通过该项目针对网络安全从业人员进行钓鱼。不过其实早在几年前就已经有人对Visual Studio项目恶意利用进行过研究,所以投毒的手法也不算是新的技术。但这次国内有大量的安全从业者转发该钓…

加载数据,并切分

# Step 3 . WebBaseLoader 配置为专门从 Lilian Weng 的博客文章中抓取和加载内容。它仅针对网页的相关部分(例如帖子内容、标题和标头)进行处理。 加载信息 from langchain_community.document_loaders import WebBaseLoader loader WebBaseLoader(w…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.5 高级索引应用:图像处理中的区域提取

2.5 高级索引应用:图像处理中的区域提取 目录/提纲 #mermaid-svg-BI09xc20YqcpUam7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-BI09xc20YqcpUam7 .error-icon{fill:#552222;}#mermaid-svg-BI09xc20…