你饿了吗?请小伙伴下单了解一下TCP、UDP、HTTPS、WebSocket的故事以及四者之间的关系。分享到微信群,大家可以点击。无意间发现这里的菜单是饿了么?它是实时刷新的。我意识到这是通过WebSocket实现的。之前对它了解不详细,也不知道它和HTTPS、HTTP、TCP的关系。这次是边喝奶茶边看文章的,下面把自己的理解记录下来。先介绍参考资料。阮一峰大师的博客:http://www.ruanyifeng.com/blo...书的一半了《网络是怎样连接的》1.UDP协议:只发送数据包,不确认2.TCP协议不是摘自a大文章,不谈自己的理解。相信大家会一二明白,至少面试中经常背的三次握手和四次挥手已经被大家理解和熟悉了。其实就是一个带有确认机制的UDP协议,每发送一个数据包都需要确认。如果数据包丢失,则不会收到确认,发送方知道有必要重新发送数据包。所以TCP协议可以保证数据不会丢失。其缺点是流程复杂、实施难度大、资源消耗大。TCP是底层通信协议,它定义了数据传输和连接方式的规范。3.HTTP超文本传输??协议。它是一个基于TCP协议的应用层。你可以理解为TCP就是传输层,是客户端和服务器建立连接所使用的最基本的服务。不涉及我们实际需要请求的数据,简单的传输,HTTP是一种基于TCP的应用方式。用于发送和接收数据,即实际应用。它有相应的动作HTTP是一个应用层协议,它定义了传输数据内容的规范。4、HTTPS,HTTP可能存在信息安全风险,所以有SSL和TLS加密。目前SSL有v3.0版本和TSLv.2版本。目前,大多数浏览器都已经使用了TSL1.2版本。这种加密简单的说就是客户端请求服务器创建一个安全连接,并列出支持的密码组合(加密的密码算法和加密的哈希函数)===>服务器从列表中确定加密和哈希函数,并通知client===>返回安全证书给客户端,包括服务器的名称、受信任的证书颁发机构(CA)和服务器的公钥===>客户端用公钥加密并发送给服务结束===>服务器解密。如果上述任何步骤失败,连接将断开。5.WebSocket:IdentifierWS如果加密,就是WSS。TCP协议保证了双方的平等对话,但一方面,HTTP协议似乎有点“不平等”。客户端总是发起一个单向请求,每次请求结束后会主动释放连接,更新客户端数据。通知客户端更新数据,但是客户端轮询(每隔一段时间发送查询,看服务器是否有新信息)效率很低,很浪费资源,必须持续连接。此时,2008年WebSocket诞生,2011年成为国际标准,得到所有浏览器的支持。它最大的特点是服务端可以主动向客户端推送消息,是真正意义上的双向平等对话。下图就是两者的区别。下图很好地说明了三者之间的关系。(ws即WebSocket)TCP是TCP/IP五层网络协议中的传输层,而HTTP和WebSocket都是基于TCP的应用层。OSI七层协议将第五层应用层分为三个应用层、表示层和会话层。这是两个简单的图片。不知道或者不明白的同学可以看看上面推荐的书籍或者有很多博客详细介绍。计算机网络的核心结构是TCP/IP五层网络模型(OSI七层模型将应用层分为三层)和每一层对应的协议
