所有 Internet 连接的事物都使用相同的“应用程序 - TCP - IP - 硬件”堆栈进行通信吗?

物联网 联网 无线上网 协议
2021-06-05 23:14:57

我不是特别精通互联网,物联网技术对我来说尤其令人困惑。我在读对互联网结构斯坦福白皮书。在图 2 中,它显示了计算机 (PC) 用来创建、处理和通过 Internet 向另一台计算机发送消息的软件“堆栈”的表示。

  • 是否所有类型的计算机 - 智能手机/电视/游戏机等都使用这种格式?

  • 操作系统重要吗?

  • (在这方面)蜂窝互联网和 Wifi/以太网之间有什么区别吗?

  • 那些似乎没有“应用程序”层的单功能设备呢——例如网络连接的摄像头、电灯开关或恒温器。

4个回答

在这篇文章中将解决的问题中存在一些潜在的误解或误解。

  • 在图 2 中,它显示了计算机 (PC) 用来创建、处理和通过 Internet 向另一台计算机发送消息软件“堆栈”的表示

  • 是否所有类型的计算机 - 智能手机/电视/游戏机等都使用这种格式?

  • (在这方面)蜂窝互联网和 Wifi/以太网之间有什么区别吗?

  • 那些似乎没有“应用程序”层的单功能设备呢——例如网络连接的摄像头、灯开关或恒温器。

这些误解的存在需要对以下内容进行解释(以便为后续讨论提供背景):

  • 互联网是什么
  • 什么是 TCP/IP 协议套件
  • 什么是应用程序

然后问题将被直接解决。

请注意,鉴于它们的重要性和复杂性,整个系列的书籍都是关于 TCP/IP 协议套件的。这里的定义和解释将主要来自维基百科、TCP/IP Illustrated Volume 1 Second edition:The Protocols by Stevens and Fall,以及 IBM 的TCP/IP 教程和技术概述

1. 互联网

互联网在技术上是一个广域网(WAN) 而是把它作为一种超网络的(网络的网络)或多种不同的聚合更加有用的方式相互连接的网络作品。这是通过 Internet 的一部分路由路径的图片:

路线路径可视化

  • 互联网由许多相互连接的网络组成
  • 一个网络可能由 1 个或多个系统(主机)组成
  • 连接的系统通常运行在某种硬件平台上
  • 连接到网络的系统类型及其运行的硬件存在显着差异

可以在 Arstechnica 的文章“互联网如何工作:海底光纤、罐子里的大脑和同轴电缆”中找到有关互联网如何工作的有趣读物

那么,运行在不同硬件平台上的不同系统如何连接到不同的网络,从而能够相互通信呢?如此庞大、异构的系统和网络阵列之间如何通信?所有这一切如何同时发生?

2. 互联网协议套件

答案由 Internet 协议套件提供,也就是 TCP/IP 协议套件。这些问题在互联网架构的设计过程中被考虑过(TCP/IP Illustrated,第 1.1 节:架构原则):

有几个目标指导了互联网架构的创建。在 [C88] 中,克拉克回忆说,主要目标是“开发一种有效的技术来复用现有互连网络。” 该声明的本质是Internet 架构应该能够互连多个不同的网络,并且多个活动应该能够在由此产生的互连网络上同时运行

来自互联网协议套件(维基百科):

Internet 协议套件是 Internet 和类似计算机网络上使用的概念模型和通信协议集。

Internet 协议套件提供端到端数据通信,指定数据应如何打包、寻址、传输、路由和接收该功能被组织成四个抽象层,用于根据所涉及的网络范围对所有相关协议进行排序。

将 TCP/IP 协议套件视为一种规范,用于说明运行在不同系统和不同网络上的进程如何相互通信。本质上,TCP/IP 协议套件为进程间通信提供了一个标准。

任何正确实现 TCP/IP 协议套件的系统都可以使用它提供的功能来允许其进程通过 Internet 进行通信。事实上,为了使进程通过 Internet 与运行在其他网络上的远程系统上的其他进程通信,系统必须使用符合标准的 TCP/IP 套件协议。

TCP/IP 协议套件

3. 应用

来自应用软件(维基百科):

