应用层协议是系统实用程序的一部分吗?

Ron*_*nce 0 system networking

dhcp、http、dns、ftp、nfs、smb 等应用层协议是否是 ls、cp、chmod、rm、mv 等系统实用程序的一部分?

Eli*_*gan 5

成为协议意味着什么

协议是关于如何传达信息的规则(或规则的集合)。一个应用层协议描述方案和服务如何对潜在的“下”层协议的顶部连通。这些较低的层——比如传输层——描述了通信一般是如何发生的,包括高层通信是如何打包的。

这是一个非常笼统的总结,网络的分层模型不止一个。甚至有多少层取决于人们选择使用哪种模型来描述网络如何工作。

这些层一起组成了一个套件,例如Internet 协议套件,它描述了一个工作系统(我们认为是“网络”)是如何运行的。

关键点是协议是关于某事应该如何工作的规则或描述。因此,协议不是任何通常意义上的“部分”的程序的“部分”。但是,程序可以实现应用层协议。这意味着它被编写为以符合协议的方式执行协议中指定的那种通信。

(有时程序也是不合规的,这与协议的要求不同。通常这是一个缺点——有时这是故意的,当协议不符合用户或开发人员的需求时。)

实现应用层协议的程序

DHCP 由 DHCP 服务器和 DHCP 客户端实现。HTTP 由Web 服务器(如 Apache)、Web 浏览器、爬虫和(连同其他协议)大多数下载管理器实现。浏览器、爬虫和下载管理器都是 HTTP 客户端。Ubuntu 上的 SMB 由 Samba 实现,它具有客户端和服务器组件。

应用层协议位于提供客户端-服务器模型的较低层之上。应用层协议使用这个模型;你会注意到我已经在上面的所有例子中讨论了客户端和服务器。

有时,程序与它实现的协议具有相同的名称。例如,包括 Ubuntu 在内的大多数操作系统都有一个名为ftp. 请注意,这只是一个 FTP 客户端;通常调用 FTP 服务器可执行文件ftpdd用于“守护进程”)。守护进程是在后台运行的服务,许多服务器程序都是守护进程。实现协议“FooBar”的守护进程被调用是很常见的foobard。例如,Web 服务器可执行文件通常被命名为httpd.

核心文件实用程序本身不实现应用层协议

所以,你可能会想,如果文件工具一样lscpchmodrm,和mv 实现任何应用层协议。答案是他们没有。

如果它们通过网络访问文件或目录信息,则使用这些文件实用程序中的任何一个都可能导致发生网络通信。例如,如果您安装了 NFS(或 SMB)共享,并且您ls用来列出远程文件夹的内容,则网络通信正在发生。但是这些文件实用程序不负责网络通信。相反,NFS 客户端(或 SMB)客户端执行该通信。通常,文件实用程序类似于lschmod将与访问本地文件时完全相同。