现在上网已经是家常便饭的事件了,大家已经离不开网络了。在网络的世界里,双方是通过手机,电脑,平板等设备联系,
在我们使用电脑上网交流同时,有我们看不到脉冲信号在网线中以一定的规则在涌动。
随着5G的慢慢普及,万物互联的时代终将会来临。而支撑起网络交流最重要的就是网络协议,
网络协议就是一种规则,它的神奇之处在于它构建了普通人跟计算机之间的桥梁,计算机通过网络协议了解人类的想法,
我们简单来描述一下A用户跟B用户中间使用微信的交流过程。这里我们需要添加一下“微信服务器”这个概念了,
什么意思呢,用户通过微信交流,其实不是直达的,是会通过微信服务器的,
微信服务器相当于中介,它会储存并转达我们之间交流的内容,
同理,我们在使用腾讯公司的产品时,也会使用腾讯公司的服务器,
也就是说A用户跟B用户使用微信的交流过程,需要微信服务器的中转,即A用户-微信服务器-B用户。
网络协议的内容很多,总体的架构一共分为7个部分(依次为应用层-表示层-会话层-传输层-网络层-数据链路层-物理层)
这些个“层”是专业术语,不好理解,说白一点,我们通过应用程序发个消息,一共会经过7个中转站,
应用层就是app,是第一站;物理层就是网线,是最后一站。中间的一些层比较抽象,明白大概意思就行;
为什么在经过这么多中转站呢,其实就是把现实社会一样,网络通信的过程是极其复杂的。
不同的层负责不一样的功能,这样上下层的承接才会更清楚。
当我们淘宝买商品时,商家将我们购买的商品打包,贴上收货地址的二维码,然后发给快递公司,
快递公司将货物运送给客户手上,然后用户拆开包装箱才拿到商品。
这里就涉及到这么个过程,商家打包-快递中转-用户拆包。
我们上面提到了,A用户发消息过程会依次经过这7个中转站,最终到达微信服务器,
这个过程与上面类似,不同的点在于,实际的内容会依次经过7个中转站,
经过每一个中转站的时候都要添加上自己的信息,相当于套上一个盒子,
就是说当微信服务器从网线上接收到消息时,其实收到的是一个7层的套娃,只有经过7层拆包的过程,最终才拿到实际的内容。
前面我们已经说了,(A用户---B用户)聊天的过程会经过微信服务器,
也就是(A用户---微信服务器---B用户),其实还应该细分一下
(A用户发送---微信服务器接收---微信服务器发送---B用接收)
也就是经过历了2次的(发送-接收)。
只不过我们看不到微信的服务器而已。
(A用户---B用户)
(A用户---微信服务器---B用户)
(A用户发送---微信服务器接收---微信服务器发送---B用接收)
比如,在屏幕上你对着你男朋友,也就是B用户发了一个“我想你”,
然后你点击了发送,最终B用户收到消息
先会经历第1次(发送-接收){A用户发送-微信服务器接收}
(*)表示当前层添加的信息,[]表示一层,
A用户从B的聊天页面,点击发送内容"我想你",经过7层网络架构打包处理
->[(A发给B)我想你]
->[(*)[(A发给B)我想你]]
->[(*)[(*)[(A发给B)我想你]]]
->[(*)[(*)[(*)[(A发给B)我想你]]]]
->[(*)[(*)[(*)[(*)[(A发给B)我想你]]]]]
->[(*)[(*)[(*)[(*)[(*)[(A发给B)我想你]]]]]]
->[(*)[(*)[(*)[(*)[(*)[(*)[(A发给B)我想你]]]]]]]
->从A用户网线发出去
到达微信服务器的网线,服务器遵循7层网络架构的协议开始依次拆包处理
->[(*)[(*)[(*)[(*)[(*)[(*)[(A发给B)我想你]]]]]]]
->[(*)[(*)[(*)[(*)[(*)[(A发给B)我想你]]]]]]
->[(*)[(*)[(*)[(*)[(A发给B)我想你]]]]]
->[(*)[(*)[(*)[(A发给B)我想你]]]]
->[(*)[(*)[(A发给B)我想你]]]
->[(*)[(A发给B)我想你]]
->[(A发给B)我想你]
微信服务器收到了"(A发给B)我想你",
此时就完成了一次发送跟接收,完成打包和拆包的过程,
这时微信服务器找找看B用户现在是否在线,原来B用户在线啊,那我发送给B用户。
接下来会经历第2次(发送-接收){微信服务器发送-B用户接收}
->[(A发给你)我想你]
->[(*)[(A发给你)我想你]]
->[(*)[(*)[(A发给你)我想你]]]
->[(*)[(*)[(*)[(A发给你)我想你]]]]
->[(*)[(*)[(*)[(*)[(A发给你)我想你]]]]]
->[(*)[(*)[(*)[(*)[(*)[(A发给你)我想你]]]]]]
->[(*)[(*)[(*)[(*)[(*)[(*)[(A发给你)我想你]]]]]]]
->从微信服务器网线发出去
到达B用户的网线,电脑开始遵循7层网络架构的协议开始依次拆包处理
->[(*)[(*)[(*)[(*)[(*)[(*)[(A发给你)我想你]]]]]]]
->[(*)[(*)[(*)[(*)[(*)[(A发给你)我想你]]]]]]
->[(*)[(*)[(*)[(*)[(A发给你)我想你]]]]]
->[(*)[(*)[(*)[(A发给你)我想你]]]]
->[(*)[(*)[(A发给你)我想你]]]
->[(*)[(A发给你)我想你]]
->[(A发给你)我想你]
B用户收到从A的聊天页面弹出"我想你"
至此,用户聊天的过程就说明结束了,这里通过一个简单的示例向大家普及了服务器,7层网络架构,打包,拆包,发送,接收的一些概念和流程。