sip协议解析与实现(c和c 使用osip)11
SIP协议解析与实现

SIP协议解析与实现本文将按照RFC3261逐步的介绍SIP协议,介绍了c和c++语言的实现,分析了osip库的使用和实现。
第一章概述一概述SIP协议是一个基于应用层的会话控制协议。
它可以创建、修改、终止多媒体会话(会议),也可以邀请参与者加入到一个现有的会话。
因为SIP是一个基于应用层的协议,所以它不是一套完整的通讯系统方案,它需要和其它的方案或者协议结合起来实现整套系统。
例如,实时传输协议(RTP)(RFC1889)用来传输音视频等实时的流媒体数据。
实时流协议(RTSP)(RFC2326)用来控制媒体流的传递。
媒体网关控制协议(MEGACO)(RFC3015)用来控制PSTN网关。
由此可见,SIP协议应该用来组合其它协议,从而实现完整的服务。
但是,SIP基础的功能和操作不依赖于其它协议。
二第一个例子下面引用RFC3261的例子来说明sip的基本功能,包括:定位终端,发送通讯请求,协商会话参数,建立会话和撤销建立的会话。
图1显示了用户Alice和Bob使用SIP交换信息的一个典型的例子(每一个消息用字母F和一个数字来标号,标号的前面有一个简短的消息类型说明)。
在这个例子中,Alice使用一个在她的PC机中的SIP应用程序呼叫Bob,Bob 使用他的SIP电话,这个SIP电话登录了互联网。
同时,请注意两个SIP代理服务器在Alice 和Bob的会话的建立中起到的作用。
Alice呼叫Bob是使用他的SIP标识符。
SIP标识符是一种URI(Uniform Resource Identifier),称之为SIP URI。
SIP URI格式很象email地址,包含一个用户名和一个主机名,如:sip:bob@。
这里是Bob的SIP服务提供者的域名。
Alice 的SIP URI是:sip:alice@。
SIP也支持安全URI,叫做SIPS URI,例如,sips:bob@。
一个向SIPS URI的呼叫使用加密传输(也就是TLS)来携带从呼叫者到被呼叫者所有的SIP消息。
SIP协议及其应用

一 SIP协议介绍
Daniel<sip:Collins@
Boss<sip:Manager@
7 SIP:协议操作 创建、修改和释放会话
维护会话 对会话承载的内容不作限制, 由SDP协议控制 会话可以承载: 语音/视频通话 游戏 即时消息 Presence
INVITE sip:manager@ SIP/2.0 Cseq: 1 INVITE Content-Length:230 Content-Type:application/sdp v=0 o=collins 123456 001 IN IP4 s=vacation i=Discussion about time off work c=IN IP4 t=0 0 m=audio 4444 RTP/AVP 2 4 15 a=rtpmap 2 G726/8000 a=rtpmap 4 G723/8000 a=rtpmap 15 G728/8000
返回
二 实时传输协议—RTP/RTCP
实时传输协议RTP(Realtime Transport Protocol)为要求实时特性的数据,如 交互式音频和视频,提供端到端的传输服务,这些服务包括负载类型标志、顺 序号、时间戳和传递监听等信息。 RTP是一个不可靠的协议,本身不提供任何机制来确保数据的按时发送或保证服 务的质量,甚至不能保证分组的顺序传递,而是依赖于更低层的服务来实现。
Caller@ 请求Collins@
Collins@
PC终端
响应
PC终端
一 SIP协议介绍
3 SIP协议的基本功能 3.1 用户定位(User location)- 确定参与通信的 终端 3.2 用户能力(User capabilities)- 决定通信所 采用的媒体和媒体参数 3.3 用户可用性(User availability)- 决定被叫 方是否愿意加入通信过程 3.4 呼叫建立(Call setup)-主叫方和被叫方的连 接和参数的建立 3.5 呼叫终止(Call Terminated)—释放与此呼叫相 关的资源
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原理分析与详解ppt课件

