培训材料及录像文件se2015q4阅读_第1页
培训材料及录像文件se2015q4阅读_第2页
培训材料及录像文件se2015q4阅读_第3页
培训材料及录像文件se2015q4阅读_第4页
培训材料及录像文件se2015q4阅读_第5页
已阅读5页,还剩87页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SIP徐名海

南京邮电大学通信与信息工程学院OUTLINESIP基本概念SIP会话示例SIP消息SIP会话建立过程SDPSIP与IMSSIP扩展与应用SIP基本概念

SIP与H.323

SIP功能与特点

SIP体系架构H323protocolsuiteIETFSIPprotocolsuiteSIPandH.323

SIP功能与特点(1/3)SIPisanapplication-layercontrolprotocolthatcanestablish,

modify,andterminatemultimediasessions(conferences)suchas

InternettelephonycallsSIPcanalsoinviteparticipantsto

alreadyexistingsessions,suchasmulticastconferencesMediacan

beaddedto(andremovedfrom)anexistingsessionuserscanmaintainasingle

externallyvisibleidentifierregardlessoftheirnetworklocationSIP功能与特点(2/3)SIP功能与特点(3/3)SIPis

acomponentthatcanbeusedwithotherIETFprotocolsto

buildacompletemultimediaarchitecturetheReal-timeTransport

Protocol(RTP)(RFC1889)fortransportingreal-timedataand

providingQoSfeedbacktheReal-Timestreamingprotocol(RTSP)(RFC2326)forcontrollingdeliveryofstreamingmediatheMedia

GatewayControlProtocol(MEGACO)(RFC3015)forcontrolling

gatewaystothePublicSwitchedTelephoneNetwork(PSTN)The

SessionDescriptionProtocol(SDP)(RFC2327)fordescribing

multimediasessionsSIP网络构成SIP体系:

用户代理用户代理(UA,UserAgent)也称SIP终端,是指支持SIP协议的多媒体会话终端。UA包括用户代理客户端(UAC,UserAgentClient)和用户代理服务器(UAS,UserAgentServer)。一般说的UA均是指二者的总称,因为在一次呼叫中,一个SIP终端既要处理SIP请求,又要发起SIP请求。SIP体系:

用户代理用户代理客户端是指在SIP会话建立过程中主动发送会话请求的设备。例如,主叫SIP终端。当代理服务器向被叫终端发送会话请求时,它就成为用户代理客户端。用户代理服务器是指在SIP会话建立过程中接收会话请求的设备。例如,被叫SIP终端。当代理服务器接收主叫终端发送会话请求时,也作为用户代理服务器。SIP体系:

代理服务器代理服务器(ProxyServer)的作用就是传递主叫UA发送的会话请求到被叫UA,然后将被叫UA的响应传递回主叫UA,它相当于主叫UA和被叫UA之间传递会话消息的一座桥梁。代理服务器在接收到主叫UA的会话请求后,首先要向位置服务器请求查找被叫UA的位置以及主、被叫UA的呼叫策略信息。只有找到被叫UA并且此呼叫是允许的,代理服务器才会向被叫UA发送会话请求。代理服务器一般在SIP会话中都是需要的。SIP体系:重定向服务器重定向服务器(RedirectServer)用来指示客户端连接的新地址。比如,主叫UA呼叫被叫UA,当重定向服务器收到主叫UA发送的会话请求消息后,查找被叫UA的位置信息,然后将其返回给主叫UA,使主叫UA重新向该位置发起会话请求。此位置可以是被叫UA的位置,也可以是一个代理服务器的位置。接下来主叫UA如同直接呼叫被叫UA或者向代理服务器呼叫的流程一样。SIP重定向服务器收到会话请求消息后,不是转发会话请求消息,而是在回应消息中告知被叫SIP终端的地址。主叫终端从而重新直接向被叫终端发送会话请求消息。SIP体系:位置服务器位置服务器(LocationServer)是为代理服务器和重定向服务器等提供UA信息的设备。位置服务器记录了注册服务器接收到的UA的信息。二者可以独立存在,也可以作为逻辑组件存在于同一台服务器上。SIP体系:注册服务器注册服务器(RegistrarServer)接受用户注册,注册的内容(如本地号码等信息)一般是存储在位置服务器上,供后续查询使用。二者都是逻辑组件,一般存在于同一台服务器上。SIP消息结构SIP消息结构SIP消息结构SIP消息:请求消息SIP消息采用文本方式编码,包括请求消息与响应消息两类。SIP请求消息包括INVITE、ACK、OPTIONS、BYE、CANCEL和REGISTER等。RFC3261定义的请求消息有以下六种:SIP消息:请求消息SIP基本请求消息及其用法SIP消息:响应消息SIP响应消息用于对请求消息进行响应,指示呼叫或注册的成功或失败状态。不同类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。SIP消息:响应消息响应消息的分类如下表所示。SIP消息:响应消息经常使用的响应消息SIP消息:消息头SIP消息中各头字段的基本含义:Via:

