SIP协议

SIP协议

  SIP协议简介

SIPSession Initiation Protocol,会话发起协议)是一个用于建立,更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话、多媒体分发及多媒体会议。它是IETF多媒体数据和控制体系结构的核心协议(最新RFC文档是RFC3261)。其主要目的是为了解决IP网中的信令控制,以及同软交换平台的通信,从而构成下一代的增值业务平台,对电信,银行,金融等行业提供更好的增值业务。

SIP用于发起会话,它能控制多个参与者参加的多媒体会话的建立和终结,并能动态调整和修改会话属性,如会话带宽要求、传输的媒体类型(语音、视频和数据等)、媒体的编解码格式、对组播和单播的支持等。SIP协议基于文本编码,大量借鉴了成熟的HTTP协议,并且具有易扩展,易实现等特点,因此非常适合用来实现基于因特网的多媒体会议系统。

SIP协议采用Client/Server模型,主要通过与Proxy Server之间的通信来完成用户呼叫的建立过程。

SIP终端通过发送“邀请”消息给会话目的终端,消息中携带了自己的描述信息。目的终端可以根据“邀请”信息和自身的能力接受或拒绝请求。SIP可以通过称为“代理服务器”的实体来转发“邀请”消息。代理服务器可以完成确定目的终端的位置、查找路由的工作,根据会话终端的要求进行认证和授权,还能提供会话终端的呼叫路由策略。SIP通过“注册服务器”记录各终端的描述信息,包括地址信息,路由信息,号码信息等,各SIP终端可以通过发送“注册”消息给注册服务器,以登记或更新其描述信息。

另外,SIP作为应用层协议,在传输层上可以使用TCP,也可以使用UDPSIP可以支持IPv4IPv6

  重要概念说明

1. 多媒体会话

多媒体会话(Multimedia Session),根据RFC2327的定义,是指一组多媒体发送者和接受者以及从发送者到接受者的数据流。例如一个多媒体会议就是一个多媒体会话。一个会话由一组用户名称、会话ID、网络类型、地址类型以及各个单元的地址来确定。

2. 用户代理

用户代理(UAUser Agent)也称SIP终端,是指支持SIP协议的多媒体会话终端。例如SIP电话、SIP网关、支持SIP的路由器等。

3. 用户代理客户机

用户代理客户机(UACUser Agent Client)是指在SIP会话建立过程中主动发送会话请求的设备。例如,主叫SIP终端。当代理服务器向被叫终端发送会话请求时,也是作为用户代理客户机。

4. 用户代理服务器

用户代理服务器(UASUser Agent Server)是指在SIP会话建立过程中接收会话请求的设备。例如,被叫SIP终端。当代理服务器接收主叫终端发送会话请求时,也是作为用户代理服务器。

5. 代理服务器

代理服务器(Proxy Server)是代理主叫UASIP终端)向被叫UA发送会话请求,并代理被叫UA向主叫UA发送应答消息的设备。代理服务器在接收到主叫UA的会话请求后,首先要向注册服务器请求查找被叫的位置以及主、被叫的呼叫策略信息。只有找到被叫并且此呼叫是允许的,代理服务器才会向被叫发送会话请求。

6. 重定向服务器

重定向服务器(Redirect Server)是为主叫UA指明重新呼叫被叫UA的位置。当重定向服务器收到主叫UA发送的会话请求消息后,查找被叫UA的位置信息,并向主叫UA返回一个位置信息,使其重新向该位置发起会话请求。此位置可以直接是被叫UA的位置,也可以是一个代理服务器的位置。接下来主叫UA如同直接呼叫被叫UA或者向代理服务器呼叫的流程一样。

7. 位置服务器

位置服务器器(Location Server)是为代理服务器和重定向服务器等提供用户代理信息的设备。位置服务器记录了注册服务器接收到的用户代理的信息。位置服务器与注册服务器通常在同一个设备上。

8. 注册服务器

注册服务器(Registration Server)是记录UA的位置信息并向代理服务器提供查询UA的位置信息的设备。在简单的应用中,注册服务器和代理服务器通常也在同一个设备上。

  SIP的功能和特点

SIP主要有五个基本功能:

l              确定用户位置:确定被叫SIP终端所在的位置。SIP的最强大之处就是用户定位功能。SIP本身含有向注册服务器注册的功能,也可以利用其他定位服务器如DNSLDAP等提供的定位服务器来增强其定位功能。

l              确定用户可用性:确定被叫会话终端是否可以参加此会话。SIP支持多种地址描述和寻址,包括:用户名@主机地址、被叫号码@PSTN网关地址和普通电话号码(如Tel01012345678)的描述等。这样,SIP主叫按照被叫地址,就可以识别出被叫是否在传统电话网上,然后通过一个与传统电话网相连的网关向被叫发起并建立呼叫。

l              确定用户能力:确定被叫终端可用于参加会话的媒体类型及媒体参数。SIP终端在消息交互过程中携带自身的媒体类型和媒体参数,这使得会话都可以明确对方的会话能力。

l              建立会话:建立主被叫双方的会话参数。SIP会话双方通过协商媒体类型和媒体参数,最终选择双方都具有的能力建立起会话。

l              管理会话:可以更改会话参数或中止会话。

SIP的特点如下:

l              标准的开放性。可以将不同运营商引进的各种新的功能、产品和服务整合在一起,用户可以自由地选择。

l              配置的灵活性。兼容多种拨号方式、有线和无线的设备,可以进行高度灵活的配置,并且能够和其它系统协同工作。

l              系统可扩容性。随着企业规模的扩大,系统也可以随之扩充。

l              支持远端用户。无论用户身在何方,都可以将企业的网络延伸到那里。

l              为企业带来更多竞争优势的潜力。基于SIP的新的业务与服务陆续出台。

l               企业各部分通讯方式的一致性。分支机构、家庭办公室和出差人员使用同样的拨号方式和系统访问方式,便于管理。

l              迅速启动。当建立新的分支机构、吸纳新的员工,或重新安排员工工作或改变其工作地点时,系统相应变更非常迅速。

l              易安装、可维护。非专业人士也可以安装或维护SIP系统配置。

  SIP工作原理

1. 登记注册

在完整的SIP系统中,所有的SIP终端作为User Agent都应该向注册服务器(SIP Registration Server)登记注册,以告知其位置信息、会话能力信息、呼叫策略等等。

通常,SIP终端开机启动时或者配置管理员执行注册操作时,就向注册服务器发送注册请求消息(REGISTER),该消息中携带了所有需要登记的信息。注册服务器收到注册请求消息后向终端发送回应消息,以告知其请求消息已收到。如果注册成功,就再向终端发送“成功”消息。如下图所示。

6-1 User AgentSIP Location Server注册的消息交互

2. 建立呼叫

SIP协议采用Client/Server模型,主要通过UAProxy Server之间的通信来完成用户呼叫的建立过程。

6-2 UA通过PROXY连接

例如,如上图所示,电话1需要呼叫电话2,两个路由器作为SIP终端(UA)。当电话1拨完电话2的号码后,路由器1SIP Server发送会话请求消息。SIP Server通过查找电话2的号码所对应的信息,向路由器2发送会话请求消息。路由器2收到请求后,如果电话2可用,就向SIP Server发送应答,并使电话2振铃。SIP Server收到应答后,向路由器1发送应答消息。这里所说的应答包括两个消息,一个临时应答和一个“成功”应答。整个过程中的消息交互如下图所示。

6-3 UA通过Proxy Server的呼叫流程图

这个例子是一种简单的应用,只使用了一个代理服务器,并且没有使用注册服务器。在复杂的应用中,可以有多个代理服务器,以及注册服务器。

3. 重定向呼叫

SIP重定向服务器收到会话请求消息后,不是转发会话请求消息,而是在回应消息中告知被叫SIP终端的地址。主叫终端从而重新直接向被叫终端发送会话请求消息。被叫终端也将直接向主叫发送应答消息。呼叫过程的消息交互如下图所示。

6-4 UA重定向呼叫流程图

这是比较常见的一种应用。从原理上来说,重定向服务器也可以向主叫终端回复一个代理服务器的地址,接下来的呼叫过程就和使用代理服务器的呼叫过程一样。

### SIP协议概述 SIP(Session Initiation Protocol),即会话初始化协议,是一种用于创建、修改以及终止多方通信会话的应用层控制信令协议[^2]。此协议专为互联网设计,在功能上类似于HTTP,均采用了基于文本的UTF-8字符编码方式,并通过请求/应答机制来处理客户端和服务端之间的交互操作。 #### 协议结构与工作原理 在架构层面,SIP位于OSI七层模型中的应用层,依赖于下层的网络基础设施完成数据包的有效传递。具体来说,其底层支撑由IP提供网络服务支持,而在传输层可以选择TCP或者更为常见的UDP作为载体进行消息交换。 当涉及到具体的多媒体会议场景时,除了SIP本身外,还需要配合使用SDP(Session Description Protocol)。其中,SDP用来定义参与方之间共享的各种媒体属性详情,比如音频视频流的具体编解码器类型等;与此同时,SIP则承担起发送这些配置细节的任务,并确保参与者能够顺利建立起有效的通讯链路[^1]。 #### 安全特性 针对安全方面的需求,SIP也提供了相应的保护措施以保障通话过程的安全性和隐私性。例如,可以通过TLS加密通道防止窃听攻击,利用身份验证机制阻止未授权访问尝试等等。 ```python import socket def sip_message_example(): """简单的模拟SIP INVITE消息""" invite_msg = ( "INVITE sip:user@example.com SIP/2.0\r\n" "Via: SIP/2.0/UDP host.example.com;branch=z9hG4bK776sgdkse\r\n" "From: Alice <sip:alice@host.example.com>;tag=1928301774\r\n" "To: Bob <sip:bob@example.com>\r\n" "Call-ID: a84b4c76e66710@pc33.atlanta.example.com\r\n" "CSeq: 314159 INVITE\r\n" "Content-Type: application/sdp\r\n" "\r\n" "v=0\r\n" "o=mhandley 2890844526 2890842807 IN IP4 pc33.atlanta.example.com\r\n" "s=-\r\n" "t=0 0\r\n" "m=audio 49170 RTP/AVP 0\r\n" "a=rtpmap:0 PCMU/8000\r\n" ) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_address = ('example.com', 5060) try: sent = sock.sendto(invite_msg.encode(), server_address) finally: sock.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值