《sip协议初级讲义(v》由会员分享,可在线阅读,更多相关《sip协议初级讲义(v(73页珍藏版)》请在金锄头文库上搜索。
1、SIP协议初级讲义,基本信息,适用对象: SIP协议初学者 学习目标: 掌握SIP协议的基本术语 理解SIP/SDP消息 掌握SIP协议的寻址过程 掌握媒体协商过程 掌握SIP呼叫流程 具有SIP协议的独立学习能力 时间: 3小时学习1小时讨论,学习内容,1. 概述(*) 2. SIP的功能实体 3. SIP的寻址 4. SIP消息体结构(*) 5. SIP请求消息(*) 6. SIP响应消息,7.Sdp协议 8.SIP的能力协商 9.案例分析(*) 10.测验 11.实现方法入门 12.SIP学习方法,*部分将重点讲述,1. SIP协议概述,基本情况 主要特点 主要结构 名词解析,基本情况,
2、创立 组织:IETF/mmusic工作组 IP网络协议的后起之秀,是NGN的理想协议 时间:1995开始研究 1999年2月提出草案 草案编号:RFC2543 目前版本:Version 9(Feb,2002),主要特点,是应用层的控制协议,可以建立,修改和结束多媒体会话。 独立于TCP或者UDP,使用自己应用层协议保证消息的可靠传送。 消息体采用文本方式 以客户服务器方式建立会话 灵活的寻址方式 SIP没有媒体协商功能,往往需要集成SDP协议,主要结构,UserAgent,SIP Proxy Server,UserAgnet,SIP Redirect Server,SIP Proxy Serv
3、er,Location Server,IP Network,Registrar Server,DBMS,图例,SIP协议,私有协议,2.功能实体,User Agent Proxy Server Redirect Server Registrar Server Location Server,功能实体(1),User Agent(呼叫代理) 是SIP网络的终端,具体的分为UserAgent Client和UserAgent Server。UAC是客户端,表示主叫;UAS是服务端,表示被叫。 REGISTRAR SERVER(注册服务器) 接受客户端的注册请求,将用户的地址信息写入数据库,并返回注
4、册状态。,功能实体(2),REDIRECT SERVER(重定向服务器) 接受SIP的请求,映射请求的原地址成零个或者多个IP地址,并且返回给客户端。 由客户端重新发起请求。 LOCATION SERVER(定位服务器) 管理若干数据库,接受由Redirect Server或者Proxy Server的路由查询。,功能实体(3),Proxy Server(代理服务器) 完成SIP消息的转接和转发功能,可以修改SIP消息内容。具体功能有: 呼叫认证 状态管理 路由选择 失败重传,3. SIP协议的寻址,SIP URL URL的表示规则 定位UserAgent 定位方式,SIP URL,SIP依靠
5、URL进行路由。SIP URL的格式可以是EmailID或者是E.164地址。 SIP: userhost TEL: URL可以用在下面头域中: FROM头域 FROM: TO头域 TO: CONTACT头域: 可以方便的嵌入网页,提供多种网上业务,SIP-URL = “sip:“ userinfo “ hostport url-parameters headers userinfo = user “:“ password user = *( unreserved | escaped | “ url-parameter ) url-parameter = transport-param | u
6、ser-param | method-param | ttl-param | maddr-param | other-param,transport-param = “transport=“ ( “udp“ | “tcp“ ) ttl-param = “ttl=“ ttl ttl = 1*3DIGIT ; 0 to 255 maddr-param = “maddr=“ host user-param = “user=“ ( “phone“ | “ip“ ) method-param = “method=“ Method tag-param = “tag=“ UUID UUID = 1*( he
7、x | “-“ ) other-param = ( token | ( token “=“ ( token | quoted-string ) headers = “?“ header *( “ | “/“ | “?“ | “:“ | “ | “&“ | “=“ | “+“ | “$“ | “,“ digits = 1*DIGIT,URL的表示规则,例子,sip: sip:j.doe:;transport=tcp sip:?subject=project sip:+1-212-555-1212:;user=phone sip: sip:alice10.1.2.3 sip: sip:alice%
8、 sip:;method=REGISTER,定位Proxy服务器,配置UA指向Proxy Server 配置UA指向Redirect Server,由Redirect Server分配合适的Proxy Server,定位SIP UserAgent Server(被叫),User Agent激活时通过Registrar Server注册。 Proxy Server通过Location Server得到User Agent Server的路由。 Proxy Server根据地址呼叫UserAgent Server 如果没有能到达UserAgent Server的路由,必须返回UserAgent C
9、lient(主叫)具体的原因,包括代码和文字的原因。,定位UserAgent的方式,简单方式 主叫Proxy可以直接发送请求消息到被叫,建立会话。只适应小型网络。 复杂方式 主叫的Proxy Server也可以发请求消息到被叫的Proxy Server,由Proxy Server根据URI重新定位UserAgent Server。,注意的问题(1),Location Server可能会返回几个位置,Proxy Server可以决定如何处理。 如果Proxy Server转发SIP 请求,它必须将自己的IP地址加入到Via部分的开头。而在返回的时候,将Via域中的地址去掉。,注意的问题(2),在
10、进行Forks定位时,用相同的CallID,Cseq,而Tags不同。 Proxy有两种形式: 有状态 返回UserAgent 100消息,表示Proxy 可以完成状态的管理 无状态 Proxy不能管理呼叫状态,必须有UserAgent自己解决,注意的问题(3)(比较CallID/CSeq/Tag),CallID 是会话的唯一标志 一个会话过程使用同一个CallID 随机产生 Cseq 是会话命令的序列 一个Transaction使用同一个Cseq 32位无符号整数 判断命令的版本 以Bye结束会话时增加 “tag”是一个标签,用来区别会话中的不同对象。 出现在请求的From头域中,当共享同一
11、个SIP地址的用户的两个 实例使用同一个Call-ID发出邀请时,必须使用此“tag”。 Proxy使用tag来判断消息是传给自己,还是给用户。 单个用户的Tag在呼叫过程中保持一致,注意的问题(4),CALL LEG (呼叫历程) Call leg用CallID(呼叫标识)、From(源方)和To(目的地)的组合来标识一个会话。 TRANSACTION(事务) SIP定义一个请求及其最终应答称为一个事务。所有应答有相同的Call-ID,Cseq,To和From域。,4. SIP消息体结构,消息体结构 头域说明,SIP 消息体组成,Start line(起始行详细描述),起始行 Start-L
12、ine = request-line | status-line request-line = Method SP Request-URI SP SIP-Version CRLF INVITE sip :SSSunT SIP2.0 status-line = SIP-Version SP status-code SP phase CRLF SIP2.0 200 OK,General headers(通用头域),路由信息:Accept | Accept-Encoding | Accept-Language | Contact | Date| Encryption| Expires | From
13、| Record-Route |Timestamp 呼叫标示 : Call-ID, CSeq, INVITE sip: SipSunT SIP2.0 Via: SIP/2.0/UDP proxy.SunT Via: SIP/2.0/UDP sation1.SunT From : Wang To : softswitch Call-ID : 23434 sation1.SunT CSeq: 1 INVITE Contact : WangSunT,其他头域(请求、响应、实体),Request Headers: Hide, In-Reply-To, Max-Forwards, Priority, P
14、roxy-Authentication, Proxy-Require, Response-Key, Subject, Route Response Headers: Proxy-Authenticate, Retry-After, Server, Unsupported, Warning, WWW-Authenticate Entity Headers: Allow, Content-Disposition, Content-Encoding, Content-Language, Content-Length, Content-Type, Expires,关键头域解析(Accept,CallI
15、D),Accept : 指明请求方所能接受的响应类型. 媒体类型: Internet media types, defined in MIME 缺省值是 application/sdp. syntax Accept : # ( */* | type/* | type/subtype ) ; q= value; Example : Accept : text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c CallID: 唯一标识一个会话,保持全球的唯一性 Call-ID区分大小写 随机产生,有效的提高安全性 CallID相同,消息体不同时将更新会话 Syntax: Call-ID = (“Call-ID” | “i”)”:”local-id”host Example:Call-ID: f81d4fae-7dec-11d0-a765-,关键头域解析(Cseq),Cseq 对于每一个请求,客户必须使用Cseq(Command sequence)通用头域 重传请求用相同的Cseq A