一、协议基础

       1.1 基础

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

freeswitch没有sip号码直接挂断 freeswitch sip注册_用户名

 

       1.2 通信方式

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

freeswitch没有sip号码直接挂断 freeswitch sip注册_服务器_02

 

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

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

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

freeswitch没有sip号码直接挂断 freeswitch sip注册_智能语音_03

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

       1.3 基本方法与头域

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

freeswitch没有sip号码直接挂断 freeswitch sip注册_服务器_04

 

freeswitch没有sip号码直接挂断 freeswitch sip注册_用户名_05

 二、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.

freeswitch没有sip号码直接挂断 freeswitch sip注册_智能语音_06

      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

freeswitch没有sip号码直接挂断 freeswitch sip注册_智能语音_07

 四、深入理解SIP

      4.1 SIP  URI

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

      4.2 SDP

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

freeswitch没有sip号码直接挂断 freeswitch sip注册_智能语音_08

 

freeswitch没有sip号码直接挂断 freeswitch sip注册_智能语音_09

freeswitch没有sip号码直接挂断 freeswitch sip注册_智能语音_10

       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,实现浏览器打电话,视频功能.