22
SIP消息头实例:
----------------------------------------------------------------SIP Header
----------------------------------------------------------------INVITE sip:5120@192.168.36.180 SIP/2.0 Via: SIP/2.0/UDP 192.168.6.21:5060 From: sip:5121@192.168.6.21 To: <sip:5120@192.168.36.180> Call-ID: c2943000-e0563-2a1ce-2e323931@192.168.6.21 CSeq: 100 INVITE Expires: 180 User-Agent: Cisco IP Phone/ Rev. 1/ SIP enabled Accept: application/sdp Contact: sip:5121@192.168.6.21:5060 Content-Type: application/sdp
6
(2) SIP 网络服务器 SIP 网络服务器的主要功能是名字解析和 用户定位。主要分为代理服务器、重定向 服务器、注册服务器三类。
7
代理服务器: I.为其它的客户机代理,进行SIP消息的转
接和转发的功能。消息机制与UAC和UAS相 似. II.对收到的请求消息进行翻译和处理后, 传递给其他的服务器. III.对SIP请求及响应进行路由.
33
8.被叫无应答流程二
34
9.遇忙呼叫前转
SIP协议原理及应用

Sip:alice@10.1.2.3
Sip:alice@;method=REGISTER
一.4
描述会话信息的协议,包括会话的地址、时间、媒体和建立等信息
一.4.1
会话名和目的
会话激活的时间段
构成会话的媒体
接收这些媒体所需的信息(地址、端口、格式)
会话所用的带宽信息(任选)
会话负责人的联系信息(任选)
二.1.1
SIP协议是一个Client/Sever协议。SIP端系统包括用户代理客户机(UAC)和用户代理服务器(UAS),其中UAC的功能是向UAS发起SIP请求消息,UAS的功能是对UAC发来的SIP请求返回相应的应答。在SS(SoftSwitch)中,可以把控制中心SoftSwitch看成一个SIP端系统。
Application Server:运行和管理增值业务的平台,与SoftSwitch用SIP进行通信。
Media Server:提供媒体和语音资源的平台,同时与Media Gateway进行RTP流的传输。
使用SIP作为SoftSwitch和Application Server之间的接口,可以实现呼叫控制的所有功能。同时SIP已被SoftSwitch接受为通用的接口标准,从而可以实现SoftSwitch之间的互连。
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等)和原因短语。
网络协议分析与实现 03-1.SIP协议分析

RRC RRC
当RRC连接建立在公共信道上时,因为使用已经建立好的小区公共资源,所 以不用建立无线链路和用户面的数据传输承载,只需将UE使用的逻辑信道映 射在小区公共信道上,其余过程与RRC连接建立在专用信道的情况相似
• 申请专用信道适合大数据量传输的场景 • 不管建立在公用还是专用信道,都必须经过公用信 道处理RRC
BEIJING UNIVERSITY OF POSTS AND TELECOMMUNICATIONS STATE KEY LABORATORY OF NETWORKING AND SWITCHING TECHNOLOGY
“信令风暴”的解释
无线频谱资源是不可再生资源
公用信道相当于共路信令链路 公用信道
“信令风暴”到底是什么?
• 智能手机为省电,引入休眠特性,6-10s没有数据、所以耗电量很大,厂家为了节电使用了快速休眠功能, 即一段时间没有数据传送,手机会不经网络侧准许而释放链接。 手机QQ、手机微博、微信等应用会在后台定时刷新用户状态(带来大规模小数据量 的频繁交互) 该类业务流量的建立和释放一般是通过信令信道承载的
谁动了运营商的奶酪?
智能终端比例大幅增长,2013年预计超过50%(自中国互联网中心)
业务需求越来 越多样化,带 来时延短、速 度快、流量大 等特点
数据业务年均增长155%(Mobile Network Offloading,ABI)
信令风暴
BEIJING UNIVERSITY OF POSTS AND TELECOMMUNICATIONS STATE KEY LABORATORY OF NETWORKING AND SWITCHING TECHNOLOGY
• IMS(FMC/4G核心网)
sip协议详解

