我的音视频/流媒体开源项目(github)

        SIP系列目录

目录

一、SIP简介

二、SIP工作原理

三、SIP和传统电话的区别


一、SIP简介

        SIP(Session Initiation Protocol, 会话初始化协议)是一个用于在IP网络中建立、修改和终止多媒体会话的应用层协议,广泛应用于VoIP(Voice over IP,语音通信)、视频通话、即时消息和其他实时通信服务。SIP由IETF(Internet Engineering Task Force,互联网工程任务组)制定,属于应用层协议。SIP和HTTP类似,都是请求-响应模式。

        SIP发展过程:RFC 2543----第一个SIP规范;RFC 3261----SIP基础确立;RFC 3262----对临时响应的可靠性作规定;RFC 3263----确立SIP代理服务器的定位规则;RFC 3264----提供提议/应答模型;RFC 3265----确定具体的事件通知。

        SIP协议的基本功能:
        1、会话建立与终止: SIP的核心功能是发起、管理和终止会话。无论是语音通话、视频会议还是数据共享,SIP都能够提供会话初始化、修改以及结束的能力。

        2、用户位置定位: SIP可以通过地址解析和位置服务,确定目标用户的当前地址(例如IP地址),使得一个用户可以通过统一的SIP地址(如sip:username@domain.com)进行联系。

        3、多媒体传输协商: SIP不仅仅用于建立连接,还可以协商会话的媒体参数。例如,它可以确定使用哪些编解码器,视频分辨率、音频质量等,这些通过SDP(Session Description Protocol, 会话描述协议)进行描述。

        4、支持会话修改: 在会话进行中,SIP允许动态修改会话内容,例如添加视频、改变音频编解码器、切换通话质量等。

        5、会话控制与注册: SIP协议允许用户进行注册并通过代理服务器进行会话控制,从而支持分布式网络环境中的通信。

        SIP的应用场景:
        1、VoIP电话: SIP是VoIP(基于IP的语音通信)技术的核心协议,用于建立和管理语音通话。通过SIP,用户可以在IP网络上进行语音通信。

        2、视频会议: SIP不仅支持音频通话,也支持视频通话,通过协商媒体参数,用户可以在不同终端之间进行视频会议。

        3、即时消息: SIP协议可用于实时聊天应用的消息交换,允许用户之间进行文本聊天。

        4、多媒体流服务: 除了语音和视频,SIP也可以用于多媒体流的传输和管理,支持多种实时数据传输。

        通俗地说,SIP就是用来 建立、管理和结束 语音、视频等实时通信的调度协议。帮助我们通过互联网进行类似电话通话、视频会议、即时消息等实时通讯。例如,当你打电话、视频聊天或者进行网络会议时,SIP协议会负责以下工作:

        1、连接的建立:当你想打电话给别人时,SIP负责发出请求,找到对方,并建立连接。
        2、媒体协商:它确保你和对方都能使用相同的音频/视频格式和传输方式,比如你们都用高清音频、高清视频。
        3、会话管理:在通话进行中,SIP还可以帮助你在通话过程中调整设置、。
        4、会话终止:当通话结束时,SIP会发出通知,关闭连接。

二、SIP工作原理

        学习SIP,需要知道SIP中的四个角色(SIP系统组成部分):SIP用户代理、SIP注册服务器、SIP代理服务器、SIP重定向服务器。

        1. SIP用户代理(UA,User Agent)
        SIP用户代理是终端设备或应用程序,用于发起和接收SIP请求和响应。可以是一个VoIP电话、软电话、视频会议终端等设备。用户代理有两种角色:

        用户代理客户端(UAC,User Agent Client):负责发起SIP请求(例如发起呼叫请求)。例如,当你拨打电话时,你的设备就是UAC。
        用户代理服务器(UAS,User Agent Server):负责响应SIP请求。它接收来自UAC的请求,并根据请求进行相应的操作。例如,当你接听电话时,你的设备就扮演着UAS的角色。
总之,SIP用户代理是SIP协议中的端点,允许用户进行实时通信。

        2. SIP注册服务器(Registrar Server)
        SIP注册服务器用于接收并存储SIP用户的注册信息。当一个SIP设备(例如电话)连接到网络时,它会向SIP注册服务器发送一个注册请求,告诉服务器自己当前的IP地址或者其他信息。其他用户可以通过注册服务器来找到该设备。

        当你在不同的网络或设备上登录时,注册服务器确保其他人能够找到你并与你建立通信。
