Tcp 当使用套接字限制下载速度时,应该如何丢弃数据包?

Tcp 当使用套接字限制下载速度时,应该如何丢弃数据包?,tcp,download,Tcp,Download,这个问题听起来像是现有问题的重复,我读过关于漏桶算法和其他一些问题 假设我的程序是单线程的,数据如下: [已下载][当前缓冲区下载][未下载] 如果我在计算速度超过阈值时丢弃一些数据包,我将如何恢复该数据包?数据将以这种方式保持连续 那么我应该如何丢弃数据包呢?在使用TCP套接字连接时,您的程序不应该丢弃数据包。您要做的是防止程序读取超过下载速度限制的更多数据。TCP设计用于重新发送未确认的数据包。这是协议的一部分,也是漏桶算法的基础 因此,我认为丢弃数据包的唯一方法是,如果您正在使用的库有一个

这个问题听起来像是现有问题的重复,我读过关于漏桶算法和其他一些问题

假设我的程序是单线程的,数据如下:

[已下载][当前缓冲区下载][未下载]

如果我在计算速度超过阈值时丢弃一些数据包,我将如何恢复该数据包?数据将以这种方式保持连续


那么我应该如何丢弃数据包呢?

在使用TCP套接字连接时,您的程序不应该丢弃数据包。您要做的是防止程序读取超过下载速度限制的更多数据。

TCP设计用于重新发送未确认的数据包。这是协议的一部分,也是漏桶算法的基础

因此,我认为丢弃数据包的唯一方法是,如果您正在使用的库有一个函数,在收到数据包后不发送ACK。如果是这种情况,只需对所有要保留的数据包发送一个ACK,并忽略其余数据包,因为它们将在以后重新发送

尽管如此,大多数库将不支持此功能,因为它的级别非常低,并且它们在内部处理TCP部分

如果您让我们知道您希望对连接进行速率限制的特定语言和套接字实现,则有人可能知道更好的限制连接的方法