当前位置: 首页 > news >正文

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

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

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

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

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

目录

 写在前面:

本章目的:

一.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)

超文本标记语言来实现。


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 格式的结果

动态语言有:phpjspasp.net

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

(2)静态和动态的方式

静态

1Web 服务器向内核注册 socket

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

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

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

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

6http 将用户请求的资源通过 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> 请求实体,你到底请求的内容是什么

 


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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • React-Native 宝藏库大揭秘:精选开源项目与实战代码解析
  • SpinalHDL之仿真(一)
  • Java学习Day19:基础篇9
  • 数学基础 -- 隐函数解题思路之微分运算满足线性性
  • Linux初学基本命令
  • Java面试——Tomcat
  • 兴业严选|朝阳优质好房合集 低至6.3折起~
  • ubuntu cmake使用自己版本的qt
  • 如何使用git拉取gitee上面的项目/代码?(超简单)
  • linux常使用的命令
  • AI助力工艺|利用机器学习实现泡沫浮选工艺优化
  • 《C++基础入门与实战进阶》专栏介绍
  • react中如何定义Class类组件以及hook函数组件
  • Linux系统将Mint 便签源码打包成deb包并进行安装
  • HCL实验1:两台PC通过交换机ping通
  • [nginx文档翻译系列] 控制nginx
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 2019.2.20 c++ 知识梳理
  • codis proxy处理流程
  • ES10 特性的完整指南
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Laravel Telescope:优雅的应用调试工具
  • LeetCode29.两数相除 JavaScript
  • leetcode讲解--894. All Possible Full Binary Trees
  • React系列之 Redux 架构模式
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 程序员该如何有效的找工作?
  • 给新手的新浪微博 SDK 集成教程【一】
  • 解决iview多表头动态更改列元素发生的错误
  • 码农张的Bug人生 - 初来乍到
  • 思维导图—你不知道的JavaScript中卷
  • 自动记录MySQL慢查询快照脚本
  • const的用法,特别是用在函数前面与后面的区别
  • 阿里云服务器购买完整流程
  • 带你开发类似Pokemon Go的AR游戏
  • ​什么是bug?bug的源头在哪里?
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # Panda3d 碰撞检测系统介绍
  • #define
  • (Git) gitignore基础使用
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (pycharm)安装python库函数Matplotlib步骤
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .gitignore文件忽略的内容不生效问题解决
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [20181219]script使用小技巧.txt