我想知道什么是协议?
当在 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 高一层的协议?)
谢谢。