1、SIP 体系架构,Agenda,对SIP方方面面的回顾SIP在协议栈中的位置SIP梯形和SIP实体 SIP URI tel URISIP 分层方法dialogsession安全,SIP标准,核心标准: RFC 3261 SIP: Session Initiation Protocol SIP扩展标准: RFC 2976 The SIP INFO Method RFC 3263 Locating SIP Servers RFC 3265 SIP-Specific Event Notification RFC 3311 UPDATE Method RFC 3326 The Reason Heade
2、r Field RFC 3372 SIP for Telephones (SIP-T): Context and Architectures RFC 3398 ISUP to SIP Mapping RFC 3428 SIP Extension for Instant Messaging ,SIP在协议栈中的位置,一个典型的网络结构,SIP trapezoid,SIP梯形,SIP UA或终端构成对话的端点:它发送或接收SIP请求和响应。UA由以下两部分构成: UA Client: 发起请求的主叫方应用; UA Server:接收、重定向或拒绝请求,代表用户给到来的请求发送响应。 SIP中间服务
3、器是SIP消息在到达其最终目的地前所经过的逻辑实体,这些中间服务器用于对请求路由和重定向。服务器包括代理服务器(Proxy Server),重定向服务器(Redirect Server)和注册服务器(Registrar)。,目的:为了减少负责路由请求的代理服务器的负荷,提高信令路径的鲁棒性,SIP实体-重定向服务器,重定向服务器(Redirect Server),实现:只是返回用户有可能出现的位置列表,由用户代理去进行用户定位的所有尝试。位置列表将放置在Contact头域中。响应的3XX类有:“300“ ; Multiple Choices“301“ ; Moved Permanently“3
4、02“ ; Moved Temporarily“305“ ; Use Proxy“380“ ; Alternative Service,SIP实体-重定向服务器,sip:helen ,INVITE sip: SIP/2.0 Via: SIP/2.0/UDP :5060 From: helen li To: zheng Call-ID: CSeq: 1 INVITE Contact: helen li ,查询,,SIP/2.0 302 Moved Temporarily Via: SIP/2.0/UDP 192.168.0.10 Via: SIP/2.0/UDP :5060 Call-ID:
5、 CSeq: 1 INVITE Contact: victor ; expires=3600,INVITE sip: SIP/2.0 Via: SIP/2.0/UDP :5060 From: helen li To: zheng Call-ID: CSeq: 1 INVITE Contact: helen li ,SIP Request,SIP Response,非SIP协议包,目的:接收请求,决定将这些请求传送到何处,并且将它们传送到下一服务器(使用下一跳路由原理)。,SIP实体-代理服务器,代理服务器(Proxy Server),3类代理:保留呼叫状态代理(Call Stateful P
6、roxy):存储从INVITE到BYE的一个会话所有状态信息;保留状态代理(Transaction) Stateful Proxy):事务状态代理,存储一个指定事务相关的状态信息直到这个事务结束;不保留状态代理,INVITE sip:victor211.136.85.58 SIP/2.0 Via: SIP/2.0/UDP 211.136.1.110:5060 Via: SIP/2.0/UDP 218.80.0.10:5060 From: flora To: zheng Call-ID: 12345678211.808.0.10 CSeq: 1 INVITE Contact: flora Con
7、tent-Type: application/sdp v=0 o=flora 2891293921 2891293921 IN IP4 192.168.0.10 s=meeting,INVITE sip: SIP/2.0 Via: SIP/2.0/UDP 218.80.0.10:5060 From: flora To: zheng Call-ID: 12345678211.80.0.10 CSeq: 1 INVITE Contact: flora Content-Type: application/sdp v=0 o=flora 2891293921 2891293921 IN IP4 211
8、.80.0.10 s=meeting,SIP/2.0 200 OK Via: SIP/2.0/UDP 218.80.0.10:5060,ACK sip:victor211.136.85.58 SIP/2.0 Via: SIP/2.0/UDP 218.80.0.10:5060 From: flora To: zheng ;tag=314159 Call-ID: 12345678211.80.0.10 CSeq: 1 ACK Contact: flora ,SIP/2.0 200 OK Via: SIP/2.0/UDP 211.136.1.110:5060 Via: SIP/2.0/UDP 218
9、.80.0.10:5060 From: flora To: zheng ;tag=314159 Call-ID: CSeq: 1 INVITE Contact: victor Content-Type: application/sdp,SIP/2.0 180 Ringing Via: SIP/2.0/UDP 211.136.1.110:5060 Via: SIP/2.0/UDP 218.80.0.10:5060 From: flora To: zheng ;tag=314159 Call-ID: CSeq: 1 INVITE Contact: victor ,SIP实体-代理服务器,SIP
10、/2.0 180 Ringing Via: SIP/2.0/UDP 218.80.0.10:5060,SIP Request,SIP Response,非SIP协议包,BYE sip:victor211.136.85.58 SIP/2.0 CSeq: 2 BYE,SIP/2.0 200 OK CSeq: 2 BYE,SIP实体-注册服务器(Registrar),SIP特性User Mobility:用户通过将自己的AOR与某个主机地址进行明确绑定,使自己可以被联络到,从而使用户移动性成为可能。,目的:接收UA的注册/注销请求,从位置服务器中将UA的地址信息添加/删除。,注册机制当UA要向注册服
11、务器添加一个地址映射记录时,Contact域包含要增加的联系地址信息,通过Expires头部域或该地址信息的expires 参数来声明该联系地址的生命期。用户可通过一个REGISTER请求消息同时增加多个地址映射记录。注销机制当UA要删除一个映射记录时,可在Contact域中填写要删除的联系地址信息,并将expires参数置0, 注册服务器收到后就会删除该映射记录。如果将Contact域设为“*”,且Expires头部域设为0,将会删除该用户的所有联系地址映射记录。,SIP实体-注册服务器(Registrar),刷新机制: Contact头域指明了过期参数,默认是1小时。UA应该每隔一段时间后
12、重注册。如果UA没有刷新或明确清除该绑定,则当绑定过期时,Registrar将其直接删除。,创建多个绑定的方法: 从每一个设备发送一个REGISTER请求; 从同一个设备发送一个与AOR有多个绑定的REGISTER请求。,构造注册请求消息: Request-URI: 包含注册服务器的域名信息; To : 要注册或注销的用户的逻辑地址; From: 发送注册消息者的地址记录; Contact: 要注册的联系地址信息。,SIP实体-注册服务器(Registrar),REGISTER sip: SIP/2.0 Via: SIP/2.0/TCP 192.168.5.39:15926 Max-Forwa
13、rds: 70 From: ;tag=98ef1;epid=ea8 To: Call-ID: 7d0ec36123594451967f7e74cbee9c43 CSeq: 1 REGISTER Contact: Content-Length: 0,SIP/2.0 401 Unauthorized WWW-Authenticate: NTLM realm=“SIP Communications Service“, targetname=““ WWW-Authenticate: Kerberos realm=“SIP Communications Service“, targetname=“sip
14、/“ Via: SIP/2.0/TCP 192.168.5.39:15926 From: ;tag=98ef1;epid=ea8 To: ;tag=C48A21874 Call-ID: 7d0ec36123594451967f7e74cbee9c43 CSeq: 1 REGISTER Content-Length: 0,SIP/2.0 200 OK Via: SIP/2.0/TCP 192.168.5.39:15926;ms-received-port=1048;ms-received-cid=4100 From: ;tag=98ef1;epid=ea8 To: ; Call-ID: 7d0e
15、c36123594451967f7e74cbee9c43 CSeq: 2 REGISTER Contact: ;expires=7200,非SIP协议;比如采用LDAP,添加用户的绑定信息到位置服务器,SIP Response,非SIP协议包,SIP Request,SIP安全机制协定部分略去, 将在以后章节演示,SIP URI,两种SIP URI:Address-of-Record(AOR): 用于标示一个用户,例如sip:(需要DNS SRV记录来定位域的SIP服务器)主机的FQDN或IP地址:例如,sip:bob211.136.85.58,或sip:(不需要路由解析),格式:sip:用户
16、信息主机端口参数消息头 用户信息:用户名或电话号码 主机端口:域名或数字形式的网络地址和端口 参数:定义具体的URI参数,例如传输协议、生存时间等 消息头:用来传递额外信息,tel URI,例如:全球号码:tel:+358-9-123-45678具有域名上下文的本地号码:tel:45678;phone-context=具有全球号码上下文的本地号码:tel:45678;phone-context=+358-9-123,格式:一个全球号码或者本地号码 全球号码:遵从E.164号码规则,以”+”开始 本地号码:需要有电话上下文(phone-context)参数来标识号码范围,SIP分层方法,IETF
17、坚持分层,不同模块功能相对独立,各层之间松散耦合,事务用户层(Transaction User),事务层(Transaction),传输层(Transport),语法和编码层(Syntax and Encoding),SIP分层方法-事务层,事务的定义:指客户端发送到服务器的一条请求,以及服务器回送客户端的所有对该请求的响应。目的:事务层处理应用层重传,匹配响应到请求,以及应用 层超时,以实现消息的可靠传输。,四个事务状态机: INVITE客户端事务 非INVITE客户端事务 INVITE服务端事务 非INVITE服务端事务,SIP分层方法-事务层-INVITE事务,UA和Proxy都有责任保
18、证INVITE到达下一跳。 临时应答用于阻止逐跳INVITE重传。,(1)INVITE,(2)100尝试,(3)INVITE,(4)INVITE,(5) 100尝试,重传INVITE直到临时应答到来,SIP分层方法-事务层-INVITE事务,对于非成功最终应答,每个服务器保证前一跳接收到应答并且前一跳保证承担处理应答的责任。,(1)404 Not Found,(3)404 Not Found,(2)ACK,(4) 404 Not Found,(5) ACK,重传404直到ACK到来,SIP分层方法-事务用户层,目的: 当一个TU希望发送SIP请求时,它创建一个客户端事务实例,并把目的IP地址、
19、端口号和传输协议等放在请求中一起发送。TU负责把消息可靠地发送到目的地。,dialog,定义: a peer-to-peer SIP relationship between two user agents that persists for some time。,目的: 提供在通信双方之间进行路由和消息排序时所依据的必要的状态信息。,标识: 由 call identifier、local tag和remote tag组成。 对于UAC来说,本地标签就是创建对话的初始请求的From头中的tag,远端标签就是创建对话的响应的From头中的tag。UAS则相反。,session,定义: A multimedia session is a set of multimedia senders and receivers and the data streams flowing from senders to receivers.,在同一个session中,一个会话者可以被不同的call邀请多次。,谢谢!,