SIP学习之旅【环境搭建篇】
经过两天的资料收集对SIP有了初步的了解,在网络电话VOIP应用方案中很多都是采用Linux服务器部署电信级SIP Server软件或者使用专门的硬件服务器来提供SIP Server服务,客户端用SIP电话机或软电话,结构组成包括:SIP终端,代理服务器,重定向服务器,注册服务器器,鉴权服务器,SIP Server服务器等,很庞大、很复杂、很无奈(没有多余的电脑给我装Linux,更没有SIP硬件),所以我需要的是Windows下运行的SipServer和SoftPhone,以及一个抓包工具就可以了。
SipServer:MiniSipServer ,下载地址 http://www.myvoipapp.com/download/index.html
SoftPhone: X-Lite ,下载地址 http://www.counterpath.com/x-lite-4-for-windows-download.html
抓包工具:MiniSniffer(这工具有个缺陷就是没有报文时间,不过用习惯了就是它了),点击下载
SIP协议文档:SIP流程图带动画解释.pdf,点击下载
组网结构图:
部署:
1. 安装并启动MiniSipServer,一路Next就行,通过开始菜单启动,默认监听 UDP 5060 端口;系统自带三个默认用户,密码和用户名一样,在下一步要用到。
2. 安装并配置X-Lite
X-Lite需要.NetFramework4.0和VC2010 SP1,安装时联网下载。
完整的配置方法参考 Setup IP PBX for small business step by step,介绍比较全面
配置“本机”上的X-Lite(userID:100 password:100 );“测试机”上的X-Lite(userID:101 password:101)
3.通过X-Lite让测试机和本机通话
在本机和测试机上都运行X-Lite软件后,在MiniServerIP中点击“分机”查看用户在线状态,登陆的用户图标是绿色;在命令行下可以查看连接。如下图:
。
4. 抓包并分析SIP协议
a.关掉MiniSipServer和两个X-Lite,运行MiniSniffer抓包工具,并开始抓包。
b.运行 MiniSipServer和测试机上的X-Lite,因为MiniSniffer好像抓不到本机端口之间的数据包也为了便于分析数据就运行测试机上的 X-Lite客户端。记住在运行之前打开MiniServerSip的报文跟踪功能。
c.对比抓包和跟踪信息,经过对比分析抓包和MiniSipServer自身的报文跟踪信息是一致的,所以为了以后调试和学习Sip协议完全可以使用 MiniSniffer做为辅助工具。
为了便于分析,保存Sniffer中的报文。
d.分析报文,根据 RFC3261 中文版 第22.3章的描述,注册流程分为4步:
1)上行Register
2)下行认证要求407报文
3)上行包含认证信息的Register
4)下行注册成功信息
在第三步上传的报文中包含密码信息,但认证算法太麻烦,没能手工解析或构造出来,关于认证算法参考文章:http://blog.sina.com.cn/s/blog_4b839a1b01000bqq.html
至此,对SIP协议及其流程有了个清晰的认识,为以后能够更好的理解协议栈找到了一个可行的方法。
这篇学习记录前段时间写了一半,今天补齐为2011年画个句号,来年再找个合适的开源库写一个软电话的例子,到时对SIP协议栈的学习就可以告一段落了。争取在春节前完成。。。。。
明天就是2012了,今天拿到了驾照。祝愿各位圆友 元旦快乐。
posted @ 2011-12-31 15:44 赵保龙 阅读(676) 评论(1) 编辑
SIP学习之旅【资料收集篇】
背景:
接到一个任务将某个厂家提供的视频SDK进行封装,接入某电网公司视频监控统一平台,从该平台提出的接口协议中第一次看到SIP和一些交互报文。又一次深深感受到知识的匮乏。。。。。历经两天,google、论坛、博客全用上了收集相关资料,觉着不错的列举如下:
1. SIP开发环境的搭建
http://www.rosoo.net/a/201007/9819.html
要在windows或者linux平台下开发基于SIP的软电话,需要以下软件
服务器端软件: 注册多个客户端到服务器上,可以进行通话测试
SIP客户端软件:主要用于测试,可以对别人已经完成的客户端进行抓包,以比对自己程序的发包数据
SIP协议栈:基于某个现成的SIP协议栈来开发会加快开发进度
RTP栈:传输语言或者视频数据的协议栈
抓包测试工具:调试网络程序最有效的办法
以下介绍这些软件主要以开源软件为主。。。。 详见原文
2. 基于SIP协议的视频通讯
http://tech.163.com/05/0101/15/1915T5RL00091590.html
讲了三个方面:
sip协议及其发展 、 sip系统的基本组成(用户代理、sip代理服务器、重定向服务器以及sip注册服务器)、sip同h.323的关系
3.sip协议学习
http://blog.csdn.net/kofshower/article/details/1617760
讲解了SIP中的INVITE、NOTIFY、MESSAGE、INFO 四个会话过程。
4. sip学习网络资源索引贴
http://hi.baidu.com/wanhongnan/blog/item/519ca001589efe01738da54b.html
链接很多,非常全
5.SIP资料汇总
http://www.cnblogs.com/mahang/archive/2011/10/07/2200796.html
SIP协议、Asterisk、OpenSIPS、NAT穿透(即SIP打洞)
6. SIP流程图带动画解释
这个是真不错,图文并茂讲解了 SIP流程图、注册、会话建立和注销
7.SIP Stack with SIP Proxy - (VOIP)
http://www.codeproject.com/KB/cs/SIP_stack_with_SIP_proxy.aspx?msg=3066858
用到了LumiSoft.Net.SIP开源类库
8.Introduction to SIP for Java, C#, and VB Developers
http://www.codeproject.com/KB/IP/SIPIntroduction.aspx?q=sip+client
讲解的够细,英文的,可惜提到的类库都不开源。
很多人提到的SIP Server:
1.Asterisk
安装教程 http://www.docin.com/p-154358866.html
只有Linux版本,配置复杂。
2.OpenSIPS
开源SIP服务器OpenSIPS应用介绍
http://www.docin.com/p-163183479.html
3. SIPp
SIPp 学习笔记 一 (安装)
http://blog.csdn.net/nunogomes18/article/details/2461562
最重要的事一个网友给我回复的邮件:
服务端: minisipserver,partysip, opensips
客户端:osip/exoisp/ortp/mediastreamer/linphone
这下终于可以吧开了两天的IE关一下了,明天配置一个测试环境。