记录了请求在SIP网络中的路由路径。最下面的Via是初台化这个请求的UA(UserAgent)插入的;上面的Via都是在这个路由路径上的Proxy中插入的。Via头域就是用来指示如何将响应沿原路返回到UA的路径。SIP消息:消息头Max-Forwards:

最大转发数,用来限制一个SIP请求消息所能经过的实体的最大数目。如果消息拷贝中包含一个Max-Forwards字段,代理服务器必须将其减一。如果消息拷贝中不含Max-Forwards字段,代理服务器必须加入该字段,其值应该为70。如果请求消息中包含Max-Forwards字段,且其值为零,则SIP实体不得转发,并且返回483(TooManyHops)响应。SIP消息:消息头FromTag,ToTag,和Call-ID构成了dialog信息,可以唯一标识一个dialog。在本次呼叫(Call)中的所有请求和响应将使用同样dialog信息。Call-ID的构成:伪随机数字+”@”+主机名或者IP地址CSeq:CommandSequenceNumber用于标识事务并对事务排序。由一个序列号和请求方法组成。呼叫开始时初始化CSeq。非REGISTER请求的CSeq,序列号值可以是一个任意的32位无符号整数。CSeq按照各自方向严格单向按1递增。CSeq能够区分某个请求是新请求还是重发的请求。SIP消息:消息头Contact:包含的SIP/SIPSURI是UA希望用来接收请求的地址,后续请求可以用它来联系到当前UA。Content-Type:定义消息实体的类型,如text/plain,或application/sdp。如果消息体不为空,Content-Type字段必须存在。Content-Length:定义消息实体的长度,单位为字节。Require:UAC通过Require字段列出的选项标签,告知UAS处理请求时需要支持的选项,本字段为可选,但不可以被忽略。SIP工作原理Location Service

proxy

proxy

Alice’ssoftphone

Bob’sSIPphoneRequest-URI指定了注册时所需的LocationService的域名Contact:<sip:bob@>Expires:7200Content-Length:0REGISTERSIP/2.0Via:SIP/2.0/UDP:5060;branch=z9hG4bKnashds7Max-Forwards:70To:Bob<>From:Bob<>;tag=456248Call-ID:843817637684230@998sdasdh09CSeq:1826REGISTERSIPRegistration1

To中包含了注册时的地址记录,用于注册时创建、查询和修改。必须是一个SIPURI或SIPSURI,并包含一个username。注册时From和To的内容一般是相同的,除非是由第三方发起注册。相同的UA发送出的注册requests中,Call-ID是一样的。这样可以检测由于传输延时而导致的注册失败。Cseq值保证了REGISTERrequest的正确顺序。如果到来的REGISTERrequest具有相同的Call-ID,其值随着request到来递增。REGISTER请求可以有一个Contact头域。这个头域可以有0个或者多个包含绑定地址信息的值。Expires参数表明UA的绑定的有效时间。是一个以秒为单位的整数。按规定,在没有收到对上一个注册request的response或确定超时之前,UA禁止发送新的注册request(新的request指的是包含新的Contact头域值的request,指的不是重发原有的request)。F1

registrarLocation Service

registrar

proxy

proxy

Alice’ssoftphoneSIPRegistration2F2StoreSIP/2.0200OKVia:SIP/2.0/UDP:5060;branch=z9hG4bKnashds7;received=Max-Forwards:70To:Bob<>;tag=2493k59kdFrom:Bob<>;tag=456248Call-ID:843817637684230@998sdasdh09CSeq:1826REGISTERContact:<sip:bob@>Expires:7200Content-Length:0 Bob’s SIPphoneResponse是协议版本号、Status-Code和原因说明组成注册服务器返回response时会在Via头中加上”received”参数,里面是request的源地址。Response要在To头中加上”tag”,这时将会形成一个完整的Dialog,以后To头将一直包含这个tag。SessionSetup1

