0


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

  • **作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 **
  • 公众号:网络豆云计算学堂
  • 座右铭:低头赶路,敬事如仪
  • 个人主页: 网络豆的主页​​​​​****

写在前面:

** 哈喽大家好,我是网络豆一名云计算运维人员,作为一名运维人员对于网络协议方面的学习也尤为重要,本章文件将会给大家详细讲解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> 请求实体,你到底请求的内容是什么


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

本文转载自: https://blog.csdn.net/yj11290301/article/details/140830349
版权归原作者 网络豆 所有, 如有侵权,请联系我们删除。

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

还没有评论