智能手机/电视/游戏机等各种计算机都使用这种格式吗?
操作系统重要吗?
(在这方面)蜂窝互联网与Wifi /以太网之间有什么区别吗?
那些似乎没有“应用程序”层的单功能设备呢?网络连接的摄像头,电灯开关或恒温器。
#1 楼
本文将要解决的问题中存在一些潜在的误解或误解。在图2中,它显示了软件“堆栈”的表示形式,计算机(PC)将用于通过Internet创建,处理和发送消息到另一台计算机执行各种计算机-智能手机/ tv的/ gameconsoles等使用这种格式吗? >
不具有“应用程序”层的单功能设备呢?例如网络连接的摄像头,电灯开关或恒温器。
由于存在这些误解,因此需要对以下内容进行解释(以便为后续讨论提供背景信息):
什么是Internet
什么是TCP / IP协议套件
什么是应用程序
然后将直接解决问题。
/>请注意,鉴于它们的重要性和复杂性,整个系列的书都是在TCP / IP协议套件上编写的。这里的定义和解释将主要来自Wikipedia,TCP / IP图解第一卷第二版:Stevens和Fall的协议以及IBM的TCP / IP教程和技术概述。
1。互联网
从技术上讲,互联网是一个广域网(WAN),但是将其视为一种更有用的方法是将其视为一种超级网络(网络的网络)或许多不同的互连网络的集合。这是通过一部分Internet路由路径的图片:
Internet包含许多连接的网络
一个网络可能包含1个或多个系统(主机)
连接的系统通常在某种硬件平台上运行
连接到网络的系统的类型以及它们运行的硬件之间存在很大差异。
在Arstechnica文章“ Internet的工作原理:海底光纤,罐子里的大脑和同轴电缆。
那么,运行在连接到不同网络的不同硬件平台上的不同系统如何相互通信呢?在如此庞大的异构系统和网络之间如何进行通信?所有这些如何同时发生?
2。 Internet协议套件
答案是Internet协议套件(也称为TCP / IP协议套件)提供的。在Internet体系结构的设计过程中考虑了这些问题(TCP / IP图解,第1.1节:体系结构原理):
有几个目标指导了Internet体系结构的创建。在[C88]中,Clark谈到主要目标是“开发一种有效利用现有互连网络的复用技术”。该声明的本质是Internet体系结构应该能够互连多个不同的网络,并且多个活动应该能够同时在生成的
互连网络上运行。
来自Internet协议套件(Wikipedia):
Internet协议套件是Internet和类似计算机网络上使用的通信协议的概念模型和集合。
Internet协议套件提供端到端的数据通信。指定如何打包,寻址,传输,路由和接收数据。此功能分为四个抽象层,这些抽象层用于根据所涉及的网络范围对所有相关协议进行排序。
考虑TCP / IP协议套件的一种方法是作为规范,说明在不同系统和不同网络上运行的进程如何相互通信。本质上,TCP / IP协议套件提供了用于进程间通信的标准。
任何正确实现TCP / IP协议套件的系统都可以使用其提供的功能来允许其进程通过Internet进行通信。实际上,为了使进程可以通过Internet与在其他网络上的远程系统上运行的其他进程进行通信,系统必须使用符合标准的TCP / IP套件协议。
3。应用程序
来自应用程序软件(Wikipedia):
应用程序(简称“应用程序”或“应用程序”)是一种计算机程序,旨在执行一组协调的功能,任务或活动,以使用户受益。用户。应用程序的示例包括文字处理器,电子表格,会计应用程序,Web浏览器,媒体播放器,航空飞行模拟器,控制台游戏或照片编辑器。集体名词应用程序软件是指所有应用程序。这与主要与运行计算机有关的系统软件形成了鲜明的对比。
应用程序可以看作是在系统上运行的用户空间进程。除了上面列出的示例外,它还可以包括诸如(非内核模式)计算机病毒,Web服务器,相机应用程序和传感器数据聚合程序之类的程序。
当应用程序通过Internet发送和接收数据时,它必须利用其主机系统的TCP / IP协议套件实现。从应用程序层(维基百科):
在TCP / IP中,应用程序层包含在Internet协议(IP)计算机网络上的进程间通信中使用的通信协议和接口方法。应用层仅使通信标准化,并依赖底层的传输层协议来建立主机到主机的数据传输通道,并在客户端服务器或对等网络模型中管理数据交换。
TCP / IP协议套件的应用程序层包括诸如文件传输协议(FTP),域名系统(DNS)以及可能最著名的超文本传输协议(HTTP)之类的协议。
例如,该应用程序层协议HTTP指定如何在(通常)不同系统上运行的两个进程之间进行数据传输:客户端应用程序,Web浏览器和服务器应用程序,Web服务器进程。
澄清潜在的误解
在图2中,它表示计算机(PC)将用来通过Internet创建,处理和发送消息到另一台计算机的软件“堆栈”的表示形式。 。
TCP / IP协议套件不是sof软件堆栈。来自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进行的,则系统必须正确地实现TCP / IP协议套件和该套件中的适当协议必须用于完成进程间通信
(在这方面)蜂窝互联网和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标准指定。
那些没有功能的单功能设备呢? t似乎具有“应用程序”层-例如网络连接的摄像头,电灯开关或恒温器
如前所述,TCP / IP协议套件的应用程序层中的协议提供了如何交换应用程序数据的标准在各个过程之间。
这些层是概念性的。它们不驻留在系统或硬件平台上。
通过网络连接的摄像头,电灯开关和恒温器上可能运行有进程,这些进程通过Internet与远程系统上运行的进程进行通信(检查固件更新,数据交换)。与服务器等)。这些进程或应用程序将利用TCP / IP协议套件的实现来完成此进程间通信。
TCP / IP协议套件和嵌入式系统(“ IoT”)
尽管有许多不同的应用程序在运行在传统PC或服务器上的不同应用程序层协议,但在如何硬件平台连接到它们各自的访问点(网络接口/数据链路层)。它主要是通过以太网通过有线或无线方式完成的。
通过TCP / IP进行通信的各种嵌入式系统的情况有所不同。以下是对此的说明(来自Postscapes):
有关更多信息,请参阅以下文章:
理解物联网背后的协议
IoT标准和协议
IoT技术指南
评论
在此详细信息方面,我的netadmin成员感到遗憾的是,没有关于TCP / IP的字眼,这意味着IP上的TCP,TCP完全未绑定到IP,它也已在IPX网络上实现(即使sigle是附近,它们是2个非常不同的协议)
–滕西拜
17年4月19日在19:20
@Tensibai IPX上的TCP是否与SPX基本上相同(即可靠的基于端口的传输版本)? -但这让我想起了这样的说法,即两个希望通过Internet(即,跨不同网络)进行通信的主机必须实现TCP / IP的说法并不完全正确:网络1上的主机A和网络3上的主机B可能会说例如即使连接网络2是纯TCP / IP,也要IPX / SPX,前提是网络1和3中有隧道网关...
–哈根·冯·埃岑
17年4月19日在19:55
@hagen nope,SPX等效于TCP,但绝对不能与TCP系统互连,因此为什么要开发IP over TCP,以允许IP和IPX上的系统之间使用简单的第3层路由器进行端到端TCP通信。是的,互联网是主要依靠IP,MPLS和路由协议的(我可能会忘记一些),TCP在整个路由中不起作用,只是在它上面流通。
–滕西拜
17年4月19日在20:03
@Tensibai如果我犯了一个或多个错误,请告诉我,我将尽力纠正它们。
–朱利安
17年4月19日在21:18
@SYS_V并不是一个真正的错误,一些快捷方式使我有些困扰。让我们说从TCP通讯的角度来看是可以的:)对于愿意研究问题的人,有所有必要的信息。我认为您在第一段中对OP有点不礼貌,明天我将尝试(从计算机上)提出修改建议,以解决我的疑虑:)
–滕西拜
17年4月19日在21:26
#2 楼
是否所有类型的计算机-智能手机/电视/游戏机等都使用
这种格式?通过某个地方的IP堆栈。
操作系统重要吗?
IP协议由RFC 791定义,因此OS /固件必须遵守它。
(在这方面)蜂窝互联网和Wifi /以太网之间有什么区别吗?
/>
简单一点,这里的区别是第1层(物理)无线电信号与电线上的电信号。有关开放系统互连模型(OSI模型)维基百科页面的更多详细信息。
它们全都用于将第3层(网络)(这里是IP)转置到其特定介质上。
似乎没有“应用”层的单功能设备呢?例如网络连接的摄像头,电灯开关或恒温器。
应用层与特定的通信协议(HTTP,SSH等)相关,而不必例如,像Chrome或Firefox这样的应用程序。
通常,那些协议将在TCP之上实现,而某些协议则在UDP之上,如果希望不阻塞等待确认或获取过时的数据包没有意义(语音通话,流式传输)。还有其他第4层协议,但通常用于特定用途,例如
ping
的ICMP。当您希望确保某些数据到达目的地时,可以选择使用TCP。对于“远程设备”,例如您的示例中的恒温器,它可以使用HTTP等现有协议,也可以使用一种专有数据以发送其数据,通常它仍将位于应用程序层,因为它不仅是一种传输协议。
它可能仅在第4层上完成,但是这需要创建一个新协议,而开销通常不值得,并且会使系统与其他系统不兼容,在我看来,使用开放标准是更好的方法。
评论
也许值得澄清的是,TCP-IP在任何操作系统(从mbed / arduino到MC Windows和Linux)中都是相当普遍的“必须具备”。
– Sean Houlihane
17年4月19日在11:24
确实,对于高级协议,声音是如此隐含,以至于我忘记了。
–滕西拜
17年4月19日在12:06
答案1和答案2是非答案,答案3是使用OSI参考模型而不是TCP / IP协议套件进行解释的。本文中的答案均未解决问题中出现的概念性错误。
–朱利安
17年4月19日在17:31
@Sys_v我不是写Novell的:)
–滕西拜
17年4月19日在19:06
#3 楼
尽管确实任何互联网连接设备都将使用TCP / IP(或UDP)进行通信,但这确实是使事情变得有趣的堆栈的下一个层次。任何现代物联网设备都将使用TLS提供加密和身份验证。从理论上讲,这可以防止其他任何人观察或干扰正在传递的消息。 TCP / IP堆栈的一个重要考虑因素是,可以轻松观察传输的许多信息-这通常很容易导致安全漏洞。
设备不需要连接到互联网“源头”,因此没有必要通过蓝牙实现TCP(例如)。您可能还会看到使用移动电话协议(例如常规SMS或文本)的IoT设备是它们的最后一跳。最终,这些协议(以某种方式针对安装的环境选择)很可能会被集线器设备桥接到“互联网”。
评论
关于第二段的前提,恐怕我们甚至会遇到比今天晚些时候设计的设备,但仍然会忽略加密
–哈根·冯·埃岑
17年4月19日在20:04
现代意义是使用当今的最佳实践设计的,而不仅仅是简单的事情。
– Sean Houlihane
17年4月19日在22:42
#4 楼
所有要使用基于IP的TCP的设备都需要一个TCP / IP堆栈。协议是标准化的,因此来自不同制造商或使用不同操作系统的设备可以相互理解。
请注意,TCP确保数据包到达,或者发件人将收到有关其丢失的通知。当您无法承受丢失任何数据(例如与您的银行通信)而无法丢失数据时,将使用TCP。
还有UDP,它发送数据包并“希望它们到达那里” ”。例如,这可用于流音乐或视频,其中丢失几帧不是致命的。
重要的部分是标准化。
#5 楼
堆栈本身是一个虚拟的概念。堆栈中的每一层都会修改通过物理介质(无线电波或其他电子信号)发送的最终位。没有规则说堆栈中的每一层都必须以单个离散的代码或硬件单元进行工程设计。例如,iEthernet芯片结合了TCP,IP,MAC和PHY层,使开发人员可以执行TLS和应用程序层软件。也就是说,所有位都必须符合各种协议由于这个原因,通常将每个层设计为一个单独的实体通常比较容易,因此可以对它们进行独立的测试和验证。大多数设备,包括智能手机,智能电视和游戏机,通常都从专门从事某些领域的第三方购买芯片。例如,大多数电话仅使用几种不同的蓝牙芯片中的一种。这意味着制造商不必担心每个新产品都需要重新发明轮子。
从理论上讲,某些小型的专用设备可能只有一个带有嵌入式SoC(片上软件)的处理器。将网络的所有层(应用程序,TLS,TCP,IP,PHY)作为单个离散的代码单元进行处理。我现在找不到任何具体的示例,但是如果一些小型,低功耗或专用功能设备将堆栈的所有各层组合到一个单元中以减少功耗(延长电池寿命),这也不会令我感到惊讶。更大,更复杂的产品(例如电视,电话和游戏系统)可能至少具有3层(应用程序,操作系统和硬件),而烤面包机可能只有1或2层。
注意:我并不是说我链接的特定烤面包机有1或2层,只是说如果以这种方式设计的话,它是一台单一用途的设备将是合乎逻辑的。
评论
烤面包机将如何不能具有所有层次?您可以将网络电缆插入其中或对WiFi波做出反应-因此它实现了PHY层。 In可以与本地和远程设备(例如您的iPhone)进行通信-因此它实现了IP层。它要求安全地传输数据(图像)-因此,它可以更好地实现TCP。某些部分必须理解传输的数据,因此我们当然在顶层有一个应用层。 ---(好吧,如果他们不是使用蓝牙而是使用网络...)
–哈根·冯·埃岑
17年4月19日在20:11
@HagenvonEitzen协议规定了放置的层,但是我的观点是TCP / IP“堆栈”中的一个“层”可能不是软件/硬件“堆栈”中的单个离散“层”。我举了一个芯片组的例子,该芯片组本身就实现了四层。在硬件/软件方面,这只是实现连接的“堆栈”中的一个“层”。使用该芯片和实现自己的TLS的应用程序会导致两层堆栈;物理组件与OP中描述的四个逻辑层不一致。
– phyrfox
17年4月19日在21:23
评论
相关iot.stackexchange.com/questions/1119最好每个问题只问一个问题-但是对于这些非常基本的问题而言,这有点困难。如果您有后续问题,请务必尝试使其更加具体。
所有设备都有一个应用程序层。通过网络连接的电灯开关的应用程序层是在收到命令时打开和关闭灯的软件。
@immibis,这听起来简直太疯狂了,但是协议栈层不是设备可以拥有的属性。在TCP / IP中,应用程序层包含在IP计算机网络上的进程间通信中使用的通信协议和接口方法。设备可以托管一个系统,而该系统可能正在执行应用程序,但是设备不具有应用程序层。 TCP / IP本身是一个概念模型。
@SYS_V当我说“设备具有应用程序层”时,我的意思是“设备具有一些实现TCP / IP描述为应用程序层的软件组件”