我不是特别精通互联网,而物联网技术对我来说尤其令人困惑。我正在阅读这份有关互联网结构的斯坦福白皮书。在图2中,它表示一台计算机(PC)将用来通过Internet创建,处理并将消息发送到另一台计算机的软件“堆栈”的表示形式。
是否所有类型的计算机-智能手机/电视/游戏机等都使用这种格式?
操作系统重要吗?
(在这方面)蜂窝互联网和Wifi /以太网之间有什么区别吗?
似乎没有“应用程序”层的单功能设备怎么办?例如,网络连接的摄像头,电灯开关或恒温器。
我不是特别精通互联网,而物联网技术对我来说尤其令人困惑。我正在阅读这份有关互联网结构的斯坦福白皮书。在图2中,它表示一台计算机(PC)将用来通过Internet创建,处理并将消息发送到另一台计算机的软件“堆栈”的表示形式。
是否所有类型的计算机-智能手机/电视/游戏机等都使用这种格式?
操作系统重要吗?
(在这方面)蜂窝互联网和Wifi /以太网之间有什么区别吗?
似乎没有“应用程序”层的单功能设备怎么办?例如,网络连接的摄像头,电灯开关或恒温器。
Answers:
在这篇文章中将要解决的问题中可能存在一些误解或误解。
在图2中,它表示一台计算机(PC)将用来在Internet上创建,处理和发送消息的软件“堆栈”的表示形式。
是否所有类型的计算机-智能手机/电视/游戏机等都使用这种格式?
(在这方面)蜂窝互联网和Wifi /以太网之间有什么区别吗?
似乎没有“应用程序”层的单功能设备怎么办?例如,网络连接的摄像机,电灯开关或恒温器。
这些误解的存在需要对以下内容进行解释(以便为以后的讨论提供背景):
然后将直接解决这些问题。
请注意,鉴于它们的重要性和复杂性,整个系列的书都是在TCP / IP协议套件上编写的。这里的定义和解释将主要来自Wikipedia,TCP / IP图解第一卷第二版: Stevens和Fall 的协议以及IBM的TCP / IP教程和技术概述。
互联网在技术上是一个广域网(WAN) ,而是把它作为一种超网络的(网络的网络)或多种不同的聚合更加有用的方式相互连接的网络作品。这是通过Internet的一部分路由路径的图片:
可以在Arstechnica文章“ Internet的工作方式”中找到有关Internet的工作方式的有趣信息:海底光纤,罐子中的大脑和同轴电缆。
那么,在连接到不同网络的不同硬件平台上运行的不同系统又如何能够相互通信呢?在如此庞大的异构系统和网络之间如何进行通信?所有这些如何同时进行?
答案由Internet协议套件(也称为TCP / IP协议套件)提供。在Internet体系结构的设计过程中考虑了这些问题(TCP / IP说明,第1.1节:体系结构原理):
有几个目标指导了Internet体系结构的创建。在[C88]中,Clark叙述了主要目标是“开发一种有效利用现有互连网络的复用技术”。该声明的实质是Internet体系结构应该能够互连多个不同的网络,并且多个活动应该能够在最终互连的网络上同时运行。
从Internet协议套件(Wikipedia):
Internet协议套件是Internet和类似计算机网络上使用的概念模型和通信协议集。
互联网协议套件提供了端到端的数据通信,指定了应如何打包,寻址,传输,路由和接收数据。此功能分为四个抽象层,用于根据涉及的网络范围对所有相关协议进行排序。
考虑TCP / IP协议套件的一种方法是作为规范,说明在不同系统和不同网络上运行的进程如何相互通信。本质上,TCP / IP协议套件提供了进程间通信的标准。
正确实现TCP / IP协议套件的任何系统都可以使用其提供的功能,以允许其进程通过Internet进行通信。实际上,为了使进程可以通过Internet与在其他网络上的远程系统上运行的其他进程进行通信,系统必须使用符合标准的TCP / IP套件协议。
从应用软件(维基百科):
应用程序(简称应用程序)是一种计算机程序,旨在执行一组协调的功能,任务或活动,以使用户受益。应用程序的示例包括文字处理器,电子表格,会计应用程序,Web浏览器,媒体播放器,航空飞行模拟器,控制台游戏或照片编辑器。集体名词应用程序软件是指所有应用程序。这与主要与运行计算机有关的系统软件形成对比。
可以将应用程序视为在系统上运行的用户空间进程。除上面列出的示例外,它还可以包括诸如(非内核模式)计算机病毒,Web服务器,相机应用程序和传感器数据聚合程序之类的程序。
当应用程序通过Internet传输和接收数据时,它必须利用其主机系统的TCP / IP协议套件实现。从应用程序层(维基百科):
在TCP / IP中,应用程序层包含在Internet协议(IP)计算机网络之间的进程间通信中使用的通信协议和接口方法。应用层仅使通信标准化,并依赖基础传输层协议来建立主机到主机的数据传输通道并管理客户端服务器或对等网络模型中的数据交换。
TCP / IP协议套件的应用层包括诸如文件传输协议(FTP),域名系统(DNS)以及可能最著名的超文本传输协议(HTTP)之类的协议。
例如,应用程序层协议HTTP指定如何在(通常)不同系统上运行的2个进程之间传输数据:客户端应用程序,Web浏览器和服务器应用程序,Web服务器进程。
在图2中,它表示一台计算机(PC)将用来通过Internet创建,处理并将消息发送到另一台计算机的软件“堆栈”的表示形式。
TCP / IP协议套件不是软件堆栈。从Technopedia:
软件堆栈是一组程序,它们协同工作以产生结果或实现共同的目标。软件堆栈还指以特定的和定义的顺序朝着共同目标运行的任何应用程序集,或者指一组作为一组工作的实用程序或例行应用程序。可安装文件,产品的软件定义和修补程序可以包含在软件堆栈中。LAMP(Linux,Apache,MYSQL,Perl或PHP或Python)是一种流行的基于Linux的软件堆栈。WINS(Windows Server,Internet Explorer,.NET,SQL Server)是一种流行的基于Windows的软件堆栈。
而是一个协议栈,通常由内核(也来自Technopedia)实现:
协议栈是指同时运行的一组协议,用于实现网络协议套件。
堆栈中的协议确定分层网络模型(例如OSI或TCP / IP模型)的互连性规则。为了成为一个协议栈,协议必须具有互操作性,能够在网络层之间垂直连接并且在每个传输段的端点之间水平连接。
是否所有类型的计算机-智能手机/电视/游戏机等都使用这种格式?
TCP / IP协议套件是与硬件和操作系统无关的通信规范,而不是格式。如果在一个硬件平台上运行的进程需要与在不同硬件平台上的远程系统上运行的进程进行通信,并且通信是通过Internet进行的,则系统必须
(在这方面)蜂窝互联网和Wifi /以太网之间有什么区别吗?
我对这个问题的解释是“移动设备连接到GSM网络的方式与移动设备连接到WiFi网络的方式是否有所不同?”
区别在于网络接口层。
该问题在该问题所链接的文章的图表中暴露了对TCP / IP协议套件的不良描述。供参考,如下图:
最低层称为“硬件”,应称为链路层,媒体访问控制(MAC)层或网络接口层。
从IBM的“ TCP / IP教程和技术概述”第34页:
网络接口层(也称为链路层或数据链路层)是实际网络硬件的接口。该接口可以提供也可以不提供可靠的传递,并且可以是面向数据包或流的。实际上,TCP / IP在这里没有指定任何协议,但是可以使用几乎任何可用的网络接口,这说明了IP层的灵活性。示例包括IEEE 802.2,X.25(本身是可靠的),ATM,FDDI甚至是SNA。
这是一个正确而高级的描述(来自《 TCP / IP指南》):
网络接口层的讨论之所以有意义是因为,在这一层,蜂窝/移动设备连接到GSM网络与WiFi网络的方式有所不同。
当连接到GSM网络时,用于处理移动设备和基站收发器(BTS)之间的连接的网络接口层协议通常由3G指定
当连接到WiFi无线访问点(WAP)时,所使用的协议由IEEE 802.11标准指定。
似乎没有“应用程序”层的单功能设备怎么办?例如,网络连接的摄像头,电灯开关或恒温器
如前所述,TCP / IP协议套件的应用程序层中的协议提供了有关如何在进程之间交换应用程序数据的标准。
这些层是概念性的。它们不驻留在系统或硬件平台上。
网络连接的摄像机,电灯开关和恒温器可能正在运行的进程通过互联网与远程系统上运行的进程进行通信(检查固件更新,与服务器的数据交换等)。这些进程或应用程序将利用TCP / IP协议套件的实现来完成此进程间通信。
尽管有各种各样的应用程序使用运行在传统PC或服务器上的不同应用程序层协议,但是在硬件平台如何连接到它们各自的访问点(网络接口/数据链路层)方面并没有太大差异。它主要通过以太网有线或无线方式完成。
对于通过TCP / IP进行通信的各种嵌入式系统而言,情况有所不同。这是一个说明(来自Postscapes):
有关更多信息,请参见以下文章:
是否所有类型的计算机-智能手机/电视/游戏机等都使用这种格式?
为了在互联网上交换东西,它必须经过某个地方的IP堆栈。
操作系统重要吗?
IP协议由RFC 791定义,因此OS / Firmware必须遵守该协议,无论它是什么。
(在这方面)蜂窝互联网和Wifi /以太网之间有什么区别吗?
简化一点,这里的区别在于第1层(物理)无线电信号与电线上的电信号。有关开放系统互连模型(OSI模型)维基百科页面的更多详细信息。
它们都用于在其特定介质上转置第3层(网络)(此处为IP)。
似乎没有“应用程序”层的单功能设备怎么办?例如,网络连接的摄像机,电灯开关或恒温器。
应用层与特定的通信协议(HTTP,SSH等)相关,例如,它不一定是Chrome或Firefox之类的应用。
通常,那些协议将在TCP之上实现,而某些协议则在UDP之上实现,这是因为希望不阻塞等待确认,或者获取过时的数据包没有任何意义(语音呼叫,流传输)。还有其他第4层协议,但通常用于特定用途,例如ICMP for ping
。当您希望确保某些数据到达目的地时,选择TCP是协议。
对于“远程设备”(例如您的示例中的恒温器),它可能会使用现有的协议(例如HTTP)或使用专有协议来发送其数据,该协议仍将位于应用程序层,因为它将不仅仅是传输协议。
它可能仅在第4层上完成,但是这需要创建一个新协议,而开销通常不值得,并且会使系统与其他系统不兼容,在我看来,使用开放标准是一种更好的方法。
尽管确实有任何互联网连接的设备都将使用TCP / IP(或UDP)进行通信,但这确实是使事情变得有趣的堆栈的下一个层次。
任何现代物联网设备都将使用TLS提供加密和身份验证。从理论上讲,这可以防止其他任何人观察或干扰正在传递的消息。TCP / IP堆栈的重要考虑因素是,可以轻松观察传输的许多信息-这通常很容易导致安全漏洞。
设备不需要“从源头”连接到互联网,因此不需要通过蓝牙实现TCP(例如)。您可能还会看到使用移动电话协议(例如常规SMS或文本)的IoT设备是它们的最后一跳。最终,这些协议(以某种方式针对已安装的环境选择)很可能会通过集线器设备桥接到“ Internet”。
堆栈本身是一个虚拟的概念。堆栈中的每一层都会修改通过物理介质(无线电波或其他电子信号)发送的最终位。没有规则说堆栈中的每一层都必须以单个离散的代码或硬件单元进行设计。例如,iEthernet芯片结合了TCP,IP,MAC和PHY层,使开发人员可以执行TLS和应用层软件的任务。
就是说,所有位都必须符合所涉及的各种协议,因此,通常更容易将每一层设计为单独的实体,因此可以对其进行独立测试和验证。大多数设备,包括智能手机,智能电视和游戏机,通常都从专门从事某些领域的第三方购买芯片。例如,大多数电话仅使用几种不同的蓝牙芯片中的一种。这意味着制造商不必担心每个新产品都会重新发明轮子。
从理论上讲,某些小型专用设备可能只有一个带有嵌入式SoC(片上软件)的处理器,该处理器将所有网络层(应用程序,TLS,TCP,IP,PHY)作为单个离散的代码单元进行处理。我现在找不到任何具体示例,但是如果一些小型,低功耗或专用功能设备将堆栈的所有各层组合到一个单元中以减少功耗(延长电池寿命),这也不会令我感到惊讶。更大,更复杂的产品(例如电视,电话和游戏系统)可能至少具有3层(应用程序,操作系统和硬件),而烤面包机可能只有1或2层。
注意:我并不是在说我链接的特定烤面包机有1或2层,只是说如果按照这种方式进行设计(这是一种单一用途的设备)将是合乎逻辑的。