我正在尝试更多地了解 FTP 的工作原理(我是互联网网络领域的新手,所以如果我在谈论协议时措辞不当,请原谅)。据我所知,FTP 用于将文件从互联网从一台计算机传输到另一台计算机。另一方面,HTTP 仅用于“查看”/显示另一台服务器上的网页。
说,我去BBC.com并使用 下载网页Ctrl+S
。页面中引用的大量相关媒体文件(例如图片)也会下载到我电脑中的单独文件夹中。这些文件是通过 FTP 协议传输的吗?网页内容(例如 bbc 网站的 index.html 文件)是否也通过 FTP 下载?
答案1
必须注意的是,当您调用“保存”命令(通过 Ctrl-S/Cmd-S 键盘快捷键或其他方式)时,浏览器会执行的操作完全由浏览器决定。没有标准规定当有人点击“保存”时浏览器应该执行的操作。
由于您已经加载了页面,浏览器已经通过 HTTP 下载了所有相关文件(HTML、CSS、JavaScript、Web 字体、图像文件等),并且已经将它们保存在 RAM 中(如果不是在磁盘缓存中)。因此,当您调用“保存”时,它只会将这些缓存文件复制到您指定保存页面的位置。
大多数 Web 服务器仅向公众公开 HTTP。大多数是不是可通过 FTP 访问。因此,Web 浏览器不会假定它们可以使用 FTP 从给定服务器检索任何文件。
请注意,您的浏览器只能保存 Web 服务器发送的内容,这通常与服务器磁盘上的文件不同。例如,如果给定页面使用 PHP,则 Web 服务器磁盘上的文件包含一堆 PHP 代码,这些代码会由服务器上的 PHP 解释器处理并在提供给浏览器之前被删除/替换。因此,即使 URL 以 .php 结尾,浏览器收到的文件也会缺少服务器上原始 .php 文件包含的一堆 PHP 代码。因此,由于现代网站几乎从来都不是一组容易发现的静态文件,因此您无法仅尝试使用 Web 浏览器或其他 HTTP 客户端尝试 HTTP 下载您在服务器上可以找到的每个资源来创建其他人网站的工作克隆。
答案2
你说的没错,但 HTTP 和 FTP 都可以上传和下载文件。它们在功能上有些重叠,但 FTP 通常有专门用于移动大文件的功能。必须设置 FTP 服务器,并且客户端(你)必须使用 FTP 软件客户端进行连接。一个流行的免费 FTP 软件是 Filezilla。
HTTP 和 HTTPS 以及较新版本(如 SPDY 和 HTTP/2)是浏览网站时使用的默认协议,它们确实会将文件从 Web 服务器下载到您的计算机。然后,您的 Web 浏览器会获取这些文件并整理成一个页面供您查看。当您打开 BBC 等网站时,如果您能分解实际发生的情况(浏览器和服务器之间的 syn、syn-ack、ack、请求、响应、fin、fin-ack、ack 命令),您会感到非常惊讶。