网络-SIP协议初级篇

1、Sip 协议简介

SIP(Session Initiation Protocol)会话初始协议

它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点

SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。广泛应用于CS(Circuit Switched,电路交换)、NGN(Next Generation Network,下一代网络)以及IMS(IP Multimedia Subsystem,IP多媒体子系统)的网络中,可以支持并应用于语音、视频、数据等多媒体业务,同时也可以应用于Presence(呈现)、Instant Message(即时消息)等特色业务。可以说,有IP网络的地方就有SIP协议的存在。
SIP是类似于HTTP,SIP可以减少应用特别是高级应用的开发时间。由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的远意义。

2、主要特点

  • 独立于TCP或者UDP,使用自己应用层协议保证消息的可靠传送
  • 消息体采用文本方式UTF-8
  • 以客户-服务器方式建立会话
  • 灵活的寻址方式
  • 是应用层的控制协议,可以建立、修改和结束多媒体会话
  • SIP没有媒体协商功能,往往需要集成SDP协议
  • 可应用于视频、语音、即时通信、在线游戏和虚拟现实等多媒体交互式用户会话
  • rfc3261为核心,但是扩展众多,可满足各种复杂应用

3、功能实体

User Agent(呼叫代理)    是SIP网络的终端,具体的分为UserAgent Client和UserAgent Server。UAC是客户端,表示主叫;UAS是服务端,表示被叫。

REGISTRAR SERVER(注册服务器):接受客户端的注册请求,将用户的地址信息写入数据库,并返回注册状态。

REDIRECT SERVER(重定向服务器):  接受SIP的请求,映射请求的原地址成零个或者多个IP地址,并且返回给客户端。 由客户端重新发起请求。

LOCATION SERVER(定位服务器): 管理若干数据库,接受由Redirect Server或者Proxy Server的路由查询。

Proxy Server(代理服务器):完成SIP消息的转接和转发功能,可以修改SIP消息内容。

 

 

 

4、消息的构成

请求:UAC -> UAS , 包括3个元素:请求行、消息头、消息体

响应:UAS ->UAC :状态行、消息头、消息体

备注:UAC/UAS的是相对的概念,可倒换

5、

SIP -UAC 6种基本方法

  1. INVITE——邀请用户加入呼叫
  2. BYE——终止一呼叫上的两个用户之间的呼叫 
  3. OPTIONS——请求关于服务器能力的信息
  4. ACK——确认客户机已经接收到对INVITE的最终响应
  5. REGISTER——SIP地址注册,让服务器知道SIP端点的联系地址
  6. CANCEL——取消会话邀请

SIP -UAS 协议状态响应

  1. 1xx 临时响应 100 Trying     180 Ringing
  2. 2xx 成功响应 200 OK
  3. 3xx 重定向响应 302 Moved Temporarilly
  4. 4xx 客户端错误响应 403 Forbidden     404 Not Found
  5. 5xx 服务器错误响应 500 Server internal Error
  6. 6xx 全局错误响应  600 Busy Everywhere

6、三个重要概念

Dialog (对话) 指的是两个UA之间端到端的关系,它在Call ID、local tag和remote tag都产生之后被认为建立;

Transaction (事务)指的是一个请求的处理过程,当一个请求被发出,针对这个请求的响应也被处理之后,才是一个完整的事务,当然可能包含一个或多个临时响应或一个或多个最终响应;

Session (会话) 是SDP方面的概念,表示多媒体发送者和接收者通过媒体流进行交互的过程。

7、SIP之GB28181注册、注销详解

a) 1:SIP 代理向SIP 服务器发送 Register 请求;
b) 2:SIP 服务器向 SIP 代理发送响应401, 并在响应的消息头 WWW_Authenticate 字段中给出适合SIP 代理的认证体制和参数;
c) 3:SIP 代理重新向SIP 服务器发送 Register 请求, 在请求的 Authorization 字段给出信任书,包含认证息;
d) 4:SIP 服务器对请求进行验证, 如果检查出 SIP 代理身份合法, 向 SIP 代理发送成功响应
200 OK, 如果身份不合法则发送拒绝服务应答。
注:“SIP代理”这里指的UAC(User Agent Client) "SIP服务器"这里指的是UAS(User Agent Server)
当UAS接收到消息后,回送一个401消息“Unauthorized”在消息包头添加如下字段

WWW-Authenticate:

Digest realm="3402000000",qop="auth",nonce="52d33cd23eea89a9563618cdf31d720a"

其中realm指的是域名(根据自己项目的实际情况填写),Nonces是随机数
UAC向UAS注册,下面是注册消息

REGISTER sip:34020000002000000001@36.103.240.124:5060 SIP/2.0

Via: SIP/2.0/UDP 10.10.0.10:7081;rport;branch=z9hG4bK460266740

From: <sip:34020000002000000001@10.10.0.10:7081>;tag=845016216

To: <sip:34020000002000000001@10.10.0.10:7081>

Call-ID: 1688820428

CSeq: 1 REGISTER

Contact: <sip:34020000002000000001@10.10.0.10:7081>

Max-Forwards: 70

User-Agent:

Expires: 3600

Content-Length: 0

字段说明:

请求起始行:表示UAC向IP地址为36.103.240.124的服务器发起注册,SIP版本号为2.0

From字段:指明该REGISTER请求消息由UAS(IP地址:36.103.240.124)控制的UAC发起的。

To字段:指明REGISTER请求接收方的地址。此时REGISTER请求的接收方为IP地址为36.103.240.124的UAS。(这个值和To头域的值相同,除非这个请求是第三方发起的注册请求。)

Call-ID字段:UAC发出的给某个注册服务器(registrar)的所有注册请求都应该有相同的Call-ID头域值。如果相同的客户端用了不同的Call-ID值,注册服务器(registrar)就不能检测是否一个REGISTER请求由于延时的关系导致了故障。

Cseq字段:Cseq值保证了REGISTER请求的正确顺序。一个UA为每一个具备相同的Call-ID的REGISTER请求顺序递增这个Cseq字段。

Contact字段:在REGISTER请求中的Contact字段指明用户可达位置。

Expires字段:表示该登记生存期为3600s。

Content-Length字段:表明此请求消息消息体的长度为空,即此消息不带会话描述。

备注:一个合法的SIP请求必须至少包含如下头域:To、FROM、Cseq、Call-ID、Max-Forwards、Via


 

 注销流程图描述如下:

a) 1:SIP 代理向SIP 服务器发送 Register 请求,Expires 字段的值为0, 表示SIP 代理要注销;
b) 2:SIP 服务器向 SIP 代理发送响应401, 并在响应的消息头 WWW_Authenticate 字段中给出适合SIP 代理的认证体制和参数;
c) 3:SIP 代理重新向SIP 服务器发送 Register 请求, 在请求的 Authorization 字段给出信任书,包含认证信息,Expires 字段的值为0;
d) 4:SIP 服务器对请求进行验证, 如果检查出 SIP 代理身份合法, 向 SIP 代理发送成功响应
200 OK, 如果身份不合法则发送拒绝服务应答。

 

posted @ 2021-12-17 16:59  槑槑DE  阅读(680)  评论(0编辑  收藏  举报