会话发起协议-SIP

时间:2023-09-11
新悦网络

编辑:

什么是 SIP 协议?

定义: SIP会话发起协议是基于 IP 的电话应用程序的信令协议。信令协议为通信提供控制层,例如语音呼叫的建立和释放。

SIP架构

最简单的,SIP 架构由 SIP 用户代理和服务器组成。

简单会话启动协议架构图

用户代理是通信的端点。用户代理的示例有软件电话、IP 电话或移动电话。需要 SIP 服务器来定位其他用户代理。此外,SIP服务器还可以提供其他服务,例如计费和SIP转发。

SIP 协议基础知识

SIP 是一种应用层协议,与 HTTP 等基于文本的应用层协议非常相似。事实上,它也使用请求和响应消息事务和标头字段。下面显示了用户代理 A 向用户代理 B 发起的呼叫的请求和响应消息事务。

SIP 请求和响应事务图

对于传输,SIP 可以在 TCP、UDP 或 SCTP 传输层协议上运行。以下是 SIP 请求消息示例。

INVITE sip:0097239287044@sip.cybercity.dk SIP/2.0

Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bKnp85213694-430aa1de192.168.1.2;rport

From: "arik" <sip:voi18062@sip.****.dk>;tag=51449dc

To: <sip:0097239287044@sip.****.dk>

Call-ID: 85216695-42dcdb1d@192.168.1.2

CSeq: 1 INVITE

User-Agent: Nero SIPPS IP Phone Version 2.0.51.16

Expires: 120

Accept: application/sdp

Content-Type: application/sdp

Content-Length: 270

Contact: <sip:voi18062@192.168.1.2>

Max-Forwards: 70

Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, INFO

 

为了进行比较,这里有一个 HTTP 请求消息

GET /download.html HTTP/1.1

Host: www.ethereal.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040113

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://www.ethereal.com/development.html

 

SIP 请求方法

SIP 借用了 HTTP 的 Method 字段来同样确定请求的类型。SIP 有 14 种方法请求类型。最常用的方法是语音呼叫期间使用的 INVITE、ACK、BYE 和 REGISTER。SIP 请求消息的第一行包括方法类型和请求 URI(请求的当前目的地)。

SIP请求方法表

 

SIP 请求标头

标头字段用于配置 SIP 请求消息。以下是请求消息的一些常见标头。还有更多可用的标头。

常见的SIP请求头

SIP 寻址和 SIP URI

To、From 和 Contact 标头字段中使用的 SIP URI 表示用户的 SIP 号码。它与电子邮件地址非常相似。它由三个部分组成<protocol:user@gateway>。该协议可以是 sip 或 sips,其中后者使用 TLS 进行保护。该用户是SIP网关或服务器上的唯一用户。

SIP 响应状态代码

再次与 HTTP 类似,SIP 响应提供状态代码来指示 SIP 请求的结果。下面列出了常见的 SIP 响应状态码。

常见 SIP 响应状态代码

SIP 消息正文内容和 SDP

SIP 与内容无关。尽管它以语音呼叫信令而闻名,但它也用于建立消息传递、视频会议、短信等会话。SIP 消息正文确定正在建立的媒体会话的类型。消息正文通常包含在 SIP 邀请请求中,作为初始会话建立的一部分。

会话描述协议 (SDP) 是一种用于 VoIP 的特殊内容类型。内容类型指定为 application/sdp。在以下 SIP Invite 消息中,SDP 指定 VoIP 呼叫可用的语音编解码器。

带有 SDP 消息正文的 SIP 邀请

INVITE sip:0097239287044@sip.cybercity.dk SIP/2.0   

Via: SIP/2.0/UDP   192.168.1.2:5060;branch=z9hG4bKnp85213694-430aa1de192.168.1.2;rport   

From: "arik" <sip:voi18062@sip.cybercity.dk>;tag=51449dc   

To: <sip:0097239287044@sip.cybercity.dk>   

