饿了吗叫好友拼单引起,去理解TCP、UDP、HTTPS、WebSocket以及四者间关系的故事

今天和同事一起饿了吗拼单点奶茶。分享至微信群,然后每个人可以点。本人无意间发现饿了吗这边的菜单实时刷新的,意识到这是WebSocket实现的,以前没有详细了解,也不知道它与HTTPS、HTTP、TCP之间的关系。这次喝奶茶的时间里看了看文章,下面记录下自己的理解。

首先先介绍下参考资料。阮一峰大神的博客:http://www.ruanyifeng.com/blo...
还有现在读一半的《网络是怎样连接的》这本书

1.UDP协议:只发出数据包,不确认

2.TCP协议就不摘抄大篇文章,也不说自己的理解了。相信每个人都会理解一二,最起码面试常背的三次握手,四次挥手大家都已经理解并烂熟于心了。实际就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。 TCP是底层通讯协议,定义的是数据传输和连接方式的规范

3.HTTP 超文本传输协议。是基于TCP协议的应用层。你可以理解为TCP是传输层,就是最基础的客户端和服务端用于建立连接的服务,它并不涉及我们需要请求的实际数据,简单的传输,而HTTP为基于TCP的应用方法,是用来收发数据,即实际应用来的。他有对应的动作
饿了吗叫好友拼单引起,去理解TCP、UDP、HTTPS、WebSocket以及四者间关系的故事_第1张图片
HTTP是应用层协议,定义的是传输数据的内容的规范

4.HTTPS,HTTP可能会有信息安全风险所以有SSL,TLS加密。目前SSL已经v3.0版本,TSL v.2版本。目前大部分浏览器都已经用到TSL 1.2版本。
这个加密简单来说就是客户端向服务端要求创建安全连接,并列出受支持的密码组合(加密密码算法和加密哈希函数)===>服务器从该列表中决定加密和散列函数,并通知客户端===>返回给客户端安全证书,包含服务器的名称、受信任的证书颁发机构(CA)和服务器的公钥===>客户端利用公匙进行加密,并发送给服务端===>服务端解密。
上边任何一个步骤失败,就会断开连接。

5.WebSocket:标识符WS 如果加密就是WSS。TCP协议保证了双方的平等对话,但是从一方面看HTTP协议貌似有点“不平等”,总是由客户端单向发起请求,每次请求结束又会主动释放连接,客户端数据有更新并不能通知客户端进行数据的更新,但是客户端轮询(每隔一段时候,就发出一个询问,了解服务器有没有新的信息)效率很低,而且非常浪费资源,必须不停的链接。
这个时候WebSocket在2008年诞生了,2011年成为国际标准,所有浏览器都支持。他的最大特点就是服务器可以主动想客户端推送消息,是真正的双向平等对话。下面图是二者区别

饿了吗叫好友拼单引起,去理解TCP、UDP、HTTPS、WebSocket以及四者间关系的故事_第2张图片

下面一幅图很好的阐明的三者之间的关系。(ws 为WebSocket)
饿了吗叫好友拼单引起,去理解TCP、UDP、HTTPS、WebSocket以及四者间关系的故事_第3张图片

以及,每一层对应的协议
饿了吗叫好友拼单引起,去理解TCP、UDP、HTTPS、WebSocket以及四者间关系的故事_第4张图片

你可能感兴趣的:(html,websocket,http,https)