1、初学者笔记:http://www.cnblogs.com/gnuhpc/archive/2012/01/16/2323637.html

2、SIP头字段解释:http://www.cnblogs.com/my_life/articles/2282364.html

http://www.cnblogs.com/zhongwencool/p/3705359.html

http://www.cnblogs.com/share-everything-i-do/archive/2012/11/04/2754053.html

3、SDP各个字段解释:http://blog.csdn.net/frankiewang008/article/details/12914819

http://blog.chinaunix.net/uid-790245-id-2037592.html

4、SIP常见问题集锦:http://blog.sina.com.cn/s/blog_a34ac27e010159fl.html

4、最近看log,发现有些header自己理解的还不是很透彻,特此做如下总结:

首先看一个例子,我结合例子来解释各个header的含义,I believe it is a better method.

[INVITE sip:6328403011@ims.luqdlab.com;user=phone SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1;branch=z9hG4bK_004_167458-887569916
Via: SIP/2.0/UDP 135.252.36.232:5060;received=135.252.36.232;branch=z9hG4bK87fc24e85060-75116;rport=5060
From: "QD6328403045"<sip:+16328403045@ims.luqdlab.com>;tag=87FC24E813C4-80515FDC0
To: <sip:6328403011@ims.luqdlab.com;user=phone>

【解释】to字段总是包含被呼叫方的地址(通过sip代理时是公用地址,点对点时是真实ip),要注意的是区别该标题头和sip消息请求行中的Request-URI。To在信令路径中不会被代理改变,然而Request-URI包含的是信令路径中下一跳的地址,因此在路途中被每个代理改变。

Call-ID: 33-7fdce916-993170d4@87fc24e8
CSeq: 1 INVITE

【解释】1、 又叫Command Seqence(命令队列),每发一个新的请求,这个数就会+1,最大2^31;

2、 用来标识命令和命令顺序,整数部用于同一session(CallID决定)中不同的请求排序,它将请求和应答相匹配:比如:Alice 发1 Invite 没返回--->再发 2 Invite--->没返回--->再发3 Invite--->这时返回了2 Invite就知道是第2个请求得到了响应(这个数是一直递增1的); 【因为在同一个transtation里面,invite其它消息都没有变化的,所以得用cseq来区别了】 
- Ack的CSeq:这个是与Invite里面的一样的,这使代理为非成功最终应答产生Ack时不用再建立新的CSeq,保证唯一性,只用client代理创建哦; 
- Cancel的CSeq:这个也是与Invite里面的一样的,这也是为什么CSeq里面要加Method的原因,如果不加,client就不知道这个是cancel还是invite的应答了;

User-Agent: SIP-6328-2Re-v4.2.70-+16328403045/v2.0 Enabled

【解释】User-Agent通用头域包含了关于发送初始请求的客户用户代理的消息。
此头域用于统计目的,跟踪违反协议的情况、用户代理的自动认可的情况,以便在编制响应时避免特定用户代理的限制。用户代理应在请求中包含此头域。

Contact: "QD6328403045"<sip:+16328403045@135.252.36.232:5060>

【解释】0、此字段是设备标示

1、后续Request将根据Contact头域的内容决定目的地的地址(因为Contact头域的内容是具体的物理地址),同时将Contact头域的内容放到Request-URI中。它还可以用来指示没有在Record-Route头域中记录的Proxies的地址。同时它还可以被用在Redirect servers和REGISTER requests 和responses。

2、包含源的URI信息,用来给响应消息直接和源建立连接用;

3、注意和From的差别:这个是可以让被叫方Bob直接找到呼叫方的绝对地址。

Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,INFO,OPTIONS,PRACK,REFER,REGISTER,UPDATE

【解释】列明UAS支持哪些方法
Accept: application/sdp

【解释】Accept域用于INVITE、OPTIONS和REGISTER请求方式中,指示在响应中能够接收的媒体的类型(缺省值为application/sdp)。

Max-Forwards: 69

【解释】2.1 用于表示这个包最多可以传送多少跳,当Max-Forwards==0&&没到达目的地时,系统会返回483(Too many hops);一般会在有Request的包里面;

2.2 默认为70;

2.3 原理:每经过一跳时【Todo:一个代理?】都会减一向下一跳传去.

Supported: replaces,100rel,path
P-Preferred-Identity: "QD6328403045"<sip:+16328403045@ims.luqdlab.com>
Content-Type: application/sdp

【解释】指明消息体的类型为SDP
Content-Length: 292

【解释】指明消息体的字节大小

v=0
o=- 848095510 848095510 IN IP4 135.252.36.232
s=InnoMedia SIP Call
c=IN IP4 135.252.36.232
t=0 0
m=audio 10000 RTP/AVP 0 8 18 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=ptime:20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
]

