本来这个章节应该放在第二节的,更符合知识从整体往下看的逻辑。但是考虑到学习的过程是循序渐进的,我调整了一下。上一节,我们学习数据具体在传输中表现的形式。通过帧数据包裹一层层的上层数据达到传输的能力。今天我们来学习经典的网络模型分层。随着时间的推进变迁,有些层级结构已经被历史遗弃了。但是仍然需要知道有这么些东西。我们快来看吧。

章节

  • Android与物联网设备通信-概念入门
  • Android与物联网设备通信-数据传递的本质
  • Android与物联网设备通信-网络模型分层
  • Android与物联网设备通信-UDP协议原理
  • Android与物联网设备通信-TCP协议原理
  • Android与物联网设备通信-基于TCP/IP自定义报文
  • Android与物联网设备通信-什么是字节序
  • Android与物联网设备通信- 字节报文组装与解析
  • Android与物联网设备通信-利用UDP广播来做设备查找
  • Android与物联网设备通信-实现远程控制Android客户端
  • Android与物联网设备通信-Android做小型服务器
  • Android与物联网设备通信-调试技巧
  • Android与物联网设备通信-并行串行与队列
  • Android与物联网设备通信-数据安全
  • Android与物联网设备通信-心跳
  • Android与物联网设备通信-网络IO模型

目录

  • OSI模型结构
  • 你该把焦点放在哪里

OSI模型结构

网络模型分层结构又称OSI模型(Open System Interconnection Reference Model)。

我非常不想像往常你看到的文章一样,给你贴上来七层是哪几层。四层又是哪几层。枯燥无味,看完过两天又忘记。遵循知识是具有关联性来学习。熟悉的老司机们我们就当复习或者跳过好了。

从上往下七层结构分别是:

应用层、表达层、会话层、传输层、网络层、数据链路层、物理层

我们现在从底层至上来看看。每个层都在做什么事情。

物理层(Physical Layer)

还记得上一节讲到的数字信号么?它就是第一层物理层

即:比特信号,在物理介质中传输。物理层上不关注任何上层协议和结构,对于该层而言就是任性的为所欲为往外输出和接受。

通俗来说就像现实世界中的马路一样,每条路都可以四通八达到枢纽,车就是比特信号。马路从来不管车子里坐的是宝马车上爱哭的她,还是摩托车上放DJ的你。

对应的物理层介质:RJ-45 光钎 网卡 双绞线 以太网 调制解调器 电力线通信 同步光网络 光导纤维 同轴电缆 等

数据链路层(Data Link Layer)

数据链路层其实就是对我们上一节讲到的数据帧进行处理,它们表示数据桢内的消息发给谁,谁需要关心这一桢数据。对帧的收发顺序同步管理进行控制。由于我们的操作系统都是多进程多应用的,该层并不知道数据是来自哪个应用的,更不知道内容具体是什么,他们只负责把数据帧输入输出到对应的单元和把控帧数据质量。

记不清的同学请翻到上一节包数据MAC帧

其中数据链路层又被划分成:介质访问控制(MAC)子层和逻辑链路控制

对应:ARP GPRS 以太网 WIFI PPP PPPoE 等

网络层(Network Layer)

网络层的工作就是把对应的数据输送到对应目标的IP上去,和数据链路层相比很类似。但是数据链路层是针对相邻的硬件设备的MAC地址单元的。MAC地址太过于复杂和不好记。才产生了IP层协议,也就是现在我们说的OSI中的网络层。可以借助以太网IP协议将数据发送到以太网以内的任何设备上。与之相关联的是IP数据包报文,在上一节也有提到。

我们多少都有配置过IP的经历,这里的IP配置就和网络层有很大的关联。正式由于以太网的推进演变导致了这一层被抽象出来了。如果要把网络层内容完全讲清楚有些超纲,它依托了路由器、交换机、集线器等工作原理。这里不做硬性规定,可扩展学习。当然网络层不仅只有IP协议这一种。

对应:IP(v4·v6) ICMP(v6) IGMP IS-IS IPsec BGP RIP OSPF RARP 等

