这可能是一个愚蠢的问题:
- HTTP是否曾经使用过用户数据报协议?
例如:
如果使用HTTP流式传输MP3或视频,它内部是否使用UDP进行传输?
这可能是一个愚蠢的问题:
例如:
如果使用HTTP流式传输MP3或视频,它内部是否使用UDP进行传输?
Answers:
通常没有。
流很少在HTTP本身上使用,HTTP很少在UDP上运行。但是,请参阅RTP。
对于某些示例(在注释中),您没有显示该资源的协议。如果该协议是HTTP,那么我就不会将访问称为“流”。即使从某种意义上说它是因为它是通过网络串行发送(可能是很大的)资源。通常,资源将在播放之前保存到本地磁盘,因此网络传输通常不是“流式传输”的意思。
但是,正如评论者所指出的那样,确实有可能真正通过HTTP进行流传输,这是由某些人完成的。
server push
HTTP连接将MJPEG(多个JPEG图像)发送为对HTTP请求的MIME多重响应的单独部分。每个JPEG图像都会到达并替换显示中的前一个图像。但是您是正确的@unwind,由于RTP / RTSP的效果更好,因此今天很少这样做。
从RFC 2616:
HTTP通信通常通过TCP / IP连接进行。默认端口是TCP 80,但可以使用其他端口。这并不排除可以在Internet或其他网络上的任何其他协议之上实施HTTP。HTTP仅假定可靠的传输。可以使用提供此类保证的任何协议;HTTP / 1.1请求和响应结构到所讨论协议的传输数据单元上的映射超出了本规范的范围。
因此,尽管没有明确说明,但由于它不是“可靠的传输”,因此未使用UDP。
编辑 -最近,QUIC协议(严格来说是伪传输或会话层协议)确实使用UDP来承载HTTP / 2.0通信,而Google的许多通信已经使用了该协议。目前,它正朝着HTTP / 3标准化迈进。
是的,HTTP作为一种应用程序协议,可以通过UDP传输协议进行传输。以下是一些使用UDP和基础协议来传输HTTP数据并将其流式传输到最终用户的服务:
本文包含有关通过UDP及其可靠的超集RUDP进行流传输的更多详细信息:RUDP:可靠的UDP(RUDP):下一个大型流传输协议?
如果您流式传输的mp3或视频不一定是通过HTTP传输的,那么实际上我会感到惊讶。这可能是基于TCP的另一种协议,但我认为没有理由不能通过UDP流式传输。
如果这样做,则必须考虑到不确定数据是否会到达另一端,但是我可以认为您对UDP有所了解。
为了回答您的问题,不,HTTP不使用UDP。对于您所谈论的内容,mp3 /视频流可以通过UDP发生,而我认为绝不应该通过HTTP发生。
从理论上讲,可以将UDP用于http,但这可能会出现问题。例如,在您的示例中,正在流传输mp3或视频时,将出现排序问题,并且由于UDP不是面向连接的,因此没有重传机制,因此某些位可能会丢失。
UDP is not connection oriented there is no retransmit mechanism
。
我认为某些答案缺少重点。UDP和TCP之间的选择不应基于数据的类型(例如,音频或视频),也不应基于应用程序是否在传输完成之前开始播放(“流”),而是基于实时的。实时数据(按定义)对延迟敏感,因此通常最好通过RTP / UDP(UDP实时协议)发送。
即使文件是音频和/或视频,延迟也不是文件中存储数据的问题,因此延迟最好通过TCP发送,以便可以纠正任何数据包丢失。发送方可以提前阅读并保持网络管道畅通,而接收方也可以使用大量播出缓冲,因此不会因偶尔的TCP重传或瞬时网络变慢而中断。极限情况是在回放开始之前传输整个记录。这消除了播放停顿的任何风险,但是通常是不切实际的。
TCP用于实时数据的问题不在于重传,而在于过多的缓冲,因为TCP试图在不考虑延迟的情况下尽可能高效地使用管道。UDP保留了应用程序数据包的边界,并且没有内部存储,因此它不会引入任何延迟。
尝试使用node-httpp在UDP上运行HTTP:
某些torrent跟踪器实现使用udp上的http(所有主要客户均使用supporteb)