网络.流媒体的,以后或许用的到!

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

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值