HTTP 深入浅出

2019/02/24 Network

简单来说,HTTP协议就是客户端和服务器交互的一种通迅的格式。


前言

在大学时就一直听闻HTTP和HTTPS的大名。校招面试时也被人问到过,现场没有回答上来(我很菜.jpg)。事后回去补了知识也没有形成系统的理解。

这不今天从公众号推送的文章入坑。对此记录一下。

先从故事入手 一个故事讲完https

HTTP

HTTP是HyperText Transfer Protocol的缩写,中文翻译为超文本传输协议。他是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

说的简单点,其实HTTP协议主要就是用来进行客户端和服务器之间进行通信的标准协议。HTTP主要规定了客户端如何与服务器建立链接、客户端如何从服务器请求数据、服务器如何响应请求,以及最后连接如何关闭。

是不是很懵逼,我也是这样的。

话不多说,直接上干货。漫话:如何给女朋友解释什么是HTTP。 前提是得有个女朋友,哈哈,开玩笑的。

HTTP协议的迭代

HTTP协议主要的版本有3个,分别是HTTP/1.0、HTTP/1.1和HTTP/2。

PS: 据国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF )消息,HTTP-over-QUIC 实验性协议将被重命名为 HTTP/3,并有望成为 HTTP 协议的第三个正式版本。

HTTP2和HTTPS来不来了解一下?

HTTPS

HTTPS是Hypertext Transfer Protocol Secure的缩写,翻译为超文本传输安全协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。PS: 现在都用TLS协议了

先明确一点:HTTP和HTTPS是两个不同的协议。

HTTP的URL是由“http://”起始与默认使用端口80,而HTTPS的URL则是由“https://”起始与默认使用端口443。

什么对称加密,非对称加密。数字证书和 CA 认证之前被搞得头晕眼花的。

基础:

  • 对称加密
    • 加密和解密都是用同一个密钥
  • 非对称加密
    • 加密用公开的密钥,解密用私钥
    • 私钥只有自己知道,公开的密钥大家都知道
  • 数字签名
    • 验证传输的内容是对方发送的数据
    • 发送的数据没有被篡改过
  • 数字证书(Certificate Authority)简称CA
    • 认证机构证明是真实的服务器发送的数据。

数字签名不懂的可以阅读阮一峰老师的博文数字签名是什么?

HTTPS采用的是混合方式加密。

  • 用户向web服务器发起一个安全连接的请求
  • 服务器返回经过CA认证的数字证书,证书里面包含了服务器的公钥,认证机构对服务器公钥的数字签名,服务器的基本信息。
  • 用户拿到数字证书,用自己浏览器内置的”证书管理器”,查看解开数字证书的公钥是否存在。不存在,说明证书来源可疑。
  • 用户用CA的公钥对证书中的数字签名解密,得到哈希值,对证书中的服务器公钥进行哈希值计算,两个哈希值对比,如果相同,则证书合法,得到正确的服务器公钥。
  • 用户用服务器的公钥加密一个对称加密算法的密钥(即随机数),同时Hash算法使用该随机数对该消息进行哈希值计算。消息与哈希值一同与传给web服务器。
  • 因为只有服务器有私钥可以解密,所以不用担心中间人拦截这个加密的密钥
  • 服务器拿到这个加密的密钥,用私钥解密获取密钥(即随机数),使用随机数和Hash算法对该消息加密。验证的到的校验值是否与客户端发来的一致。如果一致则说明消息未被篡改,可以信任。
  • 最后再使用对称加密算法,和用户完成接下来的网络通信。

吐槽

自己压根也写不出来。把看到的博客记录下来,用于回看。


参考链接

Search

    Table of Contents