2、SIP的更多相关文章

  1. VoLTE的前世今生...说清楚VoIP、VoLTE、CSFB、VoWiFi、SIP、IMS那些事...

    转:https://mp.weixin.qq.com/s?__biz=MzA3MTA3OTIwMw==&mid=401344844&idx=1&sn=497b351f524af ...

  2. SIP学习笔记(转)

    本文转发自:http://blog.chinaunix.net/uid-20655530-id-1589483.html 学习 SIP 协议最快捷的方法是通过范例来学习, 找到了一个完整的呼叫流程,l ...

  3. TCP/IP、Http、Socket、XMPP-从入门到深入

    TCP/IP.Http.Socket.XMPP-从入门到深入 终极iOS程序猿 2016-12-29 18:27 为了便于大家理解和记忆,我们先对这几个概念进行的介绍,然后分析他们的不同,再进行详细的 ...

  4. TCP/IP、Http、Socket的区别

    1.标准网络层次 网络由下往上分为:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置: 7 应用层 例如HTTP. ...

  5. TCP/IP、Http的区别

    TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据.关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只 ...

  6. IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习

    相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...

  7. RTP/RTCP/RTSP/SIP/SDP 关系(直接看总结)

    RTP/RTCP/RTSP/SIP/SDP 关系   RTP(实时传输协议,传输层) Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议 ...

  8. [百科] - SIP(会话发起协议)

    SIP(会话发起协议)SIP是类似于HTTP的基于文本的协议.SIP可以减少应用特别是高级应用的开发时间.由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义 ...

  9. SIP学习(实例详解)

    本文摘自:http://blog.chinaunix.net/uid-20655530-id-1589483.html 学习 SIP 协议最快捷的方法是通过范例来学习, 找到了一个完整的呼叫流程,le ...

随机推荐

  1. WinCE小结

    第一章:开发环境搭建 软件列表:详细说明 1.系统定制和编译:Platform Builder 5.0 (依赖于Net Framework1.1)2.应用程序编写:早期的用Embedded Visua ...

  2. BLE 信道

    广播信道频点的选择原则上是为了远离诸如WiFi接入点的严重干扰.这些接入点通常选择802.11信道中的3个:信道1.6.11.这几个信道的中心频率分别为2412/2437/2462,宽度大概为20MH ...

  3. [课程设计]Scrum 1.4 多鱼点餐系统开发进度

    Scrum 1.4 多鱼点餐系统开发进度 (点餐页面框架布置) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系 ...

  4. linq group by子句

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. (译) Conditional Variational Autoencoders 条件式变换自编码机

    Conditional Variational Autoencoders --- 条件式变换自编码机 Goal of a Variational Autoencoder: 一个 VAE(variati ...

  6. 简介 – ASP.NET MVC 4 系列

           正所谓好记性不如烂笔头,尤其是技术类书籍在阅读后,时间久了一定会忘记.而重新翻阅整本书也较为低效,遂以博客记录阅读摘要以供日后查阅.本系列文章均摘要自 Wrox 红皮书[ASP.NET ...

  7. 如何导出和导入mysql数据(数据迁移)

    . 导出数据库数据 mysqldump -uroot -p dp_db > dumpout.sql 其中 root是账户名 dp_db是需要导出的数据库名称 dumpout.sql存储导出的数据 ...

  8. etcd第二集

    参考文章:https://github.com/coreos/etcd/blob/master/Documentation/v2/api.mdhttp://www.cnblogs.com/zhengr ...

  9. WPF 重新启动该程序

    // Restart current process Method 1 System.Windows.Forms.Application.Restart(); Application.Current. ...

  10. MYSQL权限表user操作

        MYSQL权限表user cmd中进人mysql找到mysql安装目录     E:\wamp\bin\mysql\mysql5.6.12\bin>mysql.exe -u 用户名  - ...