proxy

Alice’ssoftphone

Bob’sSIPphoneINVITESIP/2.0Via:SIP/2.0/UDP;branch=z9hG4bKnashds8Max-Forwards:70To:Bob<>From:Alice<>;tag=1928301774Call-ID:a84b4c76e66710CSeq:314159INVITEContact:<>Content-Type:application/sdpContent-Length:142(Alice‘sSDPnotshown)F1

proxyVia头里定义了transaction传输的下层传输协议(UDP),并标识response将要被发送的地址()在INVITErequest中,Request-URI与To头里的URI是相同的。。Via字段必须包含"branch"参数,以"z9hG4bk"开头的随机字符,用来标识当前request所建立的transaction。Max-Forwards头限定一个request在到达目的地之前允许经过的最大跳数。它包含一个整数值,每经过一跳,这个值就被减一。To头指定request的逻辑接收者或者是用户或资源的注册地址,该地址同样是作为request的目标地址。由于dialog还没有建立,所以没有"tag"参数。From头是指示request发起方的逻辑标识,它可能是用户的注册地址。From头包含一个URI和一个可选的显示名称。From头中必须包含一个新的由UAC选定的"tag"参数用来标识一个dialog。Call-ID头是用来将消息分组的唯一性标识。本协议规定,在一个对话中,UA发送的所有requests和responses都必须有同样的Call-ID。一个UA每次注册所用的Call-ID也应是一样的。Cseq头用于标识transations并对transactions进行排序。它由一个请求方法requestmethod和一个序列号组成,请求方法必须与对应的request类型一致。Contact头指定一个SIP或SIPSURI,后续请求requests可以用它来联系到当前UA。Content-Type头指定消息体的媒体类型。SDP定义在RFC2327。Alice的UA不知道Bob的UA地址,也不知道Bob在域内的服务器。因此,Alice的UA向Alice所在域的SIP服务器发送INVITErequest,该SIP服务器的地址可以预先配置在Alice的softphone里,也可以通过DHCP等查找。代理服务器是通过DNS查找来找到在Bob的域内的SIP代理服务器的。(见RFC3263)

Alice’ssoftphone

proxy

Bob’sSIPphoneSessionSetup2SIP/2.0100TryingVia:SIP/2.0/UDP;branch=z9hG4bKnashds8;received=To:Bob<>From:Alice<>;tag=1928301774Call-ID:a84b4c76e66710CSeq:314159INVITEContent-Length:0F2INVITESIP/2.0;branch=z9hG4bKnashds8Via:SIP/2.0/UDP;branch=z9hG4bK77ef4c2312983.1Via:SIP/2.0/UDP;received=Max-Forwards:69To:Bob<>From:Alice<>;tag=1928301774Call-ID:a84b4c76e66710CSeq:314159INVITEContact:<>Content-Type:application/sdpContent-Length:142(Alice‘sSDPnotshown)F3"received"参数包含一个实际发送request的地址。检查第一个Via包里的域名或地址,发现包含一个不同于数据包源地址的域名或IP地址,就在前一跳的Via字段中插入一个包含实际发送该数据包的地址的参数。Max-Forwards值递减1。在前向发送forwardingINVITErequest时,服务器添加一个Via头,里面包含自身的地址()和新的"branch"参数。

proxy100(Trying)response包含与INVITErequest相同的To、From、Call-ID和CSeq。SessionSetup3

proxy

proxy在向前发送INVITErequest时,""服务器添加一个包含自身地址的Via头。""的代理服务器建立的Via头被添加上了"received"参数。

