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

手把手调试:用Wireshark抓包分析SIP REFER实现呼叫转移的完整流程(含NOTIFY消息解读)

手把手调试用Wireshark抓包分析SIP REFER实现呼叫转移的完整流程含NOTIFY消息解读在VoIP和实时通信系统中SIPSession Initiation Protocol作为核心信令协议其REFER方法在实现呼叫转移功能中扮演着关键角色。本文将带您深入实战通过Wireshark抓包工具逐步解析基于REFER方法的完整呼叫转移流程特别关注NOTIFY消息中的关键信息。无论您是部署FreeSWITCH、Asterisk等SIP服务器的工程师还是开发SIP客户端的技术人员这份指南都将成为您调试过程中的实用手册。1. 测试环境搭建与基础配置在开始抓包分析前我们需要搭建一个可控的测试环境。推荐使用两台支持SIP协议的硬件话机或软电话如Linphone、MicroSIP配合一个SIP服务器如FreeSWITCH构成三角测试架构。环境配置要点确保所有设备在同一局域网内避免NAT带来的复杂性为每台话机分配独立的SIP账号如1001和1002在SIP服务器上启用呼叫转移功能关闭不必要的加密如TLS以简化初始分析提示测试前建议关闭防火墙或配置放行5060端口SIP默认端口2. Wireshark抓包准备与SIP流量过滤启动Wireshark后选择正确的网络接口通常是连接SIP服务器的网卡。为高效捕获SIP流量可使用以下过滤表达式sip || udp.port 5060关键抓包技巧开始捕获后在话机A1001上呼叫话机B1002通话建立后在话机A上发起向第三方号码如1003的呼叫转移停止捕获保存为call_transfer.pcapngWireshark实用配置启用Resolve network addresses方便识别设备在Telephony VoIP Calls中可重构整个呼叫流程使用Follow UDP Stream查看完整消息交换3. REFER消息流逐包解析一个典型的REFER呼叫转移流程包含以下关键消息序列初始INVITE话机A呼叫话机B200 OK建立初始会话REFER请求话机A发起转移请求202 Accepted话机B接受请求触发INVITE话机B呼叫目标号码NOTIFY序列状态通知3.1 REFER请求关键头域分析以下是一个典型的REFER请求示例REFER sip:1002192.168.1.100 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.101:5060;branchz9hG4bK74gh5 Max-Forwards: 70 To: sip:1002192.168.1.100;tagas5d8f7g6 From: sip:1001192.168.1.100;tag76a5s4d3f Call-ID: a1b2c3d4e5192.168.1.101 CSeq: 20 REFER Refer-To: sip:1003192.168.1.100 Referred-By: sip:1001192.168.1.100 Content-Length: 0关键头域说明头域必选说明Refer-To是指定转移目标URIReferred-By否标识转移发起方Event否用于多REFER时的订阅区分Refer-Sub否控制是否创建隐式订阅3.2 202 Accepted与隐式订阅REFER响应中的202 Accepted表示请求已被接受但处理尚未完成。此时会建立隐式订阅随后会收到NOTIFY消息NOTIFY sip:1001192.168.1.101 SIP/2.0 Event: refer;id1 Subscription-State: active;expires60 Content-Type: message/sipfrag Content-Length: 18 SIP/2.0 100 Trying4. NOTIFY消息深度解读NOTIFY消息携带了触发请求的状态信息其消息体通常为message/sipfrag类型包含SIP响应片段。典型NOTIFY消息示例NOTIFY sip:1001192.168.1.101 SIP/2.0 Via: SIP/2.0/UDP 192.168.1.100:5060;branchz9hG4bK23d4f5g6 Max-Forwards: 70 To: sip:1001192.168.1.101;tag76a5s4d3f From: sip:1002192.168.1.100;tagas5d8f7g6 Call-ID: a1b2c3d4e5192.168.1.101 CSeq: 15 NOTIFY Event: refer;id1 Subscription-State: terminated;reasonnoresource Content-Type: message/sipfrag Content-Length: 25 SIP/2.0 200 OK关键点解析Subscription-State指示订阅状态terminated表示订阅结束message/sipfrag包含触发INVITE的最终响应Event头域在多REFER场景下区分不同订阅5. 常见问题排查指南在实际部署中REFER流程可能遇到各种问题。以下是一些典型故障及排查方法问题1REFER请求被拒绝检查Refer-To头域格式是否正确验证SIP服务器是否支持REFER方法查看是否有Require头域冲突问题2未收到NOTIFY消息确认没有设置Refer-Sub: false检查网络是否允许NOTIFY消息通过验证Subscription-State是否被正确处理问题3触发INVITE失败分析NOTIFY中的sipfrag内容检查Refer-To URI是否可达验证目标号码是否已正确注册调试技巧在FreeSWITCH中启用高级日志sofia global siptrace on使用sngrep工具实时监控SIP消息流sngrep -d eth0 -O call_transfer.pcap6. 高级应用咨询转移实现REFER方法结合Replaces头域可以实现更复杂的咨询转移功能。基本流程如下话机A与话机B建立通话话机A呼叫话机C咨询通话话机A向话机B发送REFERRefer-To包含Replaces信息话机B直接与话机C建立通话话机A退出会话关键头域示例Refer-To: sip:1003192.168.1.100?Replaces12345%40192.168.1.101%3Bto-tag%3Dabcd%3Bfrom-tag%3D5678这种模式下Replaces头域携带了原始会话的标识信息使话机B能够无缝接管会话。

