|
|
|
|
公众号矩阵

一次微信聊天引发的离婚大战!

今天看到这两幅图片,不禁哈哈大笑。互联网上很多段子或者笑话,其实最能引起笑果的往往来自于真实生活,而不是那些为了笑果而编造的段子。

作者:车小胖谈网络来源:车小胖谈网络|2021-11-22 08:33

今天看到这两幅图片,不禁哈哈大笑。互联网上很多段子或者笑话,其实最能引起笑果的往往来自于真实生活,而不是那些为了笑果而编造的段子。

图片来自 包图网

微信真的会因为网络不好而造成信息的前后颠倒吗?真的会。

为什么呢?马化腾说微信就是一个邮箱,只是这个邮箱比较快,让你感受不到这是一个邮箱,而让你有一种即时通信的错觉。

微信这个邮箱是这么来工作的:Alice 登录微信服务器,认证身份,上线状态。这是一个基于 TCP 的长连接,安全加密。

所谓长连接,就是 Alice 只要不是手机没电或者关机状态,这个长连接一直都是运行且双向可以通信的。这个负责登录的服务器,简称登录服务器。

Alice 给 Bob 发了一段文字,“Are you kidding me?”敲回车。这段文字是通过上文的长连接发送的吗?

不是的。而是通过一个短连接发送的,这个短连接是 Alice 点开 Bob 头像才建立的,这是一个 TCP + MMTLS(安全加密)+ HTTP 封装的短连接。

然后这个消息就被短连接以 HTTP 格式发出去了。这个消息是直接发给 Bob 的吗?

不是的,而是发给 Bob 的邮箱。Bob 的邮箱是在 Bob 的手机里、还是微信存储服务器里?

微信服务器。这样做有什么好处呢?

假如 Bob 在飞机上,手机关机,Alice 消息依然可以将消息发出。如果直接发给 Bob 手机,手机都关机了,那就压根无法建立连接,自然连消息都发不出。

当然好处还有许多,比如 Alice 与 Bob 的手机都位于 NAT 设备的后方,他们之间的直接通信不一定 100% 成功。

如果 Bob 是在线状态,登录服务器会第一时间通过 TCP 长连接,通知 Bob 微信邮箱里有信,至于这封信存在邮箱的什么地方,这是一个 HTTP 格式的链接。

Bob 微信会与链接所对应的存储服务器建立短链接,将消息下载并显示到本地窗口,然后关闭短连接。

如果 Bob 是离线状态,微信服务器其实也不急的,反正消息呆在存储服务器,不会飞的。等 Bob 下飞机上线了第一时间通知 Bob 微信就好了。

以上就是微信的工作流程。接下来讲为何微信会发生消息后发先至的情况?

微信每次敲完一段文字,点击“发送“,这个消息就触发了一次:

  • 短连接的建立
  • 消息的传输
  • 短连接的断开

这个是标准的三步曲。当你再次发一段文字时,又触发了一次三步曲。两次的三步曲是相互独立的。

在网络畅通时,Alice 第一个消息很快就发到 Bob 的邮箱,并被 Bob 微信呈现在窗口里。Alice 第二个消息发出的晚,自然到达得晚,这是非常好理解的。

但是当网络不好时,第一个三步曲的消息报文不是那么幸运,丢了,然后 Alice 的手机一直在重传这个消息。Alice 又发送第二个消息,运气特别好,没有丢,结果比第一个消息早到了几秒。

既然微信讲究及时通信,微信会第一时间通知 Bob 的微信,只是这个消息通知顺序,先是第二个消息,然后才是第一个消息。这样就造成了微信消息时序的颠倒。

最后,每一段消息内部文字并没有颠倒,对吗?

这就是 TCP 的功劳,因为短连接依然使用的是 TCP 做为传输协议,TCP 最擅长做的就是保证每一个字节按照先后顺序到达。

TCP 是一个可靠协议,可以修复由于网络暂时的中断而造成的字节丢失。但是如果 Alice 向 Bob 邮箱上传信的时候,网络发生了长时间的中断,超出了 TCP 最大修复时间,这时微信会提示 Alice,消息发送失败!

作者:车小胖谈网络

编辑:陶家龙

来源:转载自公众号车小胖谈网络(ID:chexiaopangnetwork)

【编辑推荐】

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区
  2. HarmonyOS ArkUI之仿微信图片选择
  3. 5G消息开启试商用,能否改变当下即时通讯格局?会取代微信吗?
  4. Java实现四种微信抢红包算法,拿走不谢
  5. 为什么微信在海外败给了中国人都不用的WhatsApp?
  6. 微信安卓版 8.0.17 内测版发布:发送消息有动画显示(附开发者内容)
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

带你轻松入门 RabbitMQ

带你轻松入门 RabbitMQ

轻松入门RabbitMQ
共4章 | loong576

56人订阅学习

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

14人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

42人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微