您当前的位置是:  首页 > 资讯 > 国内 >
 首页 > 资讯 > 国内 >

图解完整SIP协议以及相关周边协议

2019-11-11 09:47:03   作者:james.zhu    来源:Asterisk开源派   评论:0  点击:


  SIP协议以及相关的技术本身涉及了很多的相关技术。特别是最近几年,因为语音视频业务模式的不断演进,所支持的技术也越来越丰富。笔者在编写很多关于SIP协议技术文章时总是会提及到其他的相关协议。很多读者反馈,他们也想进一步学习SIP协议和周边的相关的协议,但是缺乏一个基本的脉络来了解SIP以及其他相关协议和技术的背景。
  其实,笔者自己也是通过前期SIP协议的脉络,一步步拓展到其他的协议和技术领域,然后在不断深挖其背景知识。经过一段时间后,这些背景知识能够都连接起来,最后就可以基本上完整了解SIP语音技术方面的相关背景知识。今天,笔者根据以前的一下积累和网络资源知识,给大家分享一些关于SIP协议和相关协议的总览,以便读者能够完整了解其大概的技术路径,方便读者以后学习。当然,具体的每个协议的具体细节和其应用场景,笔者建议读者还要根据自己的工作比较来进一步研究,笔者是从整个SIP协议和多个角度来分享一些相关的RFC官方。
  这里,笔者提醒大家, RFC协议和SIP相关技术在一直不断更新中,一些旧的RFC版本可能更新为比较新的RFC版本,同时,RFC标准组织也在不断添加新的RFC规范,所以,这里的内容不一定肯定是最新的规范,所以,大家在使用过程中需要不断查阅RFC规范的官方网站获得最新的资源(尽量查看RFC3XXX以上规范包括8XXX,2XXX左右版本已经停止使用)。目前,其总览包括对几个方面内容为:SIP核心内容,SIP拓展功能,会话描述协议,NAT处理机制协议,安全机制处理协议,呼叫服务的规范协议,3GPP/PSTN等规范协议等差不多十二大分类(此分类仅是一个非官方的分类方式,不一定非常严谨,仅为了学习方便)。现在我们逐步介绍这些分类。
  1、SIP核心相关协议和概念定义
  此部分协议规定了SIP协议的基本框架和其主要的一些核心的概念构成。一般,我们讨论的大部分是关于RFC3261的协议,这是SIP协议的最核心的部分。其核心概念包括的主要功能:SIP注册,会话管理,SIP定位查询,SIP拓展头定义等。
  RFC: 3261, 3263, 3311, 3327, 3665, 4320, 5407, 5621, 5658 5954, 6062, 6086, 6141, 6228, 6357, 7339, 7415, 7462, 6442
  2、会话描述相关协议
  此部分主要针对SIP会话描述中的相关参数进行规范说明,主要的是针对SDP的说明。读者可能比较熟悉的RFC例如3264,SDP描述的RFC4566, 此规范定义了SDP的Offer/Answer 模式,RTP控制协议RTCP等。
  RFC:4091. 3264,3388,3407,3605,4145,4317,4566,4574,4756,4796,4867,5159,5888,5939,5956,6871,6157,6337,4092605,4145,4317,4566,4574,4756,4796,4867,5159,5888,5939,5956,6871
  6157,6337,4092
  3、基本SIP拓展协议
  SIP协议-RFC3261不可能完全覆盖所有的SIP的协议内容。很多比较新的功能或者其他第三方的规范需要和SIP协议整合在一起。其SIP拓展功能扮演着这个角色。通过对SIP协议的拓展,SIP协议就可以支持更多的其他除RFC3261以外的拓展功能。例如,最近我们刚刚讨论的可靠性传输使用的拓展RFC3262。读者可以查阅历史文档获得这些说明。
  RFC:7131, 2976,3323,3325,3326,3420,3608,3840,3841,4028,4168,4244,5049,5079,5688,5767,5876,6050,6432,6809,7044,7092,7118,7206,7316,7329,7332,7544,  3262
  4、PSTN/ISDN/3GPP相关协议
  此部分规范了以前或者现在一些运营商和终端客户仍然使用的PSTN线路,SS7网络等相关的规范,也包括了IMS网络的接入和处理规范说明,例如支持的SIP-T规范说明,SS7中的ISUP和SIP消息的映射,早期媒体流处理,移动端的MSRP等。
  RFC:2848,3204,3324,3325,3398,3578,3666,3910,3959,3960,4083,4457,5502,5876,6432,6567,7315,7316,7433,7434,7549, 3372,8591
  5、支持的各种服务功能
  SIP协议主要是规范了语音或者视频呼叫的流程,当然需要规范其具体的服务功能和IPPBX的一些具体的功能,例如(BLA,电话转接等)。此分类主要针对呼叫过程中的服务功能进行规范说明,例如目前SIP用户使用比较多的SBC的使用场景(RFC5853)。关于SBC的部署场景,查阅笔者以前的历史文档,笔者针对SBC部署场景有非常多的讨论。
  RFC: 3891, 3515, 3725, 3892, 4117, 4488, 4508 5194, 5359, 5369, 5373, 5359, 5589, 5629, 5631 5853, 5897, 5947, 6011, 6140, 6341, 6442, 6774, 6794, 6872, 6873, 6910, 6913,  7118, 7245, 7355, 7416, 7463, 7092
  6、呼叫质量保证服务协议
  SIP协议中呼叫是主要的目的。但是在呼叫过程中如何保证其语音质量能够在每一个节点都能正常进行,如何通过一定的技术手段来保证其呼叫语音质量。此分类具体规范了一些重要的指标说明,例如,QoS等。
  RFC: 3611, 3312, 3313, 3524, 3326, 6076,3890, 4032, 5027, 6035, 6794, 4412
  7、即时消息和在线服务相关协议
  在SIP技术应用场景中,除了基本的呼叫功能以外。用户还使用了IM功能和在线状态功能,这些功能支持了更多融合通信,移动终端等一些富媒体功能说明,例如,订阅推送等具体功能。
  RFC: 4481, 3856,3857,3863, 4119,4235, 4480, 4482, 4483, 4575, 4730, 5139,
  5196, 5262, 5362, 5365, 5367, 5491, 5606,5628, 5774, 5839, 5962, 6447, 6848, 6914, 6993, 7081, 7247, 7248, 7459, 7573, 7572
  8、事件提示服务相关协议
  事件提醒是目前比较热门的一个功能大类。一些基于手机APP的SIP终端协议这些功能来实现呼叫唤醒,呼入来电以后,手机APP可以接听来电呼叫。这些功能需要手机APP设置推送功能。此大类规定了如何实现事件推送等相关协议。
  RFC: 7621, 3265, 3680, 3856, 3903, 4574, 4575, 4660, 4661, 5363, 5367, 5839
  5875, 5989, 6140, 6446, 6665, 6795, 7106,7200, 3842
  9、SIP URLs其他使用协议
  事实上,SIP协议的规范很多是来自于HTML中的语法。因此,SIP协议也能够支持通过URL来处理一些流程。其规范定义了一些通过URL进行SIP呼叫处理的机制。
  RFC: 7621, 3087, 4240, 4458, 5365, 5627, 5630, 6468, RFC2396
  10、SIP安全机制相关协议
  此部分规范定义了和安全相关的一些RFC说明,包括用户验证,语音加密等参数配置机制,例如TLS,ICE等。
  RFC:5361, 3329, 3358, 3893, 4474, 4538, 4567, 4568, 4570, 4572, 4916,
  5009, 5027, 5360, 5363, 5393, 5922, 5923, 5924, 6216, 6072
  11、紧急呼叫服务实现协议
  因为SIP使用的场景越来越多,一些国家和地区已经完全停止了PSTN的运营。传统的PSTN场景中,每个电话号码都归属于当地运营商,如果每个终端客户发生紧急事件,电话系统的用户可以直接拨打当地的一些紧急服务号码。在SIP语音呼叫场景中,这个功能就在管理起来就显得比较复杂,因为SIP线路的运营商可能不在用户本地,提供的号码也不一定在本地,因此,用户在呼叫时,到底呼叫到哪里的紧急服务号码就是一个非常大的疑问。另外,一些国家针对语音呼叫专门针对电话系统的服务做了一些法律的规范,如果电话系统出现了不能支持紧急呼叫的错误,电话系统的厂家也需要承担一定的责任。因此,在如何实现紧急呼叫方面,RFC组织专门发布了一些规范来说明紧急呼叫的功能支持。
  RFC:5031, 5012, 5069, 5222, 6444, 7135, 7163, 4412
  12、媒体多方通信相关协议
  SIP语音除了单纯的单方语音呼叫以外,也支持了多方的呼叫场景,例如语音电话会议,视频会议等功能,例如支持的最新的RTP的SSRCs更新版本, 以及融合通信功能中的BFCP在SIP双流中的一些应用场景的规范。
  RFC:3911, 4245, 4353, 4579, 4583, 5057, 5239, 5364, 5366, 5368, 5370, 5850, 4582, 8108
  13、关于SIP和NAT处理协议
  SIP使用场景中,我们经常会遇到外网SIP终端注册问题,服务器遇到NAT设置等问题。这些都有相应的规范来指导厂家支持一些和NAT地址转换相关的说明。
  RFC:3581,4961,5245,5389,5626,5766,5768,  5769,5780,5928,6156,6223,6314,6336,6544,7064,7065,7350,7376,7443,7584,7635,7675
  14、如何学习
  前面笔者谈论很多关于SIP协议和周边协议的内容。但是,毕竟我们每个人的时间和资源有限,每个人都有知识盲点,我们不可能把所有的知识都能够很好地掌握,也不要相信那些所谓的人生导师和行业权威。这是一个没有权威的时代,只要大家愿意去学习,没有人能够阻挡住你自己进步的脚步(懒和焦虑,英语不好是我们这个时代赋予的最好借口)。现在的环境更加容易获得学习资源。根据基本的工作环境和业务需求,笔者斗胆提供以下几个建议(以下都是正确的废话):
  • 利用网络,查阅相关的RFC文档资料,查阅大厂的技术文档,查阅开源项目的文档资料。
  • 下载可以使用的工具资料,以RFC3261为起点,逐步拓展知识点。例如开源的软交换(Kamailio/OpenSIPS),开源的媒体服务器(Asterisk/FreeSWITCH/OpenIMS),开源的FreePBX,开源的SIP终端,FreeSBC,开源的排查工具。这些都可以自己学习配置来掌握相关的SIP技术协议。
  • 不断实践练习,切记不要成为一个界面工程师。很多开发人员或者维护人员也仅仅停留在界面开发和数据库连接上,如果你是一位语音通信工程师的话,底层协议才是你需要掌握的知识点。
  • 结合自己的工作环境和公司业务,深挖和自己业务相关的规范标准。
  • 不断学习最新的关于SIP协议相关协议和技术,关注比较权威的组织,例如3GPP。
  • 阅读比较经典的一些开源项目代码和实现方式,配合RFC规范检测这些功能实现流程。
  15、总结
  SIP协议和其相关技术涉及了很多方面的其他协议,读者在学习时一定要搞明白整个学习的路径,同时结合自己的业务场景来提升自己的能力。本文章的主要目的是为SIP技术学习的开发维护人员通过一个基本的学习路径,帮助读者能够非常清楚地掌握相关的RFC标准。本文章涵盖了13个章节,通过这些章节清楚明了地说明了具体涉及的RFC规范,读者根据其脉络做进一步的学习。最后,笔者为读者提供了一些基本的建议,读者可以根据这些建议来学习。
  再次说明,本文章中所涉及的规范可能会经常更新,很多规范本身也会随时随着其他规范的更新而再次更新。因此,这里不可能非常准确涵盖所有的RFC规范,可能笔者也遗漏了一些RFC规范。另外,RFC本身没有规范的分类,这里仅为了学习发布,笔者自己划分的一些分类,可能误导读者。请读者谅解!
  参考资料:
  https://tools.ietf.org/html/rfc7957
  https://tools.ietf.org/html/rfc5411
  http://www.cs.columbia.edu/sip/drafts.html


  关注微信公众号:asterisk-cn,获得有价值的Asterisk/SIP技术和行业分享
  权威Asterisk freepbx FreeSBC技术文档: www.freepbx.org.cn
  完整企业融合通信商业解决方案:www.hiastar.com
  如何使用FreeSBC+FreeSWITCH/Asterisk,qq技术分享群:334023047
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题

CTI论坛会员企业