SIP协议相关资料
SIP协议

SIP协议一、SIP协议简介会话初始化协议(Session Initialization Protocol,SIP)是一个由IETF工作组开发的标准协议,广泛用于建立、修改和终止像Internet上的音视频呼叫等多媒体通信会话,SIP协议借鉴了HTTP、SMTP等协议,支持代理、重定向及登记定位用户等功能,支持用户移动。
通过与RTP/RTCP、SDP、RTSP等协议及DNS 配合,SIP支持语音、视频、数据、E-mail、状态、即时通信、在线游戏等。
SIP 协议可在TCP或UDP之上传送,由于SIP本身具有握手机制,可首选UDP。
SIP 与H.323一样,是用于V oIP最主要的信令协议之一。
SIP网络结构如下图:SIP会话使用四个主要组件:SIP用户代理、SIP注册服务器、SIP代理服务器和SIP重定向服务器。
这些系统通过传输包括了SDP 协议(用于定义消息的内容和特点)的消息来完成SIP会话。
SIP用户代理(UA)是终端用户设备,如用于创建和管理SIP会话的移动电话、多媒体手持设备、PC、PDA 等。
用户代理客户机(UAC)发出消息。
用户代理服务器(UAS)对消息进行响应。
SIP注册服务器是包含域中所有用户代理的位置的数据库。
在SIP通信中,这些服务器会检索参与方的IP地址和其他相关信息,并将其发送到SIP代理服务器。
SIP代理服务器接受SIP UA的会话请求并查询SIP注册服务器,获取收件方UA的地址信息。
然后,它将会话邀请信息直接转发给收件方UA(如果它位于同一域中)或代理服务器(如果UA位于另一域中)。
SIP代理服务器包括有状态代理服务器和无状态代理服务器两种,它们的区别是有状态代理服务器记住它接收的入请求,以及回送的响应和它转送的出请求。
无状态代理服务器一旦转送请求后就忘记所有的信息。
这允许有状态代理服务器生成请求以并行地尝试多个可能的用户位置并且送回最好的响应。
无状态代理服务器可能是最快的,并且是SIP结构的骨干。
SIP协议主要消息

SIP协议主要消息一、背景介绍SIP(Session Initiation Protocol)是一种用于建立、修改和终止会话的信令协议,广泛应用于VoIP(Voice over Internet Protocol)和实时通信系统中。
SIP协议主要消息是指在SIP通信过程中,各个参与方之间传递的消息,包括请求消息和响应消息。
本协议旨在规范SIP协议主要消息的格式和内容,以确保通信的可靠性和互操作性。
二、协议目的本协议的目的是定义SIP协议主要消息的标准格式,包括请求消息和响应消息的结构、字段和语义。
通过遵循本协议,各参与方能够准确理解和处理SIP协议主要消息,从而实现可靠的通信和互操作。
三、协议内容1. 请求消息格式:请求行:包括请求方法、请求URI和SIP协议版本。
头部字段:包括常用字段(如From、To、Call-ID、CSeq、Contact等)和可选字段(如Max-Forwards、User-Agent、Content-Type等)。
空行:用于分隔头部字段和消息体。
消息体:可选,用于传递附加数据。
2. 响应消息格式:状态行:包括SIP协议版本、状态码和原因短语。
头部字段:包括常用字段(如From、To、Call-ID、CSeq、Contact等)和可选字段(如Server、Content-Type等)。
空行:用于分隔头部字段和消息体。
消息体:可选,用于传递附加数据。
四、协议规范1. 请求方法:- INVITE:用于建立会话。
- ACK:用于确认接收到INVITE请求。
- OPTIONS:用于查询支持的功能和参数。
- BYE:用于终止会话。
- CANCEL:用于取消未被接受的请求。
- REGISTER:用于注册用户的位置信息。
- INFO:用于传递会话中的中间信息。
- PRACK:用于确认接收到可靠传输的请求。
2. 状态码:- 1xx:信息性响应,表示请求已被接收,但尚未完成。
- 2xx:成功响应,表示请求已成功处理。
SIP协议深入介绍

