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 ...
随机推荐
- 【WEB前端】CSS继承性和层叠性(极度重要)
1.1 继承性 有一些属性,当给自己设置的时候,自己的后代都继承上了,这个就是继承性. 哪些属性能继承? color. text-开头的.line-开头的.font-开头的. 这些关于文字样式的,都能 ...
- 【Django】Django 定时任务实现(django-crontab+command)
一.编写自定义django-admin命令 注:利用django-admin自定义命令我们可以ORM框架对model进行操作,如:定时更新数据库,检测数据库状态..... Django为项目中每一个应 ...
- 远程调试js注意事项
1:使用host切换工具,先注释掉93服务器的地址,打开链接,点击高级选项,进去后登陆账号密码(如果不行重启浏览器): 2:进入后,增加93服务器上的host地址,重启浏览器,css样式生效: 3:使 ...
- java-装箱/拆箱-字符串转换成基本数据类型
一.理解java中包的含义及种类 java是一个面向对象编程,即一切皆是对象,那么有一个矛盾,从数据上划分知道java中的数据分为基本数据类型和引用数据类型,但是基本数据类型如何是一个对象呢?此时,就 ...
- 使用USBWriter做U盘启动盘后容量变小的解决办法
环境windows10 , 以administrator登录: 1. 按下windows键盘上的Win+R键, 输入cmd 2. 输入DiskPart, 回车, 然后弹出新的命令行窗口 3. 在弹出 ...
- SSH 端口转发+内网穿透
用最直白的语言对本文所有内容进行定义: 端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行) 内网穿透(-R):用A机器 ...
- 扩展JQuery和JS的方法
//JS的扩展方法: 1 定义类静态方法扩展 2 定义类对象方法扩展 var aClass = function(){} //1 定义这个类的静态方法 aC ...
- winform中生成TreeView树
无论是webform还是winform,TreeView都是常用功能.使用递归方法很方便. 下面分享一个小实例. 数据库中3个字段,分别是:ID,itemType_name,itemType_PID ...
- day24:面向对象设计与面向对象编程、类和对象
一.三大编程范式: 面向过程: 面向函数: 面向对象: 二.程序的进化论: 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定 ...
- 无法打开登录所请求的数据库 "xxx"登录失败用户 'NT AUTHORITY\NETWORK SERVICE'
解决:添加用户,选择NT AUTHORITY\SYSTEM登录名,选择当前数据库的架构. 勾选架构 勾选成员身份.如果不勾选,也会报异常:拒绝了对对象 'FW_ORG' (数据库 'ZW_DWSJ', ...