相关文章:

手把手调试:用Wireshark抓包分析SIP REFER实现呼叫转移的完整流程(含NOTIFY消息解读)

手把手调试:用Wireshark抓包分析SIP REFER实现呼叫转移的完整流程(含NOTIFY消息解读) 在VoIP和实时通信系统中,SIP(Session Initiation Protocol)作为核心信令协议,其REFER方法在实现呼叫转移功…...

哈氏训练助力孩子克服作业拖延症与情绪表达困难

哈氏训练在克服作业拖延症中的应用与效果分析 哈氏训练是一种有效的方式,旨在帮助孩子面对作业拖延症。这种训练方法通过结构化的任务管理技巧,帮助孩子建立良好的学习习惯。在训练过程中,孩子学会将大任务分解为小步骤,从而减轻心…...

Real-Anime-Z部署案例:Z-Image底座+LoRA融合全流程详解(含safetensors加载)

Real-Anime-Z部署案例:Z-Image底座LoRA融合全流程详解(含safetensors加载) 1. 项目概述 Real-Anime-Z是一款基于Stable Diffusion技术的写实向动漫风格大模型,采用独特的2.5D风格设计,在保留真实质感的同时强化动漫美…...

从相似推荐到异常检测:手把手用PyTorch实现余弦相似度与欧氏距离的实战项目

从相似推荐到异常检测:手把手用PyTorch实现余弦相似度与欧氏距离的实战项目 在推荐系统和异常检测领域,相似度计算是最基础也最核心的技术之一。想象一下,当你在电商平台浏览商品时,系统如何精准推荐你可能喜欢的其他商品&#xf…...

CentOS 7实战:从零到一构建ClickHouse高性能分析平台

1. 为什么选择ClickHouse构建分析平台 如果你正在寻找一个能够快速处理海量数据的分析型数据库,ClickHouse绝对值得考虑。这个由俄罗斯Yandex公司开源的列式存储数据库,在处理OLAP(在线分析处理)场景时表现出色。我曾在多个项目中…...

告别RTKlib!我用Matlab APP Designer手搓了一个GNSS数据质量分析工具(附源码)

告别RTKlib!我用Matlab APP Designer手搓了一个GNSS数据质量分析工具(附源码) 去年夏天在湖边做GNSS静态测量时,突然发现RTKlib输出的多路径误差曲线出现异常波动。为了确认是软件问题还是真实信号干扰,我不得不手动导…...

PyTorch张量并行技术解析与实战指南

1. 理解张量并行技术在训练超大规模Transformer模型时,单张GPU的内存容量往往成为瓶颈。张量并行(Tensor Parallelism)是一种模型并行技术,它通过将单个张量沿特定维度切分,将计算任务分配到多个设备上执行。这种技术最…...

PageAdmin平台化:多业务系统动态构建技术

以下是针对“PageAdmin应用系统平台化”的技术实现方案,聚焦于将传统单应用后台管理系统改造为可无限创建业务系统的低代码平台,仅涉及技术架构与实现步骤。 一、平台化核心架构设计 将PageAdmin从“单个后台系统”改造为多业务系统托管平台&#xff0c…...

Neeshck-Z-lmage_LYX_v2行业落地:医疗科普插图AI辅助生成合规性实践