SIP协议深入介绍网络事业部软交换开发部王笑蓉1.SIP简介SIP(Session Initiation Protocol)是应用层控制协议,可以创建,修改,以及终止一个多媒体会话。
它具有以下几个主要功能:Userlocation:确定通信中的终端位置availability:确定被叫方是否愿意进行通信Usercapabilities:确定用于通信的媒体类型及参数Usersetup:建立会话各方的会话参数Sessionmanagement:终止会话,修改会话参数SessionSIP协议需要和其他IETF协议一起来构成一个完整的多媒体通信构架。
这些协议有:RTP(Real Time Transport):传输实时数据,提供QoS反馈信息Streamingprotocol):控制流媒体的传送TimeRTSP(RealMEGACO(Media Gateway Control Protocol):控制媒体网关SDP(Session Description Protocol):描述多媒体会话1.1SIP协议结构SIP协议的行为模型可以用几个分层的相对独立处理阶段来描述:1.语法及编码层2.传输层定义了客户端如何通过网络发送请求及接收响应,以及服务器端如何接收请求并发送响应。
所有SIP逻辑实体都包含此层。
3.事务层事务层处理应用层请求或响应消息的重发,响应与请求的匹配以及应用层的超时。
一个SIP事务由一个请求和对该请求的所有响应构成,这些响应分临时响应(provisional response)和最终响应(final response)。
对于INVITE事务,对应于非2xx响应的ACK确认消息也属于该事物,而对应于2xx响应的ACK确认消息则不属于该INVITE事物。
UA以及stateful proxy均包含事务层,而stateless proxy 不包含事务层一个事物根据逻辑功能分为客户事务(client transaction)和服务器事务(server transaction)。
SIP协议

SIP协议简介SIP(Session Initiation Protocol)是一种用于建立、修改和终止多媒体会话的协议。
它是互联网工程任务组(IETF)定义的一种应用层协议,被广泛应用于语音通话、视频通话、即时消息和多媒体会议等实时通信领域。
SIP协议的主要目标是提供一种灵活、可扩展的机制,用于建立和管理通信会话。
它采用文本格式的消息交换方式,基于请求‑应答模式进行通信。
SIP协议使用统一资源标识符(URI)来标识终端设备和用户,通过SIP消息的交换来实现会话的控制。
SIP协议的设计思想是简单、可扩展和松散耦合。
它允许在不同的网络环境中使用各种传输协议,如UDP、TCP和TLS等。
同时,SIP协议也提供了灵活的会话控制功能,包括呼叫的建立、会话参数的修改和会话的终止。
SIP协议在实时通信领域有着广泛的应用。
它被广泛用于VoIP(Voice over IP)系统,使得用户可以通过互联网进行语音通话。
此外,SIP协议还支持视频通话、实时消息传递和多媒体会议等功能。
它提供了一种开放的架构,允许不同厂商的设备和应用进行互操作。
然而,SIP协议也面临着一些安全性和挑战。
由于SIP协议的开放性和可扩展性,攻击者可能利用其中的漏洞进行恶意攻击。
因此,实施SIP协议时需要采取一些安全措施,如认证、加密和防火墙等,以保护通信的安全和隐私。
总之,SIP协议作为一种用于建立和管理多媒体会话的协议,为实时通信提供了一种灵活、可扩展的机制。
它在VoIP 和其他实时通信应用中发挥着重要的作用,并为用户提供了丰富的通信体验。
然而,为了确保通信的安全性,使用SIP 协议时需要注意相关的安全措施。
SIP协议的工作原理SIP(Session Initiation Protocol)协议是一种基于文本的协议,用于建立、修改和终止多媒体会话。
它采用了简单而灵活的工作原理,使得通信设备能够进行会话的控制和管理。
SIP协议的工作原理可以概括为以下几个步骤:1.定位和寻址:SIP协议使用统一资源标识符(URI)来标识终端设备和用户。
SIP协议相关资料(doc 9页)

SIP协议相关资料(doc 9页)Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。
eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。
一、介绍Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。
但缺点也很明显,首先就是可用性差,没有很好的api封装,使得上层应用在调用协议栈时很破碎;其次,只做到了transaction 层次的协议过程解析,缺少call、session、1、Sip协议的语法分析:主要是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。
不支持RFC3262定义的PRACK。
遵循RFC3264关于SDP的offer/answer模式。
带有SDP的语法分析。
支持MD5加解密算法。
支持Authorization、www_authenticate和proxy_authenticate。
2、Sip协议的过程分析:主要是osip2部分,基于RFC3261、RFC3264和RFC3265的sip协议描述过程,围绕transaction 这一层来实现sip的解析。
Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。
请求分为Invite类型和Non-Invite类型。
应答分为响应型的应答和确认型的应答。
响应型的应答是指这个应答仅代表对方收到请求。
请求经过处理后都必须返回确认型的应答。
响应型的应答有1xx,确认型的应答包括2xx、3xx、4xx、5xx和6xx。
一个transaction由一个请求和一个或多个响应型应答、一个确认型应答组成。
sip协议详解

SIP协议详解1. 引言Session Initiation Protocol(SIP)是一种用于建立、修改和终止多媒体会话的通信协议。
它广泛应用于语音、视频和即时通讯等实时通信领域。
本文将对SIP协议进行详细解析,介绍其基本原理和主要特点。
2. SIP协议概述SIP协议是基于文本的应用层协议,使用可读的ASCII文本来进行消息交换。
它采用客户端/服务器(C/S)模型,其中用户代理作为客户端,SIP服务器作为服务器。
SIP消息的格式包括请求消息和响应消息两种类型。
3. SIP消息格式SIP消息由起始行、头部字段和消息体组成。
起始行包括请求行或状态行,用于表示消息的类型和状态。
头部字段包含了一系列的键值对,用于传递消息的各种参数和选项。
消息体用于传输实际的数据内容。
4. SIP会话的建立与终止SIP协议通过INVITE/200 OK消息实现会话的建立,通过BYE消息实现会话的终止。
当用户A希望与用户B建立一个通话时,用户A向SIP服务器发送INVITE 消息,SIP服务器将该消息转发给用户B。
用户B可以选择接受INVITE消息,然后发送200 OK消息给用户A,表示接受通话请求。
当通话结束时,任一用户可以发送BYE消息,通知对方终止通话。
5. SIP注册与鉴权SIP协议支持用户注册和鉴权机制,以实现用户身份验证和安全通信。
用户在注册时,将自己的身份信息发送给SIP服务器,服务器将该信息保存起来。
当用户发起通话请求时,服务器可以根据用户的身份进行鉴权,确定用户是否具有通话的权限。
6. SIP中继与路由SIP协议支持中继和路由机制,以实现跨网络的通信。
SIP中继允许SIP消息在不同的网络之间传输,保证了用户可以在不同的网络环境下进行通话。
SIP路由机制允许SIP消息根据特定的规则进行转发,以找到正确的接收者。
7. SIP扩展与应用SIP协议允许进行扩展,以满足不同应用场景的需求。
例如,SIP可以与其他协议结合使用,如SDP(Session Description Protocol)用于传输会话描述信息。
sip 协议讲解

sip 协议讲解SIP协议讲解SIP(Session Initiation Protocol)是一种用于建立、维护和终止实时会话的通信协议。
它是互联网工程任务组(IETF)制定的一项标准协议,广泛应用于IP电话、视频会议和即时通讯等领域。
SIP协议是一个基于文本的协议,它使用类似于HTTP的请求-响应模式进行通信。
SIP协议以会话为中心,允许用户之间发起和结束实时通信。
它定义了一套规则和语法,用于建立、修改和终止会话。
以下是SIP协议的主要特点和工作流程。
1. SIP协议的特点:- 灵活性:SIP协议可以与其他协议(如HTTP、SMTP)结合使用,实现不同应用场景下的实时通信。
- 可扩展性:SIP协议使用基于文本的消息格式,可以通过添加新的请求和响应来扩展功能。
- 基于互联网:SIP协议基于互联网协议(IP),适用于互联网上的实时通信。
- 独立于传输层协议:SIP协议可以使用TCP、UDP、TLS等不同的传输层协议进行通信。
2. SIP协议的工作流程:- 注册:用户在使用SIP服务之前,需要通过注册将自己的通信地址(如IP地址)与用户名进行关联。
- 呼叫建立:一个用户向另一个用户发起呼叫时,需要发送一个INVITE请求。
该请求包含了通信地址和媒体类型等信息。
- 呼叫响应:被呼叫方收到INVITE请求后,可以接受或拒绝呼叫。
接受呼叫时,会返回一个200 OK的响应,表示呼叫可以建立。
- 呼叫结束:一旦通话结束,任何一方都可以发送BYE请求来终止呼叫。
收到BYE请求后,对方会发送一个200 OK的响应,表示呼叫已经结束。
3. SIP协议的消息格式:- 请求消息:SIP协议的请求消息包括请求行、首部字段和消息正文。
请求行包含请求方法(如INVITE、REGISTER)、URI地址和SIP协议版本。
- 响应消息:SIP协议的响应消息包括状态行、首部字段和消息正文。
状态行包含状态码(如200 OK、404 Not Found)和SIP协议版本。
SIP协议

1.简介SIP(Session Initiation Protocol)是一种用于实时通信的协议。
它被广泛应用于语音通话、视频会议、即时消息等领域。
SIP协议提供了一种机制,使得用户可以建立、修改和终止多媒体会话,同时允许参与者之间的媒体数据传输。
SIP协议的主要作用是在通信设备之间建立会话,包括语音通话、视频通话和多媒体会议等。
它定义了一套规则和消息格式,用于发起会话、管理会话状态以及传输媒体数据。
在实时通信中,SIP协议扮演着重要的角色。
它为用户提供了一种灵活且可扩展的方式来建立和管理通信会话。
通过SIP协议,用户可以轻松地与其他用户进行语音通话、视频通话或者发送即时消息。
SIP协议的重要性在于它的开放性和互操作性。
由于SIP是一个开放标准,各种通信设备和应用程序都可以通过实现SIP协议来实现互相之间的通信。
这种互操作性使得不同厂商和平台的设备可以无缝地进行通信,促进了实时通信的发展和普及。
总之,SIP协议在实时通信中发挥着关键的作用。
它通过定义会话的建立和管理方式,为用户提供了一种灵活、可扩展的通信方式,使得语音通话、视频通话和即时消息等应用成为可能。
其开放性和互操作性也为实时通信领域的发展做出了重要贡献。
2.SIP协议的基本原理SIP协议(Session Initiation Protocol)是一种基于文本的协议,用于建立和管理实时通信会话。
它采用了简单灵活的消息交换机制,允许参与者之间进行会话的发起、修改和终止。
SIP消息的格式SIP消息由文本行组成,每行以回车换行符(CRLF)结束。
常见的SIP消息有两种格式:请求消息和响应消息。
•请求消息:用于发起会话请求。
它包含请求行、头部字段和可选的消息体。
请求行指定了请求的方法(如INVITE、REGISTER、BYE等)和URI(统一资源标识符)。
•响应消息:用于回应请求消息。
它包含状态行、头部字段和可选的消息体。
状态行指定了响应的状态码(如200 OK、404Not Found等)和原因短语。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。
eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。
一、介绍
Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。
但缺点也很明显,首先就是可用性差,没有很好的api封装,使得上层应用在调用协议栈时很破碎;其次,只做到了transaction层次的协议过程解析,缺少call、session、dialog等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理能力有限。
eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。
eXosip 增加了call、dialog、registration、subscription等过程的解析,使得实用性更强。
但是eXosip 局限于UA的实现,使得它用于registrar、sip server等应用时极其不容易。
另外,它并没有增加线程并发处理的机制。
而且只实现了音频支持,缺少对视频和其它数据格式的支持。
综合来说,Osip2加上eXosip协议栈仍然是个实现Sip协议不错的选择。
当然需要根据不同的需求来增加更多的内容。
二、Osip2协议栈的组成
Osip2协议栈大致可以分为三部分:sip协议的语法分析、sip协议的过程分析和协议栈框架。
1、Sip协议的语法分析:
主要是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。
不支持RFC3262定义的PRACK。
遵循RFC3264关于SDP的offer/answer模式。
带有SDP的语法分析。
支持MD5加解密算法。
支持Authorization、www_authenticate和proxy_authenticate。
2、Sip协议的过程分析:
主要是osip2部分,基于RFC3261、RFC3264和RFC3265的sip协议描述过程,围绕transaction 这一层来实现sip的解析。
Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。
请求分为Invite类型和Non-Invite类型。
应答分为响应型的应答和确认型的应答。
响应型的应答是指这个应答仅代表对方收到请求。
请求经过处理后都必须返回确认型的应答。
响应型的应答有1xx,确认型的应答包括2xx、3xx、4xx、5xx和6xx。
一个transaction由一个请求和一个或多个响应型应答、一个确认型应答组成。
Transaction根据请求的不同和发送/接收的不同可以分为四类:ict、nict、ist和nist。
Ict是指Invite client transaction,就是会话邀请的发起方。
Nict是指Non-Invite client transaction,是指非邀请会话的发起方。
Ist是指Invite server tranaction,是指会话邀请的接收方。
Nist是指Non-Invite server transaction,是指非邀请会话的接收方。
每种类型的transaction都有自己相应的状态机,Osip2协议栈根据状态机来处理所有的sip 事件,所以这部分就是整个协议栈的核心。
但是因为Osip2只做到transaction这一层,所以它可以忽略掉call、registration等应用的复杂性,显得相当简单,这就使得需要使用它的应用必须要自己处理应用的逻辑。
必须注意的一点是,transaction的资源在Osip里是由协议栈负责释放的,但是在Osip2里改成由使用的应用负责释放。
3、协议栈框架:
框架并不是指代码的某一部分,而是指它的构成形式。
主要有三部分:底层套接字接收/发送,模块间通信管道,上层调用api接口。
Osip2并不实现底层套接字的接收/发送,由eXosip实现,现在只支持UDP的链路连接。
模块间的通信管道包括:transaction的消息管道、jevent的消息管道。
Transaction的消息管道是驱动其状态机的部件,通过不断的接收来自底层套接字的远端信令,或者来自上层调用的指令,根据上述的状态机制来驱动这个transaction的运转。
Jevent的消息管道是eXosip 实现的,用于汇报底层事件,使得调用程序能处理感兴趣的事件。
上层调用的api接口大致有两类:sip协议的调用接口和sdp协议的调用接口。
EXosip封装了大部分的sip协议调用接口,一般来说都不需要直接调用osip2的接口函数。
接口函数很多,在这里就不详述了,函数定义请参照源代码部分的注释。
三、eXosip协议栈的分析
eXosip是Osip2协议栈的封装和调用。
它实现了作为单个sip终端的大部分功能,如register、call、subscription等。
EXosip使用UDP socket套接字实现底层sip协议的接收/发送。
并且封装了sip消息的解释器。
EXosip使用定时轮循的方式调用Osip2的transaction处理函数,这部分是协议栈运转的核心。
透过添加/读取transaction消息管道的方式,驱动transaction的状态机,使得来自远端的sip 信令能汇报给调用程序,来自调用程序的反馈能通过sip信令回传给远端。
EXosip增加了对各个类型transaction的超时处理,确保所有资源都能循环使用,不会被耗用殆尽。
EXosip使用jevent消息管道来向上通知调用程序底层发生的事件,调用程序只要读取该消息管道,就能获得感兴趣的事件,进行相关的处理。
EXosip里比较重要的应用有j_calls、j_subscribes、j_notifies、j_reg、j_pub、osip_negotiation 和authinfos。
J_calls对应呼叫链表,记录所有当前活动的呼叫。
J_reg对应注册链表,记录所有当前活动的注册信息。
Osip_negotiation记录本地的能力集,用于能力交换。
Authinfos 记录需要的认证信息。
四、总结
本文是从使用的角度去阐述分析Osip2和eXosip协议栈,并不涉及很多的细节,需要进一步了解协议栈的结构和实现,可参考《osip》一文。
分析了开源SIP协议栈oSIP的运行机制。
在oSIP基础上,设计实现了一个基于S3C2410A微处理器平台,使用WinCE操作系统的嵌入式SIP 终端。
1、引言
目前,IETF的SIP协议(Session Initiate Protocol, 会话初始协议)已获得业界越来越多的关注和支持,正逐步成为下一代网络(NGN)中的核心协议
之一[1]。
SIP协议相对简单、易于实现、可扩展性强、更适合IP网络,被广泛的用于VoIP系统的组建[2]。
oSIP及其扩展eXosip作为开源的SIP协议栈,以其结构简单、功能丰富、易于移植等优点成为在嵌入式系统上构建VoIP应用的首选。
本文分析了oSIP协议栈的运行机制,设计实现了将oSIP协议栈移
植到嵌入式操作系统并以此为基础开发嵌入式SIP客户端的方案。
2、oSIP协议栈
2.1 SIP协议
SIP采用C/S模式的工作方式,包含两类元素:SIP用户代理(User Agent, UA)和SIP服务器。
根据用户代理在会话中扮演的角色不同又可分为用户代理客户机(User Agent Client, UAC)和用户代理服务器(User Agent Server, UAS),前者发起呼叫请求,后者响应呼叫请求。
2.2 oSIP协议栈
oSIP是遵循IETF标准,使用ANSI C编写,源代码开放的SIP协议栈。
oSIP主要有下列优点:
(1)结构小巧简单,只有400K左右,适合在嵌入式系统上应用;
(2)可移植性好,已被成功的应用于Solaris、HP Unix、VxWorks、Windows和GNU/Linux[3] (2.2.16和2.4.7)等系统中;
(3)工作稳定、兼容性强。
oSIP主要由解析模块、工具模块和状态机模块构成,其核心是状态机模块[4](如图1所示)。
图1 oSIP结构
解析模块完成对SIP请求和响应进行封装与解析处理。
解析模块又可分为SIP解析、SDP解析与URL解析。
工具模块主要提供一些处理工具用于对话管理和SDP协商。
状态机模块负责对某个事务(如注册过程、呼叫过程等)状态的维持及处理,并在特定的状态下触发响应的事件或回调函数。
根据RFC描述中关于SIP协议事务层的定义,oSIP协议栈有4种状态机:客户端邀请事务(ICT),客户端非邀请事务(NICT),服务器端邀请事务(IST),服务器端非邀请事务(NIST)。
前两种状态机是由客户端发起的,后两种状态机是由服务器发起的,这4种状态机涵盖了SIP的各种事务类型。
其中ICT(如图2所示)是SIP客户端中最常见的事务。