应用程序(简称应用程序或应用程序)是一种计算机程序,旨在为用户的利益执行一组协调的功能、任务或活动。应用程序的示例包括文字处理器、电子表格、会计应用程序、网络浏览器、媒体播放器、航空飞行模拟器、控制台游戏或照片编辑器。统称应用软件是指所有应用的统称。这与系统软件形成对比,系统软件主要涉及运行计算机。

应用软件

可以将应用程序视为在系统上运行的用户空间进程除了上面列出的示例之外,这还可以包括(非内核模式)计算机病毒、Web 服务器、相机应用程序和传感器数据聚合程序等程序。

当应用程序通过 Internet 传输和接收数据时,它必须利用其主机系统的 TCP/IP 协议套件实现。应用层(维基百科):

在 TCP/IP 中,应用层包含用于跨 Internet 协议 (IP) 计算机网络的进程到进程通信的通信协议和接口方法。应用层仅对通信进行标准化,并依赖于底层传输层协议来建立主机到主机的数据传输通道,并在客户端-服务器或对等网络模型中管理数据交换。

TCP/IP 协议套件的应用层包括文件传输协议 (FTP)、域名系统 (DNS) 和可能最著名的超文本传输​​协议 (HTTP) 等协议。

例如,应用层协议 HTTP 指定了如何在(通常)不同系统上运行的 2 个进程之间传输数据:客户端应用程序、Web 浏览器和服务器应用程序、Web 服务器进程。

潜在误解的澄清

  1. 在图 2 中,它显示了计算机 (PC) 用来创建、处理和通过 Internet 向另一台计算机发送消息软件“堆栈”的表示。

TCP/IP 协议套件不是软件堆栈。来自技术百科

软件堆栈是一组协同工作以产生结果或实现共同目标的程序。软件堆栈还指以特定和定义的顺序工作以实现共同目标的任何应用程序集,或者作为一组工作的任何实用程序或常规应用程序组。可安装文件、产品和补丁的软件定义可以包含在软件堆栈中。LAMP(Linux、Apache、MYSQL、Perl 或 PHP 或 Python)是一种流行的基于 Linux 的软件堆栈。WINS(Windows Server、Internet Explorer、.NET、SQL Server)是一种流行的基于 Windows 的软件堆栈。

相反,它是一个协议栈,通常由内核实现(也来自Technopedia):

协议栈是指一组并发运行的协议,用于实现网络协议套件。

堆栈中的协议确定分层网络模型(例如 OSI 或 TCP/IP 模型)的互连规则。为了成为堆栈,协议必须是可互操作的,能够在网络层之间垂直连接,在每个传输段的端点之间水平连接。


  1. 是否所有类型的计算机 - 智能手机/电视/游戏机等都使用这种格式

TCP/IP 协议套件是一种独立于硬件和操作系统的通信规范,而不是一种格式如果运行在一个硬件平台上的进程需要与运行在不同硬件平台上的远程系统上的进程通信,并且通信是通过 Internet 进行的,那么系统必须

  • 正确实现 TCP/IP 协议套件和
  • 必须使用该套件中的适当协议来完成进程间通信

  1. (在这方面)蜂窝互联网和 Wifi/以太网之间有什么区别吗?

我对这个问题的解释是“移动设备连接到 GSM 网络的方式和移动设备连接到 WiFi 网络的方式有区别吗?”

区别在于网络接口层。

这个问题暴露了问题中链接的文章中图表中对 TCP/IP 协议套件的糟糕描述。作为参考,这是图表:

糟糕的 TCP/IP 图表

最低层,称为“硬件”,应称为链路层媒体访问控制(MAC)层网络接口层

来自 IBM 的“TCP/IP 教程和技术概述”第 34 页:

网络接口层,也称为链路层或数据链路层,是实际网络硬件的接口。该接口可能提供也可能不提供可靠的传递,并且可能是面向数据包或流的。事实上,TCP/IP 在这里没有指定任何协议,而是可以使用几乎任何可用的网络接口,这说明了 IP 层的灵活性。例如 IEEE 802.2、X.25(本身是可靠的)、ATM、FDDI,甚至 SNA。

这是一个正确和优越的描述(来自TCP/IP 指南):

TCP/IP协议栈上图

