下面是一个典型的SIP会话
 
SIP交换中的SDP及RTP的工作过程


要传送媒体首先要建立一个媒体会话(Session)。建立媒体会话实际上就是通过SDP offer/answer交换进行就会话的媒体参数进行协商的一个过程。但在SIP中没有规定使用哪个SIP消息来携带一个SDPofferanswer)。理论上,任何SIP消息的正文中都可以包含会话描述部分。但是,一个SIP中的会话描述并不一定是一个offer 或一个answer,只有符合在SIP标准RFCs中所描述的规则的会话描述才会被解释为一个offer或一个answeroffer/answer模型定义会话的更新。在SIP中,对话(dialog)用于将offer/answer交换及其要更新的会话联系起来。换句话说,只有在某个SIP对话中进行的offer/answer交换,才能更新该对话所管理的会话。
SIP消息中承载offer/answer的规则定义在RFC 3261[1], RFC 3262 [2] 以及RFC 3311 [4]中。在这些RFCs中定义了六种SIP消息中交换offer/answer的模式。
模式1和模式2是在RFC3261中定义 的,用于不支持可靠临时响应消息(1xx-rel)的SIP实体之间的会话建立。
模式1UACINVITE请求中携带一个 offer, UAS200 INVITE响应中返回answer。这是最常用的一种模式。
模式2UACINVITE请求中没有携带 offerUAS200 INVITE响应中携带一个offerUAC通过ACK返回answer。这种模式通常用于3PCC中。
模式3、模式4、模式5都是在RFC3262 定义的,可用在支持100rel(可靠临时响应)扩展的SIP实体之间。其中模式3、模式4可用于会话建立。模式5只能用于会话参数更新。它们利用 1xx-rel响应消息来携带offeranswer来建立会话。
模式3UACINVITE请求中携带一个offer, UAS1xx-rel响应中返回answer。这样,在呼叫完成之前(UAC没有收到200 INVITE消息)会话已建立。此后,会话参数还可以被更新,具体见模式5及模式6
4 UACINVITE请求中没有携带offerUAS1xx-rel可靠响应中携带一个offerUAC通过PRACK返回answer。同样地, 在呼叫完成之前(UAC没有收到200 INVITE消息)会话已建立。此后,会话参数还可以被更新,具体见模式6
模式5UACUAS采用模式3建立会话 后,呼叫并未完成(见模式3)。之后,可以使用模式5对已建立的会话参数进行更新:UACPRACK请求中携带一个新的offer, UAS200 PRACK响应中返回answer。这样,会话参数便被更新。
模式6RFC3311中定义,主要用于在早期 对话中更新已建立的会话参数,会话可能是通过模式3,也可能是通过模式4建立的。
模式6还可以对会话进行多次更新。例如,之前已通过模 5更新过的会话还可以使用模式6更新;甚至通过模式6更新过的会话还可以再次使用模式6更新。
6UAC(或UAS)发送UPDATE请求其中携带一个新的offer, AS(或UAC)在200 UPDATE中返回一个offer。这样,会话参数便被更新。注意,UASUAC在发送UPDATE进行会话更新之前,必须保证之前的会话更新过程已经 完成。也就是说,发出的offer已经收到answer,或者收到的offer已经产生了answer
INVITE方法提供了会话建立过程。
在没有100rel选项时,会话建立过程非常简单,只能使用200INVITE响应消息传送会话描述,这些会话描述可能是answer(模式1),也可能是 offer(模式2)。无论使用何种模式,会话都只能呼叫完成后才能建立,在呼叫完成之前和呼叫完成之后只能有一个会话 用于最终通话的常规会话,因而,不能建立所谓的“早期媒体会话”。
在引入100rel选项后,会话建立过程变得复杂,通过可靠的临时消 息消息也可以传送会话描述,这些会话描述可能是answer(模式3),也可能是offer(模式4)。模式3和模式4都能够在呼叫完成前建立会话。并且 在呼叫完成之前,这些会话还可以被更新。这样就能够建立与常规会话不同的“早期媒体会话”,完成回铃音的产生等功能。
PRACK方法可 用于更新已建立的会话的参数(模式5
UPDATE方法可用于多次更新已建立的会话的参数(模式6),发起更新的可以是UAC也可以是 UAS
 
 
 
SDPRTP的工作过程:
一、SIP协议告知对方UDP端口号,协商媒体类型
1.1        主叫方发给被叫方的INVITE请求
 
SIP交换中的SDP及RTP的工作过程

 
1.2        被叫方回给主叫方的183消息
 
 
  SIP交换中的SDP及RTP的工作过程
 
 

二、RTP媒体流
2.1        主叫方发给被叫方的一个RTP包,UDP端口号是SDP协商好的,包的***是28590

SIP交换中的SDP及RTP的工作过程

2.2        主叫方发给被叫方的下一个RTP包,UDP端口号是SDP协商好的,包的***是28591
 
  SIP交换中的SDP及RTP的工作过程
 
三、RTCP媒体流
3.1        每发完一批RTP包的时候,就发一个RTCP包,告诉接收方我刚才发了多少RTP包,多少个字节
 
SIP交换中的SDP及RTP的工作过程










本文转自:
https://wenku.baidu.com/view/854dd3e55ef7ba0d4a733bed.html




 

相关文章: