• 2017-06-16

    SIP报文Via和Contact的区别

    Views: 1949 | No Comments

    Via 是网络层的信息,SIP 报文将通过网络层发往这两个地址。Contact 是业务上的地址。那么问题是,应该发往哪个?

    正确的做法是,请求响应模式中的响应发往 Via。如果解析 DNS 之后能直连 Contact,那么之后的报文(无论是否是请求响应模式)发往 Contact。

    请求如果经过多个代理,每个代理都增加自己的 Via,变成 Via 列表。最终节点回复响应时,带有全部 Via 列表,根据最后一个 Via 获知要发送的目的网络地址。每个代理转发响应时,把最后一个属于自己的 Via 删除,再根据前一个 Via 得到要转发的目的网络地址。

    这样,代理可以做无状态转发请求和响应,其中请求转发依赖路由表,响应转发依赖 Via 列表。

    Posted by ideawu at 2017-06-16 18:54:05 Tags: ,
  • 2017-06-15

    音频编码的一些笔记

    Views: 2572 | No Comments

    名词解释

    采样率/Sampling Rate/Sampling Frequency: 表示原始音频,每秒需要多少个值来表示(1秒时间内采样多少次)。
    采样位数/Sampling Bit Depth/bits per sample(bps): 用多少比特来存储一个采样值。
    采样比特率/Sampling Bit Rate: 指原始音频每秒需要多少比特来表示,显然等于 Rate x Bits。
    帧长/Frame Duration/Frame Lenght: 表示每帧(数据块)所表示原始音频播放需要的时长。
    帧大小/Frame Size: 表示每帧(数据块)所表示原始音频播放需要的存储空间。
    比特率/Bit Rate: 对于固定长度编码,表示编码后,每秒需要多少个比特来表示。

    bits per sample 和 bits per second 的缩写是相同的容易混淆。

    G.711 Codec

    G711A - G.711 a-law, alaw, 世界用。
    G711U - G.711 μ-law, ulaw, 北美用。

    Sampling Rate: 8KHz
    Sampling Bits: 8 bit

    Bit Rate: 64 kbit/s
    FrameDuration: 10 ms
    Frame Size: 640 bit, 80 Bytes
    RTP FrameDuration: 20 ms
    每 RTP 报文含 2 个 G.711 帧。

    iLBC - internet Low Bitrate Codec

    Sampling Rate: 8KHz
    Sampling Bits: 16 bit

    Bit Rate: 13.33 kbit/s
    Frame Duration: 30 ms
    Frame Size: 400 bit, 50 Bytes

    Bit Rate: 15.20 kbit/s
    FrameDuration: 20 ms
    Frame Size: 304 bit, 38 Bytes

    参考:CISCO - Voice Over IP - Per Call Bandwidth Consumption http://www.cisco.com/c/en/us/support/docs/voice/voice-quality/7934-bwidth-consume.html

    Posted by ideawu at 2017-06-15 14:59:43 Tags: , ,
  • 2017-06-02

    关于TCP粘包和拆包的终极解答

    Views: 5041 | No Comments

    程序员行业有一些奇怪的错误的观点(误解),这些误解非常之流行,而且持有这些错误观点的人经常言之凿凿,打死也不相信自己有错,实在让人啼笑皆非。究其原因,还是因为这些错误观点所对应的正确观点不符合人的正常思维习惯,是扭曲人的直观感受的。

    有两个错误观点非常之经典,一而再,再而三的出现,就跟韭菜一样,割不完,还越长越多。一是经典的"服务器最多65536个连接"误解,打开链接看介绍。另一个就是这里要讲的TCP"粘包"和"拆包"问题。

    基于前面的思路,我们先介绍人的正常思维习惯,然后再介绍扭曲的正确观点,这样你就会印象深刻了。

    Continue reading »

    Posted by ideawu at 2017-06-02 15:02:56
  • 2017-05-17

    轻量级 COMET 服务器 icomet 支持 EventSource(SSE)

    Views: 2096 | No Comments

    最初的 COMET 技术,指的是 HTTP 长轮询,不过,随着时间的推进,许多能实现浏览器即时推送的技术都可被称为 COMET 技术。由我开发的基于 libevent 库的轻量级 COMET 服务器开源项目 icomet,支持主流的浏览器推送技术,并且支持移动端。

    最近,在网友的贡献下,icomet 支持了 HTML 5 的 Server-Sent Events(SSE, EventSource) 技术。这项技术也是 W3C 标准之一,详情可见:http://www.w3.org/TR/eventsource/

    在支持 HTML 5 的浏览器中使用 SSE,代码会非常简洁,示例如下:

    var source = new EventSource("http://127.0.0.1:8100/sse?cname=12&seq=1");
    source.onmessage = function(e) {
        document.body.innerHTML += e.data;
    };
    

    e.data 就是服务器推送的数据。icomet 项目源码中带有 demo/web/sse.html 脚本,你直接拖到浏览器里即可看运行效果。

    源码和示例下载:https://github.com/ideawu/icomet

    Posted by ideawu at 2017-05-17 14:21:01 Tags:
  • 2017-02-16

    新浪微博劫持iTunes链接加入陌生推广码

    Views: 2430 | 2 Comments

    有微博用户抱怨他在微博上面发布的带有自己推广码(可带来佣金收益), 都被微博替换成了某个陌生的推广码, 他自己的推广码被覆盖了!

    @im61: 马勒戈壁的微博,我每天用 @PriceTag应用限免 这个账号发限免应用,链接里带了我的 iTunes 联盟令牌: 1001lsTF 和活动代码 wb_alet,结果发现几乎没有流量过来,刚刚 @图拉鼎 让我分析一下分享链接,大吃一惊啊,微博自动转换短链接,里面悄悄带上了自己的广告代码,我每天分享的收入都跑他口袋去了,无耻

    我验证了下, 确实如此. 验证过程:

    1. 使用新浪微博的官方网页发布一条带 itunes 链接的微博, 该链接并没有at(推广码)参数.
    2. 微博发出后, 新浪微博使用其控制的短链接服务t.cn(whois注册人是 domainname@staff.sina.com.cn )为用户的原始链接生成了短链接.
    3. 该短链接经过展开, 发现原始链接被非法加入了at参数. 该参数是iTunes推广码at=1001lbb6, 可为码的拥有者带来佣金收益.

    Continue reading »

    Posted by ideawu at 2017-02-16 16:23:17
  • 2017-02-03

    将iPhone上的照片拷贝到Mac上

    Views: 2219 | 2 Comments

    如果你想将iPhone手机上的照片拷贝到你的Mac上, 你应该使用"Image Capture"这个应用, 而不是什么"Photos", 苹果真他妈脑残!

    Posted by ideawu at 2017-02-03 12:04:47
|<<<123456789>>>| 2/120 Pages, 720 Results.