全网最强的 HTTP 协议讲解

      最后更新:2022-07-05 10:40:04 手机定位技术交流文章

      欢迎来到范志东的博客,并回答“66”

      写在最前

      超文本传输协议(Hyper Text Transfer Protocol一个简单的请求响应协议(HTTP)是基于TCP协议的应用程序层传输协议,它指定客户端可以向服务器发送哪些消息和它接收哪些响应。

      HTTP是一个无状态的协议,而HTTP协议本身并不处理发送的请求和响应的通信状态。目的在于维护HTTP协议的简单性,因此能够快速处理大量交易,提高效率。

      HTTP 请求体

      HTTP请求体是请求数据时向服务器发送的数据,毕竟向服务器获取数据,首先表示您想要什么,以及您想要什么!

      549b9abf206231a0311c3e602ef0b225.png

      HTTP请求主体包括: 请求行 、 请求头和请求主体.

      通用HTTP方法

      • GET请求访问由URI(统一资源标识符)标识的资源可以通过URL发送到服务器。

      • POST主要函数与GET方法相似,但一般建议使用 POST方法。

      • PUT传输文件,包含文档在消息体中的内容,存储在相应的URI位置。

      • HEAD: 获取消息的第一个部分,类似于GET方法,但不会返回消息主体,通常用于验证URI是否有效。

      • DELETE删除文件,与PUT方法相反,删除文件在相应的URI位置。

      • OPTIONS查询由相应的URI支持的HTTP方法。

      Post 请求示例

      Get 请求示例

      没有请求主体的请求

      GET和 POST之间的区别

      GET和 POST是两个常用的HTTP方法,两者之间的区别主要包括以下五个方面:

      • 功能上讲,GET通常用于从服务器获取资源, POST通常用于在服务器上更新资源;

      • 从REST服务的角度来看,GET是等效的,即读取相同的资源并总是得到相同的数据,而 POST不是等效的,因为请求每次更改的资源并不相同;

      • 从请求参数格式,GET请求数据将附上URL,即将收到的请求数据将放在HTTP消息的请求标题中,以?分 URL 和传输数据,参数之间以 & 相连;而 POST 请求会把提交的数据则放置在是 HTTP 请求报文的请求体中。

      • 从安全性上看 ,POST比GET更安全。因为GET请求提交的数据将出现在URL上,而且 POST请求 参数被装入请求体中,相对更安全。

      • 从请求的大小看,GET请求的长度由浏览器或服务器限制到URL的长度,允许发送较少的数据,而 POST请求的长度并不限制到大小。

      Http 响应报文

      HTTP的响应消息是服务器返回的数据,它必须有一个请求体,然后是一个响应消息。

      3db3adc93f05a591cc978cfb9d4926b1.png

      HTTP响应消息由:状态行,响应头,响应机构组成。

      一般响应代码类别

      • 1xx(临时响应):服务器收到要求请求者继续执行操作的请求时的信息;

      • 2xx ( 成功 ) : 成功 地 收到 和 处理 了 该 操作 ;

      • 3xx ( 重新 定位 ) : 需要 进行 进一步 的 行动, 以 完成 这项 请求 ;

      • 4xx(客户端错误):请求包含语法错误或无法完成请求;

      • 5xx(服务器错误):服务器在处理请求时发生错误;

      响应示例

      完成HTTP请求的步骤

      当我们输入网页浏览器的地址栏时:www.baidu.com然后回到车上,发生了什么事?

      • 通过浏览器缓存、系统缓存、主机文件、路由器缓存和递归搜索根域名服务器(DNS分析)搜索一个IP地址的过程。

      • 建立一个TCP/IP连接(三个握手特定过程)。

      • HTTP请求由浏览器发送。

      • HTTP请求通过路由器继电器,通过服务器的防火墙到达服务器。

      • 服务器处理HTTP请求并返回HTML文件。

      • 浏览器分析HTML文件,并在浏览器末端显示它。

      • 服务器关闭TCP连接(四个实时的特定进程)。

      Https

      HTTP协议运行在TCP上,并且是明确传输的,因此客户端和服务器不能互相验证身份。 HTTP通过SSL(Secure Socket Layer,安全插座层)或TLS(Transport Layer Security,安全层传输协议)用于加密HTTP通信内容的联合使用。 属于通信加密,即通过通信线进行加密。

      b048d1000c776b55d5a0ae2509aa663b.png

      HTTPS使用共享密钥加密(对称)和开放密钥加密(非对称)的组合。如果可以保证密钥,则可以考虑使用开放密钥加密来进行通信。但公共密钥加密比共享密钥加密慢。

      HTTP 的不足

      • 窃听威胁:通讯使用普通文本(不加密),内容可能被盗窃;

      • 风险暴露:通讯者的身份未被核实,因此有可能发生伪造;

      • 变形风险:不能证明报告的完整性,因此可能报告有变形;

      两者区别

      • 不同的端口:HTTP和HTTP使用不同的连接方法和不同的端口,前者80和后者443;

      • 资源消耗:HTTP通信比HTTP通信消耗更多的CPU和内存资源,因为加密减少;

      • 成本:HTTP通信需要证书,通常是从认证机构购买的;

      HTTPS工作原理

      6e420fca4ca34fec469486e6ac1ab073.png
      1.客户端启动HTTPS请求

      用户在浏览器中输入一个https地址,然后连接到服务器的443端口。

      【2】服务端的配置

      使用HTTPS协议的服务器必须有一套数字证书,这些证书可以由自己制作或应用于组织。不同的是,由自己发出的证书需要客户端验证继续访问,而由一个可靠的公司应用的证书不会出现一个提示页。

      这个证书实际上是两个公共和私人密钥,想象一个钥匙和锁,只是你是世界上唯一拥有这个钥匙的人,你可以把锁交给别人,其他人可以用这个锁锁住重要的东西.然后发给你,因为只有你才有钥匙,所以只有你才能看到锁上的东西。

      【3】传送证书

      该证书实际上是公开的钥匙,但它包含很多信息,如证书的发行机构、有效期等。

      客户分析证书

      这由客户端的TLS进行,它首先验证发布机构、有效期等公钥的有效性。 如果发现例外,将显示一个警告框,显示证书有问题。

      如果 certificate 没有问题, 生成一个随机值,然后用 certificate 加密随机值, 如上所述, 锁定随机值以锁定, 这样除非有一个钥匙, 锁定的内容就不会可见.

      【5】传送加密信息

      证书加密的随机值的目的是使服务器获取此随机值,然后通过此随机值加密和解密客户端与服务器之间的通信。

      6.服务端信息的解密

      服务结束后,用私人密钥解密,收到向客户传递的随机值(私钥),然后内容通过这个值进行对称加密,所谓对称加密就是,通过某种算法将信息和私钥混合起来,这样除非知道私钥,不然无法获取内容,正如客户和服务部门知道这个私人钥匙一样,所以只要加密算法足够强,私钥够复杂,数据就够安全。

      加密信息的传输

      服务部分的信息以私钥加密,可以恢复到客户端。

      8.客户解密信息

      客户端通过先前生成的私钥解密服务部分发送信息,从而获得解密内容的理解,整个过程甚至在第三方倾听数据的情况下也无法解密信息。

      HTTPS 的缺点

      • HTTPS协议多次握手,导致页面加载时间延长近50%;

      • HTTPS连接缓存比HTTP低效率,增加数据成本和电力消耗;

      • SSL包含消耗CPU资源的安全算法,而服务器资源则消耗更多。

      来源:blog.csdn.net/csp732171109/article/details/122608300

      • 发现了一种JSON视觉化工具神, 真可爱!

      • 怎样才能像JetBrains这样的产品在家里制造?

      • PostgreSQL超越MySQL

      • 记者: 用一个for循环, 为什么一个forEach?

      • 指挥官:谁会用雷迪斯的过期监视来关闭命令?

      b457a2652710690931e4862f6200ef87.jpeg

      明天见。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29304.html

          热门文章

          文章分类