一、OSI七层网络模型

Q:按下微信的发送按钮以后都发生了啥?

计算机网络的七层模型—OSI七层网络模型

  1. 第一步:微信发出去以后,数据在空气中以电磁波形式传播,这些数据都是0和1组成的比特序列

第一步: 物理层
负责把网络设备(电脑 手机等)
连接起来的物理手段

(双绞线 光钎 电磁波等) ,
传递0和1的电信号

  1. 第二步:光有0和1的序列是无法解读出信息的 所以得有一种机制规定分组这些0和1序列的方式 有了分组以后才能解读出信息 否则拿到比特序列以后是无从下手的

第二步: 数据链路层
规定比特序列的分组方式和解读方式
将比特组合成字节进而组合成
同时要进行差错校验等功能

  1. 第三步:有了数据有了对数据的分组 还得知道数据传给哪一步手机(网络设备) ,所以这一步是找到目的手机的地址 将数据包发送到指定手机

第三步: 网络层
建立设备到设备之间的通信
每个连接到网络的设备都会有
一个唯一的标识----IP地址
网络层用ip地址找到目的设备
常用协议有:ICMP IGMP IP ARP RARP 等等

  1. 第四步:数据传到手机以后还不够 因为手机上有那么多APP 你怎么知道该传给哪一个APP? 所以这一步将数据包发送到指定手机上的指定APP 也就是微信

第四步:传输层
建立程序到程序之间的通信
同时保证数据的可靠传输(数据不丢失)等等功能
常用协议有TCP UDP

  1. 第五步: 在数据源源不断的发过来的过程中 手机需要对这个数据连接会话进行管理 比如收到一段数据以后就进行通知

第五步:会话层
建立、管理、终止会话
常用协议有SMTP DNS

  1. 第六步:在微信收到这些数据包中都是统一格式的 现在要把它解析成它原本的格式 比如原来是一个表情包 一段视频 一段文字等等 这一步就负责数据格式的转化 或者加密解密 加压解压

第六步:表示层
数据的格式转换、加密解密、加压解压
常用协议有 TELNET SNMP等

  1. 第七步:转换完成以后 在用微信特有一种"解析处理方式" (不同类型的APP可能有自己特有的解析处理方式) 呈现给用户

第七步: 应用层
针对特定应用的一个协处理层 网络服务与最终用户的一个接口
协议有:HTTP FTP TFTP SMTP等
比如网页请求用Http 文件传输用FTP
邮件发送用POP3
上面说的微信这类即时通讯软件有它自己特有的应用传层协议

So,微信发到了对方的手机上了!


二、TCP/IP四层模型

OSI七层模型分类繁琐细腻
将物理层和数据链路层 综合成网络接口层
将 会话层 表示层 应用层 综合成应用层

就有了TCP/IP四层网络模型
TCP/IP四层模型已经成为了事实上业界应用的模型


三、五层模型

五层模型是综合七层和四层结合的模型
保留了物理层和数据链路层
将 会话层 表示层 应用层 综合成应用层


参考文章:
你的微信消息是怎么发出去的?