SIP协议详解(中文)1、SIP协议介绍Internet的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的数据的交换。
由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者可能是在代理间移动,他们可能可以有多个名字,他们中间的通讯可能是基于不同的媒介(比如文本,多媒体,视频,音频等)-有时候是多种媒介一起交互。
人们创造了无数种通讯协议应用于实时的多媒体会话数据比如声音,影像,或者文本。
本SIP(会话初始协议)和这些协议一样,同样允许使用Internet端点(用户代理)来寻找参与者并且允许建立一个可共享的会话描述。
为了能够定位精确的会话参与者,并且也为了其他的目的,SIP允许创建基础的network hosts(叫做代理服务器),并且允许终端用户注册上去,发出会话邀请,或者发出其他请求。
SIP是一个轻形的,多用途的工具,可以用来创建,修改和终止会话,它独立运作于通讯协议之下,并且不依赖建立的会话类型。
2、SIP协议功能概况SIP是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话(或者会议)例如Internet 电话。
SIP也可以邀请参与者参加已经存在的会话,比如多方会议。
媒体可以在一个已经存在的会话中方便的增加(或者删除)。
SIP显示的支持名字映射和重定向服务,这个用于支持个人移动业务-用户可以使用一个唯一的外部标志而不用关系他们的实际网络地点。
SIP在建立和维持终止多媒体会话协议上,支持5个方面:用户定位:检查终端用户的位置,用于通讯。
用户有效性:检查用户参与会话的意愿程度。
用户能力:检查媒体和媒体的参数。
建立会话:”ringing”,建立会话参数在呼叫方和被叫方。
会话管理:包括发送和终止会话,修改会话参数,激活服务等等。
SIP不是一个垂直集成的通讯系统。
SIP可能叫做是一个部件更合适,它可以用作其他IETF协议的一个部分,用来构造完整的多媒体架构。
比如,这些架构将会包含实时数据传输协议(RTP)(RFC 1889)用来传输实时的数据并且提供QoS反馈,实时流协议(RSTP)(RFC 2326)用于控制流媒体的的传输,媒体网关控制协议(MEGACO)(RFC 3015)用来控制到公共电话交换网(PSTN)的网关,还有会话描述协议(SDP)(RFC 2327)用于描述多媒体会话。
sip协议详解

sip协议详解SIP协议详解。
SIP(Session Initiation Protocol)是一种应用层控制协议,用于建立、修改和终止多媒体会话,如VoIP电话、视频会议和即时消息。
它是一种基于文本的协议,采用类似HTTP的请求-响应模型。
SIP协议的设计目标是简单、灵活、可扩展和易于实现。
SIP协议的核心功能包括会话管理、用户定位、呼叫建立和终止。
它使用统一资源标识符(URI)来标识终端用户或终端设备,允许用户在不同网络之间进行无缝切换。
SIP还支持呼叫保持、呼叫转移、多方通话和媒体协商等高级功能。
SIP协议的消息格式包括请求消息和响应消息。
请求消息由方法、URI、协议版本和消息头组成,用于向服务器发起请求。
响应消息由协议版本、状态码、原因短语和消息头组成,用于对请求进行响应。
常见的SIP方法包括INVITE(邀请)、ACK(确认)、BYE(结束)、CANCEL(取消)和REGISTER(注册)等。
SIP协议的工作流程可以简单描述为,用户代理向代理服务器发送请求,代理服务器根据用户的请求进行路由选择,最终找到被叫用户的位置并向其发送请求,被叫用户接受请求后进行响应,双方建立会话并进行媒体传输,会话结束后发送BYE消息进行终止。
SIP协议的可扩展性是其设计的重要特点之一。
SIP允许通过扩展头字段和方法来支持新的功能和应用,因此可以满足不断变化的通信需求。
此外,SIP还与其他协议如SDP(Session Description Protocol)、RTP(Real-time Transport Protocol)和RTCP(Real-time Control Protocol)等配合使用,实现多媒体会话的建立和传输。
总的来说,SIP协议作为一种开放、灵活的多媒体会话控制协议,被广泛应用于VoIP、视频会议、即时消息等通信领域。
它的设计简单、功能丰富、可扩展性强,为多媒体通信提供了可靠的基础。
随着通信技术的不断发展,SIP协议将继续发挥重要作用,推动通信行业的进步和创新。
sip协议原理分析及总结