例如,SIP设备A在启动时会向注册服务器发送一个请求,告知它自己可以接受呼叫的地址或位置。
        3. SIP代理服务器(Proxy Server)
        SIP代理服务器是SIP通信中的中介,它负责转发SIP请求和响应。代理服务器不会直接处理呼叫或会话内容,它主要负责以下任务:

        路由请求:当一个SIP用户想要联系另一个SIP用户时,SIP代理服务器会根据请求的目标地址,决定如何转发该请求(例如,选择合适的服务器或代理)。
        请求处理:代理服务器会检查和修改请求的头部信息,确保请求按照正确的路径转发。例如,如果目标用户不在线,代理服务器可能会将请求转发到备用服务器或者重定向到另一个地址。
SIP代理服务器通常也会处理认证和授权等功能,确保通信的安全性。

        4. SIP重定向服务器(Redirect Server)
        SIP重定向服务器的作用是告知发起请求的用户代理请求的目标地址。与代理服务器不同,重定向服务器不负责转发请求,它只提供目标地址的重定向信息。它的工作方式是:

        当SIP用户尝试联系另一方时,重定向服务器会告知用户代理“该目标用户现在在其他地方”,并提供新的目标地址或位置。发起请求的用户代理会根据这些新的信息重新发起请求,从而完成通信连接。简单来说,重定向服务器只返回一条“指路”的信息,它告诉你该向哪里去找到目标,而不是直接转发请求。

        这四个角色如何协同工作?
        假设有一个SIP用户A想要与SIP用户B建立通信:

        1、SIP用户A(UAC)和用户B(UAS)都向 SIP注册服务器 发送注册请求,告知服务器它们的当前位置(例如,IP地址)。
        2、当SIP用户A想打电话给SIP用户B时,它会发送一个SIP请求到 SIP代理服务器,代理服务器负责根据B的地址和注册信息路由请求。
        3、如果SIP代理服务器找不到SIP用户B,它可能会询问 SIP重定向服务器,后者会告诉代理服务器B的当前位置(例如B的新IP地址)。
        4、SIP代理服务器会根据重定向信息重新发起请求,直到找到B并建立连接。
        通过这些角色的协作,SIP协议能够实现跨网络、跨设备的实时通信。

        下图为两个用户在用一个域内:

        下图为两个用户在不用域的情况:

        SIP注册服务器、SIP代理服务器和SIP重定向服务器通常可以是独立的服务,也可以由一个中心服务集成来共同承担这些角色。具体的实现方式取决于系统架构、需求和规模等因素。

        在较大的SIP系统或企业级部署中,SIP注册服务器、SIP代理服务器和SIP重定向服务器通常会被设计为独立的服务,这样可以更好地分担负载和实现高可用性。

        在一些小规模的系统或对性能要求不高的场景中,SIP注册服务器、SIP代理服务器和SIP重定向服务器可能会集成到一个单一的服务中,一个服务器会同时处理所有的请求和响应,包括注册、路由请求以及提供重定向服务。这种集成方式的优点是简单,部署和管理成本较低,适合小规模、资源有限的环境。例如,开源的SIP服务器(如Asterisk或FreeSWITCH)通常会将这些角色集成在一个系统中,方便管理和配置。而在较小的企业或家庭环境中,这种集成的方式更为常见,因为它能够减少硬件和维护的需求。

三、SIP和传统电话的区别

特性 SIP 传统电话(PSTN)
基础架构 基于IP网络,使用包交换 基于电路交换,使用专用物理线路
协议 使用开放的SIP协议 使用专有的电信协议,如SS7
通信类型 语音、视频、即时消息等多媒体通信 主要是语音通信
设备支持 支持IP电话、软电话、视频电话、手机等 仅支持传统电话设备(固定或移动电话)
费用 较低,尤其是长途和国际通话 通话费用较高,尤其是长途和国际电话
灵活性 高,支持跨设备、跨平台互通 低,设备和通信方式固定
扩展性 高,易于增加功能、支持远程通信 低,扩展和新功能支持困难
网络要求 依赖于IP网络,可能需要QoS和带宽管理 独立于IP网络,稳定性较高

        系列二将会介绍SIP协议的消息格式和交互过程。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