原文连接:jelly.jd.com/article/605… 本文仅是自己的笔记。
web通信
传统的通信方式:
客户端发送请求向服务器。服务器收到消息后再返回给客户端。
三次握手四次挥手
关键词解释:SYN:(synchronous):表示建立连接; ACK:(scknowledgement):表示响应; FIN:(finish):表示关闭连接
HTTP的演进:
HTTP ---> HTTP/2
HTTPS(不是新的协议,而是在之前的应用层和传输层之间引入了安全层)
HTTP先和SSL/TSL进行通信,在由SSL/TSL和TCP通信
几种加密方式:
1、对称加密 客户端请求时携带公钥和使用公钥加密后的内容,服务端接受到之后再通过公钥进行解密,但是这样在传输的过程中,如果黑客截获了传输的内容,那么就可以直接使用公钥(因为公钥是随着请求一起发送出去的)解密我们客户端发送的数据。
2、非对称加密: 客户端使用公钥进行数据加密,到达服务端后使用私钥进行解密。 优点:安全 缺点:加密解密时间过长 3、混合加密: 客户端发送使用公钥加密过后的数据,但是公钥需要私钥才能解密获取到,这样一来我们就可以快速的拿到公钥,然后对数据进行解密。
实时web通信
第一种:短轮询
function request(){
setTimeout(function(){
fetch(url).then(()=>{
request();
})
})
}
第二种:基于iframe的长链接流(stream)模式
第三种:SSE Server-Sent Events 它是一个构造函数,我们需要使用它的实例
const sse = new EventSource('url');
//建立连接时触发
sse.addEventListener('open', function(e){}, false);
//接收到新消息时触发
sse.addEventListener('message', function(e){}, false);
//无法建立连接时触发
sse.addEventListener('error', function(e){}, false);
第四种:WebSocket