sip协议原理分析及总结SIP协议学习总结1、SIP协议定义SIP(Session Initiation Protocol,即初始会话协议)是IETF提出的基于⽂本编码的IP电话/多媒体会议协议。
⽤于建⽴、修改并终⽌多媒体会话。
SIP 协议可⽤于发起会话,也可以⽤于邀请成员加⼊已经⽤其它⽅式建⽴的会话。
多媒体会话可以是点到点的话⾳通信或视频通信,也可以是多点参与的话⾳或视频会议等。
SIP协议透明地⽀持名字映射和重定向服务,便于实现ISDN,智能⽹以及个⼈移动业务。
SIP协议可以⽤多点控制单元(MCU)或全互连的⽅式代替组播发起多⽅呼叫。
与PSTN 相连的IP电话⽹关也可以⽤SIP协议来建⽴普通电话⽤户之间的呼叫。
SIP协议在IETF多媒体数据及控制体系协议栈结构的位置H.323SIP RTSP RSVP RTCPH.263 etc.RTP TCP UDPIPPPP Sonet AAL3/4AAL5ATM EthernetPPPV.34SIP协议⽀持多媒体通信的五个⽅⾯:◆⽤户定位:确定⽤于通信的终端系统;◆⽤户能⼒:确定通信媒体和媒体的使⽤参数;◆⽤户有效性:确定被叫加⼊通信的意愿;◆会话建⽴:建⽴主叫和被叫的呼叫参数;◆会话管理:包括呼叫转移和呼叫终⽌;SIP协议的结构SIP是⼀个分层的协议,也就是说SIP协议由⼀组相当⽆关的处理层次组成,这些层次之间只有松散的关系。
SIP最底层的是它的语法和编码层。
编码⽅式是采⽤扩展的Backus-Naur Form grammar (BNF范式)。
第⼆层是传输层。
它定义了⼀个客户端发送请求和接收应答的⽅式,以及⼀个服务器接收请求和发送应答的⽅式。
所有的SIP要素都包含⼀个通讯层。
第三层是事务层。
事务是SIP的基本组成部分。
⼀个事务是UAC向UAS发送的⼀个请求以及UAS向UAC发送的⼀系列应答。
事务层处理应⽤服务层的重发,匹配请求的应答,以及应⽤服务层的超时。
sip协议解析与实现(c和c 使用osip)11

sip协议解析与实现(c和c++使用osip)11第八章查询能力SIP的OPTIONS方法允许一个UA查询另外一个UA或者一个代理服务器的能力。
这能让客户端探测关于它们所支持的方法、内容类型、扩展和编码等信息,而不用"呼叫(ringing)"另外一端。
例如,在客户端插入了一个Require头域到INVITE 中,并列出了不确定目标UAS是否支持的能力之前,它可以先使用OPTIONS方法查询目标UAS是否要查询的选项被目标UAS在应答的Supported头域中返回。
所有UA必须支持OPTIONS方法。
OPTIONS方法的目标使用Request-URI来标识,因为它可以表示不同的UA或者SIP服务器。
如果OPTIONS被定位到一个代理服务器,Request-URI不由客户端设置,这类似于REGISTER请求设置Request-URI的方法。
如果服务器接收到一个Max-Forwards头域的值为0的的OPTIONS请求,它要对这个请求进行应答而不用管Request-URI.这个行为与HTTP/1.1一致。
这个行为可以被用于"追踪路由线路(traceroute)"功能,从而使用发送一系列递增的Max-Forwards值的OPTIONS请求的方法检查消息路由过程中个别服务器的能力。
作为一般UA的行为,如果OPTIONS长时间没有应答,事务层能够返回一个超时错误。
这将指出,目标是不可到达的并且查询的能力是不可以使用的。
OPTIONS请求可能由建立一个对话的一端发送,用于查询对端在后面的对话中可能会被使用到的能力。
第一节构造OPTIONS请求OPTIONS请求使用像RFC3261第8.1.1讨论的标准的构造SIP请求的规则来构造。
OPTIONS可能会有一个Contact头域。
应该包含一个Accept头域用来指出UAC希望接收到的应答中的消息体类型。
典型的,这可能被设置成用来描述UA的媒体能力的类型,比如,SDP(application/adp)。
SIP协议详解

SIP协议详解SIP 协议详解2013年参与过⼀个“视频通讯的App”项⽬,使⽤Sip协议通信。
当时通信协议这块不是⾃⼰负责,加上时间紧、任务重等⽅⾯的原因,⼀直未对Sip协议进⾏过深⼊的了解。
2020年春天疫情突发,宅在家⾥终于有了空余时间。
这⾥来详细了解⼀下Sip协议。
以下内容⼤致分为以下⼏个部分:协议简介两种Sip会话模式Session Model与Pager Model;Sip 消息体结构Sip 消息举例⼀、Sip协议简介: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技术对于他们的远意义。
⼆、Sip消息的两种会话模式在Sip IM通信应⽤过程中,⼀般存在着两种会话模式:Session ModelPager Model2.1、Session Model会话中,对于消息体内容⼤于1300字节时,⼀般采⽤Session Model。
其会话建⽴过程如下图所⽰:主叫⽅A呼叫被叫⽅B:步骤1:主叫⽅A发送INVITE请求到代理服务器;步骤2:代理服务器发送100 Trying 响应主叫⽅A;步骤3~6:代理服务器搜索被叫⽅B的地址,获取地址后转发INVITE请求;步骤7~9:被叫⽅B⽣成的180 振铃响应,返回给主叫⽅A;步骤10~12:被叫⽅B⽣成的200 OK响应,返回给主叫⽅A;步骤13~17:主叫⽅A收到被叫⽅B200 OK响应后,向被叫⽅B发送⼀个ACK,会话建⽴;步骤18~20:会话结束后,任何参与者(A或B)都可以发送⼀个BYE请求来终⽌会话;步骤21~23:主叫⽅A发送200 OK响应来确认BYE,会话终⽌。
SIP协议参数详解

