关于python实现CRC32Mpeg2的应用和总结
目前使用的Crc计算包含Crc32和CRC32Mpeg2两种计算方式。
循环冗余检验 CRC 差错检测技术能够证明数据是完整的,是无差错的(只是非常近似的认为是无差错的)。
保证数据可靠性传输的方法包含如下:
-
检验和
用循环冗余码Crc检验接收到的数据完整性,Crc计算结果完全一致表示数据是完整的,没有发生错位。
-
确认应答机制(ACK)
TCP通过确认应答机制实现可靠的数据传输。在TCP的首部中有一个标志位——ACK,此标志位表示确认号是否有效。接收方对于按序到达的数据会进行确认,当标志位ACK=1时确认首部的确认字段有效。进行确认时,确认字段值表示这个值之前的数据都已经按序到达了。而发送方如果收到了已发送的数据的确认报文,则继续传输下一部分数据;而如果等待了一定时间还没有收到确认报文就会启动重传机制。
-
超时重传机制
当数据发出后在一定的时间内未收到接收方的确认,发送方就会进行重传(通常是在发出报文段后设定一个特定的时间间隔,到点了还没有收到应答则进行重传)。
用python实现查表法计算CRC32Mpeg2的过程如下。
用 p y t h o n 实 现 查 表 法 计 算 C R C 32 M p e g 2 的 过 程 如 下 : \color{#ea4335}{用python实现查表法计算CRC32Mpeg2的过程如下:} 用python实现查表法计算CRC32Mpeg2的过程如下:
- 定义crc的table
origin_crc32_table = [
#/* CRC32生成多项式采用0x04C11DB7 */
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c,