Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets HTTP上的数据包丢失_Sockets_Http_Networking_Packet_Packet Loss - Fatal编程技术网

Sockets HTTP上的数据包丢失

Sockets HTTP上的数据包丢失,sockets,http,networking,packet,packet-loss,Sockets,Http,Networking,Packet,Packet Loss,在一家视频会议公司实习期间,有很多关于数据包丢失的话题。维基百科声明如下: 数据包丢失通常是由网络拥塞引起的 我知道,因为视频需要通过网络发送大量数据,数据包肯定会丢失 我不明白的是,为什么在HTTP请求和AJAX调用等其他情况下不会出现数据包丢失。如果数据包丢失确实是由于网络拥塞造成的,为什么我从来没有在自己的HTTP请求中经历过这种情况 HTTP连接是否不受数据包丢失的影响,或者我发送的请求是否太小而不受影响。如果HTTP不受数据包丢失的影响,为什么会出现这种情况?任何基于IP的协议都可能发

在一家视频会议公司实习期间,有很多关于数据包丢失的话题。维基百科声明如下:

数据包丢失通常是由网络拥塞引起的

我知道,因为视频需要通过网络发送大量数据,数据包肯定会丢失

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


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

任何基于IP的协议都可能发生拥塞导致的数据包丢失。如果在两台机器之间存在拥塞路由器,则可以将IP数据报丢弃,因为IP是一种尽力而为的协议。 区别在于视频通常通过UDP协议传输,而HTTP则通过TCP协议传输。IP是第三层协议。TCP和UDP是两种类型的第4层协议

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


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

HTTP和许多其他协议的TCP/IP层检测数据包丢失,并将重新传输丢失的数据包,直到确认为止。在应用程序级别,这表现为延迟/抖动增加,而不是数据丢失。所以除非你仔细注意时间安排,否则你不会注意到它。@JimLewis很有趣。现在有什么理由不在像视频这样更密集的通信中实现这一点吗?我认为重新发送数据包的成本太高,或者与此无关,因为每秒的帧数太快,丢失的数据包几乎不明显。@BrianTracy:音频/视频通常使用UDP而不是TCP传输。就其本质而言,UDP是有损的。音频/视频可能会丢失数据包,而不会严重降低整体体验,一些丢失量通常是可以接受的。TCP协议并非如此,比如HTTP,任何数据丢失都是致命的。