http、https、http2、websocket之间的关系
http:目前绝大多数是http1.1版本,最原始的web协议,默认80端口,基于TCP协议。
https:加密的http协议,默认443端口,基于TCP协议。
http2:第二代http协议,相较于HTTP1.x,大幅度的提升了web性能。在与HTTP/1.1完全语义兼容的基础上,进一步减少了网络延迟和传输的安全性,基于TCP。
websocket:服务端推送,实现服务端客户端全双工通信,基于TCP。
以上http,websocket都属于应用层协议,tcp属于传输层协议。
TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。
实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议,而Socket本身不算是协议,它只是提供了一个针对TCP或者UDP编码的接口。
我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。
HTTP2.0可以说是SPDY的升级版(基于SPDY设计的),但是依然存在一些不同点:
1、HTTP2.0支持明文传输,而SPDY强制使用HTTPS;
2、HTTP2.0消息头的压缩算法采用HPACK,而非SPDY采用的DEFLATE。
总得来说,在HTML5规范下,最推荐使用ServerSent和WebSocket的方式进行服务器消息的推送。
WebSocket是HTML5中的协议,支持持久连接;
首先HTMl5指的是一系列新的API,或者说新规范,新技术。WebSocket是HTML5中新协议、新API;
但是WebSocket是由http先发起的,然后再转为websocket连接;
ServerSent的方式,可以使服务端的开发依然应用以前的方式,但是其工作方式与Comet类似。
而WebSocket的方式,则对服务端的开发有着较高的要求,但其工作方式是完全的推送。
欢度六一