一条微信消息的历程

一条微信消息在网络层的历程

当我们向朋友发送一条微信文字消息时,我们的操作仅仅是让手机连上网,通过连接WIFI或使用移动网络,然后在手机上打字“明天跑步去吗?”,最后点击发送按钮。

而朋友那一端只需要让自己的手机连接网络,然后就看到聊天框里显示了刚刚发送的消息:“明天跑步去吗?”。

1.由上到下装箱

假如我们就是这一条消息,那我们大概会经历这个过程。

首先我们会被装进一个类似火车的“车厢”里,暂且叫消息车厢,车厢装着刚刚编辑的文字消息,这一步装厢是在应用层实现;

然后在这节车厢后会添加另一节车厢,车厢里存放是源程序、目标程序和程序端口,程序端口可以唯一标识一台机器上的程序,这节车厢我们暂且就程序车厢,这一步是传输层实现;

在程序车厢后还会加一节车厢,车厢存放着本机IP与目标机器的IP,这里的目标机器IP就是微信服务器IP啦,同时还有网络端口号,端口号是服务器的端口号,这节车厢就网络车厢,这一步是在网络层实现;

传输路径由上到下分别是:应用层、传输层、网络层、链路层;链路层就是如何连接两个节点,相当于两台主机连接一根网线,然后主机间可以通过网线通信。

接着这列列车就出发了。

2.由下到上拆箱

如果我们手机是用移动网络,那列车就会“开”到附近的电信基站,而基站连接着互联网,经过核心网络的转发,列车开到微信服务器。

微信服务器的网络层会检查网络车厢的内容,看看目标IP是不是这台服务器的IP,没问题题就把网络车厢去掉,送给传输层;

传输层会取到程序端口号,发给服务器上这个端口的程序,这个程序其实就是服务器软件(如swoole/nginx/apache这些),然后传输层把程序车厢去掉,将剩下的消息车厢发给服务器上的程序。

到服务上的程序对消息车厢进行逻辑处理,找到朋友手机的IP,然后再次将消息装厢,添加程序车厢和网络车厢,新列车出发,经过互联网,消息最后到达了朋友的手机上。

朋友手机收到后,同样也是对列车的网络车厢检查,没问题就去掉,将剩下的程序车厢和消息车厢给传输层。

传输层处理程序车厢,把消息车厢传给朋友手机上的微信APP处理,微信APP收到消息后,就显示到朋友手机上啦。

这就是一条消息从发出到收到经历的过程啦。

你可能感兴趣的:(一条微信消息的历程)