SIP会话

SIP 基本呼叫流程

下图显示了SIP会话的基本呼叫流程:
在这里插入图片描述
SIP Call Flow
下面给出了上述调用流程的逐步解释 :

  • 发送到代理服务器的INVITE请求负责启动会话。
  • 代理服务器立即向呼叫者(Alice)发送 100 Trying 响应以停止INVITE请求的重传。
  • 代理服务器在位置服务器中搜索Bob的地址。在获得地址之后,它进一步转发INVITE请求。
  • 此后,由Bob产生的 180响铃(临时响应)被返回给Alice。
  • Bob在接听电话后立即生成 200 OK 响应。
  • Alice收到 200 OK 时,Bob会收到来自Alice的 ACK 。
  • 同时,会话建立并且RTP分组(对话)开始从两端流动。
  • 在对话之后,任何参与者(Alice或Bob)可以发送 BYE 请求以终止会话。
  • BYE 直接从Alice到Bob绕过代理服务器。
  • 最后,Bob发送 200 OK 响应以确认BYE并且会话终止。
  • 在上述基本呼叫流程中,三个事务(标记为1,2,3)可用。

完整的呼叫(从INVITE到200 OK)称为 Dialog 。

SIP梯形

代理如何帮助将一个用户与另一个用户连接? 让我们在下面图的帮助下找出:

在这里插入图片描述
图中所示的拓扑称为SIP梯形。该过程如下进行:

  • 当呼叫者发起呼叫时,向代理服务器发送INVITE消息。在接收到INVITE时,代理服务器尝试在DNS服务器的帮助下解析被调用者的地址。
  • 在获得下一个路由之后,呼叫者的代理服务器(代理1,也称为出站代理服务器)将INVITE请求转发到被叫者的代理服务器,该代理服务器充当被叫者的入站代理服务器(代理2)。
  • 入站代理服务器与位置服务器联系以获取有关用户注册的被叫方地址的信息。
  • 在从位置服务器获取信息之后,它将呼叫转发到其目的地。
  • 一旦用户代理知道他们的地址,他们可以绕过呼叫,即对话直接传递。

SIP 会话描述协议

SDP代表会话描述协议。它用于描述参与者通过网络理解的格式的多媒体会话。根据该描述,一方决定是否加入会议或者何时或如何加入会议。

  • 会议的所有者通过发送包含会话描述的多播消息在网络上广告它。所有者的名称,会话的名称,编码,时间等。根据这些信息,广告的接收者做出关于参与会话的决定。
  • SDP通常包含在通常称为SIP的会话发起协议的主体部分中。
  • SDP在RFC 2327中定义。SDP消息由一系列称为字段的行组成,其名称由单个小写字母缩写,并且以所需顺序来简化解析。

SDP的目的

SDP的目的是在多媒体会话中传达关于媒体流的信息,以帮助参与者加入或收集特定会话的信息。

  • SDP是一个短结构化文本描述。
  • 它传达会话的名称和目的,媒体,协议,编解码格式,定时和传输信息。
  • 临时参与者检查这些信息并决定是否加入会话,以及如果它决定如何以及何时加入会话。
  • 格式具有< type>形式的条目。 =< value>,其中< type> 定义唯一会话参数,并且< value> 提供该参数的特定值。
  • SDP消息的一般形式是 -
  • x = parameter1参数2 …参数N
  • 行以单个小写字母开头,例如x。字母和=之间从不存在任何空格,每个参数之间只有一个空格。每个字段都有一定数量的参数。

会话描述参数

会话描述(*表示可选)

  • 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)
  • z =* (time zone adjustments)
  • k =* (encryption key)
  • a =* (zero or more session attribute lines)

协议版本

  • v =字段包含SDP版本号。因为SDP的当前版本是0,所以有效的SDP消息将始终以v = 0开始。

所有者/创建者和会话标识符

