http协议深度解析——网络时代的安全与效率(1)

  • 作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。

  • 公众号:网络豆云计算学堂

  • 座右铭:低头赶路,敬事如仪

  • 个人主页:网络豆的主页​​​​​****

目录

写在前面:

本章目的:

一.http协议

[1.http 协议介绍](#1.http 协议介绍)

[2.http 协议的版本](#2.http 协议的版本)

[3.html 文本介绍](#3.html 文本介绍)

[(1)html 文档的生成方式](#(1)html 文档的生成方式)

(2)静态和动态的方式

静态

动态

[4.http 协议的报文](#4.http 协议的报文)

(1)请求报文格式介绍

1.请求行

2.请求首部

3.空白行

4.请求实体

敬请关注博主,我们将持续为您带来云计算行业及更多前沿技术的最新信息,助您把握技术动态,领先一步!


写在前面:

哈喽大家好,我是网络豆一名云计算运维人员,作为一名运维人员对于网络协议方面的学习也尤为重要,本章文件将会给大家详细讲解http协议。了解http协议的工作原理与作用。


本章目的:

  • http****协议的版本
  • **html****文本介绍,****架构,**生成方式
  • http****协议的报文
  • 请求报文格式介绍

一.http协议

1.http****协议介绍

http:Hyper Text Transfer Protocol 超文本传输协议,是互联网应用最为广泛的一种网络协议,

主要用于 Web 服务。通过计算机处理文本信息,格式为 HTML(Hyper Text Mark Language)

超文本标记语言来实现。


2.http****协议的版本

http 0.9 :仅于用户传输 html 文档

http 1.0 :

1.引入了 MIME(Multipurpose Internet Mail Extesions)机制:多用途互联网邮件扩展,引 入这个技术之后,http 可以发送多媒体(比如视频、音频等)信息。此机制让 http 不在单单只支持 html 格式,还可以支持其他格式来进行发送了。

2.引入了 keep-alive 机制,支持持久连接的功能(但这个 keep-alive 原理是在首部添加了某个字段而形成的,并非原生就支持此功能)

3.引入支持缓存功能

http 1.1 :

支持更多的请求方法,更加精细的缓存控制,原生直接支持持久连接功能(presistent)。

http 2.0 :

提供了 HTTP 语义优化的传输,spdy : google 引入了的一个技术,能够加速 http 数据交互,尤其是使用 ssl 加速机制,但是 spdy 现在用的还不多。 目前常用的版本就是 http 1.0 版本和 http 1.1 版本。


3.html****文本介绍

HTML(HyperText Markup Language)即超文本标记语言 ,是一种用于创建网页和网络应用程序的标准标记语言。它不是一种编程语言,而是一种标记语言,用于描述网页内容的结构和呈现方式。HTML 文档由一系列的 HTML 元素组成,这些元素通过标签(tags)进行定义,告诉浏览器如何显示内容。

<html>
 <head>
   <title>TITLE</title>
 </head>
   <body>
    <h1>H1</h1>
   <p></p>
   <h2>H2</h2>
  <p><a href="admin.html">ToGoogle</a> </p>
 </body>
</html>

(1)html****文档的生成方式

静态:
事先就编辑并定义完成的

动态:

通过编译语言编写的程序后输出 html 格式的结果

动态语言有:php,jsp,asp,.net

备注:这些脚本都必须有相应的解释器,比如说 php 需要有 php 解释器等等

(2) 静态和动态的方式

静态

1、Web 服务器向内核注册 socket

2、客户端通过浏览器,向 Web 服务器发起 request 请求

3、Web 服务器收到客户端的 request 信息

4、如果用户请求的资源在服务器本地的话,http 服务会向系统内核申请调用

5、内核调用本地磁盘里的数据,并将数据发给 http 服务

6、http 将用户请求的资源通过 response 报文,最终响应给客户端


动态

与静态不同的是,如果用户请求的是动态内容,那么此时 http 服务会调用后端的解析器,由动态语言去处理用户的请求,如果需要请求数据的时候,会向内核申请调用,从而向磁盘中获取用户指定的数据,通过解释器运行,运行的结果通常会生成 html 格式的文件。然后构建成响应报文,最终发回给客户端。


4.http****协议的报文

HTTP 报文中存在着很多行的内容,一般是由 ASCII 码串组成,各字段长度是不确定的。 HTTP
的报文可分为两种:请求报文与响应报文。
1.request Message(请求报文)

客户端 -→ 服务器端

由客户端向服务器端发出请求,不同的网站用于请求不同的资源(html 文档)

2.response Message(响应报文)

服务器端 -→ 客户端

是服务器予以响应客户端的请求


(1)请求报文格式介绍

请求行 + 请求首部 + 空白行 + 请求实体

例如:

<method> <request-URL> <version>
<HEADERS>
# 这里一定要是一个空白行
<entity-body>
**1.**请求行

请求方法字段<method> +请求 URL 字段<request-URL> +HTTP 协议版本<version> 组成,

用来标识客户端请求的资源时使用的请求方法,请求的资源,请求的协议版本是什么,它们

直接使用"空格"进行分隔!

<method> 这次请求的方式是什么,也就是请求方法
<request-URL> 请求的是哪个资源,哪个 URL。可以是相对路径,如/images/log.jpg,
也可以是绝对路径,如 http://www.baidu.com/images.banner.jpg
<version> 请求的协议版本是什么,http 协议版本,格式 HTTP/<major>.<minor>,
例如:HTTP/1.0,HTTP/1.1


上图是用 wireshark 工具抓取 http 请求报文的显示结果。在首部后的" \r\n "表示一个回车和换行,以此将该首部与下一个首部隔开。
或者用 curl 命令获取 http 请求报文

**2.**请求首部

关键字+关键字的值组成 ,之间使用":"进行分隔,格式 Name : Value ,请求首部的作用
是通过客户端将请求的相关内容告知服务器端,首部可以不止一个。
<HEADERS> 首部,首部可能不止一个。各种所可以使用的首部信息

**3.**空白行

请求首部之后会有一个空白行,通过发送回车字符和换行符,用于通知服务器端以下的内容将不会再出现请求首部的信息。

**4.**请求实体

你需要请求的内容到底是什么
<entity-body> 请求实体,你到底请求的内容是什么


敬请关注博主,我们将持续为您带来云计算行业及更多前沿技术的最新信息,助您把握技术动态,领先一步!
相关推荐
软件公司.乐学2 小时前
安全生产算法一体机定制
人工智能·安全
云起无垠2 小时前
【论文速读】| 评估并提高大语言模型生成的安全攻击探测器的鲁棒性
人工智能·安全·语言模型
晚秋贰拾伍4 小时前
设计模式的艺术-代理模式
运维·安全·设计模式·系统安全·代理模式·运维开发·开闭原则
hwscom4 小时前
Windows Server 2025如何做系统安全加固
windows·安全·系统安全
kingbal5 小时前
SpringBoot:websocket 实现后端主动前端推送数据
网络·websocket·网络协议
JZC_xiaozhong5 小时前
低空经济中的数据孤岛难题,KPaaS如何破局?
大数据·运维·数据仓库·安全·ci/cd·数据分析·数据库管理员
钟离墨笺5 小时前
【网络协议】【http】【https】TLS1.3
网络协议·http·https
是Dream呀6 小时前
引领AI发展潮流:打造大模型时代的安全与可信——CCF-CV企业交流会走进合合信息会议回顾
人工智能·安全·生成式ai