SIP协议参数详解1.1 SIP消息分类SIP协议是以层协议的形式组成的,就是说它的⾏为是以⼀套相对独⽴的处理阶段来描述的,每个阶段之间的关系不是很密切。
SIP协议将Server和User Agent之间的通讯的消息分为两类:请求消息和响应消息。
请求消息:客户端为了激活特定操作⽽发给服务器的SIP消息,包括INVITE、ACK、BYE、CANCEL、OPTION和UPDATE消息。
SIP请求的6种⽅法: 1、邀请(INVITE)——邀请⽤户加⼊呼叫 2、确认(ACK)——确认客户机已经接收到对INVITE的最终响应 3、可选项(OPTIONS)——请求关于服务器能⼒的信息 4、再见(BYE)——终⽌呼叫上的两个⽤户之间的呼叫 5、取消(CANCEL) 6、注册(REGISTER)——提供地址解析的映射,让服务器知道其它⽤户的位置响应消息:服务器向客户反馈对应请求的处理结果的SIP消息,包括1xx、2xx、3xx、4xx、5xx、6xx响应1.2 SIP消息结构请求消息和响应消息都包括SIP消息头字段和SIP消息体字段;SIP消息头主要⽤来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息;SIP消息体主要⽤来描述本次会话具体实现⽅式;1.3 消息格式1.3.1 请求消息格式SIP请求消息的格式,由SIP消息头和⼀组参数⾏组成,如图3-1所⽰。
通过换⾏符区分命令⾏和每⼀条参数⾏。
图1-1 SIP请求消息结构注意:参数⾏的顺序不是固定的。
对应的参数解释见6.3 。
消息体定义:Call-ID:头字段是⽤来将消息分组的唯⼀性标识 From:头字段是指⽰请求发起⽅的逻辑标识,它可能是⽤户的注册地址。
From头字段包含⼀个URI和⼀个可选的显⽰名称 CSeq:头字段⽤于标识事务并对事务进⾏排序。
它由⼀个请求⽅法和⼀个序列号组成,请求⽅法必须与对应的请求消息类型⼀致 Max-Fowords:头字段限定⼀个请求消息在到达⽬的地之前允许经过的最⼤跳数。
SIP协议解析与实现(c和c++使用osip)9

SIP协议解析与实现(c和c++使用osip)9第六章取消一个请求前面一章介绍了UA对所有方法创建请求和处理请求生成应答的一般性行为。
这一章我们讨论一个有目的方法,叫做CANCEL。
CANCEL请求与它名字暗示的一样,用来取消一个客户端先前发送的请求。
详细的说,它使UAS终止对这个请求的处理并为这个请求构造一个错误应答。
CANCEL请求对已经发送了最终应答的请求无效,所以经常对那些需要服务器长时间处理的请求使用CANCEL。
这样,对于需要用很长时间应答的INVITE请求来说,非常合适使用CANCEL 请求来取消它。
一个接收到取消INVITE的CANCEL请求且还没有发送最终应答的UAS将“停止响铃”,并且立即对这个INVITE请求发送一个特定错误代码(487)的应答。
CANCEL请求可以被代理或UAC创建和发送。
RFC3261第15节讨论在什么情况下UAC将CANCEL一个INVITE请求。
RFC3261第16.1节讨论代理服务器的CANCEL请求。
有状态的代理服务器要对CANCEL进行应答,而不是简单的转发从网络流中下一个元素收到的应答。
因此,CANCEL是一个“逐跳式”的请求,也就是每一个有状态的代理都需要对它进行应答。
第一节客户端行为一个CANCEL请求不应该被用来取消一个非INVITE请求。
因为非INVITE请求都是立即被应答,为非INVITE请求发送CANCEL会引起竞争(非INVITE和CANCEL谁先被处理)。
下面的流程用来构造CANCEL请求。
CANCEL请求的Request-URI, Call-ID, T o, CSeq的数字部分和From头域以及这些头域中的标记都要与要被取消的请求一样。
一个由客户端构造的CANCEL请求必须只包含一个Via头域值,这个值与要被取消的请求的Via头域中顶部的值一致。
让CANCEL中这些头域的值与要被取消的请求头域值保持一致,是为了匹配需要取消的请求(RFC3261第9.2节介绍如何匹配)。
sip协议

