g729 和 Speex的压缩率是一样的?
准备知识:
IP头大小:20 个固定bytes + 4 可选 bytes
TCP头大小:20个固定bytes + 4可选 bytes
UDP头大小:8个固定bytes
RTP头大小:12个固定bytes
Ethernet头大小:26个固定bytes + 46 ~1500 bytes; (最小值:46,最大值:1500)
原始数据:
8000hz 16bit mono 的RAW PCM 数据压缩。
G729 好象是把 160 bytes 压缩成 10 bytes。
speex 好象是把 320 bytes 压缩成 20 bytes。
好象都是 16:1?
一秒钟的 8000hz 16bit mono 的RAW PCM数据 就是 8000 * (16/8) = 16000。压缩后g729和speex都是 1000bytes.
那么我攒一秒的数据后才用TCP发送,那么1秒的带宽就是
1秒的带宽 = Ethernet头+IP头+TCP头+有效载荷(1000)
1秒的带宽 = 28 +20 +20 +有效载荷(1000)
= 1068 bytes
= 1068 * 8 bit
= 1068 * 8 / 1024 kbps;
= 8.3 Kbps
是不是这样啊。真晕。
4种类型的以太网帧:
1.Ethernet II
2.IEEE 802.2
3.IEEE 802.3
4.SNAP
Ethernet II帧:
1.前导码字段(8Byte):交替的1和0组成.5Mhz的时钟频率,包含7字节的起始帧分界符(SFD),SFD是10101011,最后1个字节同步(sync).
2.目标地址(6Byte):目的MAC地址.
3.源地址(6Byte):源MAC地址.
4.类型字段(2Byte):用于辨别上层协议.
5.数据和填充(46Byte-1500Byte):当数据字段小于46字节时,则在填充区填充.
6.帧校验序列(FCS)(4Byte):存储CRC值,该值由发送设备产生,并在接受设备重新计算用来检查帧是否被损坏.
802.3 Ethernet帧:
1.前导码字段(8Byte):交替的1和0组成.5Mhz的时钟频率,包含7字节的起始帧分界符(SFD),SFD是10101011,最后1个字节同步(sync).
2.目标地址(6Byte):目的MAC地址.
3.源地址(6Byte):源MAC地址.
4.长度字段(2Byte):不能辨别上层协议.
5.数据和填充(46Byte-1500Byte):当数据字段小于46字节时,则在填充区填充.
6.帧校验序列(FCS)(4Byte):存储CRC值,该值由发送设备产生,并在接受设备重新计算用来检查帧是否被损坏.
=============================
(802.3Ethernet帧没有鉴别上层协议的能力(使用的是长度字段),因此需要IEEE定义的802.2LLC标准来实现这个功能。一个802.2帧是由802.3Ethernet帧加上
LLC信息组成的,这样就可以辨别上层协议.)
========================
802.2(SAP)帧:
在 802.3的长度字段和数据字段加入以下3个部分:
1.目标服务访问点字段(DSAP)(1Byte)
2.源服务访问点字段(SSAP)(1Byte)
3.控制字段:(1Byte)
**共同构成了LLC的首部.
802.2(SNAP)帧:
SNAP帧与SAP帧的区别:
1.DSAP与SSAP的内容被固定为oxAA.
2.控制字段内容被固定为ox03.
3.增加SNAP字段:1.OUIID字段(3Byte):MAC地址的前3字节.
2.类型字段(2Byte):标识Ethernet携带的上层数据类型.
========================================================================
假如我用TCP发送了一个 3000 bytes的数据。
那么加上TCP头的数据就是 20 + 3000;(TCP头长度为20)
再加上IP头的数据就是 20 + (20 + 3000);(IP头的长度才来一个20);
那么IP头+TCP头+裸数据 = 3040 bytes。是吧?
这个总共 3040 bytes的数据并不是一块被 以太网发送。因为以太网的最大数据长度 1500.
那么实际上 总共的 3040 bytes的数据,是被分了 3个以太网包?分别是 1500 + 1500 + 40???
那么再加上 802.3 Ethernet帧: 的头数据
1.前导码字段(8Byte):交替的1和0组成.5Mhz的时钟频率,包含7字节的起始帧分界符(SFD),SFD是10101011,最后1个字节同步(sync).
2.目标地址(6Byte):目的MAC地址.
3.源地址(6Byte):源MAC地址.
4.长度字段(2Byte):不能辨别上层协议.
5.数据和填充(46Byte-1500Byte):当数据字段小于46字节时,则在填充区填充.
6.帧校验序列(FCS)(4Byte):存储CRC值,该值由发送设备产生,并在接受设备重新计算用来检查帧是否被损坏.
那么最后 以太网的 三个包就是:
1、26 + 1500
2、26 + 1500
3、26 + 46(剩了个40,但是 数据段最小是 46,所以 40字节的数据实际占用 46 字节。)
转自:http://blog.vckbase.com/zaboli/archive/2010/04/15/41654.html