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

SIP通话分析

20240603 -

引言

分析SIP协议的时候,发现了几个问题。虽然说,从整体上来看这个SIP的通话流程也没麻烦,实际上从RFC的概述部分就已经基本上就已经了解了全貌。但在实际的场景中,很多字段起到的作用就不太一样了。

虽然一开始的时候,在RFC中看到了一些字段比较重要,但实际上因为并没有完整的去捋清楚这些内容,所以额也是在碰壁之后才理解这些字段的意义。

通话过程

文章[1]中阐述了主机流程 ;但实际场景中可能也稍微有所不同。该文章的示例中,提到了prack这个包,这部分我在普通的sip通信软件中并没有发现。另外,update也没有发现。

实际上,这些数据包比较重要的就是影响数据包路由的字段。因为实际的环境中,可能设计很多中间的设备,特别是SIP代理服务器这种(因为并没有深入去理解SIP的内部,所以并不是非常理解各种设备)。

关键字段

via

这个字段比较奇葩的地方,就是他的branch部分:

SIP实体在插入branch ID时,必须以“ z9hG4bK”开头[2]

这一点,如果没仔细看过文档,可能还真会以为是随机数。

route和record-route

这个字段也是非常关键的,问答[3]中提到了via和route字段:

Route headers are for requests and Via headers are for responses.[3]

如果想让数据包能够正确路由,那么必须保证via和route这些字段有据可查 。

路由正确

想要路由正确[4],那么就必须保证很多字段他都是匹配的。特别是当一个数据包他带有某些字段中的随机数,那么返回他的时候也必须带上,用以正确匹配。
比如说,via字段他经过一跳之后就进行了新增,所以需要按照逐跳的形式来处理。

参考

[1]VoLTE SIP Call Flow – Mobile Originating (MO) & Terminating (MT)
[2]SIP消息的一般格式(二)
[3]How do I ensure that BYE messages bypass a SIP proxy?
[4]sip 消息路由

http://www.lryc.cn/news/361960.html

相关文章:

  • 【SVG 生成系列论文(九)】如何通过文本生成 svg logo?IconShop 模型推理代码详解
  • 有哪些兼职软件一天能赚几十元?盘点十个能长期做下去的挣钱软件
  • ubuntu 22.04配置静态ip
  • C++ 使用 nlohmann/json 库
  • 【Java面试】六、Spring框架相关
  • 【GIC400】——PLIC,NVIC 和 GIC 中断对比
  • 17.Redis之主从复制
  • 计算机类专业应该怎么选学校和方向?优先选这些!
  • Amazon云计算AWS(二)
  • 实战
  • 【C++】vector模拟实现
  • 生成随机图片
  • 回溯算法常见思路
  • AR眼镜定制开发_在AR眼镜中实现ChatGPT功能
  • 手写防抖debounce
  • anaconda pycharm jupter分别是
  • 【JMeter接口自动化】第3讲 Jmeter语言及外观配置
  • 浅谈云原生安全
  • [线程与网络] 网络编程与通信原理(五): 深入理解网络层IP协议与数据链路层以太网协议
  • 【Python】超时请求或计算的处理
  • 前端 JS 经典:LRU 缓存算法
  • Python3 笔记:ljust、rjust 和 center
  • 恒压频比开环控制系统Matlab/Simulink仿真分析(SPWM控制方式)
  • chatgpt4和文心一言的简单对比
  • React 为什么使用map来渲染列表 而不是其他循环方法
  • 【Axure高保真】tab切换输入表单
  • OrangePi AI Pro 测试体验
  • 【C++】:模板初阶和STL简介
  • 【软件开发】Java学习路线
  • git拉去代码报错“Failed to connect to 127.0.0.1 port 31181: Connection refused“