Alice’s softphoneLocation ServiceResponseQuerySIP/2.0100TryingVia:SIP/2.0/UDP;branch=z9hG4bK77ef4c2312983.1;received= Via:SIP/2.0/UDP ;branch=z9hG4bKnashds8 ;received= To:Bob<> From:Alice<> ;tag=1928301774 Call-ID:a84b4c76e66710 CSeq:314159INVITE Content-Length:0F5F4;branch=z9hG4bK4b43c2ff8.1Via:SIP/2.0/UDP;branch=z9hG4bK77ef4c2312983.1INVITEsip:bob@SIP/2.0Via:SIP/2.0/UDP;received= Via:SIP/2.0/UDP ;branch=z9hG4bKnashds8 ;received= Max-Forwards:68 To:Bob<> From:Alice<> ;tag=1928301774Call-ID:a84b4c76e66710 CSeq:314159INVITE Contact:<> Content-Type:application/sdp Content-Length:142 (Alice‘sSDPnotshown) Bob’s SIPphone代理服务器向本地数据库查询,找到Bob当前的IP地址。F6

proxy

Alice’ssoftphone

Bob’sSIPphoneSIP/2.0180RingingVia:SIP/2.0/UDP;branch=z9hG4bK4b43c2ff8.1;received=Via:SIP/2.0/UDP;branch=z9hG4bK77ef4c2312983.1;received= Via:SIP/2.0/UDP ;branch=z9hG4bKnashds8 ;received= To:Bob<> ;tag=a6c85cf From:Alice<> ;tag=1928301774 Call-ID:a84b4c76e66710 CSeq:314159INVITE Contact:<sip:bob@>Content-Length:0SessionSetup4

F6

proxy其他头(From、Call-ID,CSeq和底部的Via)直接从INVITErequest复制过来。To头中添加了"tag"标签,用来标识一个dialog中的被叫方。尽管dialog还没有建立好,但是用来标识一个完整dialog的三个参数:Call-ID,本地tag,远端tag已经定义好了。Contact头提供了用来向BobUA发送后续requests的SIPURI或SIPSURI。Bob的SIP电话响铃,回应一个180Ringing的response,按照相反的方向传给的代理(最顶上的Via头)。SessionSetup5

proxy

proxy

Alice’ssoftphone;received= Via:SIP/2.0/UDP ;branch=z9hG4bKnashds8 ;received= To:Bob<> ;tag=a6c85cf From:Alice<> ;tag=1928301774 Call-ID:a84b4c76e66710 CSeq:314159INVITE Contact:<sip:bob@>Content-Length:0 F7SIP/2.0180RingingVia:SIP/2.0/UDP;branch=z9hG4bK77ef4c2312983.1收到来自BobUA的180Ringing消息后,最顶上的Via头中的"branch"参数帮助服务器用来接收对应的transaction。然后移除掉这个Via头,并将此消息发送到下一跳:的代理。

Bob’s SIPphoneSessionSetup6

proxy

proxy

Alice’ssoftphone

Bob’sSIPphone;branch=z9hG4bKnashds8;received=To:Bob<> ;tag=a6c85cfFrom:Alice<>;tag=1928301774Call-ID:a84b4c76e66710CSeq:314159INVITEContact:<sip:bob@> F8SIP/2.0180Ringing Via:SIP/2.0/UDP收到来自代理服务器的180Ringing消息后,最顶上的Via头中的"branch"参数帮助服务器用来接收对应的transaction。然后移除掉这个Via头,并将此消息发送到下一跳:AliceUA。Content-Length:0

Alice的softphone将响铃信息传给Alice,使用一个响铃声音或者在Alice的屏幕显示一个呼叫的消息。

proxy

proxy

Alice’ssoftphone

Bob’sSIPphone;received= Via:SIP/2.0/UDP ;branch=z9hG4bKnashds8 ;received= To:Bob<>SessionSetup7 F9 SIP/2.0200OK Via:SIP/2.0/UDP ;branch=z9hG4bK4b43c2ff8.1;received=Via:SIP/2.0/UDP;branch=z9hG4bK77ef4c2312983.1在代理和Bob'sUA之间,由"CSeq:314159INVITE"/"branch=z9hG4bK4b43c2ff8.1"代表的transaction事务,被这个200(OK)response终结。 ;tag=a6c85cf From:Alice<> ;tag=1928301774 Call-ID:a84b4c76e66710 CSeq:314159INVITE Contact:<sip:bob@> Content-Type:application/sdp Content-Length:131 (Bob‘sSDPnotshown)当Bob接起电话,他的SIPphone发送200(OK)response表示电话已经被接通。200(OK)包含一个SDP信息体,里面说明了Bob愿意与Alice建立会话的类型的媒体描述。

Alice’ssoftphone

