《SIP协议初级讲义》由会员分享,可在线阅读,更多相关《SIP协议初级讲义(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、情况基本情况创立创立l组织:组织:IETF/mmusic工作组工作组lIP网络协议的后起之秀,是NGN的理想协议l时间:1995开始研究 1999年2月提出草案 l草案编号:RFC2543l目前版本:Version 9(Feb,2002)主要特点?是应用层的控制协议,可以建立,修改和结束多媒体会是应用层的控制协议,可以建立,修改和结束多媒体会话。话。?独立于独立于TCP或者或者UDP,使用自己应用层协议保证消息的使用自己应用层协议保证消息的可靠传送。可靠传送。?消息体采用文本方式消息体采用文本方式?以客户服务器方式建立会话以客户服务器方式建立会话?灵活的寻址方式灵活的寻址方式?SIP没有媒体协
3、商功能,往往需要集成没有媒体协商功能,往往需要集成SDP协议协议主要结构UserAgentSIP Proxy ServerUserAgnetSIP Redirect ServerSIP Proxy ServerLocation ServerIP NetworkRegistrar ServerDBMS图例图例SIP协议协议私有协议私有协议2.功能实体功能实体User AgentProxy ServerRedirect ServerRegistrar ServerLocation Server功能实体功能实体(1)&User Agent(呼叫代理)呼叫代理)是是SIP网络的终端,具体的分为User
4、Agent Client和UserAgent Server。UAC是客户端,表示主叫;UAS是服务端,表示被叫。®ISTRAR SERVER(注册服务器)注册服务器)接受客户端的注册请求,将用户的地址信息写入数据库,并返回注册状态。功能实体功能实体(2)& REDIRECT SERVER(重定向服务器)重定向服务器) 接受SIP的请求,映射请求的原地址成零个或者多个IP地址,并且返回给客户端。 由客户端重新发起请求。&LOCATION SERVER(定位服务器)定位服务器) 管理若干数据库,接受由Redirect Server或者Proxy Server的路由查询。功能实体功能实体(3)
5、&Proxy Server(代理服务器)代理服务器) 完成SIP消息的转接和转发功能,可以修改SIP消息内容。具体功能有:呼叫认证状态管理 路由选择失败重传3. SIP协议的寻址协议的寻址SIP URLURL的表示规则定位UserAgent定位方式 SIP URL&SIP依靠依靠URL进行路由进行路由。SIP URL的格式可以是的格式可以是EmailID或者是或者是E.164地址。地址。SIP: userhostTEL:&URLURL可以用在下面头域中:可以用在下面头域中:FROM头域 FROM:TO头域TO: CONTACT头域:&可以方便的嵌入网页,提供多种网上业务可以方便的嵌入网页,提供
6、多种网上业务 SIP-URL = sip: userinfo hostport url-parameters headers userinfo = user : password user = *( unreserved | escaped | & | = | + | $ | , ) password = *( unreserved | escaped | & | = | + | $ | , ) hostport = host : port host = hostname | IPv4address hostname = *( domainlabel . ) toplabel . domain
7、label = alphanum | alphanum *( alphanum | - ) alphanum toplabel = alpha | alpha *( alphanum | - ) alphanum IPv4address = 1*digit . 1*digit . 1*digit . 1*digit port = *digit url-parameters = *( ; url-parameter ) url-parameter = transport-param | user-param | method-param | ttl-param | maddr-param | o
8、ther-paramtransport-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*( hex | - ) other-param = ( token | ( token = ( token | quoted-string ) headers
9、 = ? header *( & header ) header = hname = hvalue hname = 1*uric hvalue = *uric uric = reserved | unreserved | escaped reserved = ; | / | ? | : | | & | = | + | $ | , digits = 1*DIGITURLURL的表示规则的表示规则例子例子lsip:lsip:j.doe:;transport=tcplsip:?subject=projectlsip:+1-212-555-1212:;user=phonelsip:lsip:alice
10、10.1.2.3lsip:lsip:alice%lsip:;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 Se
11、rver&如果没有能到达UserAgent Server的路由,必须返回UserAgent Client(主叫)具体的原因,包括代码和文字的原因。定位定位UserAgent的方式的方式 &简单方式简单方式 主叫主叫Proxy可以直接发送请求消息到被叫,建立可以直接发送请求消息到被叫,建立会话。只适应小型网络。会话。只适应小型网络。&复杂方式复杂方式 主叫的主叫的Proxy Server也可以发请求消息到被叫也可以发请求消息到被叫的的Proxy Server,由由Proxy Server根据根据URI重重新定位新定位UserAgent Server。注意的问题(注意的问题(1)&Location
12、 Server可能会返回几个位置,可能会返回几个位置,Proxy Server可以决定如何处理。可以决定如何处理。&如果如果Proxy Server转发转发SIP 请求,它必须将自请求,它必须将自己的己的IP地址加入到地址加入到Via部分的开头。而在返回的部分的开头。而在返回的时候,将时候,将Via域中的地址去掉。域中的地址去掉。注意的问题(注意的问题(2)&在进行在进行Forks定位时,用相同的定位时,用相同的CallID,Cseq,而而Tags不同。不同。&Proxy有两种形式:有两种形式:有状态有状态返回UserAgent 100消息,表示Proxy 可以完成状态的管理无状态无状态Pro
13、xy不能管理呼叫状态,必须有UserAgent自己解决注意的问题(注意的问题(3 3)(比较)(比较CallIDCallID/ /CSeqCSeq/Tag/Tag)lCallID 是会话的唯一标志是会话的唯一标志 v 一个会话过程使用同一个一个会话过程使用同一个CallIDv 随机产生随机产生lCseq 是会话命令的序列是会话命令的序列v一个一个Transaction使用同一个使用同一个Cseqv32位无符号整数位无符号整数v判断命令的版本判断命令的版本v以以Bye结束会话时增加结束会话时增加l“tag”是一个标签,用来区别会话中的不同对象。是一个标签,用来区别会话中的不同对象。v 出现在请求
14、的出现在请求的From头域中,当共享同一个头域中,当共享同一个SIP地址的用户的两个地址的用户的两个实例使用同一个实例使用同一个Call-ID发出邀请时,必须使用此发出邀请时,必须使用此“tag”。vProxy使用使用tag来判断消息是传给自己,还是给用户。来判断消息是传给自己,还是给用户。v单个用户的单个用户的Tag在呼叫过程中保持一致在呼叫过程中保持一致注意的问题(注意的问题(4)&CALL LEG (呼叫历程)呼叫历程) Call leg用CallID(呼叫标识)、From(源方)和To(目的地)的组合来标识一个会话。&TRANSACTION(事务)事务) SIP定义一个请求及其最终应答
15、称为一个事务。所有应答有相同的Call-ID,Cseq,To和From域。4. SIP消息体结构消息体结构消息体结构头域说明SIP 消息体组成消息体组成响应的SIP版本SP状态码 SP原因短语 CRLF请求的方法SP请求的SIP-URL SP SIP版本CRLF General-header| Request-header| Response-header| Entity-header消息体(SDP原码,加密的SDP,)起始行起始行 Start-LineStart-Line消息头域消息头域 Message-lineMessage-line 空行空行 CRLFCRLF 消息体消息体 Messag
16、e-bodyMessage-body Start line(起始行详细描述)起始行详细描述)起始行起始行Start-Line = Start-Line = request-line | status-linerequest-line | status-line request-line = Method SP Request-URI SP SIP-request-line = Method SP Request-URI SP SIP-Version CRLF Version CRLF INVITE sip :INVITE sip :SSSSSunTekSunT SIP2.0 SIP2.0sta
17、tus-line = SIP-Version SP status-code SP status-line = SIP-Version SP status-code SP phase CRLF phase CRLF SIP2.0 200 OKSIP2.0 200 OK General headers(通用头域)通用头域)路由信息:路由信息:Accept | Accept-Encoding | Accept-Language | Accept | Accept-Encoding | Accept-Language | Contact | Date| Encryption| Expires | Fr
18、om | Record-Route Contact | Date| Encryption| Expires | From | Record-Route |Timestamp|Timestamp呼叫标示呼叫标示 : Call-ID, Call-ID, CSeqCSeq, , INVITE sip: Sip INVITE sip: Sip SunTekSunT SIP2.0 SIP2.0 Via: SIP/2.0/UDP proxy. Via: SIP/2.0/UDP proxy.SunTekSunT .com Via: SIP/2.0/UDP sation1. Via: SIP/2.0/UDP
19、sation1.SunTekSunT From : Wang sip: From : Wang To : To : softswitch softswitch sip: Sip Call-ID : 23434 sation1. Call-ID : 23434 sation1.SunTekSunT CSeqCSeq: 1 INVITE : 1 INVITE Contact : Contact : WangWangSunTekSunT 其他头域(请求、响应、实体)其他头域(请求、响应、实体)Request Headers: Request Headers: Hide, In-Reply-To, M
20、ax-Forwards, Priority, Proxy-Hide, In-Reply-To, Max-Forwards, Priority, Proxy-Authentication, Proxy-Require, Response-Key, Subject, Authentication, Proxy-Require, Response-Key, Subject, RouteRouteResponse Headers:Response Headers:Proxy-Authenticate, Retry-After, Server, Unsupported, Proxy-Authentica
21、te, Retry-After, Server, Unsupported, Warning, WWW-AuthenticateWarning, WWW-AuthenticateEntity Headers: Entity Headers: Allow, Content-Disposition, Content-Encoding, Content-Allow, Content-Disposition, Content-Encoding, Content-Language, Content-Length, Content-Type, ExpiresLanguage, Content-Length,
22、 Content-Type, Expires关键头域解析关键头域解析(Accept,CallID)Accept : Accept : 指明请求方所能接受的响应类型指明请求方所能接受的响应类型. . 媒体类型媒体类型: : Internet media types, defined in MIMEInternet media types, defined in MIME 缺省值是缺省值是 application/application/sdpsdp. .syntax Accept : # ( */* | type/* | type/subtype ) ; q= value; syntax Acc
23、ept : # ( */* | type/* | type/subtype ) ; q= value; Example : Accept : text/plain; q=0.5, text/html,Example : Accept : text/plain; q=0.5, text/html, text/x- text/x-dvidvi; q=0.8, text/x-c ; q=0.8, text/x-c CallIDCallID: 唯一标识一个会话,保持全球的唯一性唯一标识一个会话,保持全球的唯一性 Call-ID Call-ID区分大小写区分大小写 随机产生,有效的提高安全性随机产生,有
24、效的提高安全性 CallIDCallID相同,消息体不同时将更新会话相同,消息体不同时将更新会话Syntax: Syntax: Call-ID = (“Call-ID” | “i”)”:”local-id”hostCall-ID = (“Call-ID” | “i”)”:”local-id”host Example:Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6Example:Call-ID: f81d4fae-7dec-11d0-a765- 关键头域解析关键头域解析(Cseq)Cseqv对于每一个请求,客户必须使用对于每一个请求,客户必须使用Cs
25、eq(Command sequence)通用通用头域头域 v重传请求用相同的重传请求用相同的Cseq vACK和和CANCEL相应必须返回跟相应必须返回跟INVITE请求相同的请求相同的CseqvBYE请求释放一个请求时必须含有以更高数值的请求释放一个请求时必须含有以更高数值的Cseq v用户代理服务器必须记住同一个用户代理服务器必须记住同一个Call-ID的的INVITE请求的最高序列数。请求的最高序列数。 v所有在并行搜寻中产生的请求拥有和触发此并行搜寻的请求一样的所有在并行搜寻中产生的请求拥有和触发此并行搜寻的请求一样的Cseq值。值。 Syntax: Syntax: CseqCseq
26、=“ =“CseqCseq” “” “:” 1*DIGIT Method ” 1*DIGIT Method FuntionFuntion:不用比较消息体就可以将不同消息区分开来不用比较消息体就可以将不同消息区分开来Example: Example: CSeqCSeq: 4711 INVITE: 4711 INVITE 关键头域解析(关键头域解析(From,To)From(源地址)源地址)v请求和响应必须包含请求和响应必须包含From通用头域,指示请求的初始者通用头域,指示请求的初始者v “tag”可以出现在一个请求的可以出现在一个请求的From头域中,当共享同一个头域中,当共享同一个SIP地址
27、的用地址的用户的两个实例使用同一个户的两个实例使用同一个Call-ID发出邀请时,必须使用此发出邀请时,必须使用此“tag”, 如如Forks。To(目的地地址)目的地地址) vTo通用头域说明了请求的接收者通用头域说明了请求的接收者v如果请求包含了不止一个如果请求包含了不止一个Via头域,则必须增加头域,则必须增加“tag”参数。参数。Syntax: To =(“To” | “t”)“:”(name-addr | addr-spec)*(“;”addr-params) Example: To: The Operator ;tag=287447 关键头域解析(关键头域解析(Max-Forwar
28、ds,Via)Max-Forwards(最大前转数目)最大前转数目) v用来限制前转请求的代理或者网关的数目,防止死循环。用来限制前转请求的代理或者网关的数目,防止死循环。v适用于任何请求方式,适用于任何请求方式,v防止死循环的还有防止死循环的还有Via域域Viav头域指示请求迄今为止所走的路径。头域指示请求迄今为止所走的路径。v确保消息能够迎着原请求路径返回确保消息能够迎着原请求路径返回v防止死循环防止死循环关键头域解析(关键头域解析(ContentLength) Content-Length(内容长度)内容长度)v实体头域指示消息体的长度。形式上以八个比特实体头域指示消息体的长度。形式上以
29、八个比特为一个字节。为一个字节。v服务器如果收到一个包含有服务器如果收到一个包含有Content-Length域的域的UDP请求。但它的值比消息体的实际长度大,请求。但它的值比消息体的实际长度大,客户则应产生一个客户则应产生一个400类的响应。类的响应。关键名词解析(关键名词解析(Subject)Subject(标题)标题) v为为请求头域提供了一个摘要,或者指示了呼叫的实际情请求头域提供了一个摘要,或者指示了呼叫的实际情况况v可以不必分析通话描述便可过滤呼叫。可以不必分析通话描述便可过滤呼叫。Syntax: Subject = (“subject” | “s”)“:”*TEXT-UTF8 T
30、imestamp(时间标记)时间标记) v指示客户何时向服务器发送请求指示客户何时向服务器发送请求 v服务器不能修改此值服务器不能修改此值v可以计算可以计算Round-Trip时间,以便更改时间,以便更改TimeOut时间时间5. SIP请求消息请求消息INVITEACKBYEREGISTERCANCELOPTIONSINVITE(会话邀请)会话邀请)&INVITE用于发起一个会话请求,建立会话的三个基本头域参数(CallID,From,To)。此三个基本参数在会话过程中保持不变。&INVITE消息体中带有本次会话的基本参数连接地址主叫媒体能力带宽指示ACK(邀请证实)邀请证实)&证实证实IN
31、VITEINVITE请求请求&ACKACK只和只和INVITEINVITE请求一起使用请求一起使用&ACKACK有有UserAgentUserAgent Client Client(主叫)发出主叫)发出&ACKACK中的中的CallIDCallID,From,To,From,To,CseqCseq由由INVITEINVITE消息复消息复制而来制而来INVITE sip:john192.190.132.31 SIP/2.0Via: SIP/2.0/UDP 192.190.132.20:3456Call-ID: a2e3a192.190.132.20From: sip: mary192.190.1
32、32.20To: sip: john192.190.132.31Cseq 1 INVITEContent-type: application/sdpContent-Length: 98v=0 o=mary 3123 121231 IP IP4 192.190.132.20 c=IN IP4 192.190.132.20 m=audio 49170 RTP/AVP 0 Mary192.190.132.20192.190.132.31JohnSIP/2.0 200 OK v: SIP/2.0/UDP 192.190.132.20:3456i: a2e3a192.190.132.20f: sip:
33、mary192.190.132.20t: sip: john192.190.132.31Cseq 1 INVITEc: application/sdpl: 98v=0 o=john 5664 456456 IP IP4 192.190.132.31 c=IN IP4 192.190.132.31 m=audio 23244 RTP/AVP 0 ACK sip:john192.190.132.31 SIP/2.0Via: SIP/2.0/UDP 192.190.132.20:3456Call-ID: a2e3a192.190.132.20From: sip: mary192.190.132.20
34、To: sip: john192.190.132.31Cseq 1 ACKInvite DetailsInvite DetailsBYE(结束会话)结束会话)&作用:结束当前会话&可以由UAC(主叫)或者UAS(被叫)发起&UA收到BYE消息后,必须停止向对方发送媒体流BYE sip:mary192.190.132.20 SIP/2.0v: SIP/2.0/UDP 192.190.132.31:3456i: a2e3a192.190.132.20From: sip: john192.190.132.31To: sip: mary192.190.132.20Cseq 2 BYESIP/2.0 2
35、00 OK Via: SIP/2.0/UDP 192.190.132.31:3456Call-ID: a2e3a192.190.132.20From: sip: john192.190.132.20To: sip: mary192.190.132.31Cseq 2 BYEBye DetailsBye Details192.190.132.20192.190.132.31REGISTER(用户注册)用户注册)&用于UA向Registrar Server中登记&Request-URI:要注册的域名&To:Registrar Server分析To头域的URI,将其与UA的IP地址关联起来&Conta
36、ct:UA发送注册信息中有可选的Contact头域,可以将Contact的URI也关联到UA的IP地址。注册例子注册例子CANCEL(取消会话)取消会话)?作用:取消正在建立的会话(注意不能取消已经建立的会话)?UA收到CANCEL命令时,如果发现CallID,FROM,TO和Cseq一致时,便取消本次会话。?典型应用:Proxy 取的用户的几个联系地址,同时发起邀请,但其中有些有返回时,对其他还没有返回的地址,可以发送CANCEL。OPTIONS(能力查询)能力查询)&用途在发送会话请求之前查询UserAgent Server的能力集&响应消息复制OTIONS命令的CALLID,FROM,T
37、O值&返回的能力可以在下面的头域中取得:Allow:支持的消息(INIVTE,ACK等)Accept-Language:支持的语言SDP:支持能力6 6SIPSIP的响应消息的响应消息响应消息的具体格式状态码定义SIP响应消息的格式响应消息的格式状态码定义状态码定义l1xx Responses - Information Responses l2xx Responses - Successful Responses l3xx Responses - Redirection Responses l4xx Responses - Request Failures Responses l5xx Re
38、sponses - Server Failure Responses l6xx Responses - Global Failure Responses Status Code(1XX,2XX,3XX)Informational 1xxInformational 1xx 指示消息指示消息l100 Trying(尝试)l180 Ringing(振铃)l181 Call Is Being Forwarded(呼叫正被前转)Successful 2xx 请求成功,终止搜寻请求成功,终止搜寻l 200 OK(成功)Redirection 3xx 重定向重定向l300 Multiple Choices(
39、多个选择)l301 Moved Permanently(永久转移)l302 Moved Temporarily(临时转移)l305 Use Proxy(使用代理)l380 Alternative Service(可选的服务) Status Code(4XX)Request Failure 4xx (客户端请求失败客户端请求失败)l400 Bad Request(错误请求)l401 Unauthorized(未鉴权)l402 Payment Required(需要支付(付款)l403 Forbidden(禁止)l404 Not Found(未找到)l405 Method Not Allowed(
40、方式不允许)l406 Not Acceptable(不接受)l 407 Proxy Authentication Required(需要代理验证)l 486 Busy Here(本地忙) Status Code(5XX,6XX)Server Failure 5xx(服务器失败服务器失败5XX)l500 Server Internal Error(服务器内部错误)l501 Not Implemented(未实现)l502 Bad Gateway(错误的网关)l503 Service Unavailable(无效服务)l504 Gateway Time-out(网关超时)l505 Version
41、Not Supported(不支持的版本)Global Failure 6xx l600 Busy Everywhere(全忙)l603 Decline(拒绝)l604 Does Not Exist Anywhere(不存在)l606 Not Acceptable(不接受) 7. SDP协议介绍协议介绍协议概述协议格式理解SDP协议SDP协议概述协议概述协议说明协议说明v全称是全称是Session Description Protocol (By ITEF/MMUSIC)SDP功能概述功能概述 v通过会话公告将会议的地址,时间,媒体和建立等信息告知的会通过会话公告将会议的地址,时间,媒体和建立
42、等信息告知的会话参加者,话参加者,获得这些信息后可以加入会话获得这些信息后可以加入会话。SDP的责任和传送的责任和传送 vSDP定义了会话描述的统一格式,但并不定义多播地址的分配和定义了会话描述的统一格式,但并不定义多播地址的分配和SDP消息的传送,也不支持媒体编码方案的协商消息的传送,也不支持媒体编码方案的协商v SDP描述的信息封装在传送协议中发送,典型的会话传送协议描述的信息封装在传送协议中发送,典型的会话传送协议包括:会话公告协议(包括:会话公告协议(SAP,SIP,RTSP,HTTP ) HeaderHeader: 所用会话协议的控制信息所用会话协议的控制信息 Text payloa
43、d Text payload: 是是SDPSDP的会话描述。的会话描述。文本的文本的PayloadPayload必须小于必须小于1 1K byteK byte一个包中只能有一个会话。一个包中只能有一个会话。SDP的传送格式的传送格式 Header Text Payload会话描述格式会话描述格式 综述综述lSDP会话描述由很多文本行组成,每个文本行的格式是 =1)是一个字符,取决于的变化。2)两者必须区分大小写(通常都是小写)3)一般由多个字段组成,各个字段由一个空格符分隔,也可以是一个自由格式阿文本串。4)“”两侧不允许有空格。会话描述格式会话描述格式 Session Description
44、v=(protocol version) o=(owner/creator and session identifier). s= (session name) i=* (session information) u=* (URI of description) e=* (email address) p=* (phone number) c=*(connection information - not required if included in all media) b=* (bandwidth information) One or more time descriptions (se
45、e below) z=* (time zone adjustments) k=* (encryption key) a=* (zero or more session attribute lines) Zero or more media descriptions (see below)Sdp语法语法lTime descriptionl t= (time the session is active)l r=* (zero or more repeat times)lMedia descriptionl m= (media name and transport address)l i=* (me
46、dia title)l c=* (connection information - optional if included at session-level)l b=* (bandwidth information)l k=* (encryption key)l a=* (zero or more media attribute lines) 例子例子v=0 版本是0o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4o= 取决于NTP(Network Time Protocol) is increased when a modificati
47、on is made s=SDP Seminar /只能有一个Session name i=A Seminar on the session description protocol 对于会话水平和媒体水平,都只能是一个i.u=http:/www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps /可选的,允许有多个URIe=mjhisi.edu (Mark Handley)p=+44-171-380-777 / Email&Phone,可多选,也可不选。+表示国家代码; 表示号码连接符c=IN IP4 224.2.17.12/127/3 / Connection
48、Datal/ c= l/ IN stand for Internet /127 stand for TIME TO LIVE (range 0-255)l/3表示后面连接的地址生命期是127 b=12345678:8 / b=:。可选项,modifier是带宽的修饰语,带宽值的单位是kilobits/second t=2873397496 2873404696 / t= 如果stop time 为零,则会话无效;如果start time 为0,则永久有效。注意要写上start time 和 stop time,以防止防止意外。K= uri: / Encryption Keys k=: / 到U
49、RI指定的地址取密钥 a=recvonly / a= m=audio 49170 RTP/AVP 0/ 可多选 m= / AVP=audio/video profile / 参考下页表m=video 51372 RTP/AVP 31Audio EncodingAudio EncodingPayload typePayload type 101610161 1 DVI4 DVI4 5, 65, 6G721G7212 2 G722 G722 9 9G728G7281515 GSM GSM 3 3L16L1610, 1110, 11 LPC LPC 7 7MPAMPA1414 PCMA PCMA 8
50、 8 PCMU PCMU 0 0Payload types for standard audio encodingPayload types for standard audio encoding8 . 能力协商能力协商协商介绍协商例子UA能力协商概述能力协商概述&主叫携带能力集INVITE的消息体中带有UAC(主叫)的能力集&被叫证实能力UAS(被叫)在从主叫的能力集中选择一种,通过200 OK消息返回&根据消息体中的IP地址和端口号创建RTP流 c=IN IP4 192.190.132.3 (例子参加案例分析之“基本呼叫”)9.案例分析案例分析最简单的呼叫经过两个Proxy的呼叫呼叫转移I
51、NVITEjohn192.190.132.31c=IN IP4 192.190.132.20m=audio 49170 RTP/AVP 0 3200 OKc=IN IP4 192.190.132.31m=audio 12345 RTP/AVP 3Johns terminal ringsACK192.190.132.31JohnMaryPort 12345The response indicates that Johns terminal can receive GSM data, on port 12345 192.190.132.20例子一:最简单的呼叫例子一:最简单的呼叫例子一:最简单的呼
52、叫例子一:最简单的呼叫180 RingGSM Stream200 OKBYE例子二:经过两个例子二:经过两个Proxy的呼叫的呼叫例子三:例子三: 遇忙转移遇忙转移User AUser AProxyProxyUser B1User B1INVITEINVITEINVITEINVITE100 100 TryingTrying468 468 BusyBusyACKACKINVITEINVITE180 180 RingingRinging180 180 RingingRinging200 200 OKOK200 200 OKOKACKACKACKACKBoth way RTP voiceBoth w
53、ay RTP voiceBYEBYEBYEBYE200 200 OKOK200 200 OKOK10. 测验测验1.1.SIPSIP网络的主要功能实体是什么?网络的主要功能实体是什么?2.2.SIPSIP协议有什么请求消息?协议有什么请求消息?3.3.SIPSIP如何寻址?如何寻址?4.4.如何进行媒体协商?如何进行媒体协商?5.5.画出经过一个画出经过一个Proxy ServerProxy Server的呼叫序列图的呼叫序列图11. SIP协议的实现方法入门协议的实现方法入门概述封装消息解析消息状态机实现方法概述实现方法概述封装消息封装消息解析消息解析消息状态机的实现状态机的实现12. SI
54、P的继续学习方法的继续学习方法1.1.SIPSIP协议原文(协议原文(RFC2543RFC2543)2.2.SIPSIP协议的扩展(协议的扩展(RFC2976RFC2976)3.3.SIPSIP的权威站点的权威站点4.1)http:/www.ietf.org/html.charters/sip-charter.html(官方站点)5.2) Http:/(最新应用)6.3) Http:/(最新应用)7.4) Http:/www.vovida.org(免费源代码组织)8.5) http:/www.cs.columbia.edu/hgs/sip/(SIP的哥伦比亚大学老家)Contact me when you are troubled with SIP.It is my pleasure to discuss with you!Kermit