Neeshck-Z-lmage_LYX_v2行业落地:医疗科普插图AI辅助生成合规性实践 1. 引言:当AI绘画遇上医疗科普 想象一下,一位医学编辑正在为一篇关于“心脏瓣膜工作原理”的科普文章寻找配图。他需要的不是一张冰冷的医学解剖图,而是一张既…...

AI项目实战开发

Python 爬虫 AI 总结:自动生成行业日报系统 引言 摘要:本节给出关键结论、核心步骤和可执行建议。 对很多工程团队来说,“行业日报”并不是内容运营问题,而是一个典型的信息工程问题:多源采集、增量更新、内容清洗、…...

real-anime-z多场景落地:儿童绘本插画、教育课件配图、科普信息图风格生成

real-anime-z多场景落地:儿童绘本插画、教育课件配图、科普信息图风格生成 1. 模型介绍与部署 real-anime-z是基于Z-Image的LoRA版本模型,专注于生成真实风格的动画图片。该模型特别适合需要高质量动漫风格图像的各类应用场景。 使用Xinference部署re…...

malloc/free时代终结?2026规范强制引入bounded_alloc与lifetime-aware API——7类传统代码模式已成高危禁区(附自动化检测脚本)

第一章:现代 C 语言内存安全编码规范 2026 对比评测报告随着 CVE-2023–29357 等高危堆溢出漏洞持续暴露传统 C 项目风险,ISO/IEC JTC1 SC22 WG14 于 2025 年底正式发布《C Memory Safety Profile 2026》(CMS-2026),作…...

超越官方限制:在Leaflet中实现天地图无级缩放与高清瓦片叠加显示

突破Leaflet与天地图的无级缩放边界:高清瓦片叠加与性能优化实战 当我们在开发基于Leaflet的地理信息系统时,经常会遇到一个令人困扰的限制——天地图官方瓦片服务的最大缩放级别通常被锁定在17或18级。但对于某些专业应用场景,比如城市规划、…...

全志D1s/F133 RISC-V处理器架构与应用解析

1. Allwinner D1s/F133 RISC-V处理器深度解析全志科技最新推出的D1s(又称F133)处理器,作为D1 RISC-V处理器的精简版本,在保持核心功能的同时通过集成64MB DDR2内存显著降低了成本。这款处理器主要面向智能摄像头和显示屏市场&…...

从CT设备数据流中断到容器网络修复,Docker医疗调试黄金6小时响应流程全披露

第一章:从CT设备数据流中断到容器网络修复,Docker医疗调试黄金6小时响应流程全披露当医院影像科CT设备突然停止向PACS系统推送DICOM影像,后台日志显示“connection refused to 10.244.3.17:4242”,而该IP正是运行DICOM网关服务的D…...

Stata实战:用5种方法搞定分组回归系数差异检验(附完整代码与避坑指南)

Stata分组回归系数差异检验:5种方法的深度实操与选择逻辑 当研究国有企业与非国有企业的薪酬激励效果差异时,分组回归系数检验是绕不开的实证关卡。但面对reghdfe高维固定效应下的报错警告、结果不显著或方法选择困惑,许多研究者往往陷入技术…...

lvgl_v8之自定义图片解码回调函数代码示例(亲测好用)

#pragma pack(1)// BMP 文件头结构体(14字节) typedef struct {...

logo抠图背景去不掉?PS 4种方法一键搞定

抠图是设计师必备的基础技能,但很多新手在处理logo抠图时,总会遇到各种问题:复杂背景的logo抠半天,边缘留灰边、丢失细节;面对PS众多工具,无从下手、反复试错。今天就给大家分享3种PS logo抠图去背景的实用…...

