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

目录

 写在前面:

本章目的:

一.http协议

1.http 协议介绍

2.http 协议的版本

3.html 文本介绍

(1)html 文档的生成方式

(2)静态和动态的方式

静态

动态

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)

超文本标记语言来实现。




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



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.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
(1)html 文档的生成方式


静态:


事先就编辑并定义完成的

动态:

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

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

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


(2)静态和动态的方式
静态

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

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

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

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

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

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

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


动态

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

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


4.http 协议的报文


HTTP 报文中存在着很多行的内容,一般是由 ASCII 码串组成,各字段长度是不确定的。 HTTP


的报文可分为两种:请求报文与响应报文。



1.request Message(请求报文)

客户端 -→ 服务器端

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

2.response Message(响应报文)

服务器端 -→ 客户端

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


(1)请求报文格式介绍


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


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


例如:


<method> <request-URL> <version>
<HEADERS>
# 这里一定要是一个空白行
<entity-body>
  • 1.
  • 2.
  • 3.
  • 4.
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
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

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


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



或者用 curl 命令获取 http 请求报文



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

2.请求首部


关键字+关键字的值组成 ,之间使用“:”进行分隔,格式 Name : Value ,请求首部的作用


是通过客户端将请求的相关内容告知服务器端,首部可以不止一个。



<HEADERS> 首部,首部可能不止一个。各种所可以使用的首部信息




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



3.空白行


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



4.请求实体


你需要请求的内容到底是什么


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




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


 


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