SIP本词条主要介绍SIPSIP是类似于HTTP的基于文本的协议。
SIP可以减少应用特别是高级应用的开发时间。
由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义。
一、介绍什么是SIPSIP(Session Initiation Protocol)是一个应用层的信令控制协议。
用于创建、修改和释放一个或多个参与者的会话。
这些会话可以好似Internet多媒体会议、IP电话或多媒体分发。
会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。
SIP是类似于HTTP的基于文本的协议。
SIP可以减少应用特别是高级应用的开发时间。
由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP 技术对于他们的深远意义。
使用SIP,服务提供商可以随意选择标准组件。
不论媒体内容和参与方数量,用户都可以查找和联系对方。
SIP 对会话进行协商,以便所有参与方都能够就会话功能达成一致以及进行修改。
它甚至可以添加、删除或转移用户。
SIP它既不是会话描述协议,也不提供会议控制功能。
为了描述消息内容的负载情况和特点,SIP 使用Internet 的会话描述协议(SDP) 来描述终端设备的特点。
SIP 自身也不提供服务质量(QoS),它与负责语音质量的资源预留协议(RSVP) 互操作。
它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务(RADIUS) 以及负责实时传输的RTP 等多个协议。
SIP 的一个重要特点是它不定义要建立的会话的类型,而只定义应该如何管理会话。
有了这种灵活性,也就意味着SIP可以用于众多应用和服务中,包括交互式游戏、音乐和视频点播以及语音、视频和Web 会议。
SIP消息是基于文本的,因而易于读取和调试。
新服务的编程更加简单,对于设计人员而言更加直观。
SIP协议分析

其它省IMS网络
其它省IMS网络
传输设备 合肥本地传输网
软交换关口局 铁通 电信、联通
8505
8505
传输设备
地市城域网 CMNET
统一CENTREX平台 一号通平台
彩铃平台
对SBC的理解
SBC是指会话边界控制器(session border controller), 部署在接入网和IMS核心网之间。
SBC位于IMS网络边缘,作为IMS核心网的信 令代理和媒体代理,用户终端和IMS网络之间的所 有信令消息以及用户终端之间的所有媒体消息都需 要经过该设备进行转接,同时SBC应能够接受PCSCF的控制,实现地址转换和门控等功能。固定 终端接入时获得的IMS网络入口点的地址将是SBC 的地址。
1
2
SIP协议概述
SIP 消息 – 方法和响应
扩展的方法: MESSAGE:请求一个即时消息
SUBSCRIBE :签订一个通知事件
NOTIFY:发送一个通知事件
UPDATE:在建立呼叫阶段修改会话属性
PUBLISH:发送事件状态给状态服务器 PRACK:标识临时响应的可靠性
SIP 消息 – 方法和响应
一个简单的呼叫流程:
IETF RFC 3261 Session Initiation Protocol
”
SIP的发展
1995年研究制定 1999年提议成为的一个标准,即 RFC 2543。 2001 年发布了 SIP 规范 RFC 3261,标志着 SIP 的基础已 经确立—3GPP IMS在该版本上进行扩充 其他 主要借鉴了Web网的HTTP协议。 目前仍在不断的发展之中,相关设备制造商和业务 供应商联合成立了一个关于SIP的论坛: .
SIP协议过程概念及分析

