Android与物联网设备通信-网络模型分层

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

章节

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

目录

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

OSI模型结构

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

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

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

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

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

物理层(Physical Layer)

image.png

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

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

image.png

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

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

数据链路层(Data Link Layer)

image.png

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

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

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

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

网络层(Network Layer)

image.png

网络层的工作就是把对应的数据输送到对应目标的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)

image.png

传输层属于传输控制协议,比如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 等自定义协议

你该把焦点放在哪里

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

image.png

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


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

image.png

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

猜你喜欢

转载自juejin.im/post/5b17d513f265da6e3e37e0c7