传输层(Transport Layer)

传输层属于传输控制协议,比如TCP、UDP。它的存在是为了数据的稳定和可靠而设计的。因为更底层的的协议对于数据包体里本身的内容是不透明的,如果出现丢包和紊乱的情况是无法知道应用层的数据是否还正确的。所以就产生了传输层来把控。现在只要是一台联网的设备系统都会具有操作系统协议栈。

而协议栈就是来保障上层应用的套接字IP地址、进出端口、数据内存块、数据包切割、响应等待、丢包重发、组装、挂起切换等问题。可以说他负责了各个应用层丢下来的数据在什么时候处理,对应远程设备回复的包如何输送到当前操作系统上,再数据进行分拣到对应进程的套接字端口上。非常类似快递中转站的工作。

对应:TCP UDP DCCP SCTP RSVP PPTP 等

会话层(session layer)已废用

以前是用来做维护管理会话状态的。比如我们有多条数据,是一次性全部发过去,还是一条条发过去。这个层现在已经废弃不用了。原因是应用层一般已经做了类似的事情。

表示层(presentation layer)已废用

上层数据可能在传输的过程中,因为不同的操作系统或特殊的需要被转换成了有利于传输、利于计算机处理、安全因素等。表示层这里的意义可以理解为翻译的工作。和会话层一样也被废弃了。

应用层(application layer)

应用层就是作为应用开发者真正经常要接触的。它代表着我们的应用自己定义的协议体结构和业务内容。像HTTP这种常见的应用层协议已经被广泛的应用在web和各种终端设备中使用了。它真正决定了一套体系的应用从一端到另一端是如何互相识别的。关于应用层我们在后续的自定义报文的章节里做详细的讲解。

对应:HTTP DHCP DNS FTP IMAP4 IRC NNTP XMPP POP3 SIP SMTP SNMP SSH TELNET RPC RTCP RTP RTSP SDP SOAP 等自定义协议

你该把焦点放在哪里

前面提及到了一共七层分法,实际上只有五层了。下面我来看看这五层分别对应到完整的报文里是什么。

那么其实我们平时开发只需要关注到传输层和应用层。它和我们写的程序有真正的关联。决定了我们的程序是选用那种传输方式和数据结构。而网络层与链路层一般在物联网开发中属于和运维部署关系较大。比如无法正常上网了。在开发环境正常到了线上环境就不正常这种问题。如果是专门从事物联网方向开发的话,还是非常有必要了解它们之间的工作原理的。只是和上层的关联性没有那么强。


网络模型分层是一个非常庞大的体系,因为要对其系统的解释就必须牵扯到各种设备的工作原理。我在写这节的时候也是一边翻资料看书参考才能总结出来的,有地方描述不对还请指出。

本篇文章不够深度,有些描述可能只是我理解了,并不能使你理解透彻。更深的了解需要我们一起看书才行。这里我推荐《网络是怎么样连接》的一书给读者参考。当然这并不会影响我们后续的章节学习进度。

