HTTP协议&HTTPS协议

HTTP协议

HTTP协议是基于TCP协议的,当然是要先建立TCP连接了。目前使用的HTTP协议大部分都是1.1.在1.1的协议里面,默认是开启了Keep-Alive的,这样建立的TCP连接,就可以在多次请求中复用。

HTTP请求的构建

HTTP的报文大概分成三大部分。第一部分是请求行,第二部分是请求的首部,第三部分才是请求的正文实体。
HTTP协议&HTTPS协议

  • 请求行
    请求行中,URL就是www.baidu.com,版本为HTTP1.1。这里要说一下的,就是方法。方法有几种类型。
    最常用的类型就是GET,就是去服务器获取一些资源,而获取的资源往往就是一个页面。
    另一种类型就是POST,它需要主动告诉服务端一些信息,而非获取。
    还有一种类型就是PUT,就是想指定资源位置上传最新的内容。POST往往是用来创建一个资源的,而PUT往往是用来修改一个资源的
    另一种常见的就是DELETE,这个就是用来删除资源的

  • 首部字段
    首部就是key value,通过冒号分隔。着里面往往,保存了一些非常重要的字段。例如:Accept-Charset,表示客户端可以接受的字符集。防止传过来是另外的字符集,从而导致乱码;Comtent-Type是指正文的格式。例如进行POST请求,如果正文是JSON,那么我们就应该将这个值设置为JSON。

在HTTP的头部中,Cache-control是用来控制缓存的,当客户端发送的请求中包含max-age指令时,如果判定缓存层中,资源的缓存时间数值比指定时间的数值小,那么客户端可以接受缓存资源;当max-age值为0 ,缓存层会将需求转发给应用集群。

if-modified-since也是一个关于缓存的。如果没有更新的话,服务端返回“304 Not Modified”,客户端不用下载,也会节省带宽。

HTTP返回的构建

报文格式如下图所示:
HTTP协议&HTTPS协议

  • 状态行
    状态码会反应HTTP请求的结果,200-OK,404-服务器无法响应这个请求,然后短语会大概说一下原因。
  • 接下来返回首部的key value。
    Retry-After,告诉客户端应该在多长时间以后再次尝试一下,503 错误”是说“服务暂时不再和这个值配合使用”。(这块还不是很理解)Content-Type,表示返回的是HTML,还是JSON

HTTP2.0协议有些复杂啊

HTTPS协议

加密的方式

  • 对称加密:加密和解密使用的**是相同的。加密和解密使用的是同一个**,只能让使用的人知道,不能让其他人知道。效率高、性能好,所以在交互场景下多用对称加密。
  • 非对称加密:加密使用的**和解密使用的**是不相同的,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。

数字证书

证书里面有公钥、证书的所有者、证书的发布机构和证书的有效期。证书(签名+需要加密的信息)通常是由CA颁发的,用CA的私钥来实现签名。需要使用CA的公钥来解密,怎么确定CA的公钥是对的,需要上级的公钥能不能解开CA的签名。

HTTP的工作模式

在定外卖的时候,客户有自己的私钥和公钥,外卖网站也有自己的私钥和公钥,将彼此的公钥交换用来通信。

总结

  • 加密分对称加密和非对称加密。对称加密效率高,但是解决不了**传输问题;非对称加密可以解决这个问题,但是效率不高。
  • 非对称加密需要通过证书和权威机构来验证公钥的合法性。
  • HTTPS 是综合了对称加密和非对称加密算法的 HTTP 协议。既保证传输安全,也保证传输效率。