关于HTTP协议的那些事儿
发布日期:2022-02-22 16:04:48 浏览次数:10 分类:技术文章

本文共 1388 字,大约阅读时间需要 4 分钟。

HTTP(HyperText Transfer Protocol,超文本传输协议)是浏览器与服务端之间最主要的通信协议。

一个HTTP请求一般由四部分组成:

  1. 请求方法:GET,POST
  2. 请求地址
  3. 请求头:包含一些客户端环境信息,身份验证信息等
  4. 请求体:提交的字符串,表单信息等
    http请求

一个HTTP响应一般由三部分组成

  1. 一个数字和文字组成的状态码
  2. 响应头:包含服务器类型,日期时间,内容类型和长度等
  3. 响应体:服务器返回的字符串,html代码等
    http响应

HTTP状态码

  • 1xx:信息类,表示收到Web浏览器请求,正在进一步处理中
  • 2xx:请求成功
  • 3xx:重定向
  • 4xx:客户端错误,请求有错误
  • 5xx:服务器错误,服务器不能完成对请求的处理

HTTP常见字段

  • Host:客户端发送请求时指定服务器的域名
  • Content-Length:服务端返回数据的长度,单位字节
  • Connection:客户端要求服务器使用TCP持久连接,以便其他请求复用
  • Content-Type:服务端返回的数据格式
  • Accept:客户端请求时,声明自己可以接收的数据格式
  • Content-Encoding:表示服务器返回数据采用的压缩格式
  • Accept-Encoding:客户端请求时,表示可以接受的压缩方法

HTTP(1.1)特性

优点:简单灵活,易于扩展,应用广泛,跨平台,无状态,明文传输
缺点:无状态,明文传输,不安全

无状态:服务器不会记录客户端的状态信息,导致每操作一次都要验证信息
解决无状态问题:在请求和响应报文中写入Cookie信息来控制客户端的状态。
不安全:通信使用明文,内容可能被窃听;不验证身份,可能遭遇伪装;无法证明报文完整性,可能被篡改。
解决不安全问题:HTTPS

HTTP 各个版本的核心改进以及解决的问题

在这里插入图片描述

HTTPS协议

HTTPS协议:在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。

对称加密在加/解密过程中使用同一个密钥,而非对称加密使用不同的密钥进行加/解密。

HTTPS采用对称 加密和非对称加密结合的混合加密方式:

  • 通信建立前采用 非对称加密 交换 会话秘钥
  • 通信过程中采用 对称加密的会话秘钥的方式加密明文数据。客户端通过公钥来加密,服务端利用私钥来解密。

密钥对生成后直接发送给客户端还是会被篡改,此时只能借助第三方来实现了,比如证书机制。

公钥放入一个证书中,该证书包含服务端的信息,比如颁发者、域名、有效期,为了保证证书是可信的,需要由一个可信的第三方来对证书进行签名。这个第三方一般是证书的颁发机构,也称 CA(Certification Authority,认证中心)。

那么这个证书的签名怎么检验真假呢?

证书签名就是将证书信息进行MD5计算,获取唯一的哈希值,然后再利用证书颁发方的私钥对其进行加密生成。

校验过程与之相反,需要用到证书颁发方的公钥对签名进行解密,然后计算证书信息的 MD5 值,将解密后的 MD5 值与计算所得的 MD5 值进行比对,如果两者一致代表签名是可信的。所以要校验签名的真伪,就需要获得证书颁发方的公钥,这个公钥就在颁发方的证书中。

这种通过签名来颁发与校验证书的方式会形成一个可追溯的链,即证书链。处于证书链顶端的证书称为根证书,这些根证书被预置在操作系统的内部。

持续更新 ~

转载地址:https://blog.csdn.net/Conradine_Lian/article/details/107223985 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:HTML5+CSS3知识概览
下一篇:解决跨域的九种方法

发表评论

最新留言

很好
[***.188.10.217]2022年09月30日 07时13分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

UML类图中箭头和线条的含义和用法 2019-12-25 02:37:32
归并排序 2019-12-25 02:37:32
一 Apache NiFi 2019-12-25 02:37:32
二 NIFI环境搭建-单机 2019-12-25 02:37:33
正则表达式 2019-12-25 02:37:30
Python 操作文件 2019-12-25 02:37:31
How to address the overfitting 2019-12-25 02:37:31
机器学习 话题模型 2019-12-25 02:37:31
移动链表最大元素 2019-12-25 02:37:31
打印叶节点到根的路径 2019-12-25 02:37:31
《统计学习方法》提升方法 2019-12-25 02:37:31
[maven学习笔记(九)] 使用 eclipse 的 maven 插件 2019-12-25 02:37:29
demo 2019-12-25 02:37:29
git 命令 2019-12-25 02:37:29
Linux权限管理 2019-12-25 02:37:29
怎么修改 deepin 的 root 密码 2019-12-25 02:37:29
Python Notes 0 2019-12-25 02:37:30
Linux软件安装管理 2019-12-25 02:37:30
About Html 2019-12-25 02:37:30
[maven学习笔记(三)] maven 常用指令 2019-12-25 02:37:27