我刚刚使用wireshark嗅了一些流量,并注意到YouTube流量依赖于TCP。我想,他们在使用 UDP?但似乎他们会使用 HTTP 八位字节流。YouTube真的使用TCP进行流媒体播放还是我错过了什么?
因为他们需要TCP提供的一切(慢启动,传输节奏,指数退避,接收窗口,重新排序,重复拒绝等),他们要么必须使用TCP,要么尝试自己做所有这些事情。他们不可能比每个操作系统的优化TCP实现做得更好。
显然,谷歌目前正在试验自己的协议实现,如QUIC(快速UDP互联网连接),正如人们在检查HTTP响应时所看到的那样。
HTTP/1.1 200 OK
...
Content-Type: video/mp4
Alternate-Protocol: 80:quic
...
然而,目前,他们似乎依赖于TCP,就像David之前提到的一样。
来自 http://www.crazyengineers.com/threads/youtube-use-tcp-or-udp.38419/:
。当然,YouTube页面使用http[通过TCP]。真实的事情不会发生 通过 HTTP 页面,但嵌入在该页面中的 Flash 对象。这 出现在YouTube上的Flash对象是视频Flash Player。视频 Flash Player充当内容的iframe(技术上不正确的术语) 这将通过 Flash 对象进行流式传输。用于存储媒体 内容 YouTube 已安装的媒体服务器,其内容 按下播放按钮时被呼叫。
用于流媒体到闪存播放器实时流 使用协议(RTSP)。Flash 播放器上的播放按钮充当 RTSP 调用被调用的媒体,并通过 UDP 数据包流式传输媒体。 实际上,您不需要从页面迁移到任何地方,因为 嵌入对象调用视频不是 HTTP 页面,而是对象 嵌入在 HTTP 页面上 一旦关闭它,对象也会被关闭。