Call-ID: 85216695-42dcdb1d@192.168.1.2   

CSeq: 1 INVITE    

User-Agent: Nero SIPPS IP Phone Version 2.0.51.16   

Expires: 120   

Accept: application/sdp   

Content-Type: application/sdp   

Content-Length: 270   

Contact: <sip:voi18062@192.168.1.2>   

Max-Forwards: 70   

Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, INFO   

v=0   

o=SIPPS 85214742 85214739 IN IP4 192.168.1.2   

s=SIP call   

c=IN IP4 192.168.1.2   

t=0 0   

m=audio 30000 RTP/AVP 0 8 97 2 3   

a=rtpmap:0 pcmu/8000   

a=rtpmap:8 pcma/8000   

a=rtpmap:97 iLBC/8000   

a=rtpmap:2 G726-32/8000   

a=rtpmap:3 GSM/8000   

a=fmtp:97 mode=20   

a=sendrecv

SIP VoIP 会话呼叫流程

现在我们已经掌握了基础知识,让我们将所有内容放在一起以建立 SIP 呼叫流程以建立 VoIP 呼叫。建立呼叫有四个基本部分:注册、呼叫建立、VoIP 呼叫和呼叫终止。

A:注册

当用户代理(例如软件电话)启动时,它需要向 SIP 服务器注册才能被其他用户代理找到。SIP 注册请求消息用于此目的。它通过“To”和“From”SIP URI 提供位置绑定。或者,可以通过“联系人”字段提供附加绑定。

SIP注册消息

REGISTER sip:sip.cybercity.dk SIP/2.0  

Via: SIP/2.0/UDP   192.168.1.2;branch=z9hG4bKnp151248737-46ea715e192.168.1.2;rport  

From: <sip:voi18063@sip.cybercity.dk>;tag=903df0a  

To: <sip:voi18063@sip.cybercity.dk>  

Call-ID: 578222729-4665d775@578222732-4665d772  

Contact: <sip:voi18063@192.168.1.2:5060;line=9c7d2dbd8822013c>;expires=1200;q=0.500  

Expires: 1200  

CSeq: 68 REGISTER  

Content-Length: 0  

Max-Forwards: 70  

User-Agent: Nero SIPPS IP Phone Version 2.0.51.16

B:呼叫建立

呼叫建立就是奇迹发生的地方。这里有几个步骤,所以让我们按顺序一一介绍。

  1. SIP 邀请请求- SIP 邀请开始呼叫建立尝试。此消息包含被叫方(To 字段中的 SIP URI)。该信息从呼叫者发送到 SIP 服务器,在该服务器中查找被呼叫者。在较大的网络中,如果被叫方不在本地,SIP 服务器可能需要咨询其他 SIP 服务器。一旦找到被叫方,就会转发邀请。对于 VoIP,邀请还包括带有 VoIP 呼叫参数的 SDP 消息正文。
  2. SIP 响应 100(尝试) - 此消息从 SIP 服务器发送到被叫方以确认邀请请求。
  3. SIP 响应 180(振铃) - 此消息表明被叫方收到了邀请,并且他们的用户代理正在提醒用户。
  4. SIP 响应 200(确定) - 用户接听时,会发回 200 响应以确认呼叫。此外,被叫方还发送带有其 VoIP 呼叫参数的 SDP 消息正文。由于此消息和来自呼叫者的初始邀请,已发生 VoIP 呼叫参数的交换和协商。
  5. SIP Ack 请求- 最后,呼叫者通过返回给被叫者的 Ack 请求进行确认。然后,被叫方向主叫方发起 VoIP 呼叫。

C:网络电话呼叫

VoIP 呼叫本身使用 RTP实时传输协议在用户代理之间传输。该协议用于通过 IP 网络传送音频和视频数据。附加协议 RTCP(RTP 控制协议)用于为 RTP 传输提供统计和控制。我们将在即将发布的博客中介绍 RTP 和 RTCP。

 

 

 

 

最新内容

知识库