o =字段包含有关会话发起者和会话标识符的信息。此字段用于唯一标识会话。

  • 该字段包含 -

    o =< username>< session-id>< version>< network-type>< address-type>

  • 用户名参数包含发起方的登录名或主机。

  • session-id 参数是用于确保唯一性的网络时间协议(NTP)时间戳或随机数。

  • 版本是一个数字字段,对于会话的每个更改都会增加,也建议为NTP时间戳。

  • 对于Internet,网络类型始终为IN。address-type参数为IPv4或IPv6地址的IP4或IP6(点分十进制形式或完全限定的主机名)。

会话名称

s =字段包含会话的名称。 它可以包含任何非零数字的字符。可选的i =字段包含有关会话的信息。它可以包含任意数量的字符。

URI

可选的u =字段包含具有关于会话的更多信息的统一资源指示符(URI)

电子邮件地址

可选的e =字段包含会话主机的电子邮件地址。可选的p =字段包含电话号码。

连接信息

c =字段包含有关介质连接的信息。

  • 该字段包含 c =< network-type>< address-type>< connection-address>
  • 对于Internet, network-type 参数定义为IN。
  • 地址类型定义为IPv4地址的IP4和IPv6地址的IP6。
  • connection-address 是将发送媒体数据包的IP地址或主机,可以是多播或单播。
  • 如果组播,则connection-address字段包含 connection-address = base-multicast-address / ttl / number-of-addresses
    其中 ttl 是生存时间值,并且地址数量指示从基本多播地址开始包括多少个连续的多播地址。

带宽信息

可选b =字段包含有关所需带宽的信息。 它的形式 -

b = modifier:bandwidth - value

时间,重复次数和时区

t =字段包含会话的开始时间和停止时间。

t =开始时间停止时间

可选的r =字段包含有关可以在NTP或天( d 小>),小时( h 小>)或分钟( > m )。

可选的 z =字段包含有关时区偏移的信息。如果发生的会话跨越从夏令时到标准时间的更改,则使用此字段,反之亦然。

媒体公告

可选的 m =字段包含有关媒体会话类型的信息。 该字段包含:

m =媒体端口传输格式列表
  • 媒体参数是音频,视频,文本,应用程序,消息,图像或控件。port参数包含端口号。
  • 传输参数包含使用的传输协议或RTP配置文件。
  • 格式列表包含有关介质的更多信息。通常,它包含在RTP音频视频简档中定义的媒体有效载荷类型。
Example:
m = audio 49430 RTP/AVP 0 6 8 99

这三个编解码器之一可以用于音频媒体会话。如果意图是建立三个音频通道,则将使用三个单独的媒体字段。

属性

可选的a =字段包含前面的媒体会话的属性。 此字段可用于扩展SDP以提供有关介质的更多信息。 如果SDP用户没有完全理解,则可以忽略属性字段。 媒体字段中列出的每个媒体有效内容类型可以有一个或多个属性字段。
SDP中的属性可以是

  • session level, or
  • media level.
    会话级别意味着该属性在SDP中的第一个媒体行之前列出。 如果是这种情况,该属性将应用于其下的所有媒体行。
    媒体级别表示它在媒体行之后列出。 在这种情况下,属性仅适用于该特定媒体流。
    SDP可以包括会话级和媒体级属性。 如果相同的属性同时出现,则媒体级属性将覆盖该特定媒体流的会话级属性。 请注意,连接数据字段也可以是会话级或媒体级。

SDP示例

下面给出一个示例会话描述,取自RFC 2327:

v = 0
o = mhandley2890844526 2890842807 IN IP4 126.16.64.4
s = SDP Seminar
i = A Seminar on the session description protocol
u = http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e = mjh@isi.edu(Mark Handley)
c = IN IP4 224.2.17.12/127
t = 2873397496 2873404696
a = recvonly
m = audio 49170 RTP/AVP 0
m = video 51372 RTP/AVP 31
m = application 32416udp wb
a = orient:portrait
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大张哥儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值