Networking 对于单个网络数据包,最简单的压缩技术是什么?

Networking 对于单个网络数据包,最简单的压缩技术是什么?,networking,compression,Networking,Compression,对于单个网络数据包,需要一种简单的压缩方法。 简单的意思是一种使用最少计算的技术 谢谢 压缩有两种基本类型:无损耗压缩和有损压缩。损失少意味着如果你有两个算法c(msg),这是压缩算法和d(msg),这是解压算法,那么 味精==d(c(味精)) 当然,这意味着有损压缩将是: 味精!=d(c(味精)) 有了一些信息,有损是可以的。这是处理声音的典型方式。你可以在没有任何明显损失的情况下损失一些比特。例如,MP3压缩就是这样工作的。有损算法通常特定于要压缩的信息类型 因此,这实际上取决于您传输的数据

对于单个网络数据包,需要一种简单的压缩方法。 简单的意思是一种使用最少计算的技术


谢谢

压缩有两种基本类型:无损耗压缩和有损压缩。损失少意味着如果你有两个算法c(msg),这是压缩算法和d(msg),这是解压算法,那么

味精==d(c(味精))

当然,这意味着有损压缩将是:

味精!=d(c(味精))

有了一些信息,有损是可以的。这是处理声音的典型方式。你可以在没有任何明显损失的情况下损失一些比特。例如,MP3压缩就是这样工作的。有损算法通常特定于要压缩的信息类型

因此,这实际上取决于您传输的数据。我假设您严格地说的是有效负载,而不是任何寻址字段,并且您对无损耗压缩感兴趣。最简单的是游程编码(RLE)。在RLE中,基本上可以找到重复的连续值,然后用一个标志替换这些值,后面是一个计数,后面是要重复的值。只有当运行的长度大于(或等于)元组的长度时,才应该这样做

(sizeof(标志)+sizeof(计数)+sizeof(值)

如果数据小于8位,这可以很好地工作。在这种情况下,您可以使用第8位作为标志。例如,如果您有三个“A”的“AAA”,那么十六进制将是414141。您可以将其编码为C103。在这种情况下,最大运行将是255(FF)在此之前,如果相同值的字符超过255个,则必须重新启动压缩序列。因此,在这种情况下,3个字节变为2个字节。在最佳情况下,相同值的255个7位值将变为2个字符,而不是255个字符

一个简单的状态机可以用来处理RLE


请参见

压缩和解压缩速度非常快。可以压缩得更好,但速度不是很快。最简单的方法是根本不压缩。

为什么?在网络层压缩几乎没有意义,因为流量几乎总是在更高的层压缩。