当前位置: 首页 > article >正文

SIP协议学习总结

1、IMS网络架构

2、SIP介绍

SIP(Session Initiation Protocol) 会话初始协议,“是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast) 、网状单播(unicast)或两者的混合体进行通信。”

3、SIP成员

https://www.sharetechnote.com/html/IMS_SIP_Components.html

4、SIP协议消息

SIP 消息采用文本方式编码,分为两类:请求消息和响应消息。

请求消息:用于客户端为了激活按特定操作而发给服务器的SIP 消息。

响应消息:用于对请求消息进行响应,指示呼叫的成功或失败状态。

请求消息类型包括:

INVITE,ACK,OPTIONS,BYE,CANCEL 和 REGISTER 消息等

INVITE:用于邀请用户加入一个呼叫。

ACK:用于对请求消息的响应消息进行确认。

OPTIONS:用于请求能力信息。

BYE:用于释放已建立的呼叫。

CANCEL:用于释放尚未建立的呼叫。

REGISTER:用于向SIP网络服务器登记用户位置信息

响应消息

响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明,包括:1xx,2xx,3xx,4xx,5xx,6xx

1xx:临时响应,表示已经接收到请求消息,正在对其进行处理;

2xx:成功响应,表示请求已经被接收、处理并被成功接受

3xx:重定向响应,表示为完成请求消息需要采取进一步的行动

4xx:客户机错误,表示请求消息中包含语法错误或者SIP服务器不能完成对该请求消息的处理。

5xx:服务器错误,表示SIP服务器故障不能完成对正确消息的处理

6xx:全局故障,表示请求不能在任何SIP服务器上实现

SIP消息格式

请求消息和响应消息的格式,一般由起始行,若干个消息头和消息体构成。

SIP一般消息 =  起始行

                              *消息头

                             CRLF(空行)

                              [消息体]

起始行 = 请求行/状态行 ( SIP请求消息起始行是请求行(Request-Line),响应消息起始行是状态行(Status-Line))。

请求消息头至少包括From、To、CSeq、Call-ID、Max-Forwards、Via 六个头字段,它们是构建SIP消息基本单元

其中消息体是可选项,消息体一般采用SDP(Session Description Protocol)协议,会话描述协议SDP的正式规范是RFC 4566和3GPP 24.229。

5、IMS/VoLTE基本流程

5.1、注册

5.2、去注册

5.3、MO通话

5.4、MT通话

5.5、通话释放流程

6、SIP参数

6.1、SIP Parameter : Call-ID

     呼叫ID是表示特定呼叫会话(更具体地说是对话)的标识。Call ID标头字段是用于跟踪特定SIP会话的标识符。

6.2、SIP Parameter : P-Called-Party-ID

此参数旨在补偿目标地址(“to”参数)的任何可能的不确定性。由于“to”参数是由UA填充的,而不是由代理填充的,因此它可能缺少一些详细信息。为了处理这种情况,代理服务器可以添加P-Called Pary-ID来明确目标地址。

此参数最常用于INVITE、MESSAGE请求。

6.3、SIP Parameter : P-Asserted-Identity 

 参考rfc3325 Private Extensions to the Session Initiation Protocol (SIP) for

Asserted Identity within Trusted Networks

1、可信网络:PAI被认为是一个可信的报头,这意味着它只应该在安全、封闭的网络中使用和信任,在这些网络中,代理和其他元素由服务提供商管理。它不应该在开放的互联网上或不同的服务提供商之间使用,因为它可能会受到欺骗。

2、隐私考虑:由于PAI可能包含有关用户身份的敏感信息,因此其使用通常由网络内的隐私服务控制,以确保其不会暴露给未经授权的实体。

3、格式:标头通常包括表示用户身份的SIP URI或tel URI。
例如:P-Asserted-Identity: <sip:user@example.com> 
或者 P-Asserted-Identity: <tel:+1234567890>

4、PAI用于各种目的,包括:
终端网络中的呼叫者ID显示。
访问控制和授权。
需要准确用户身份的会计和计费目的。
基于用户身份的通信策略的执行。

5、安全性:由于PAI可用于断言主叫方的身份,因此必须使用SIP over TLS等机制保护其免受篡改,并且只能由受信任的网络元素插入或修改。

    

    

其中P-Asserted-Identity为网络有信任的网络元素添加和修改

6.4、SIP Parameter : P-Preferred-Identity

用户控制:与由网络设置的P-Asserted-Identity不同,P-Preferred-Identity标头由用户或其用户代理设置。它表示用户对正在建立的会话应使用哪个身份的偏好。

多个身份:用户可以拥有多个与其帐户关联的身份(如多个电话号码或SIP URI)。PPI报头允许用户指示他们希望被叫方看到哪个身份。这在呼叫者ID等服务中特别有用。

隐私考虑:PPI对隐私问题很敏感。虽然用户可以表明他们的首选身份,但网络通常会强制执行隐私服务,这些服务可能会根据用户设置、服务协议或监管要求限制此信息的可见性。

验证和信任:PPI不具有与P-Asserted-Identity相同的网络验证信任级别。网络通常会使用PPI作为建议,但可能会根据其政策推翻它

法律和监管合规性:服务提供商必须按照当地法律法规,特别是有关用户隐私和数据保护的法律法规来处理P-Preferred-Identity。

     

参考文档

3GPP文档

TS 23.002   Network Architecture

TS 23.228   IP Multimedia Subsystem (IMS); Stage 2

Version Numbering Scheme

Directory Listing /ftp/Specs/archive

RFC SIP协议文档下载

https://www.rfc-editor.org/retrieve/

IMS Share Technote

IMS | ShareTechnote


http://www.kler.cn/a/402537.html

相关文章:

  • 802.11协议
  • WebRTC音视频同步原理与实现详解(上)
  • 【强化学习的数学原理】第04课-值迭代与策略迭代-笔记
  • 非常简单实用的前后端分离项目-仓库管理系统(Springboot+Vue)part 2
  • C++ std::unique_ptr的使用及源码分析
  • 重构代码之将引用类型更改为值类型
  • Java开发经验——JDK工具类的安全问题
  • python之sklearn--鸢尾花数据集之数据降维(PCA主成分分析)
  • 鸿蒙module开发实践
  • 豆瓣书摘 | 爬虫 | Python
  • 性能稳定的云计算监控工具大全
  • 硬件工程师零基础入门:一.电子设计安全要点与欧姆定律
  • 蓝桥杯2024年11月20日个人赛报名页下方例题解答
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-conv.py
  • 重构代码之引入外部方法
  • 【c++篇】:深入c++的set和map容器--掌握提升编程效率的利器
  • 【JavaSE】【网络编程】UDP数据报套接字编程
  • MFC1(note)
  • 高频面试题(含笔试高频算法整理)基本总结回顾21
  • goland单元测试
  • 【虚拟机】VMWare的CentOS虚拟机断电或强制关机出现问题
  • 一次成功尝试:旧电脑通过网线,连接带无线网卡电脑上外网
  • Android和IOS的区别
  • C++——智能指针剖析
  • 专家PID控制
  • 在 for 循环中,JVM可能会将 arr.length 提升到循环外部,仅计算一次。可能会将如何解释 详解