这两天兰州人的(de)圈子都在盛传自己的微信被别人莫名(ming)登陆了,这里要说的是,别(bie)信!
先粗浅的说说通信协议,微信大(da)概率是UDP和TCP两种协(xie)议都用的,但也有一种可能是(shi)微信在通讯中使用了HTTP短连接和(he)TCP长连接,并没有用到UDP,其应用的场景是:登陆验(yan)证和头像身份信(xin)息等功能采用的HTTP,文本消息、语音(yin)消息、视频消息、图片消(xiao)息这些使用的是(shi)TCP长连接。通过心跳包来维护长(chang)连接状态,300s一个心跳。
这里UDP和TCP的概念有点复杂,非专业(ye)人士可忽略这一段(duan),直接看下文。
当然我们也不(bu)是腾讯,所以对他们的(de)协议应用场景也只是推测,想深入了解(jie)的小伙伴也可以自行探索。
兰州人(ren)的疑惑主要来源于,通过微信—我—设置—账号与安全—登陆过的设备(bei)来查看,发现在这两天似乎莫名的(de)出现了不是自己手动操作的登(deng)陆怀疑。
这(zhe)个问题我们就以微信为安卓系统版本的(de)后台应用为例来做个解释。
一般为了保证(zheng)用户在使用微信应用(yong)时的稳定便捷性,微信会确保它的客(ke)户端在安卓手机后台的保(bao)活性,这个保活有两部分,一个是微信网络连接的保活,用(yong)以确保微信消息接收的实时性(xing),另一个是微信应用进程的(de)保活,用以尽量确保应用(yong)进程不被安卓系统回(hui)收。
我们先来看网络连接(jie)的保活。
这里的概念手段有很(hen)多,也较为专业,咱们挑保活手段的重(zhong)点来理解,主要说明微信应用程(cheng)序的心跳机制和长连(lian)接。
什么是(shi)心跳机制?就是微信应用(yong)程序会定时发送一个自定义的结构(gou)体(心跳包),让对方知道自(zi)己还活着,以确保(bao)程序连接有效性的机制(zhi)。
什么是长连接?微(wei)信为了确保用户消(xiao)息的实时性,通过长连接的手(shou)段来保证。
我们通俗的再啰(luo)嗦下,你手机上(shang)的微信客户端会定时给微信服务器后(hou)台发送一个心跳包,让服务器知道你的微信状态还(hai)在线,以确保服务器和(he)你微信的有效连接。同时,为(wei)了确保你发送消息的实时性,微信(xin)还会通过长连接的方法来保证。
com长连接的(de)手段怎么确保我们消息的实时同步,有(you)一个接口标准叫Sync CGI,翻译成中文(wen)就是同步接口标准,应用到微信(xin)上,就是你微信客户端和(he)服务器后台的之间的(de)数据同步标准。
微信会通过这个接口直接请(qing)求服务器的后台数据,同时比对后台数(shu)据值,判断该下发哪些消息,从而使你(ni)的微信消息发布和接收(shou)都处在实时最新的状态(tai)。
再来(lai)说说进程保活。
在安卓系统里,微信应用程序被终止(zhi)的主要原因大概有系统回收内存、人(ren)为触发中止和手机自(zi)身读写执行权限三种。
目前(qian),人为操作和手(shou)机读写执行权限造成的微信应用(yong)终止,微信没有做任何的特殊应(ying)对处理。
但对于系统回收内存(cun)情况造成的微信应用进程终止(zhi)情况,会做一定保活处理。
好了,虽然(ran)说的不全面,但说到这里,看(kan)得懂看不懂的大概也都(dou)多少了解了微信为啥实时(shi)高效的原因。
也就是(shi)说,我们微信后台登(deng)陆过的设备里面出现的莫名登陆(lu),并非莫名登陆。
举例,昨(zuo)晚上半夜,你明明在熟睡中,但今天(tian)看微信后台,竟然出现了(le)一条半夜登陆的记录,有些(xie)还不止一次,而是多次。
你开(kai)始纳闷啊,你并没有手动(dong)登陆,那么是谁登陆了(le)你的微信呢?
其(qi)实,这不过是你的手(shou)机发现你的微信占用内存后(hou)自动回收内存终(zhong)止了微信的在线状态,而微信为了保(bao)持消息的实时性,在识别了你的登陆设备没有变化确保是(shi)你登陆无疑后,自动拉起了微信应(ying)用与服务器数据的连接(jie)。
当然了,如果你觉得(de)不信,你可以选择退出微信再试(shi)试看,在你退出和再次(ci)登陆的时间段内,肯定只有你自己人为操作的登陆记(ji)录。
我(wo)们大多数人的手机(ji)使用习惯是长时间不关机,对于微信也是,一般不会退出再登陆,所以微信被莫名(ming)登陆的恐慌,大可不必!
最后,本文综(zong)合参考网友@M&G @刘云 @杨干荣(rong) 真知灼见,在(zai)此致谢!
因招文袋公众号注册较晚(wan),没有留言功能,如果大家还(hai)有疑问,欢迎点击本文右下角在看留言(yan)评论,我会在第(di)一时间回应。