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