微信消息是怎么发出去?(计算机网络层次模型)相关推荐

  1. 你的微信消息是怎么发出去的?

    本文是计算机网络系列的第一篇文章 学东西得先有个全局观 才不会只见树木不见森林 所以本文将先从计算机网络的网络模型开始 分别介绍各层模型 它分别是啥, 它包含了啥, 它能干啥. 计算机网络的整体结构其 ...

  2. 教你如何自动回复微信消息并定时发朋友圈?

    你是否遇到过这样的麻烦:想把朋友圈发出去,但是因为拖延或者太忙而没有及时发送,或者晚上突然想起某个重要事件而不得不再起来发一条动态.

  3. php处理微信消息,微信开发之处理微信客户端发来的消息

    在上一篇微信开发的博文中微信开发(01)之如何成为开发者,我们开启了微信开发者模式,本篇博文我们简单的处理微信关注者发给我们公众号的消息. 在开启微信开发者模式时,我们配置了一个URL地址,当我们提交 ...

  4. 【零基础】MT4/MT5一条语句让EA发微信消息推送

    提示:原创文章,转载请注明本地址 前几年写过一篇MT4/MT5推送微信消息报警的文章,最近又实现了一个更简便的方法,只需两步就可以让你的EA发微信提醒消息了,在此分享给大家. ( 推送方法使用了&qu ...

  5. 微信小程序消息推送、接收消息事件、发送客服消息

    文档地址消息推送 | 微信开放文档 接收消息和事件 | 微信开放文档 发送客服消息 | 微信开放文档 代码参考 public function xcxToken(){$signature = $thi ...

  6. arduino连接ESP8266-01发微信消息,消息提醒等

    arduino连接ESP8266-01发微信消息,消息提醒等 材料准备 接线 第一 下载arduino uno示例(arduino ide 编程开发) 第二 示例程序讲解 第三 下载程序到arduin ...

  7. magicwatch2可以鸿蒙吗,荣耀手表2可以发微信吗?荣耀MagicWatch2支持微信消息回复吗...

    近期,荣耀推出了荣耀Magic Watch 2的多款进化版本,荣耀Magic Watch 2 是一款非常智能便携的手表,它选用最佳材质打造绝美质感,让这款小设备在视觉上更加通透有质感.同时它全新的功能 ...

  8. java实现自动发送微信QQ消息(可发图片)

    自动发送微信/QQ/微博等消息 一:功能:实现发送QQ/微信/微博消息,程序控制. 效果演示(实现自动发生QQ微信消息给女友,发微博信息也可以就不演示了) 二:原理讲解:将剪贴板的内容给发送到QQ微信 ...

  9. delphi 企业微信消息机器人_nodeJS实现企业微信机器人每天定时发消息实例 定时任务...

    nodeJS实现企业微信机器人每天定时发消息实例 背景 由于企业微信办公需要,"每天定时推送某消息用来提醒群里面所有人或者部分人",于是决定用企业微信自带的机器人来实现此功能,来代 ...

最新文章

  1. rabbitmq可靠发送的自动重试机制 --转
  2. [原]《Web前端开发修炼之道》-读书笔记CSS部分
  3. SpringCloud 教程 | 第二篇: 服务消费者(rest+ribbon)
  4. JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
  5. Jest + React Testing Library 单测总结
  6. bzoj2287【POJ Challenge】消失之物 缺一01背包
  7. Spark streaming粗粒度工作原理
  8. Linux 6.8 源码安装MySQL8.0
  9. 备份数据库的expdp语句_银行业Oracle RAC数据库迁移经验分享
  10. 查找算法——二分查找
  11. 计算机软件产品开发编写指南,计算机软件产品开发文件编制指南GB 8567-1988(6)[7]...
  12. JAVA爬取网站查询网络IP所在地
  13. Chrome 添加自定义搜索引擎
  14. on duplicate key update不生效_万粉盛典amp;六周年庆|双十一提前嗨!惠玩惠购不做尾款人!...
  15. 林轩田机器学习基石笔记5 - Training versus Testing
  16. new BigDecimal比较大小
  17. 安装mysql的初始密码在哪里
  18. Java、Android工具整理 - 单位换算
  19. unity点击按钮控制界面开关
  20. 让一维数组像糖果盒一样简单

热门文章

  1. 获取微信、QQ收藏的语音文件并转换为mp3
  2. 基于php的民航飞机零部件维修系统
  3. Fritzing画电路图
  4. Cytoscape基础教程笔记
  5. [Matlab科学绘图] Matlab三维绘图总结
  6. WPS怎么实现文档共享
  7. Java 实现九九乘法表
  8. pyodps中的apply用法
  9. cocoscreator layabox 使用jszip.js
  10. 《数字摄影与摄像》——风光摄影