Bob’sSIPphoneSessionSetup8

F10

proxy SIP/2.0200OK Via:SIP/2.0/UDP ;branch=z9hG4bK77ef4c2312983.1 ;received= Via:SIP/2.0/UDP ;branch=z9hG4bKnashds8 ;received= To:Bob<> ;tag=a6c85cf From:Alice<> ;tag=1928301774 Call-ID:a84b4c76e66710 CSeq:314159INVITE Contact:<sip:bob@> Content-Type:application/sdp Content-Length:131(Bob‘sSDPnotshown)

proxy在代理和代理之间,由"CSeq:314159INVITE"/"branch=z9hG4bK77ef4c2312983.1"代表的transaction事务,被这个200(OK)response终结。SessionSetup9

proxy

proxy

Alice’ssoftphone

Bob’sSIPphone F11SIP/2.0200OK Via:SIP/2.0/UDP ;branch=z9hG4bKnashds8 ;received=To:Bob<> ;tag=a6c85cfFrom:Alice<>;tag=1928301774Call-ID:a84b4c76e66710CSeq:314159INVITEContact:<sip:bob@>Content-Type:application/sdpContent-Length:131(Bob‘sSDPnotshown)在代理和Alice'sUA之间,由"CSeq:314159INVITE”/"branch=z9hG4bKnashds8”代表的transaction事务,被这个200(OK)response终结。Alice的电话停止响铃声音,提示对方已经接通。

Alice’ssoftphone

Bob’sSIPphoneSessionSetup10CSeq:314159ACKContent-Length:0

proxy F12 ACKsip:bob@SIP/2.0 Via:SIP/2.0/UDP ;branch=z9hG4bKnashds9 Max-Forwards:70 To:Bob<> ;tag=a6c85cf From:Alice<> ;tag=1928301774 Call-ID:a84b4c76e66710

proxyAlice的softphone发送一个ACK给Bob的SIPphone用于确定收到了最终响应(200response)。

proxy

Alice’ssoftphone

Bob’sSIPphoneSessionSetup11MediaSession

proxyAllce与Bob的媒体会话现在开始,他们使用在SDP中协商的格式发送媒体包。一般来讲,端到端的媒体包与SIP信令的路径不一样。SDP中常用到的媒体类型包括:"audio","video","application","data","control"等等。

proxy

proxy

Alice’ssoftphone

Bob’sSIPphoneSessionSetup12CSeq:231BYEContent-Length:0BYEsip:SIP/2.0Via:SIP/2.0/UDP;branch=z9hG4bKnashds10Max-Forwards:70From:Bob<> ;tag=a6c85cfFrom:Alice<>;tag=1928301774Call-ID:a84b4c76e66710F13最后,Bob挂掉了电话,他的电话产生了BYErequest消息。这个BYE消息不经过代理直接传到了Alice的softphone端。

Alice’ssoftphone

Bob’sSIPphoneSessionSetup13CSeq:231BYEContent-Length:0

proxy F14 SIP/2.0200OK Via:SIP/2.0/UDP ;branch=z9hG4bKnashds10 From:Bob<> ;tag=a6c85cf From:Alice<> ;tag=1928301774 Call-ID:a84b4c76e66710

proxyAlice确认收到了BYE,向Bob发送200(OK)response,就此终结此次会话和BYE事务。SDP:SessionDescriptionProtocolSDPSessiondescription//格式及举例v=(protocolversion)//v=0o=(owner/creatorandsessionidentifier).//o=<用户名><会话id><版本><网络类//型><地址类型><地址>//o=sname1234567890IN//IP4s=(sessionname)//会话名i=*(sessioninformation)//会话信息u=*(URIofdescription).cn/staff/sdp.pse=*(emailaddress)//e=zte@(generaltext如:王生)//或e=Mr.Wang<>p=*(phonenumber)//p=(wang)//orp=SDPc=*(connectioninformation-如已经包含在所有媒体中则该行不需要)//c=<网络类型><地址信息><连接地址>//多点会议包括TTL//连接地址:<basemulticast

//address>/<ttl>/<numberofaddresses>//c=INIP43/127//c=INIP4/127/3b=*(bandwidthinformation)//b=<修改量(CTConferenceTotal//IASApplication-specificMax)>:<带宽//值(kb/s)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论