SIP协议过程概念及分析UAC User Agent Client(UAC):用代理客端。
用代理客端是一个的概念户户户户逻辑,他建一个新求创请,并且用客事状机送个求户务态发这请一个合法的SIP 求必至少包含如下域请须头:TO, FROM, Cseq, Call-ID, Max- Forwards, Via; 些字段在所有这SIP 求中必包含。
请须TO To 域是第一个并且也是最先指定求的” ”接收地头请逻辑,或者是个求的用或者源的这请户资address-of- record 。
To 域允有一个示用的姓名。
通常用会建采用人工界面中入的头许显户议输To 域头,可能手工入输个这URI 或者从地址本中。
选择在会外的求中话请,不能包含To tag 字段,在to 域中的头tag 是用来在中做志的。
既然没有建对话标对话还立,那么tag 就不能存在。
“tag”参数用于SIP 消息中的To 和From 域。
它作一个通用的机制的一部分来唯一志一头为标个对话, 个机制用这Call-ID 和两个从参与者的对话tag 来志一个。
当标对话UA 在外出对话发一个求请时,它只包含了From tag,提供了对话ID 的”一半”。
根据答建完成对话应创, 个答这应在To 域中提供了头对话ID 的另一半。
SIP 求的分支意味着一个个求可以建多个请单请创对话。
个也解了何需要两方的志这释为对话标;如果没有被叫方的志标,呼叫方不能分和消除由个辩单求建的多个。
请创对话From From 域包含了求起者的志头请发逻辑标,可能是用的户address-of-record。
From 域也包含一个头URI 并且可以包含一个示的姓名。
显SIP 可以用个域来求的和一个行求的理(比如这头实现对请检查选择规则进对请处,自的呼叫拒动绝,凡是x 人来的西发过东,一律无视) From 域必包含一个由须UAC 生的新的” 产tag”参数。
Call-ID Call-ID 是一个在一系列消息中,区分一消息的唯一志。
SIP协议简介

