11-http/https
1、Http
HTTP 是基于 TCP/IP 协议的应用层协议
HTTP 是一个无状态协议
目前大部分浏览器都使用 HTTP 1.1 协议,在 HTTP 1.1 版本中,默认情况下所有连接都被保持。
HTTP 长连接不可能一直保持,例如 Keep-Alive: timeout=5, max=100,表示这个TCP通道可以保持5秒,max=100,表示这个长连接最多接收100次请求就断开
使用长连接之后,客户端、服务端怎么知道本次传输结束呢?判断传输数据是否达到了Content-Length 指示的大小
http请求过程:1.域名解析 2.建立连接(tcp三次握手)3.发起请求 4.服务器响应,浏览器获得html代码 5.浏览器解析html代码,并渲染页面
2、HTTP 1.1 与 HTTP2.0
HTTP 1.1
支持持久连接(HTTP/1.1的默认模式使用带流水线的持久连接),
在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。
HTTP2.0
性能上大幅度提升
多路复用,首部压缩
3、HTTPS
https://www.wosign.com/info/https_tls_ssl_http.htm
https://blog.csdn.net/sean_cd/article/details/6966130
HTTP Over SSL
TLS/SSL中使用了非对称加密,对称加密以及HASH算法
1)浏览器请求https连接(访问服务端),并将自己支持的加密算法发送给服务端
服务端选择一套加密算法,将证书和公钥发给浏览器
2)浏览器判断服务端证书是否合法
浏览器随机生成一个对称秘钥(用于数据加密)
3)用服务端公钥将随机生成的对称秘钥加密
4)发送加密后的对称秘钥给服务端
5)服务端用私钥解密,获取对称秘钥,用于后续通信消息的加解密
其中,非对称加密,用于加密随机生成的秘钥。
对称秘钥用于消息通信的加解密,后续的通信都是用对称秘钥
另外Hash算法,上述步骤并未提及,用于检测消息的一致性(是否被篡改)
4、TCP 三次握手 四次挥手
https://hit-alibaba.github.io/interview/basic/network/TCP.html
https://zhangbinalan.gitbooks.io/protocol/content/tcpbao_wen_ge_shi.html
三次握手简单解释:
建立起一个TCP连接需要经过“三次握手”:
第一次握手:客户端发送syn包(seq=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
5、网络七/四层模型