自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一次微信聊天引發(fā)的離婚大戰(zhàn)!

網(wǎng)絡(luò) 通信技術(shù) 開發(fā)工具
今天看到這兩幅圖片,不禁哈哈大笑?;ヂ?lián)網(wǎng)上很多段子或者笑話,其實(shí)最能引起笑果的往往來自于真實(shí)生活,而不是那些為了笑果而編造的段子。

 今天看到這兩幅圖片,不禁哈哈大笑?;ヂ?lián)網(wǎng)上很多段子或者笑話,其實(shí)最能引起笑果的往往來自于真實(shí)生活,而不是那些為了笑果而編造的段子。

[[436038]]

圖片來自 包圖網(wǎng)

微信真的會(huì)因?yàn)榫W(wǎng)絡(luò)不好而造成信息的前后顛倒嗎?真的會(huì)。

為什么呢?馬化騰說微信就是一個(gè)郵箱,只是這個(gè)郵箱比較快,讓你感受不到這是一個(gè)郵箱,而讓你有一種即時(shí)通信的錯(cuò)覺。

微信這個(gè)郵箱是這么來工作的:Alice 登錄微信服務(wù)器,認(rèn)證身份,上線狀態(tài)。這是一個(gè)基于 TCP 的長(zhǎng)連接,安全加密。

所謂長(zhǎng)連接,就是 Alice 只要不是手機(jī)沒電或者關(guān)機(jī)狀態(tài),這個(gè)長(zhǎng)連接一直都是運(yùn)行且雙向可以通信的。這個(gè)負(fù)責(zé)登錄的服務(wù)器,簡(jiǎn)稱登錄服務(wù)器。

Alice 給 Bob 發(fā)了一段文字,“Are you kidding me?”敲回車。這段文字是通過上文的長(zhǎng)連接發(fā)送的嗎?

不是的。而是通過一個(gè)短連接發(fā)送的,這個(gè)短連接是 Alice 點(diǎn)開 Bob 頭像才建立的,這是一個(gè) TCP + MMTLS(安全加密)+ HTTP 封裝的短連接。

然后這個(gè)消息就被短連接以 HTTP 格式發(fā)出去了。這個(gè)消息是直接發(fā)給 Bob 的嗎?

不是的,而是發(fā)給 Bob 的郵箱。Bob 的郵箱是在 Bob 的手機(jī)里、還是微信存儲(chǔ)服務(wù)器里?

微信服務(wù)器。這樣做有什么好處呢?

假如 Bob 在飛機(jī)上,手機(jī)關(guān)機(jī),Alice 消息依然可以將消息發(fā)出。如果直接發(fā)給 Bob 手機(jī),手機(jī)都關(guān)機(jī)了,那就壓根無法建立連接,自然連消息都發(fā)不出。

當(dāng)然好處還有許多,比如 Alice 與 Bob 的手機(jī)都位于 NAT 設(shè)備的后方,他們之間的直接通信不一定 100% 成功。

如果 Bob 是在線狀態(tài),登錄服務(wù)器會(huì)第一時(shí)間通過 TCP 長(zhǎng)連接,通知 Bob 微信郵箱里有信,至于這封信存在郵箱的什么地方,這是一個(gè) HTTP 格式的鏈接。

Bob 微信會(huì)與鏈接所對(duì)應(yīng)的存儲(chǔ)服務(wù)器建立短鏈接,將消息下載并顯示到本地窗口,然后關(guān)閉短連接。

如果 Bob 是離線狀態(tài),微信服務(wù)器其實(shí)也不急的,反正消息呆在存儲(chǔ)服務(wù)器,不會(huì)飛的。等 Bob 下飛機(jī)上線了第一時(shí)間通知 Bob 微信就好了。

以上就是微信的工作流程。接下來講為何微信會(huì)發(fā)生消息后發(fā)先至的情況?

微信每次敲完一段文字,點(diǎn)擊“發(fā)送“,這個(gè)消息就觸發(fā)了一次:

  • 短連接的建立
  • 消息的傳輸
  • 短連接的斷開

這個(gè)是標(biāo)準(zhǔn)的三步曲。當(dāng)你再次發(fā)一段文字時(shí),又觸發(fā)了一次三步曲。兩次的三步曲是相互獨(dú)立的。

在網(wǎng)絡(luò)暢通時(shí),Alice 第一個(gè)消息很快就發(fā)到 Bob 的郵箱,并被 Bob 微信呈現(xiàn)在窗口里。Alice 第二個(gè)消息發(fā)出的晚,自然到達(dá)得晚,這是非常好理解的。

但是當(dāng)網(wǎng)絡(luò)不好時(shí),第一個(gè)三步曲的消息報(bào)文不是那么幸運(yùn),丟了,然后 Alice 的手機(jī)一直在重傳這個(gè)消息。Alice 又發(fā)送第二個(gè)消息,運(yùn)氣特別好,沒有丟,結(jié)果比第一個(gè)消息早到了幾秒。

既然微信講究及時(shí)通信,微信會(huì)第一時(shí)間通知 Bob 的微信,只是這個(gè)消息通知順序,先是第二個(gè)消息,然后才是第一個(gè)消息。這樣就造成了微信消息時(shí)序的顛倒。

最后,每一段消息內(nèi)部文字并沒有顛倒,對(duì)嗎?

這就是 TCP 的功勞,因?yàn)槎踢B接依然使用的是 TCP 做為傳輸協(xié)議,TCP 最擅長(zhǎng)做的就是保證每一個(gè)字節(jié)按照先后順序到達(dá)。

TCP 是一個(gè)可靠協(xié)議,可以修復(fù)由于網(wǎng)絡(luò)暫時(shí)的中斷而造成的字節(jié)丟失。但是如果 Alice 向 Bob 郵箱上傳信的時(shí)候,網(wǎng)絡(luò)發(fā)生了長(zhǎng)時(shí)間的中斷,超出了 TCP 最大修復(fù)時(shí)間,這時(shí)微信會(huì)提示 Alice,消息發(fā)送失敗!

作者:車小胖談網(wǎng)絡(luò)

編輯:陶家龍

來源:轉(zhuǎn)載自公眾號(hào)車小胖談網(wǎng)絡(luò)(ID:chexiaopangnetwork)

 

責(zé)任編輯:武曉燕 來源: 車小胖談網(wǎng)絡(luò)
相關(guān)推薦

2021-11-01 17:29:02

Windows系統(tǒng)Fork

2017-08-24 17:37:18

DNS緩存分析

2018-12-27 09:09:35

2019-11-04 10:37:53

MongoDB宕機(jī)日志

2023-07-13 09:12:37

CNCF項(xiàng)目云原生

2024-05-13 08:37:17

炫技H5UI

2018-01-04 13:53:43

技術(shù)命令windows

2021-03-17 00:17:16

命令應(yīng)急響應(yīng)

2022-11-29 21:26:26

跨域配置

2020-02-04 14:27:09

架構(gòu)技術(shù)棧微信半月刊

2019-01-16 09:20:42

架構(gòu)設(shè)計(jì)JVM FullGC宕機(jī)事故

2018-07-16 22:29:29

代碼迭代質(zhì)量

2020-01-06 09:43:14

賠償TSB遷移

2021-09-08 14:50:38

微信聊天記錄移動(dòng)應(yīng)用

2015-07-17 10:05:03

面試思考

2022-06-14 08:00:28

切換包管理器版本

2022-12-17 19:49:37

GCJVM故障

2011-06-28 10:41:50

DBA

2017-09-01 09:17:51

DNS緩存慘案

2020-04-28 15:46:56

物聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)