我经常听到有人说使用HTTP下载。它在技术上究竟意味着什么?
HTTP代表超级文字传输协议。因此,从字面上理解它,它意味着文本传输。我使用了一些嗅探工具来监控线路流量。传输的是所有ASCII字符。所以我想在通过HTTP传输之前,我们必须将我们想要下载的内容转换为字符。使用HTTP URL编码?或者一些二进制到文本的编码模式,比如base64?但这需要在客户端进行一些解码。
我一直认为TCP可以传输任何数据,因此我猜测HTTP下载是一个误用词。之所以出现是因为我们通过HTTP查看网页并在该页面上找到一些可下载的链接,然后我们点击它进行下载。实际上,浏览器打开一个TCP连接来下载它。关于HTTP没什么。
任何人都可以解释一下吗?
答案 0 :(得分:12)
HTTP下载究竟是什么意思的完整答案?符合其RCF 2616规范,您可以在此处阅读:http://tools.ietf.org/html/rfc2616
当然,这是一份很长(但非常详细)的文件。
我不会在这里复制或总结其内容。
在你的问题正文中,你更具体:
因此,从字面上理解它,它意味着文本传输。
我认为“TEXT”这个词会误导你。
和
在通过HTTP
传输之前,必须将我们想要下载的内容转换为字符
false 。你没必要。
可以通过线路发送文件,例如JPEG图像,而无需任何编码。例如,见:When a web server returns a JPEG image (mime type image/jpeg), how is that encoded?
请注意,可以选择应用压缩或编码(最常见的情况是GZIP用于文本内容,如html,文本,脚本......)但这取决于客户端和服务器如何就数据的方式达成一致转移。这个“协议”分别是请求和谐振标题中的“Accept-Encoding”和“Content-Encoding”指令。
答案 1 :(得分:3)
我理解这个名称会误导您,但如果您将超文本传输协议读作具有超文本功能的传输协议,那么它会发生一些变化。
当开发HTTP时,已经有很多协议(例如,IP协议,这是数据在互联网上的服务器之间广泛传输的方式),但是没有允许在文档之间轻松导航的协议。
HTTP是一种允许传输信息的协议和用于嵌入在文本文档中的超文本(即链接)的协议。这些链接不一定必须指向其他文本文档,因此您基本上可以使用HTTP传输任何信息(发送方和接收方就使用mime类型的内容发送的文档类型达成一致)。因此,即使您可以发送除文本文件之外的其他内容,该名称仍然有意义。
答案 2 :(得分:1)
HTTP代表超文本传输协议。因此,从字面上理解它,它意味着文本传输。
是的,文字转移。不一定是plain text,而是所有文字。这并不意味着您的文本必须是个人可读的,只能是计算机。
我使用了一些嗅探工具来监控线路流量。传输的是所有ASCII字符。
你的嗅探工具知道你是一个人,所以它不会只给你0和1。它将它获得的任何内容转换为ASCII字符,以使其对您可读。通过线路的Alle通信是二进制的。 ASCII代表就是为了你。
所以我想我们必须在通过HTTP
传输之前将我们想要下载的内容转换为字符
不,一点也不。再次,它是文本 - 不一定是纯文本。
我一直认为TCP可以传输任何数据, [...]
你说得对。 TCP确实传输所有数据,但是在完全不同的层中。要理解这一点,让我们看一下OSI model:
当您通过网络发送任何内容时,您的数据将遍历所有不同的层。一,应用层。这里我们有HTTP和其他几个。您通过HTTP发送的所有内容都会通过图层,一直到演示文稿,一直到物理层。
所以当你说TCP传输数据时,你就是对的(HTTP 可以在其他传输协议上工作,比如UDP,但这很少见),但TCP会传输你的所有数据是否从Web服务器下载文件,在计算机之间复制本地网络上的共享文件夹或发送电子邮件。
答案 3 :(得分:0)
HTTP可以很好地传输“二进制”数据。没有必要转换任何东西。
答案 4 :(得分:0)
HTTP是用于传输数据的协议。在您的情况下,您正在下载任何文件。
答案 5 :(得分:0)
您可以这样做(打开其他类型的连接),也可以将数据作为原始文本发送。您将发送的内容就是您在文本编辑器中打开文件时所看到的内容。您的浏览器只是决定将文件保存在“下载”文件夹中(或者您希望的话),因为它看到文件类型不支持(.rar,.zip)。
答案 6 :(得分:0)