之所以讨论网络接口层是相关的,是因为在这一层,蜂窝/移动设备连接到 GSM 网络与 WiFi 网络的方式存在差异。

  • 当连接到 GSM 网络时,用于处理移动设备和基站收发器 (BTS) 之间连接的网络接口层协议通常由3G指定

  • 连接到 WiFi 无线接入点 (WAP) 时,使用的协议由IEEE 802.11 标准指定


  1. 那些似乎没有“应用程序”层的单功能设备呢——例如网络连接的摄像头、电灯开关或恒温器

如前所述,TCP/IP 协议套件的应用层中的协议为应用程序数据如何在进程之间交换提供了标准。

这些层是概念性的。它们不驻留在系统或硬件平台上。

网络连接的相机、电灯开关和恒温器上可能运行着一些进程,这些进程通过 Internet 与远程系统上运行的进程进行通信(检查固件更新、与服务器的数据交换等)。这些进程或应用程序将利用 TCP/IP 协议套件的实现来完成此进程间通信。

TCP/IP 协议套件和嵌入式系统(“IoT”)

虽然在传统 PC 或服务器上运行着使用不同应用层协议的各种不同应用程序,但硬件平台如何连接到各自的接入点(网络接口/数据链路层)并没有太大的差异。它主要通过以太网以有线或无线方式完成。

对于通过 TCP/IP 进行通信的各种嵌入式系统,情况略有不同。这是一个说明(来自Postscapes):

物联网和 TCP/IP 1

物联网和 TCP/IP 2

有关更多信息,请参阅以下文章:

了解物联网背后的协议

物联网标准和协议

物联网技术指南

是否所有类型的计算机 - 智能手机/电视/游戏机等都使用这种格式?

为了在互联网上交换某些东西,它必须通过某个地方的 IP 堆栈。

操作系统重要吗?

IP 协议由RFC 791定义,因此操作系统/固件必须遵守它,无论它是什么。

(在这方面)蜂窝互联网和 Wifi/以太网之间有什么区别吗?

稍微简化一下,这里的区别在于第 1 层(物理)无线电信号与电线上的电信号。有关开放系统互连模型(OSI 模型)维基百科页面的更多详细信息

它们都用于在其特定介质上转换第 3 层(网络),此处为 IP。

那些似乎没有“应用程序”层的单功能设备呢——例如网络连接的摄像头、灯开关或恒温器。

应用层与特定的通信协议(HTTP、SSH 等)相关,它不一定是 Chrome 或 Firefox 等应用程序。
通常,这些协议将在TCP之上实现,当希望不阻止等待确认或获取过时的数据包没有意义(语音呼叫、流媒体)时,有些协议将在UDP 之上实现。还有其他第 4 层协议,但通常用于特定用途,例如用于ping. 当您希望确保某些数据到达目的地时,TCP 是首选协议。

对于“远程设备”,例如您示例中的恒温器,它可能使用现有协议(如 HTTP)或使用专有协议来发送其数据,通常仍将在应用程序层,因为它不仅仅是传输协议。
它可能仅在第 4 层完成,但这需要创建一个新协议,并且开销通常不值得并且使系统与其他系统不兼容,在我看来,使用开放标准是更好的方法。

虽然任何联网的设备都将使用 TCP/IP(或 UDP)进行通信,但它确实是堆栈中的下一个级别,事情变得有趣。

任何现代物联网设备都将使用TLS来提供加密和身份验证。这可以防止(理论上)其他任何人观察或干扰正在传递的消息。TCP/IP 堆栈的一个重要考虑因素是传输的大部分信息都可以被轻松观察到——这通常很容易导致安全漏洞。

设备不需要“从源头”连接到互联网,因此没有必要通过蓝牙实现 TCP(例如)。您可能还会看到 IoT 设备使用移动电话协议(如常规 SMS 或文本)作为它们的最后一跳。最终,这些协议(以某种方式为安装环境选择)很可能通过集线器设备桥接到“互联网”。

所有想要使用 TCP over IP 的设备都需要一个 TCP/IP 堆栈。

该协议是标准化的,因此来自不同制造商或使用不同操作系统的设备可以相互理解。

请注意,TCP 确保数据包到达,否则发送方将收到丢失的通知。当您无法在不知情的情况下丢失任何数据(例如与银行通信)时,将使用 TCP。

还有UDP,它发送数据包并“希望他们到达那里”。例如,这可用于流式传输音乐或视频,其中丢失几帧并不是致命的。

重要的部分是标准化。