基于UDS的BootLoader上位机源代码(C#):支持ISO通信与多种CAN卡,S-rec...

基于UDS的BootLoader上位机源代码(C#) 基于UDS的BootLoader上位机源代码,支持ISO15765通信,支持PeakCAN , ZJG CAN等CAN卡, 支持S-record格式的二进制文件解析; 可二次开发或扩展应用。一、概述 本文档详细解读基于UDS…...

用MSP430和Cyclone IV FPGA实现单相逆变电源的PID闭环控制(附完整代码)

MSP430FPGA架构下的单相逆变电源PID闭环控制实战解析 在电力电子控制领域,实现高精度电压输出一直是工程师面临的挑战。当MSP430微控制器遇上Cyclone IV FPGA,这种混合架构为单相逆变电源的控制带来了独特优势——MCU负责复杂算法运算,FPGA专…...

告别VMware启动卡顿:深入解析“请移除安装介质”的根源与自动化修复

1. 为什么VMware会提示"请移除安装介质"? 这个问题本质上是个"假警报"。虚拟机启动时,固件(BIOS/UEFI)会按照预设的启动顺序逐个检测设备。当它发现某个被标记为"可启动"的安装介质(ISO…...

用Python爬虫+GPT-4分析肯尼迪演说词频:一次文本挖掘与历史语料处理的实战

用Python解析肯尼迪演说:从词频统计到AI深度解读的技术实践 1961年那个寒冷的1月早晨,约翰F肯尼迪站在国会大厦台阶上发表的演说,至今仍被视为20世纪最具影响力的政治演讲之一。作为技术从业者,我们如何用现代工具来解析这份历史文…...

【限时开源】我们刚在千万级订单系统落地的Docker日志瘦身框架(已压缩日志量至原体积6.8%,GitHub Star 423+,仅开放前100名下载)

第一章:Docker日志优化的行业痛点与落地价值在微服务与云原生大规模落地的今天,Docker容器日志已成为可观测性体系中最基础却最易被忽视的一环。大量企业面临日志爆炸式增长、磁盘空间不可控、检索效率低下、多容器日志混杂难溯源等共性挑战,…...

万象视界灵坛代码实例:Python调用Omni-Vision Sanctuary API实现批量图像语义评分

万象视界灵坛代码实例:Python调用Omni-Vision Sanctuary API实现批量图像语义评分 1. 平台概览与技术背景 万象视界灵坛(Omni-Vision Sanctuary)是一款基于OpenAI CLIP模型的高级多模态智能感知平台。它通过创新的像素风格界面,…...

【限时开源】我司金融级Docker沙箱基线镜像(已通过CNCF Sig-Auth认证,仅开放72小时下载)

第一章:Docker沙箱的核心价值与金融级安全边界在金融行业,容器化运行环境不仅需满足常规隔离性要求,更须承载交易系统、风控引擎与客户数据处理等高敏场景的强合规约束。Docker沙箱通过内核命名空间(Namespaces)、控制…...

BililiveRecorder录播引擎深度解析:3大核心架构与5项企业级部署策略

BililiveRecorder录播引擎深度解析:3大核心架构与5项企业级部署策略 【免费下载链接】BililiveRecorder 录播姬 | mikufans 生放送录制 项目地址: https://gitcode.com/gh_mirrors/bi/BililiveRecorder BililiveRecorder作为一款专注于B站直播录制的开源工具…...

NVISEN FU01无风扇迷你主机评测与配置指南

1. NVISEN FU01 无风扇迷你主机深度解析这款搭载英特尔Tiger Lake处理器的无风扇迷你电脑,完美诠释了"小而强大"的设计理念。作为一款主打静音和高效能的迷你主机,NVISEN FU01特别适合需要安静工作环境的用户,比如录音室、医疗影像…...

从BD4954到PMOS管:拆解一个真实物联网产品的太阳能充电管理电路,附完整PCB布局建议

从BD4954到PMOS管:拆解一个真实物联网产品的太阳能充电管理电路,附完整PCB布局建议 在低功耗物联网设备的设计中,电源管理系统的可靠性往往决定了产品的成败。我曾参与开发一款户外环境监测终端,设备需要在零下20℃至60℃的温度范…...

别再只用水平IoU了!手把手教你用OpenCV计算旋转目标检测框的重叠度(附Python代码)

突破水平检测局限:OpenCV旋转框IoU计算实战指南 在遥感图像分析、自动驾驶感知和文档识别等场景中,目标物体往往呈现任意角度的旋转状态。传统水平检测框的IoU计算方法在这些场景下会严重高估检测质量——比如两个完全错位的长条形物体,仅因外…...

PPTXjs:零安装!在浏览器中完美预览PPTX文件的终极方案

PPTXjs:零安装!在浏览器中完美预览PPTX文件的终极方案 【免费下载链接】PPTXjs jquery plugin for convertation pptx to html 项目地址: https://gitcode.com/gh_mirrors/pp/PPTXjs 还在为无法在线查看PPTX文件而烦恼吗?PPTXjs为你带…...