0

当我们右键单击以下 URL 并选择“另存为”时,IE 会执行什么操作?

http://www.somesite.com/some_file.zip

我听说过“HTTP 下载”之类的东西,它到底是什么?

我的理解是,HTTP 是一个基于文本的协议,它怎么能被用来传输不同类型的文件呢?

我的猜测是,当我们为 URL 选择另存为时,IE(或任何其他浏览器)将打开与服务器的新 TCP 连接并进行文件传输。它应该与 HTTP 无关。

  • 当我们访问一个网页时,浏览器使用 TCP 连接来传输 HTTP 信息和 HTML。
  • 当我们在 IE 中下载文件时,浏览器使用 TCP 传输文件内容。

它本质上是相同的,只是传输的内容不同。

我对吗?连接传输文件内容。

4

1 回答 1

2

您可以通过 HTTP 传输任何二进制数据。例如,服务器可以将Content-Type响应标头设置为任何内容,然后将任何数据写入响应。因此,例如,您可以设置Content-Typeapplication/octet-stream然后将二进制数据写入响应。所以 IE 所做的是它分析 Content-Type 响应头,下载内容,如果它是它可以显示的已知内容类型(例如 HTML),它会显示它内联,如果不是,它会提示用户保存。

HTTP 不是基于文本的协议。标头应该是文本,但请求/响应的主体可以是任意字节。这就是标头的用途:准确指示正文是如何编码的,以便对方可以正确理解和解码。

就 TCP 和 HTTP 而言,HTTP 是 TCP 之上的协议。因此,当使用 HTTP 时,您会隐式使用 TCP。将其视为基于 TCP 的主要传输机制的基于约定的协议。TCP是低级的:它允许客户端和服务器之间的连接。HTTP 就像一种语言。如果没有 HTTP,TCP 就像来自不同国家的两个人,每个人都说不同的语言,在酒吧里见面。你认为会发生什么?他们将无法交换一个字。HTTP 是统一它们并允许它们交谈的通用语言。只是TCP吧。

于 2012-07-05T15:53:08.380 回答