2、SIP
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的更多相关文章
- VoLTE的前世今生...说清楚VoIP、VoLTE、CSFB、VoWiFi、SIP、IMS那些事...
转:https://mp.weixin.qq.com/s?__biz=MzA3MTA3OTIwMw==&mid=401344844&idx=1&sn=497b351f524af ...
- SIP学习笔记(转)
本文转发自:http://blog.chinaunix.net/uid-20655530-id-1589483.html 学习 SIP 协议最快捷的方法是通过范例来学习, 找到了一个完整的呼叫流程,l ...
- TCP/IP、Http、Socket、XMPP-从入门到深入
TCP/IP.Http.Socket.XMPP-从入门到深入 终极iOS程序猿 2016-12-29 18:27 为了便于大家理解和记忆,我们先对这几个概念进行的介绍,然后分析他们的不同,再进行详细的 ...
- TCP/IP、Http、Socket的区别
1.标准网络层次 网络由下往上分为:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置: 7 应用层 例如HTTP. ...
- TCP/IP、Http的区别
TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据.关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只 ...
- IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习
相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...
- RTP/RTCP/RTSP/SIP/SDP 关系(直接看总结)
RTP/RTCP/RTSP/SIP/SDP 关系 RTP(实时传输协议,传输层) Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议 ...
- [百科] - SIP(会话发起协议)
SIP(会话发起协议)SIP是类似于HTTP的基于文本的协议.SIP可以减少应用特别是高级应用的开发时间.由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义 ...
- SIP学习(实例详解)
本文摘自:http://blog.chinaunix.net/uid-20655530-id-1589483.html 学习 SIP 协议最快捷的方法是通过范例来学习, 找到了一个完整的呼叫流程,le ...
随机推荐
- OAuth2.0授权
一.什么是OAuth2.0官方网站:http://oauth.net/ http://oauth.net/2/ 权威定义:OAuth is An open protocol to allow secu ...
- mysql 数据库基本概念
mysql 数据库基本概念 一.数据库的集中控制优点1.降低存储数据的冗余度2.更高的数据一致性3.存储的数据可以共享4.可以建立数据库所遵循的标准5.便于数据维护完整性6.能够实现数据的安全性 二. ...
- python 模拟用户登录代码
需求:输入用户名,判断用户是否被锁定,锁定则退出,否则进入密码验证,输入三次错误密码之后此用户被锁定. userlist.txt里,用":"将用户名.密码.状态码分开: [root ...
- UVa 12118 检查员的难题(dfs+欧拉回路)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- oracle 执行计划查看
1) sql command窗口里explain plan for select * from emp: 2) select * from table(dbms_xplan.display);
- Linux下的网卡驱动程序的编写过程(转)
工作需要写了我们公司一块网卡的linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微软垄断的强有力武器,日益受到大家的喜爱.真希望她能在中国迅速成长.把程序文档贴出来,希 ...
- 关于 一开始不懂得 hosts配置。
是转载别人的. 原文: http://my.oschina.net/cxz001/blog/298228 感谢分享: 一开始抄着陪着win下的hosts文件.然后配置 apache中的hosts ...
- error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用 Debug ...
- Opera浏览器导出收藏到Chrome,和几个Chrome的一些小技巧
Opera浏览器还是不错的,但是用着不是特别爽,老是感觉怪怪的,也说不上来哪里不好. 还是换回了Chrome浏览器,Chrome浏览器有一个让我念念不忘的地方,就是收藏夹会自动显示,当打开网页之后,又 ...
- 【HDU1960】Taxi Cab Scheme(最小路径覆盖)
Taxi Cab Scheme Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...