HTTP 基本特性
1、http是超文本传输协议的简称,特点是简单的,无状态的通信协议
无状态:服务器和客户端之间通过http协议进行通讯,服务器不会保存之前建立连接的状态。 比如发送一个请求,这是一个全新的请求,并不会记住上一次是谁发送的请求或者请求的状态。 可以通过cookie和session结合的方式解决。
2、http 报文
http 报文由报文首部和报文主体组成。
请求报文首部:请求行(请求方法,协议以及版本 ,URL 资源定位符地址),请求首部字段;
响应报文首部:请求行(协议以及版本,状态码),响应首部字段;
报文实体:请求参数,返回的响应数据
HTTPS 基本特性
HTTPS 是超文本安全传输协议的简称,特点是安全。
安全是和http 相比。
1、http是直接和tcp进行通信,https 和tcp 之间多了一层ssl层,对通信链路和内容进加密。
HTTP HTTPS TCP SSL TCP 2、http 通信数据传输是透明的,不安全的,可以获取到传输的数据,即使加密了也可以获取到加密的数据。
https 对整合通信链路都进行了加密,同时也对通信的内容也进行加密。
3、加密方式:对称加密,非对称加密
对称加密:客户端和服务器共享一个共享密钥,对加密内容进行解密和加密
缺点:共享密钥在传输过程中容易被获取,不安全
非对称加密:服务端和客户端各自保留私钥,通过公开密钥进行加密,使用私钥进行解密
缺点:公开密钥的传输也容易被获取,篡改。
4、认证证书
认证证书是为了解决通信过程中,公开密钥和报文内容被篡改和通信双方身份确认的问题。
认证证书由可靠的第三方机构颁发,通常已经嵌入到浏览器中。
获取过程
1、服务器运营方向第三方机构申请证书,第三方机构审核通过后会将公开密钥和数字签名一起放到证书中,发送给服务器运营方;
2、服务器申请的证书发送给客户端,客户端根据证书的数字签名确认服务端的真实身份,通过之后拿到公开密钥;
3、在后面的通信中就会使用公开密钥加密,通过私钥进行解密。
5、缺点:由于多了SSL对数据进行加密解密的过程,会耗费时间和内存等硬件资源
6、解决方式
对于敏感的信息,使用非对称加密的方式;
对于非敏感的信息,使用对称加密的方式,对称加密共享密钥传输,可以采用证书的方式,防止篡改,保证安全性;
缓存机制
强缓存和协商缓存
强缓存
客户端发起请求,判断Cache-control(通用首部字段) 中的max-age 或者Expires(实体首部) 字段,如果都没过期,直接命中缓存。如果没有命中,进入协商缓存。
协商缓存
判断字段:last-modify(服务端)/last-modify-since(客户端),if-non-match(客户端)/etag(服务端)
1、客户端第一次向服务器发起请求,服务端会在响应部分带上last-modify 或者etag 字段的值;
2、客户端再次发送请求时,会将last-modify或者etag 的值写入到请求首部字段对应last-modify-since和if-non-match字段中;
3、服务端会比较last-modify和last-modify-since或者etag和if-non-match大小是否相等,相等直接命中缓存,不相等,服务器响应请求,返回新的数据;
last-modify:优点是产生简单,记录资源的修改时间。缺点是,记录的最小时间单位是秒级别,对秒以下的改动无法感知。
etag:优点是响应敏感,不依赖时间,只依赖于数据实体的变化,有变化就会重新响应请求。缺点是,产生复杂,根据实体数据的内容等特性,产生的加密字符串。
对比优先级,响应敏感比较重要,一般使用etag
TCP/IP 的三次握手
目的:为了确定服务端和客户端的收发能力都是正常的1、第一次握手:客户端给服务端发送数据,服务端收到了,服务端知道客户端发送能力正常,自己的接受能力正常; 2、第二次握手:服务端给客户端发送数据,客户端收到了,客户端知道服务端发送和接收能力都是正常的,自己的发动能力和接收能力是正常的 3、第三次握手:客户端发送数据包给服务端,服务端收到了,服务端知道客户端的的收发能力是正常的,自己的收发能力也是正常的,可以建立正常的通信连接。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。