有层传输数据为什么需要FTP?

网络工程 通讯协议 协议理论 奥西
2021-07-13 23:33:53

在 OSI 中,有用于路由、封装和传输数据的层。那我们为什么需要FTP呢?我在书中阅读了以下 FTP 的定义:

FTP 用于在网络上传输文件。它不仅仅是一个协议;它也是一个程序。作为协议运行,FTP 被应用程序使用。作为一个程序,它被用户用来手动执行文件任务。

我读到数据链路和物理层的作用是通过网络传输数据,那么FTP有什么用呢?FTP 正在做什么不同的事情?

如果有人可以解决问题,我会很高兴。

4个回答

网络层提供了一个框架来构建通过网络发送数据的复杂功能——作为字节流、对话、电报风格的数据报,......

在最顶层,应用程序使用较低的层(通常是传输层)来完成其工作。它不必担心路由、网络接口、MAC 地址、线路代码等 - 所有这些都由位于操作系统中的“堆栈”处理。

在比较糟糕的情况下,网络提供了道路系统,但您需要汽车作为应用程序才能使用它。

也就是说,FTP 是一种应用层协议,客户端可以使用它来远程浏览目录、双向传输文件、删除 FTP 服务器上的文件等。网络层提供了通过网络传输命令和数据的方法。应用层实际使用网络。

请注意,有一种对最终用户隐藏复杂性的强烈倾向——例如,如果您将 FTP 客户端集成到用户的前端,他可能不会注意到访问和使用服务器上的远程文件背后的任何事情。

OSI 模型是关于如何构建网络系统七层模型我们都使用的 TCP/IP 网络不遵循此模型,并且粗略地在传输层结束,将更高级别的关注留给各个应用程序。所以 - 没有内置的标准加密、字符集翻译等。

对于 FTP,您需要某种方式:

  • 验证用户
  • 指定要发送/接收的文件名
  • 列出目录中的文件
  • 设置文件权限
  • 处理上述所有内容的命令/响应格式

显然,这些都没有被传输层覆盖。在 OSI 模型中,这些在更高级别的规范中进行了描述(阅读 FTAM)。

处理各种服务的 OSI 规范很多,我在大学学习了其中的一些,不久之后就遇到了一些实现。事实是,如今 99% 的网络是通过 TCP/IP 完成的,其中很大一部分是通过 HTTP/HTTPS 完成的,因此 OSI 模型作为一种思维方式比应用程序蓝图更有用。

这是一个简单的答案。考虑一个 5 个字节的文件abcde当然,您可以通过网络发送该数据。但是你会如何告诉对方hey, I've done sending my file以发送下一个?或者元数据(例如文件名)在哪里适合?以及如何从文件内容中区分?您可以通过引入协议来做到这一点。例如,您发送5abcde而另一方(当它读取它时)将第一个字节解释为以下内容的大小。现在接收方至少知道内容在哪里结束了!两者都必须就某些约定(协议)达成一致,否则通信显然会失败。

这就是 FTP(以及其他协议,如 HTTP)的全部意义所在。它按照某种约定解释字节流。当然更复杂,但我希望你能看到简单数据流和需要另一层的问题。

所以我会将网络与邮件系统进行比较。和FTP到一种语言。您可以通过系统在明信片中发送任意数据。可对方不明白又有什么用呢?

我读到数据链路和物理层的功能是通过网络传输数据....

实际上,所有层都具有传输数据的功能。但是它们还有另一个重要的功能,可以更清楚地说明它们为什么分开:解释数据并根据数据采取正确的行动。

以下概述侧重于简洁性;不要依赖它来获取确切的细节。

传输层以下的层(OSI 中的第 4 层,TCP/IP 套件中的 TCP)处理没有可靠或有序交付的数据发送。它们通常在处理地址的方式上彼此不同,例如,IPv4 将实际终端主机作为其目标地址,而以太网将中间路由器作为其目标地址。

当您谈论“传输[ting]数据”时,传输层可能就是您所谈论的内容;这就是层,当你给它一些字节时,会按照你发送它们的顺序把它们送到另一端而不会丢失任何一个。但是一旦字节到达另一端,接收者就需要知道如何处理它们。将它们保存到文件中?将它们作为电子邮件转发?返回一个网页?

这就是应用级协议的用武之地:它们决定了您如何格式化两端之间的信息以完成您想要完成的工作。正如Richard Huxton上面提到的,会有各种字节序列表明用户想要使用给定的名称和密码登录,请求目录列表,以下数据应写入具有给定名称的文件,等等。