SIP Session Initiation Protocol 会话发起协议能够发起、更改和终止一个会话[历史]
- 多媒体系统不能邀请指定的用户加入一个会话
- M. Handly和E. Schooler于1996年2月向IETF递交草案,即SIPv1
- H. Schulzrinne同时提交了一份SCIP(Simple Conference Invitation Prorotol)草案
- 两者合并,96年12月形成SIPv2
- 99年2月形成RFC2543,2002年定稿RFC3261
- SIP组织:SIPPING、SIMPLE、PINT、SPIRITS
[特点][SIP能力] - 用户定位
- 用户能力交换
- 用户状态判断
- 呼叫管理
- 号码传递
- 个人移动性
- 主被叫鉴权
- 多播会议
- Instant Message
[SIP URI]格式
SIP:User:Pass@Host:Port;Param;Param?Header=Value
例如
Sip:acn@test.edu.cn
Sip:acn:pass@test.org;transport=tcp?subject=project
Sip:acn@59.64.156.88
优点
支持各种形式,并且全局唯一,很好的支持用户移动性管理
[SIP网元] - 用户代理(User Agent)
- 通常包括User Agent Client和User Agent Server
- 代理服务器(Proxy Server)
- 注册服务器(Registar)
- 定位服务器(Location Server)
- 重定向服务器(Redirect Server)

[两类代理服务器] - 有状态服务器
- 记录所有的请求和响应,包括接受的、转发的。可以尝试多个可能的用户位置,返回最好的响应
- 收到INVITE请求时返回100 Trying响应
- 大多数是Transaction Stateful Proxy
- 在请求期间保留状态信息,当收到200或失败响应后丢弃保存的状态信息
- 无状态服务器
[SIP网关] - SIP网关作为SIP信令和其他信令的转换接口
- SIP网关可以看作是一种特殊的UA
- SIP和H.323的网关可以转化二者信令,但是媒体流可以直接交互,并不需要通过网关。
- SIP和PSTN的网关相对复杂。首先需要将SIP信令和ISUP或其他电路信令转化,并且需要将RTP媒体流转换成标准的语音信号。
[SIP消息类型]
SIP消息包括两种类型:请求类消息,响应类消息
- 请求类消息
- INVITE:呼叫发起消息,通常标志着一个呼叫的开始,相当于ISDN中的Setup和ISUP中的IAM消息.Proxy不能使用.
- BYE:终止一个会话,必须在会话建立之后才能发起BYE
- CANCEL:取消正在进行中的呼叫请求,无法取消已经建立的连接
- OPTIONS:用于查询UA或服务器的能力,包括这个服务器所支持的方法和会话描述协议
- REFER:REFER消息用于一个UA请求另一个UA访问某个URI或URL资源
- SUBSCRIBE:SUBSCRIBE消息用于建立一个“订购关系”
- NOTIFY:NOTIFY消息用于通知某一事件的发生
- MESSAGE:SIP可以通过MESSAGE请求发送IM消息
- UPDATE:UPDATE消息用于修改session的状态,但是不用修改dialog的状态
- INFO:UA通过INFO消息向另一UA发送会话信令信息,消息中包含已经建立的媒体会话信息
- 响应类消息
- 1xx:提供信息类应答(Informational)
- 4xx:客户请求失败类应答(Client error)
- 5xx:服务器故障类应答(Server failure)
- 6xx:全局故障类应答(Global failure)
[SIP消息格式][一个典型SIP消息例子] INVITE sip:acn@bupt.org SIP/2.0 (Request-URI)
Via: SIP/2.0/UDP 12.26.17.91:5060;branch=z9hG4bK454
Max-Forwards: 70
From: Charles Babbage <sip:babbage@analyticalsoc.org>;tag=9382
To: sip:ada@language.org
Call-ID: f6-32-9a-34-91-e7@analyticalsoc.org
CSeq: 1 INVITE (CSeq initialized to 1)
Contact: <sip:babbage@client.analyticalsoc.org>
Subject: RE: Software
User-Agent: Difference Engine 1
Content-Type: application/sdp
Content-Length: 137
消息体
[Cseq] - 消息序列号,用户在每个请求中加入这个字段
- 该序号在Call-ID范围内唯一,即在同一个会话期间具有相同的Call-ID,但是Cseq不断加1,cseq的方法可以是各种不同的请求
- 重发请求序号不变
- 服务器将cseq序号复制到响应类消息中
[Contact] - 该字段用于INVITE、ACK和REGISTER请求以及成功响应、呼叫进ACK和重定向响应消息,其作用是后续和用户直接通信的地址
[Via] - 用于指示消息经过的路径。它可以防止请求消息产生环路,并确保响应和请求消息选择同样的路径,以保证通过防火墙或满足其他选路要求。
- 发起请求的用户必须将自己的主机名或地址插入Via字段,如果未采用缺省端口,则必须加上端口号。消息传递过程中,代理服务器必须将自己的地址添加到已有的Via字段之前。如果Proxy发现自己的地址已经存在于Via中,则返回响应“检测到环路”。
[消息体] - 消息体可以包含很多类型的信息
- 关于消息体的头域
- Content-Disposition头域指示消息体的用途
- Content-Encoding指示消息体编码格式
- 和Email携带附件的方法相同
- Content-Type is listed as multipart/mime
[会话描述协议SDP] - SDP用于描述两个用户之间的多媒体会话信息,被叫在接受请求时必须知道
- SDP的目的是为这类信息定义一个标准语法
- SDP完全采用文本格式。之所以牺牲带宽没有采用诸如ASN.1的二进制编码格式,是为了提高描述的可携带性,使其可以使用各种传送协议传送,并且可以使用各种文本工具生成、处理和查看绘画描述
[SIP与H.323的比较] - SIP
- Text based, easily to interpret, log, examine, simulate, test.
- Signaling, presence and IM.URI will be powerful.
- 安全性,定义了安全机制,并且可以利用Internet安全机制(TLS,SMIME)
- H.323
- Binary encoding, smaller but more complexity to implementation
- Exclusively signaling protocol
[SIP与H.323的各自优势] - H.323
- widely deployed in small PSTN replacement networks for handling simple phone calls
- dominates the IP videoconferencing market
- Prevail in digital based device conference
- SIP
- Video conferencing is on the development
- will play a bigger role in these future software-based video systems than the current dedicated hardware videoconferencing systems
[SIP在3G应用中] - 会话过程中信令保持连接
- SIP B2BUA
- UE失去连接时,P-CSCF将发起BYE(计费考虑)
- 移除Route, Record-Route, Path, Via, Service-Route 等头域,为了节省无线资源。返回的时候可以再加上。
- I-CSCF隐藏或加密Via头域,保护S-CSCF的隐私
- SIP和3GPP共同支持IPv6
- SIP信令压缩(节省无线资源)
[Future of SIP and wireless] - 当IP在无线网络推广以后,SIP的应用将越来越广泛
- 当mobile-IP没有提供的情况下,SIP可以很好的解决移动性问题。Mobile-IP和Mobile-SIP的融合也在研究中。
- 以后的SIP扩展将支持3GPP中更复杂的鉴权和漫游机制