回到基础:数据包

将数据放入包中实际上是我们所有网络概念的基础。

彼得·韦兰德 2012年5月16日

每当我们看到互联网上的东西或工业控制系统时,我们认为理所当然的一件事是,我们的网络可以同时从任何数量的来源发送和接收数据,而且似乎一切都很正常。它并不总是这样的,我们要感谢数据包技术。

在数字计算的早期,设备之间使用点对点串行通信进行通信。基本上,当两端打开适当的阀门时,数据从设备A流向设备B,就像水流经管道一样。它是粗糙的,但它在其局限性内发挥了作用。在早期,这是可以忍受的,因为只有很少的计算机需要进行通信。

到20世纪60年代初,计算机变得越来越多,传输的数据种类也越来越重要。保罗·巴兰,他在兰德公司他的结论是,如果数据可以被分解成块而不是连续的流,它可以支持一个更强大的系统,通过一个共同的网络将更多的设备连接在一起。它甚至可能能够承受核攻击,考虑到冷战时代,这是一个合理的担忧。巴兰是一个有远见的人,他在大多数人之前就设想了互联网这样的系统。

什么是包?

回到水流动的比喻,如果你把水装在瓶子里,你就可以把它送到任何地方,而不是把水从管道里送出去。还有人将数据包比作信件,将信息放在信封里,由邮局运送。

数据包是具有特定大小和结构的框架。它的开头和结尾都有一个标题和预告片,用来标识是谁发送了它,它要去哪里等等。在中间有一个用于消息本身或有效负载的空间。对于给定类型的网络,有效负载具有长度限制,因此可能必须将较长的消息分解为多个数据包。如果消息很短,则数据包的其他部分不会变小。不同的网络协议在细节上有所不同,但基本概念在很大程度上是相同的。发送端和接收端的应用程序将数据放入数据包中进行传输,并在数据到达时解包。

网络协议的评级是基于它们的效率,或者消息有效负载与总体数据包大小的比较。如果报头、尾包和其他开销占用了太多的数据包大小,那么该协议被认为是低效的。反对将以太网用于现场仪表的部分理由是,对于这些设备生成的少量数据来说,以太网的开销太大。

将较大的数据分解为较小的单元的好处之一是,可以使用诸如循环冗余校验(CRC)之类的错误检查协议来验证消息的准确性。在基本术语中,给定包中的消息中的所有信息都附带一个数值。协议将所有这些值加起来,然后除以另一个数字。计算的余数分配给该消息。接收方进行相同的计算,并验证得到的余数是否相同。如果没有,它知道该数据包中包含的消息中的某些数据一定已经损坏,并标记该数据包。

以太网应用程序

以太网通信依赖于数据包,或者更典型地称为帧。有许多变化被创造出来,但一个完整的框架通常有七个部分:

  • 前言(用于位同步)
  • 帧分隔符开始
  • 目的MAC地址
  • 源MAC地址
  • 长度或特定类型
  • 消息或数据负载,以及
  • 帧校验序列(FCS)。

除了有效负载外,这些元素的大小都是固定的。这可以根据所发送的信息的需要而变化,但是最大值约为1.5 kB。本文以纯文本形式设置,可能需要传输三个数据包。

随着技术的发展,很难想象有一种技术已经以如此多的方式被使用和调整,并且我们在如此多的应用中依赖于它。

彼得·韦兰德是控制工程。打电话给他。pwelander (at) cfemedia.com。