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

打印 上一主题 下一主题

主题 895|帖子 895|积分 2685


   

  • 作者简介:一名云计算网络运维人员、天天分享网络与运维的技能与干货。 
  • 公众号:网络豆云计算学堂
  • 座右铭:低头赶路,敬事如仪
  • 个人主页: 网络豆的主页​​​​​
  目录
 写在前面:
本章目标:
一.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)进行定义,告诉浏览器怎样显示内容。
   
  1. <html>
  2. <head>
  3.    <title>TITLE</title>
  4. </head>
  5.    <body>
  6.     <h1>H1</h1>
  7.    <p></p>
  8.    <h2>H2</h2>
  9.   <p><a href="admin.html">ToGoogle</a> </p>
  10. </body>
  11. </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)请求报文格式先容

               请求行 + 请求首部 + 空缺行 + 请求实体                  
                       例如:                    
  1. <method> <request-URL> <version>
  2. <HEADERS>
  3. # 这里一定要是一个空白行
  4. <entity-body>
复制代码
     1.请求行

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

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

        
直接使用“空格”进行分隔!

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

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

 2.请求首部

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

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

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

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表