SIP简介,第1部分:SIP初探• 2007-01-29 11:32 Emmanuel Proulx dev2dev我要评论(0)会话发起协议(Session Initiation Protocol,SIP)是一种信令协议,它对于通信业有着重要的意义。
本文从技术上对SIP进行了一般性的介绍,并说明了SIP如何为通信解决方案提供重要支持。
摘要会话发起协议(Session Initiation Protocol,SIP)是一种信令协议,它对于通信业有着重要的意义。
本文从技术上对SIP进行了一般性的介绍,并说明了SIP如何为通信解决方案提供重要支持。
简介我曾经构想过一种软件,它可以“浮于”应用程序之上,提供辅助作用。
这不是一个哑的“帮助”系统,而是一个活动的技术支持代理,可以在Internet上进行讨论。
那时曾有人告诉我,“现有的工具、库、协议或带宽实现不了这样的要求!”时代已经不同了!许多人家中已经拥有基于DSL、光纤和其他技术的宽带网络。
存在大量高质量的工具和库,无论是商业的还是开源的。
标准驱动应用。
现在是时候来实现上述创新思路了。
了解SIP首先,我将向您介绍SIP,也就是会话发起协议。
SIP是一种轻量级的可扩展请求/响应协 议,用于在两个端点之间开始通信会话。
这听起来是不是很熟悉?SIP在概念上源自于HTTP和SMTP,但是它的目的却不同。
可以把SIP消息与CB(民 用波段)隐语10-code和Q-signal进行比较。
在这个例子中,真正的消息包含在专用的呼叫协商消息中。
SIP是IETF于1999年提出的,在2002年进行了修订。
RFC 3261对它进行了描述。
本文中有关SIP的信息就选自RFC。
对SIP存在很多扩展,这些扩展中的很多都能在SIP-related RFCs and drafts清单中找到。
SIP有哪些优点呢?通常情况下,两个端点使用它来协商一次“呼叫”。
这里的协商包括介质(文本、语音等)、传输(通常是RTP、Real Time Protocol)和编码(codec)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sip协议解析与实现(c和c++使用osip)11
第八章查询能力
SIP的OPTIONS方法允许一个UA查询另外一个UA或者一个代理服务器的能力。
这能让客户端探测关于它们所支持的方法、内容类型、扩展和编码等信息,而不用"呼叫(ringing)"另外一端。
例如,在客户端插入了一个Require头域到INVITE 中,并列出了不确定目标UAS是否支持的能力之前,它可以先使用OPTIONS方法查询目标UAS是否要查询的选项被目标UAS在应答的Supported头域中返回。
所有UA必须支持OPTIONS方法。
OPTIONS方法的目标使用Request-URI来标识,因为它可以表示不同的UA或者SIP服务器。
如果OPTIONS被定位到一个代理服务器,Request-URI不由客户端设置,这类似于REGISTER请求设置Request-URI的方法。
如果服务器接收到一个Max-Forwards头域的值为0的的OPTIONS请求,它要对这个请求进行应答而不用管Request-URI.
这个行为与HTTP/1.1一致。
这个行为可以被用于"追踪路由线路(traceroute)"功能,从而使用发送一系列递增的
Max-Forwards值的OPTIONS请求的方法检查消息路由过程中个别服务器的能力。
作为一般UA的行为,如果OPTIONS长时间没有应答,事务层能够返回一个超时错误。
这将指出,目标是不可到达的并且查询的能力是不可以使用的。
OPTIONS请求可能由建立一个对话的一端发送,用于查询对端在后面的对话中可能会被使用到的能力。
第一节构造OPTIONS请求
OPTIONS请求使用像RFC3261第8.1.1讨论的标准的构造SIP请求的规则来构造。
OPTIONS可能会有一个Contact头域。
应该包含一个Accept头域用来指出UAC希望接收到的应答中的消息体类型。
典型的,这可能被设置成用来描述UA的媒体能力的类型,比如,SDP(application/adp)。
OPTIONS请求的应答被认为是有限定范围的,它被限定在原始请求的Request-URI内。
只有当OPTIONS被作为建立对话的一部分发送,它保证会话中后继的请求也由应答OPTIONS的服务器所接收时,对OPTIONS请求的应答才是可用的。
OPTIONS请求的例子:
OPTIONS sip:carol@ SIP/2.0
Via: SIP/2.0/UDP
;branch=z9hG4bKhjhs8ass877
Max-Forwards: 70
To: <sip:carol@>
From: Alice
<sip:alice@>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 63104 OPTIONS
Contact: <sip:alice@>
Accept: application/sdp
Content-Length: 0
第二节处理OPTIONS请求
对OPTIONS请求的应答使用RFC3261第8.2.6节描述的对标准SIP请求的应答规则。
应答状态码必须与对INVITE应答的状态码采用相同的选择。
例如,一个200(OK)将会在UAS准备接受一个呼叫时候被返回,一个486(Busy Here)将会在UAS繁忙的时候被返回。
这允许OPTIONS日内供求用来探测UAS的基础状态,基础状态是指它可以指出这个UAS是否能够接受一个INVITE请求。
对接收到的对话内OPTIONS请求构造的200(OK)应答与构造对话外的OPTIONS请求的应答一样,并且与对话没有任何冲突。
由于代理服务器处理OPTIONS和INVITE请求不同,所以对OPTIONS的使用方法是有一定限制的。
一个有分支的
INVITE能够引起返回多个200(OK)应答。
而一个分支的OPTIONS请求将只引起一个200(OK)应答,因为OPTIONS 请求被代理服务器视为非INVITE请求来处理。
参看
RFC3261第16.7节的详细说明。
如果代理服务器对OPTIONS进行200(OK)应答,在应答中应该列出这个服务器的能力。
应答不能包含消息体。
Allow,Accept,Accept-Encoding,Accept-Language和Supported头域应答出现在对OPTIONS请求的200(OK)应答中。
如果是代理服务器构造的应答,Allow头域应该被忽略。
这是因为代理服务器不针对方法进行处理。
Contact头域可能出现在200(OK)应答中,并且包含与3xx应答包含相同的语义。
也就是说,它们可能列出可以接触到的用户的一系列名字或者一系列方法(这样可以重定向请求)。
Warning 头域可能出现在应答中。
可能发送一个消息体,消息体的类型由OPTIONS请求的Accept头域决定(如果没有Accept头域,默认为application/sdp)。
如果类型中包括一个可以描述媒体能力的类型,UAS应该为此在应答中包含一个消息体。
为application/sdp构造一个这样的消息体将在[13]中描述。
UAS构造的OPTIONS应答的例子(符合RFC3261第11.1节的请求):
OPTIONS sip:carol@ SIP/2.0
Via: SIP/2.0/UDP
;branch=z9hG4bKhjhs8ass877 Max-Forwards: 70
To: <sip:carol@>
From: Alice
<sip:alice@>;tag=1928301774 Call-ID: a84b4c76e66710
CSeq: 63104 OPTIONS
Contact: <sip:alice@>
Accept: application/sdp
Content-Length: 0。