SIP协议详解

目录

一、SIP协议的概念

二、SIP协议的组成

三、SIP协议的运行流程

3.1被叫端为静态地址

3.2被叫端为动态地址


一、SIP协议的概念

SIP协议全称为:Session Initiation Protocol,中文译名:会话发起协议。SIP协议并不像H.323那样功能丰富,也并不强制使用RTP协议,同时也没有强制使用特定的编解码器。相对于H.323,SIP更加简单、傻瓜。SIP协议只涉及IP电话所需的信令和有关服务质量的问题。


二、SIP协议的组成

SIP由两种构件组成,一个为用户代理(user agent),用户代理包括用户代理客户UAC(User Agent Client)和用户代理服务器UAS(User Agent Server),前者用于发起呼叫,后者用于接收呼叫;另一个为网络服务器(Network Server),而网络服务器分为代理服务器(Proxy Server)和重定向服务器(Redirect Server)两种。代理服务器于接收用户的呼叫请求,并且将呼叫请求转发给被叫用户,当然也有可能将用户的呼叫请求转发给下一个代理服务器,由下一个代理服务器进行转发。重定向服务器不处理用户的呼叫,它通过响应将下一个代理服务器的地址告知用户,让用户向下一个代理服务器的发起呼叫请求。重定向服务器类似于路由重定向。


三、SIP协议的运行流程

3.1被叫端为静态地址

SIP的目的地址可能是电话号码、IPv4地址或电子邮件地址。当被叫端的地址确定时,SIP运行较为简单。具体流程参考下图(由于被叫端IP地址已确定,此处省略代理服务器的转发过程)。

SIP协议详解_第1张图片

  1. UserA发出INVITE报文,这个报文包括了UserB的地址(UserB@IP_B),UserA当前的IP地址(IP_A),UserA希望接收到的音频格式(RTP/AVP0)以及在某个端口(38060)接收RTP分组(SIP并不强制使用RTP协议)。
  2. 如果UserB同意呼叫请求,则对UserA的INVITE报文进行200 OK的回复。报文中包括了UserB当前的IP地址(IP_B),UserB希望接收到的音频格式(RTP/AVP3)以及在某个端口(48735)接收RTP分组。
  3. 在接收到UserB的响应后,UserA向UserB发送SIP确认报文,之后他们就可以开始交谈了。

Tips:UserB也可以使用busy(忙)、gone(离开)、payment(付费)、forbidden(禁止)拒绝UserA的邀请。

3.2被叫端为动态地址

当被叫端为动态IP地址时,则需要借助SIP登记器确定被叫方的IP地址。当用户发起SIP应用时,都会给SIP登记器发送一个SIP Register报文用于向SIP登记器报告现在使用的IP地址。每一个SIP用户都有一个相关联的SIP登记器。具体流程参考下图(详细报文内容不展示)。

SIP协议详解_第2张图片

  1. UserA将INVITE报文发送给Proxy Server。这里的INVITE报文比较特殊,地址中没有包含UserB的IP地址,而包含的可能是UserB的电子邮件地址。
  2. Proxy Server收到INVITE报文后发现该报文中没有UserB的IP地址,便会向Registrar发送域名系统DNS查询(该查询报文不是SIP报文)。
  3. Registrar接收到查询请求后,便会回复Proxy Server请求查找的IP地址。如果UserB并没有在这个SIP登记器进行登记,那么Registrar便会向Proxy Server回复重定向报文,该报文中指示着另一个Registrar的地址。Proxy Server会向另一个Registrar进行DNS查询,如此循环,直到找到UserB的地址为止。
  4. Proxy Server收到Registrar的回复报文后,若报文中有UserB的IP地址,那么便会向UserB发送INVITE报文。UserB收到INVITE报文后,会对INVITE报文进行响应。
  5. Proxy Server会转发会话建立阶段的报文,会话建立之后电话交谈和挂断不再由Proxy Server进行转发

你可能感兴趣的:(计算机网络,网络,网络协议,学习,运维)