裸泳的猪

沾沾自喜其实最可悲

0%

基础知识HTTP

什么是HTTP?

HyperText Transfer Protocol(超文本传输协议),它是一个无状态的工作在应用层的协议.

超文本指的是HTML,css,JavaScript和图片等,HTTP的出现是为了接收和发布HTML页面,也可以用于接收一些音频,视频,文件等内容。

HTTP协议是用于客户端和服务器端之间的通信,用于客户端和服务器端之间的通信有HTTP协议和TCP/IP协议族在内的其他众多的协议。

HTTP的短连接和长连接

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。可以持久连接,TCP连接默认不关闭,可以被多个请求复用,只有在一段时间内,没有请求,就可以自动关闭。使用长连接的HTTP协议,会在响应头加入这行代码:

1
2
// 默认:
Connection:keep-alive

HTTP的特点:

支持客户端、服务器端模式,简单快速,客户端向服务器端请求服务时,只需传送请求方法和路径,灵活,HTTP允许传输任意类型的数据对象,无状态,HTTP协议是无状态协议,指明协议对于事务处理没有记忆能力。

HTTP1.1虽然是无状态协议,但是为了实现期望的保持状态功能,于是引入了Cookie技术,有了Cookie,和HTTP协议通信,就可以管理状态了。

HTTPS

HTTPS 的全称是 Hypertext Transfer Protocol Secure。
从名称我们可以看出 HTTPS 要比 HTTPS 多了 secure 安全性这个概念,实际上, HTTPS 并不是一个新的应用层协议,它其实就是 HTTP + TLS/SSL 协议组合而成,而安全性的保证正是 TLS/SSL 所做的工作。

  • HTTP 的默认端口是 80,而 HTTPS 的默认端口是 443。
    http和https的比对
  • 数据完整性:内容传输经过完整性校验
  • 数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
  • 身份认证:第三方无法伪造服务端(客户端)身份

SSL过程
建立连接获取证书

  1. SSL 客户端通过 TCP 和服务器建立连接之后(443 端口),并且在一般的 tcp 连接协商(握
    手)过程中请求证书。即客户端发出一个消息给服务器,这个消息里面包含了自己可实现的算
    法列表和其它一些需要的消息,SSL 的服务器端会回应一个数据包,这里面确定了这次通信所
    需要的算法,然后服务器向客户端返回证书。(证书里面包含了服务器信息:域名。申请证书
    的公司,公共秘钥)。
    证书验证
  2. Client 在收到服务器返回的证书后,判断签发这个证书的公共签发机构,并使用这个机构的公
    共秘钥确认签名是否有效,客户端还会确保证书中列出的域名就是它正在连接的域名。
    数据加密和传输
  3. 如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务
    器,服务器使用它的私钥对它进行解密,这样两台计算机可以开始进行对称加密进行通信。
1
2
3
4
5
6
7
sequenceDiagram
客户端->>服务端: 请求http连接(消息里面包含了自己可实现的算法列表和其它一些需要的消息)
服务端->>客户端: 返回私钥签名后的证书(公钥)
客户端->>客户端: 接收证书,用机构的公钥验证证书签名,使用算法产生随机的对称密钥,并且使用公钥对此对称密钥加密
客户端->>服务端: 发送加密后的堆成密钥
客户端->>服务端: 通过对称密钥加密的密文进行通信
服务端->>客户端: 通过对称密钥加密的密文进行通信
-------------本文结束感谢您的阅读-------------