Android与物联网设备通信-网络模型分层相关推荐

  1. Android与物联网设备通信-自定义报文与字节序

    前几节我们把网络通信中的基础都过了一遍,今天真正开始秀操作了.本节主要讲解如何在应用层上去定义报文的结构体.良好的报文设计会让今后的业务扩展变得轻松.顺带会讲解一下字节序. 可以发现最近的章节都把两个 ...

  2. Android与物联网设备通信 - 字节报文组装与解析

    工作调动.暂时停更了一段时间.续上一篇我们学习了如何去自定义一组报文,今天我们接着解析和组装报文. 前面我们讲过在物联网通信中实际上不论我们使用什么方式作为通信介质,其本质就是字节.所以我再一次对本章 ...

  3. 基于 P2P 技术的 Android 局域网内设备通信实践

    Android 局域网内的多设备通信方式有多种,其中常见的方式有: 基于 TCP/UDP 的 Socket 通信 基于 Bluetooth 的近场通信 基于 Wifi 的 Wi-Fi Direct 连 ...

  4. Android APP物联网设备无网模式设计

    1APP缓存 APP缓存是为了支持APP和设备在没有网络的情况下任然可以使用,APP在启动时如果有网络会从平台缓存当前用户的所有数据,包括家庭,房间,设备,设备控制信息,场景信息等 2双mqtt模式 ...

  5. 物联网设备模糊:DIANE:识别应用程序中的模糊触发器,为物联网设备生成受限制的输入

      本文记录阅读DIANE论文的内容总结和一些阅读过程中不理解地方的补充,我是搬运工. 简介 发表会议 IEEE S&P 2021 作者 Nilo Redini∗, Andrea Contin ...

  6. 合宙Air780e+luatos接入华为云物联网平台完成设备通信与控制

    一.简介 1.项目介绍 之前发布的文章有esp8266的wifi模块和BC20的NB模块与华为云物联网通信为主,本期文章采用了合宙的4G LTE Cat.1模块,编程语言用的是lua,整体来说代码比较 ...

  7. 物联网平台搭建的全过程介绍(三)阿里云物联网设备接入订阅发布之Android studio例程

    物联网平台搭建系列内容前两节介绍的都是功能性的描述,今天以一个小例子,介绍具体的设备接入.订阅.发布的操作,例子的名字为:学生成绩录入平台,例子的界面如下图所示. 功能描述:当在阿里云物联网平台内下发 ...

  8. Android应用利用libusb设备通信权限问题

    应用层执行"chmod -R 777 /dev/bus/usb/" 来解决 Android 应用访问libusb没有权限的问题. 在应用层代码里执行这句就可以. 参考链接1:And ...

  9. 合宙Air780e+luatos+阿里云物联网平台完成设备通信与控制(属性上报+4G远程点灯)

    一.简介 1.项目介绍 之前发布的文章有采用合宙的4G LTE Cat.1模块,编程语言用的是lua,整体来说代码比较简洁,实现对华为云物联网平台的设备通信与控制,即采用一个变量作为模拟属性定时上报, ...

  10. Android 通过USB与PLC设备通信(USB转串口)

    经朋友介绍接的一个外包,要求用USB和PLC设备通信,于是乎就有了本文.内容不深,权当做个记录整理一下当时的思路. 一.解决思路 1. 首先,PLC设备通常都是用串口进行通讯,走的Modbus协议.这 ...

最新文章

  1. 搜索引擎惩罚的五种最大原因
  2. 计算代码重复率_了解了知网大学生论文查重原理,重复率想高于6%都难!
  3. Matlab中更改fig文件中线宽
  4. Spring面向切面编程
  5. init tarray 太大_[NOIP 2001提高组T4]Car的旅行路线
  6. python 判断数字序列是否合法_Python:检查对象是否是序列
  7. ILP32和LP64数据模型
  8. HTML 5.1 的 14 个新特性(含使用案例)
  9. Vue-Router中History模式【华为云分享】
  10. 第四章OFDM(1)
  11. sklearn安装包下载
  12. 学环境艺术设计的 考计算机,环境艺术设计专业升本要考哪些科目?
  13. 攻克银联QPBOC L2认证的最后两个不过的案例(POS与卡片的数据交互分析)
  14. 常用LDO低压差线性稳压芯片封装型号以及基本电路
  15. 【ITSM】什么是ITSM,IT部门为什么需要ITSM
  16. 基于Python-Pycharm的猴子摘桃小game
  17. jmeter---Throughput(吞吐量)系列
  18. 智能可以把碎片的事实价值弥聚化
  19. (14)python函数与变量
  20. 软件测试人在深圳有哪些值得去的互联网公司【软件测试人员专供版】

热门文章

  1. python基础之练习题(二)
  2. AngularJS 模板
  3. 80后智能科技公司诚聘业务人员
  4. OEM信息自定义工具v2.0
  5. Oracle:ODP.NET Managed 小试牛刀
  6. python学习(十八)爬虫中加入cookie
  7. 五大步骤快速搭建个人网站
  8. JBoss - 调整JVM内存 -Xms512m -Xmx1024m
  9. Delphi XE不生成__history目录
  10. 使用mvc2里面的area让网站更有条理