首页 > 解决方案 > 如果请求是使用 TCP 的 HTTP 请求,我们使用什么协议进行流式传输?UDP是如何实现的?

问题描述

我目前正在研究 TCP/IP 模型的传输层,特别是使用的协议 TCP 和 UDP。我不明白的是,如果我们通过 URL 使用浏览器从 Web 服务器请求资源,例如通过 HTTP 请求播放实时流,在这种情况下,使用的协议是 TCP 而不是 UDP , 正确的?但另一方面,在我正在学习的 cisco 课程以及教科书中也指出,UDP 协议用于实时流媒体、多人游戏、VOIP。

在这种情况下,我们使用的是两种协议中的哪一种?我的疑问恰恰在于,如果发出的请求是通过 URL 的 Web 请求,因此是 HTTP 请求,那么由于 HTTP 使用 TCP,UDP 是如何实现的?

我不清楚的是,当我们通过 URL(即 TCP 类型的 HTTP 请求)从 Web 服务器请求资源时,UDP 是如何实现的。如果有问题的资源是“在 Twitch 上观看直播”,那么 UDP 协议是如何实现的,因为我们已经在使用通过 TCP 建立的“逻辑连接”并且我们已经在使用可靠的通信?

标签: httpwebnetworkingtcpudp

解决方案


UDP 是一种不关心可靠数据传输的协议,即数据包可能会丢失、重复、重新排序等。TCP 关心的是可靠性,这会增加开销,并且如果数据包丢失并且需要被重新排序,还会带来潜在的延迟问题重发。

当考虑延迟但不考虑可靠性时,使用基于此 UDP。实时媒体就是这种情况,例如 VoIP 音频和视频电话。对于这种双向通信,此用例中的延迟过长是不可接受的。因此,这里使用的媒体编解码器可以处理数据包丢失,即优先考虑延迟并处理作为副作用的不可靠性。

不过,在 youtube 上的流式视频(非实时)中,延迟并不是那么令人担忧。这里更重要的是有效利用带宽,这意味着具有高压缩率的高效媒体编解码器。编解码器的效率越高,它处理数据丢失的能力就越小。因此,连接的可靠性在这里是一个问题,TCP 更合适。


推荐阅读