gpt4 book ai didi

sockets - HTTP 丢包

转载 作者:可可西里 更新时间:2023-11-01 16:55:49 26 4
gpt4 key购买 nike

在一家视频 session 公司实习时,数据包丢失的话题很多。维基百科声明如下:

Packet loss is typically caused by network congestion.

我知道因为视频需要通过网络发送大量数据,所以数据包必然会丢失。

我不明白的是为什么在其他情况下如HTTP请求和AJAX调用不会出现丢包。如果数据包丢失确实是由于网络拥塞造成的,为什么我自己的 HTTP 请求从未遇到过这种情况?

HTTP 连接是否不会受到数据包丢失的影响,或者我发送的请求是否太小而不会受到影响。如果 HTTP 不会丢失数据包,为什么会这样?

最佳答案

任何基于 IP 的协议(protocol)都可能因拥塞而丢失数据包。如果两台机器中间存在拥塞,路由器可能会丢弃 IP 数据报,因为 IP 是尽力而为协议(protocol)。

不同的是,视频通常使用UDP协议(protocol)传输,而HTTP使用TCP协议(protocol)传输。 IP 是第 3 层协议(protocol)。 TCP 和 UDP 是两种类型的第 4 层协议(protocol)。

UDP 不是面向连接的也不可靠。这意味着如果一个数据报在中间被丢弃,没有端点节点意识到这一点(除非有更高层协议(protocol)实现可靠性)。数据报丢失。

TCP 是一种面向连接的可靠协议(protocol)。用简单的方式解释,接收 TCP 段的节点将发送对接收到的数据的确认。如果一个TCP报文段在中途丢失,接收节点不会发送ACK(确认),发送节点会在一定时间后超时。超时后,发送节点将重新传输丢失的数据。这就是为什么接收节点将接收整个 HTTP 消息,或者在极端情况下,应用程序中会出现错误,告诉您“连接已断开”之类的信息(这意味着如果两端都存在问题会意识到这一点)。

关于sockets - HTTP 丢包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31871074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com