SIP协议学习

SIP(Session Initiation Protocol,会话初始协议)是一个应用层的信令控制协议,用于创建、修改和释放一个或多个参与者的会话。以下是关于 SIP 协议的详细介绍:

1.发展历程:

  • 1996 年,出现 SIP 的概念。
  • 1999 年 3 月,IETF(Internet Engineering Task Force,因特网工程任务组)在 RFC2543 中定义了 SIP。
  • 21 世纪初,SIP 得到逐渐推广。随着 LTE 的推广,SIP 成为 LTE 的语音最终解决方案 VoLTE 的主要信令协议,其应用范围从特定环境逐步扩展至主流多媒体通信环境。

2.系统组成:

  • 用户代理(User Agent):分为用户代理客户端(UAC)和用户代理服务器(UAS)。UAC 负责发起 SIP 请求,UAS 负责接收并响应请求。例如,用户使用的 SIP 电话终端就是一种用户代理,它可以发起呼叫请求(作为 UAC),也可以接收来自其他用户的呼叫请求并进行响应(作为 UAS)。

  • 网络服务器:包括代理服务器(Proxy Server)、重定向服务器(Redirect Server)和注册服务器(Registrar Server)。

    • 代理服务器:接收 SIP 请求并将其转发给下一个服务器或目标用户代理,起到路由的作用。
    • 重定向服务器:不直接转发请求,而是返回目标地址信息,让发起请求的用户代理直接向目标地址发送请求。
    • 注册服务器:用于接收用户代理的注册信息,记录用户的位置信息等,以便其他用户能够找到该用户。

3.工作原理:

  • 呼叫建立

    • 用户 A 的用户代理客户端(UAC)向网络中的代理服务器发送一个 INVITE 请求,该请求中包含了用户 A 希望呼叫的用户 B 的地址信息以及一些会话描述信息,如媒体类型(音频、视频等)、编码方式等。
    • 代理服务器根据用户 B 的地址信息将 INVITE 请求转发给用户 B 所在的网络或用户 B 的用户代理服务器(UAS)。
    • 用户 B 的 UAS 收到 INVITE 请求后,如果用户 B 愿意接受呼叫,就会返回一个 200 OK 响应,表示接受呼叫。
    • 用户 A 的 UAC 收到 200 OK 响应后,再发送一个 ACK 确认消息,至此呼叫建立成功,双方可以开始进行多媒体通信。
  • 会话修改:在会话进行过程中,如果用户想要修改会话的参数,例如改变媒体类型、调整编码方式等,可以通过发送一个新的请求来实现。例如,用户 A 想要从音频通话切换为视频通话,就可以发送一个新的 INVITE 请求,其中包含新的视频媒体描述信息。对方用户 B 的 UAS 收到请求后,如果同意修改,就会返回相应的响应,会话参数修改完成。

  • 会话终止:当一方用户想要结束会话时,可以发送一个 BYE 请求。对方收到 BYE 请求后,返回一个 200 OK 响应,会话终止。

4.协议特点:

  • 灵活性:SIP 不定义要建立的会话的类型,只定义应该如何管理会话,这意味着它可以用于众多应用和服务中,如互联网多媒体会议、IP 电话、多媒体分发、即时消息等。

  • 易于实现和扩展:SIP 消息是基于文本的,易于读取和调试,新服务的编程更加简单,对于设计人员而言更加直观。而且对 SIP 的扩充易于定义,可由服务提供商在新的应用中添加,不会损坏网络。

  • 与其他协议协作性好:SIP 可以与负责语音质量的资源预留协议(RSVP)互操作,还与负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务(RADIUS)以及负责实时传输的 RTP 等多个协议协作。

  • 独立性:SIP 独立于传输层,底层传输可以是采用 ATM 的 IP,它使用用户数据报协议(UDP)以及传输控制协议(TCP),将独立于底层基础设施的用户灵活地连接起来。

5.消息格式:

  • SIP 消息分为请求消息和响应消息两类。

  • 请求消息:常见的请求消息有 INVITE(用于邀请用户参加会话)、ACK(用于确认对 INVITE 请求的响应)、BYE(用于终止会话)、OPTIONS(用于查询服务器的能力)、REGISTER(用于用户向注册服务器注册自己的位置信息)等。请求消息的格式包括起始行(请求行)、消息头和消息体。起始行包含请求方法、请求的目标地址和 SIP 版本号;消息头包含各种头字段,如 From、To、Call-ID、CSeq 等,用于描述请求的相关信息;消息体通常包含会话描述信息,如媒体类型、编码方式等。

  • 响应消息:响应消息的格式包括起始行(状态行)、消息头和消息体。起始行包含 SIP 版本号、状态码和状态描述;消息头和消息体的格式与请求消息类似。状态码是一个三位数字,用于表示请求的处理结果,例如 200 表示成功,404 表示请求的资源不存在,500 表示服务器内部错误等。

6. 应用场景

  • IP 电话:是 SIP 协议的主要应用之一,用户可以通过 SIP 电话终端进行语音通话,并且可以实现一些附加功能,如呼叫转移、呼叫等待、语音信箱等。

  • 视频会议:用于建立和管理视频会议会话,多个用户可以通过 SIP 协议加入同一个视频会议,进行实时的视频和音频交流。

  • 即时通讯:支持即时消息的发送和接收,用户可以在 SIP 客户端上进行文字聊天、文件传输等操作。

  • 在线游戏:一些在线游戏也可以使用 SIP 协议来建立玩家之间的语音通信,增强游戏的互动性。