添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
好帅的丝瓜  ·  pyqt5多进程进度条-掘金·  8 月前    · 
个性的领带  ·  node.js - Use ...·  1 年前    · 
阳刚的橙子  ·  python插值(scipy.interpo ...·  1 年前    · 

SIP(Session Initiation Protocol,会话发起协议)是VoIP(Voice over Internet Protocol,IP语音)技术中最常用的协议之一。它是一种应用层协议,与其他应用层协议一起工作,控制Internet上的多媒体通信会话。

1. VoIP技术

在进一步讨论之前,我们先了解一下VoIP。能够通过因特网传输语音和视频电话的系统被称为VoIP或商务电话系统。VoIP本身不是一种协议。相反,它是所有使用IP传输语音和视频信息的技术的总称。VoIP的主要内涵如下:

  • VoIP是一种允许您通过Internet传递语音和多媒体(视频、图片)内容的技术。这是一种随时随地都可以使用互联网的最廉价的通信方式。
  • VoIP的优势包括:
  • 便捷(可移植性强)
  • 支持视频会议
  • 不需要额外电缆
  • 对于一个VoIP电话,所需要的只是一台连接互联网的电脑/笔记本电脑/手机。VoIP呼叫过程如图1所示。
  • 图1:VoIP电话工作过程

    2. SIP协议

    1)SIP协议位置

    SIP是一种应用层协议,是因特网上现代交互通信(语音通话、视频通话等)的基础。在OSI模型中所处第7层位置,具体如图2所示。

    图2:SIP处OSI模型第7层位置

    2)SIP协议功能

    SIP是一种与媒体无关的协议——它不是语音,不是视频,也不是数据——它可以是任何东西。虽然它主要应用于VoIP,但它不是一个VoIP协议。SIP只是发起和终止IP通信会话,该会话可以是两人之间的语音通话,也可以是团队之间的视频会议。它通过在两个或多个已识别的IP端点(也称为SIP地址)之间发送消息(以数据包的形式)来建立会话。每个SIP地址都连接到一个物理SIP客户端(如IP桌上电话)或一个软件客户端(如软电话)。图3描述了SIP会话的初始细节。INVITE是一个SIP消息,用于请求来自另一个SIP客户机的参与。类似于电子邮件地址的文本块是参与者的SIP地址。

    图3:SIP 请求信息示例

    在这些会话期间,SIP不编码、解码或传输任何信息。这就是为什么它可以用于视频会议、即时消息以及在互联网上打电话。我们暂时将SIP的其他用途放在一边,而将重点放在该协议在语音通话期间是如何工作的。

    3)SIP在VoIP呼叫中如何工作

    SIP在VoIP呼叫期间不能单独工作。需要其他几个协议与它一起工作,以确保语音数据到达目的地。会话描述协议(SDP)就是这样一种协议。当SIP与IP端点通信以交换数据时,SDP传递与会话相关的信息以帮助参与者加入或接收会话。它发送三种类型的信息:会话描述、时间描述和媒体描述。SDP本身并不传输这些细节。相反,会话描述是作为SIP消息的有效负载包含的。

    在通过网络传输之前,语音信息使用将音频信号转换成二进制数据的编解码器进行编码。许多编解码器都用于此目的,但最常见的两种是:

  • G.711编解码器:用于未压缩的数字语音。音频质量比其他编解码器更好,但它使用更多的带宽。
  • G.729编解码器:用于压缩语音。它降低音频质量,以减少传输数据量和由此产生的带宽消耗。
  • 音频数据的编码包由实时传输协议(real-time transport protocol,RTP)承载,RTP是一种专门的应用层协议,用于音频和视频数据的实时流。RTP会话独立于SIP协议。与SDP不同,RTP会话与SIP会话并行运行,SDP是SIP的有效负载。RTP与RTP控制协议RTCP (RTP control protocol)协同工作,RTP协议交换与服务质量相关的信息,包括交换的数据包数、丢失的数据包数、往返延迟时间等。通过RTCP详细信息,可以监控会话的服务质量。RTCP信息不与RTP数据流混合,而是通过与RTP流并行运行的独立会话进行传递。如图4所示为三个参与者在一个VoIP会话中交换RTP和RTCP数据包。

    图4:在VoIP会话里的RTP和RTCP数据流

    RTP、RTCP和SIP(带SDP负载)数据包通过传输层协议传输到它们的目的地。其中TCP和UDP是最常用的两种协议。

  • Transmission control protocol (TCP):按顺序传输数据包。对于发送的每个包,接收端发送回一个接收确认包。如果确认信息包在一定时间内没有被接收,或者它声明有问题,那么原始信息包将被重新发送。TCP的设计是为了保证数据的准确性,确保数据报文按照原始的顺序发送。
  • User datagram protocol (UDP):传输数据,不检测乱序报文或重传丢失报文。数据包不仅可能以错误的顺序发送,还可能被完全忽略。UDP的主要目的是使数据包尽快送到目的地。
  • 由于UDP侧重于实时数据传输,因此它比TCP更适合VoIP呼叫。虽然UDP中丢失和乱序的数据包会导致轻微的音频质量问题,但在许多情况下,这些是人类的耳朵无法检测到的。此外,TCP数据包的重新排序和重传所造成的延迟可能会导致音频质量差,甚至通话中断。如图5所示为两个端点之间的VoIP呼叫框架。

    图5:两个终端之间VoIP呼叫框架

    如果SIP所做的只是建立和取消呼叫,那么它为什么如此重要。其实电信行业已经将SIP作为VoIP通信的首选协议进行了标准化,这正是因为SIP本身并不参与编码和传输数据。它只是在网络上建立一个会话。而且,随着时间的推移,为支持VoIP而编写的协议变得过时了,每次需要修改的时候,协议都必须重写,这是一个挑战。但SIP有助于克服这一挑战。它被设计成一个标准协议,其中另一个标准定义了您要移动的媒体——因此您不必再次重写协议。

    3. SIP中继(SIP Trunking)

    与SIP中继相比,您可能更熟悉“business VoIP”这个术语。虽然VoIP是一个更广泛的术语,但SIP中继是VoIP电话系统工作方式的核心部分。使用VoIP系统,电话是通过互联网而不是传统的电话线传输的,这就是为什么像Skype这样的服务可以提供免费通话。但是,当VoIP用户想要拨打连接到传统电话网而不是互联网的电话时,会发生什么呢?答案是什么都没有——除非企业拥有SIP中继服务。SIP中继是一种将基于Internet的VoIP系统与电话网络连接起来的服务,从而消除了对传统固定电话或数字电话业务的需求。由于SIP建立在Internet协议组上,而不是传统电话网络中使用的通信接口上,因此必须对SIP消息进行编码,以便到达电话网络上的端点。此外,电信运营商对通过电话网络传输的电话按分钟收费,而他们通常只对互联网服务收取固定的月费。由于这些原因,需要SIP中继来通过VoIP系统拨打和接收电话。SIP中继不是一根物理电话线,而是公司(称为SIP提供商)通过您的互联网连接提供的一种服务。它是这样工作的:你使用宽带网络把你的VoIP电话系统连接到你的SIP供应商的网络上。然后,提供商可以通过您的电话系统上的扩展连接到和从传统电话网络的通话。图6高度简化了SIP端点之间的呼叫与通过SIP中继进行的呼叫的区别。

    图6:SIP之间呼叫和SIP中继区别

    与旧的数字语音服务,如PRI (Primary Rate Interface)服务不同,SIP中继实际上不需要你为单独的中继线付费。这种服务不是按每条线路定价,而是根据您的业务通常在同一时间拨打和接听的最大电话数量定价。

    SIP中继的优势:

  • 同一VoIP系统下的办公室间免费通话。SIP提供商通过互联网在办公室之间路由电话,因此不必为它们支付每分钟的费用。办公室之间的免费电话可以为企业节省大量成本,尤其是那些在多个国家设有办事处的企业。
  • 优惠费率,特别是国际长途。IT咨询公司Delphi, Inc.的总裁、电信行业新闻网站No Jitter的作者Gary Audin观察到,使用SIP中继,企业可以节省高达75%的国际通话费用。
  • 灵活功能。传统干线的容量是固定的。例如,在PRI中继上,有23个通道可以同时用于通话。如果业务需要同时处理24个电话,那么将需要订购一个全新的中继——即使有时只能使用它的23个频道中的一个。使用SIP中继,供应商可以增加或减少几乎可以实时处理的同时呼叫的数量,这样就不用为没有充分使用的线路付费。
  •