使用第 n 层服务实现的应用程序是否一定属于第 n+1 层并在第 n+1 层实现协议?

网络工程 协议论
2022-02-28 21:51:30

我想知道什么是协议?

当在 Internet 协议栈或 OSI 模型中的第 n 层服务之上实现任意(软件或硬件)应用程序时,

  • 应用程序是否必须在第 n+1 层实现协议,要么是在第 n+1 层的现有协议,要么是在第 n+1 层的它自己的协议?

  • 应用程序是否属于第 n+1 层?

黑濑的计算机网络书说

应用层网络应用程序及其应用层协议所在的地方。Internet 的应用层包括许多协议,例如 HTTP 协议(​​提供 Web 文档请求和传输)、SMTP(提供电子邮件消息的传输)和 FTP(提供两个之间的文件传输)终端系统)。

区分网络应用应用层协议很重要。应用层协议只是网络应用程序的一部分 (尽管从我们的角度来看,它是应用程序的一个非常重要的部分!)。让我们看几个例子。Web 是一种客户端-服务器应用程序,它允许用户根据需要从 Web 服务器获取文档。Web 应用程序由许多组件组成,包括文档格式标准(即 HTML)、 Web 浏览器(例如 Firefox 和 Microsoft Internet Explorer)、Web 服务器 (例如 Apache 和 Microsoft 服务器),以及一个应用层协议Web 的应用层协议 HTTP 定义了在浏览器和 Web 服务器之间交换的消息的格式和顺序。因此,HTTP 只是 Web 应用程序的一部分(尽管是重要的一部分)。

这里有两个例子:

当我使用 Socket API 实现任意客户端-服务器应用程序时,无论它多么简单,

  • 应用程序是否实现了应用层协议,无论是现有的应用层协议还是它自己的应用层协议,即使它自己的协议不一定能被其他应用程序和开发者使用?

  • 应用程序是否属于应用程序层?

当我使用 HTTP API 实现 Web 应用程序或 Web 服务时,Web 应用程序/服务是否必然

  • 属于比 HTTP 所属层高一层或多层的层,并且
  • 实现比 HTTP 高一层或多层的协议?(SOAP 有自己的协议,那么 SOAP Web 服务是否实现了比 HTTP 高两层的协议?RESTful 服务是否实现了比 HTTP 高一层的协议?)

谢谢。

1个回答

并不真地。有很多例子(尤其是隧道),位于第n层顶部的实例不属于第n+1层。

例如,IPsec 隧道 IP,因此层嵌套(假设底部的以太网)是 L1-L2-L3-L3-L4-...(第一个 L3 实例是 IPsec,第二个实例是有效负载/内部 IP 数据包) . SSL VPN 甚至使用传输层协议,因此使用 L2 隧道,它可能是 L1-L2-L3-L4-L2-L3-L4-...

使用 OSI 层编号,您通常会使用 L1-L2-L3-L4-L7 之类的嵌套。L5 和 L6 实际上并不存在。里程各不相同,一些应用层协议可能直接位于 L3 甚至 L2 之上。

应用程序“说”应用层协议,例如 HTTP 或 SMTP。无论是“开放的”、有据可查的应用程序还是您刚刚编造的东西都无关紧要。