FreeSwitch(七):SIP协议

本文深入解析SIP协议的基础概念、注册流程、呼叫流程及其在通信系统中的应用。涵盖点对点通信、代理服务器、注册服务器等功能,以及SIP URI、SDP、SOA等关键组件。同时探讨了3PCC在多方通话中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、协议基础

       1.1 基础

        会话初始协议(SIP)是一个控制发起、修改和终结交互式多媒体会话的信令协议。最早发布于1993年。SIP是一个基于文本的协议,和HTTP和SMTP类似。

 

       1.2 通信方式

          (1)点对点通信:SIP是对等的,都有可能做UAC或者UAS.

 

       (2)代理服务器:由于A和B之间需要中间人M传话,中间人叫做代理服务器.

       (3)注册服务器:如果A换个位置,必须向M重新注册,则M是注册服务器.

       (4)B2BUA:背靠背协议.M与bob交流,W与Alice交流,W和M之间交流.

       (5) 边界会话控制器:位于一堆SIP服务器边界,用于隐藏内部服务器拓扑结构.抵御外来攻击.

       1.3 基本方法与头域

       常用的基本方法和头域如下:

 

 二、SIP注册

        注册流程:Alice向Freeswtch发起注册请求,Freeswtch返回401并向Alice发起挑战,Alice将自己的用户名密码连同挑战经过计算发送给服务器,服务器校验正确后则认证通过.

 三、SIP呼叫流程

      3.1 UA之间直接呼叫

        Bob向Alice发送invite消息请求建立SIP会话,Alice的UA回100try并且开始振铃,bob收到消息后播放回铃音.Alice接了电话,发送200OK给bob,宝宝收到后回复ACK.就可以开始通话了,语音数据是通过RTP包进行传递.

        通话后,爱丽丝挂断电话发送bye,宝宝收到后发送200OK.

      3.2 通过B2BUA进行呼叫

        (1)宝宝向freeswtich发送invite消息.Frees witch回复100try.

        (2)确认宝宝身份,服务器回送带有digest的407消息给宝宝.宝宝会送ACK表示收到.

        (3)宝宝重新发送invite请求,并且附带了认证的用户名密码.服务器回复100try.并验证,发现验证通过了.此时建立了一个chanel,成为a腿.

        (4)服务器查找爱丽丝,向爱丽丝发送invite.爱丽丝发送100try.爱丽丝开始振铃并发送180Ringing.

        (5)服务器给宝宝发送183,并产生回零音.

        (6)爱丽丝接听电话并发送200OK .服务器回复ACK,并向宝宝发200OK.切断回铃音,接语音.

        (7)RTP包通话.

        (8)爱丽丝挂断发送bye,服务器会送200OK,撤销B腿.

        (9)服务器给宝宝发送bye,宝宝发送200OK

 四、深入理解SIP

      4.1 SIP  URI

        sip地址可以使用IP地址,也可以使用域名.宝宝呼叫爱丽丝时候,由于宝宝是主叫方,不需要向服务器注册.而爱丽丝则不同,作为被叫方,为了能够让服务器找到他,必须进行注册.

      4.2 SDP

        sip负责建立释放会话,一般来说,会话会包含相关媒体,如音频视频.媒体是由SDP描述的,SDP一般不单独使用,需要放到SIP正文.如下图,是一个完整的的SIP发送请求的消息.

 

       4.3 SOA

         媒体协商过程成为SOA(提议和应答),首先由一方提供支持的codec,另一方选择.

       4.4 3PCC

        指的是由第三方控制者在另外两者之间建立会话,由控制者负责双方的媒体协商.在PSTN网中,第三方控制呼叫通常用于会议或者接线业务.同样,SIP也可以借助3PCC完成PSTN网中的一些业务.如点击拨号,通话过程放音.

       4.5 IP承载

        HTTP是TCP承载的,SIP是TCP和UDP,UDP承载的SIP如果丢包,就是用TCP.有些浏览器用websocket承载SIP,实现浏览器打电话,视频功能.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值