HTTP协议

全文目录

  • HTTP协议
    • HTTP请求与响应
  • HTTPS协议
    • 对称加密
    • 非对称加密
  • MITM中间人攻击
  • HTTPS通讯流程

HTTP协议

H T T P ,全称是 H y p e r T e x t T r a n s f e r P r o t o c o l HTTP,全称是 HyperText Transfer Protocol HTTP,全称是HyperTextTransferProtocol ,中文叫做超文本传输协议。它是一种用于分布式、协作式和超媒体信息系统的应用层协议。

url: 平常看见的网页就是URL。
HTTP协议_第1张图片

urlencode和urldecode: 在url中一些特殊的字符不能显现出来,需要通过转义进行表达。

HTTP请求与响应

请求一般是客户端向服务端发送的,格式:

  1. 首行: [方法] + [url] + [版本]
    HTTP协议_第2张图片

  2. H e a d e r Header Header : 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示 H e a d e r Header Header 部分结束

  3. B o d y Body Body : 空行后面的内容都是 B o d y Body Body . B o d y Body Body 允许为空字符串. 如果 B o d y Body Body 存在, 则在 H e a d e r Header Header 中会有一个 C o n t e n t − L e n g t h Content-Length ContentLength 属性来标识 B o d y Body Body 的长度;

HTTP协议_第3张图片

响应一般是服务端给客户端发送的,格式:

  1. 首行: [版本号] + [状态码] + [状态码解释]

HTTP协议_第4张图片

  1. H e a d e r Header Header : 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示 H e a d e r Header Header 部分结束
  2. B o d y Body Body : 空行后面的内容都是 B o d y Body Body . B o d y Body Body 允许为空字符串. 如果 B o d y Body Body 存在, 则在 H e a d e r Header Header 中会有一个 C o n t e n t − L e n g t h Content-Length ContentLength 属性来标识 B o d y Body Body 的长度; 如果服务器返回了一个 h t m l html html 页面, 那么 h t m l html html 页面内容就是在 b o d y body body 中.

HTTP协议_第5张图片

HTTP中常见的HEAD属性:常见HEAD属性

HTTPS协议

HTTP传输内容是按照文本的方式明文传输的,没有安全性极低,所以HTTPS就是对在HTTP的基础上对传输内容进行了加密。

对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

特点: 算法公开、计算量小、加密速度快、加密效率高

非对称加密

公钥加密,也叫非对称(密钥)加密(public key encryption),指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。在公钥加密体制中,没有公开的是私钥,公开的是公钥。

公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多.

  • 通过公钥对明文加密, 变成密文
  • 通过私钥对密文解密, 变成明文

也可以反着用

  • 通过私钥对明文加密, 变成密文
  • 通过公钥对密文解密, 变成明文

特点: 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

MITM中间人攻击

中间人攻击(Man-in-the-Middle Attack, MITM)是一种由来已久的网络入侵手段,并且当今仍然有着广泛的发展空间,如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。

所以需要先通过CA证书对收到的信息进行验证。

HTTPS通讯流程

所以一般的HTTPS通讯流程是:
HTTP协议_第6张图片

总结
HTTPS 工作过程中涉及到的密钥有三组:

  1. 第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在形成CSR文件与申请证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器在客户端请求是,返回携带签名的证书. 客户端通过这个公钥进行证书验证, 保证证书的合法性,进一步保证证书中携带的服务端公钥权威性。
  2. 第二组(非对称加密): 用于协商生成对称加密的密钥. 客户端用收到的CA证书中的公钥(是可被信任的)给随机生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥.
  3. 第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.

你可能感兴趣的:(Linux,http,网络协议,网络)