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

手把手图解:用Wireshark抓个包,带你‘看见’一次IMS注册和SIP会话的全过程

手把手图解用Wireshark抓个包带你‘看见’一次IMS注册和SIP会话的全过程通信工程师的日常工作中最令人着迷的莫过于将抽象的网络协议转化为可视化的数据流。当终端设备向IMS核心网发起注册并建立语音会话时背后究竟发生了什么本文将带你用Wireshark这款网络协议分析利器亲手捕获并解析IMS注册与SIP会话的全过程。不同于教科书式的概念罗列我们将通过真实抓包数据逐帧拆解SIP信令的交互细节让你真正看见协议栈的工作机制。1. 实验环境搭建与准备1.1 工具与测试平台配置要重现完整的IMS注册流程我们需要以下实验环境组件开源IMS测试平台推荐使用Kamailio或OpenIMSCore搭建简易IMS核心网SIP终端Linphone或MicroSIP等支持完整SIP协议的软客户端网络抓包工具Wireshark 3.6需支持SIP和Diameter协议解析虚拟化环境VirtualBox或VMware Workstation关键配置参数示例# Kamailio基础配置示例 listenudp:192.168.1.100:5060 aliasims.example.com提示实验环境建议使用隔离的局域网段避免与生产网络冲突1.2 Wireshark抓包技巧在开始捕获前需要优化Wireshark的配置捕获过滤器udp port 5060 or port 3868SIP和Diameter默认端口显示过滤器SIP会话sipIMS特定消息sip.Method REGISTER || sip.Method INVITE协议解析选项启用SIP和SDP的深度解析配置Diameter字典文件3GPP标准字典常见问题排查表现象可能原因解决方案抓不到SIP包防火墙拦截临时关闭防火墙或添加规则协议解析错误Wireshark版本过旧升级到最新稳定版消息不完整MTU设置不当调整网络设备MTU至15002. IMS注册流程深度解析2.1 初始REGISTER请求分析当UE首次发起注册时Wireshark会捕获到如下关键字段REGISTER sip:ims.example.com SIP/2.0 Via: SIP/2.0/UDP 192.168.1.10:5060;branchz9hG4bK74bf9 Max-Forwards: 70 From: sip:user1ims.example.com;tag12345 To: sip:user1ims.example.com Call-ID: abc123192.168.1.10 CSeq: 1 REGISTER Contact: sip:user1192.168.1.10:5060 Expires: 3600 Authorization: Digest usernameuser1, realmims.example.com, nonce... Content-Length: 0关键字段解读Via显示请求经过的路径ContactUE的实际可达地址Authorization包含AKA鉴权参数Expires注册有效期秒2.2 401 Unauthorized响应网络侧返回的401响应中携带鉴权质询SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 192.168.1.10:5060;branchz9hG4bK74bf9 From: sip:user1ims.example.com;tag12345 To: sip:user1ims.example.com;tag54321 Call-ID: abc123192.168.1.10 CSeq: 1 REGISTER WWW-Authenticate: Digest realmims.example.com, nonce..., algorithmAKAv1-MD5, qopauth Content-Length: 0此时Wireshark的Packet Details面板会显示SIP Protocol Status-Line: SIP/2.0 401 Unauthorized WWW-Authenticate: Digest realmims.example.com... [Full authentication required]2.3 完整注册流程时序成功注册的完整消息交互如下UE → P-CSCF: REGISTER (初始请求)P-CSCF → I-CSCF: REGISTER (查询HSS)I-CSCF → S-CSCF: REGISTER (分配服务节点)S-CSCF → UE: 401 Unauthorized (鉴权质询)UE → S-CSCF: REGISTER (带鉴权响应)S-CSCF → HSS: MAR (多媒体鉴权请求)HSS → S-CSCF: MAA (鉴权通过)S-CSCF → UE: 200 OK (注册成功)在Wireshark中可以通过Follow SIP Stream功能查看完整对话![Wireshark SIP流跟踪截图]3. SIP会话建立过程拆解3.1 INVITE请求关键结构主叫方发起的INVITE请求示例INVITE sip:user2ims.example.com SIP/2.0 Via: SIP/2.0/UDP 192.168.1.10:5060;branchz9hG4bK12345 Max-Forwards: 70 From: sip:user1ims.example.com;tag67890 To: sip:user2ims.example.com Call-ID: xyz789192.168.1.10 CSeq: 1 INVITE Contact: sip:user1192.168.1.10:5060 Content-Type: application/sdp Content-Length: 147 v0 ouser1 2890844526 2890844526 IN IP4 192.168.1.10 s- cIN IP4 192.168.1.10 t0 0 maudio 7078 RTP/AVP 0 8 96 artpmap:0 PCMU/8000 artpmap:8 PCMA/8000 artpmap:96 telephone-event/8000SDP部分参数说明maudio媒体类型和端口RTP/AVPRTP音频视频配置文件artpmap编解码器映射关系3.2 会话建立完整流程典型SIP会话建立过程主叫UE发送INVITE被叫侧返回100 Trying被叫振铃180 Ringing被叫接听200 OK主叫发送ACK确认媒体流建立RTP/RTCP任一方发送BYE结束会话在Wireshark中可以使用IO Graphs功能可视化会话时序![SIP会话时序图]3.3 关键响应消息解析被叫方接听时的200 OK响应SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.1.10:5060;branchz9hG4bK12345 From: sip:user1ims.example.com;tag67890 To: sip:user2ims.example.com;tag98765 Call-ID: xyz789192.168.1.10 CSeq: 1 INVITE Contact: sip:user2192.168.1.20:5060 Content-Type: application/sdp Content-Length: 149 v0 ouser2 2890844726 2890844726 IN IP4 192.168.1.20 s- cIN IP4 192.168.1.20 t0 0 maudio 7080 RTP/AVP 0 8 96 artpmap:0 PCMU/8000 artpmap:8 PCMA/8000 artpmap:96 telephone-event/80004. 高级分析与故障排查4.1 常见异常场景解析场景1注册频繁失败抓包显示连续401响应检查UE与HSS的鉴权参数同步验证AKA算法配置一致性排查网络时延导致的nonce过期场景2INVITE无响应排查路径检查Route头域是否正确验证DNS解析是否正常排查S-CSCF的iFC触发规则4.2 Diameter协议交互分析HSS与CSCF间的Cx接口通信示例Diameter Protocol Version: 0x01 Length: 268 Flags: 0x80 (Request) Command Code: 300 (User-Authorization) ApplicationId: 16777216 (3GPP Cx) Hop-by-Hop Identifier: 0x12345678 End-to-End Identifier: 0x87654321 AVP: Session-Id ims.example.com;12345 AVP: Origin-Host hss.ims.example.com AVP: Origin-Realm ims.example.com AVP: Destination-Realm ims.example.com AVP: User-Name user1ims.example.com AVP: Public-Identity sip:user1ims.example.com4.3 性能优化关键指标通过Wireshark统计功能可分析的QoS参数指标计算公式健康阈值注册时延第一个REGISTER到200 OK间隔 500ms呼叫建立时延INVITE到200 OK间隔 1.5s媒体丢包率RTCP报告中的丢包比例 1%抖动RTP包到达时间方差 30ms在项目实践中我们发现最影响用户体验的往往是媒体流的QoS表现。通过Wireshark的RTP流分析功能可以直观看到丢包和抖动情况。建议重点关注NAT穿越场景下的RTP传输质量必要时启用ICE/STUN/TURN等NAT穿透机制。

相关文章:

手把手图解:用Wireshark抓个包,带你‘看见’一次IMS注册和SIP会话的全过程

手把手图解:用Wireshark抓个包,带你‘看见’一次IMS注册和SIP会话的全过程 通信工程师的日常工作中,最令人着迷的莫过于将抽象的网络协议转化为可视化的数据流。当终端设备向IMS核心网发起注册并建立语音会话时,背后究竟发生了什么…...

如何快速实现碧蓝航线全自动托管:智能脚本Alas终极指南

如何快速实现碧蓝航线全自动托管:智能脚本Alas终极指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧…...

北邮数电实验:用Verilog在FPGA上实现4位加法器,从全加器到数码管显示(附完整代码与管脚绑定)

北邮数电实验:从全加器到4位加法器的FPGA实现全流程解析 第一次接触FPGA上的数字电路实验时,看着开发板上密密麻麻的管脚和闪烁的LED,我完全不知道从何入手。直到亲手实现了一个4位加法器,才真正理解了数字系统设计的精髓——用硬…...

3步魔法公式:用novideo_srgb为NVIDIA显卡开启色彩真实之门

3步魔法公式:用novideo_srgb为NVIDIA显卡开启色彩真实之门 【免费下载链接】novideo_srgb Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles 项目地址: https://gitcode.com/gh_mirrors/no/novideo_srgb …...

ODS怎么转PDF?5种转换方法对比与2026实测工具推荐

当你拿到OpenDocument电子表格(ODS格式)文件,却需要分享成PDF格式时,转换往往成为一个必要步骤。ODS是LibreOffice等开源办公套件的标准格式,具有高度兼容性和数据完整性,但在跨平台分享和打印时&#xff0…...

ComfyUI Manager 架构设计与性能优化:从插件管理到系统集成的完整解决方案

ComfyUI Manager 架构设计与性能优化:从插件管理到系统集成的完整解决方案 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and e…...

从Cityscapes到遥感图像:用MMSegmentation v1.0.0搞定不同领域语义分割数据集的完整配置流程

跨领域语义分割实战:MMSegmentation多场景数据集配置全解析 当计算机视觉工程师需要将语义分割技术从自动驾驶领域迁移到遥感图像分析时,最常遇到的障碍不是模型架构的选择,而是数据集的适配难题。不同领域的图像在分辨率、类别分布、标注格式…...

PDF怎么转Word不变形?2026保留原排版方法与软件推荐

PDF转Word时遇到排版错乱是许多办公人士的共同困扰。无论是报告、合同还是设计稿,排版混乱往往意味着需要重新手工调整,浪费大量时间。本文整合了2026年最实用的PDF转Word保留原排版方法,以及各类软件工具的详细对比,帮助你快速找…...

InfluxDB Studio:如何用一款工具解决时间序列数据库管理的三大痛点

InfluxDB Studio:如何用一款工具解决时间序列数据库管理的三大痛点 【免费下载链接】InfluxDBStudio InfluxDB Studio is a UI management tool for the InfluxDB time series database. 项目地址: https://gitcode.com/gh_mirrors/in/InfluxDBStudio 时间序…...

从绿光到深紫外:手把手教你选对BBO、LBO、CLBO晶体,搞定激光倍频实验

从绿光到深紫外:非线性晶体选型与倍频实验实战指南 当实验室的1064nm激光器发出那束熟悉的近红外光时,许多研究者脑海中会立刻浮现两个问题:如何高效获得532nm的翠绿光束?又该如何进一步压缩波长至266nm的深紫外区域?…...

告别仿真卡顿!Synopsys AXI VIP Memory模型实战:从地址配置到后门读写(附避坑指南)

告别仿真卡顿!Synopsys AXI VIP Memory模型实战:从地址配置到后门读写(附避坑指南) 在复杂SoC验证中,仿真速度直接决定了项目周期。当AXI总线上的数据吞吐量达到GB/s级别时,传统的前门读写操作会让仿真器陷…...

关联查询,左连接,inner join笔记,BNL,NLJ

文章目录left join的最大值和最小值3个表的inner join关联查询时的is_del处理cross join(full join)NLJ 性能高BNL 性能低blj会导致什么问题?left join的最大值和最小值 假设左表m条,右表n条 最小值是m: 当一条也匹配不到右表时,或者右表中…...

从过采样到Σ-Δ调制:采样技术如何成为提升信噪比的秘密武器

1. 项目概述:从“听不清”到“听得清”的底层博弈 在信号处理、音频工程、通信系统乃至生物医学检测的日常工作中,我们总会遇到一个共同的“敌人”——噪声。无论你是在调试一段录音,分析一组传感器数据,还是试图从遥远的深空接收…...

C++ `reinterpret_cast`

1. C 类型转换基础 C中的四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_castreinterpret_cast 的定义与目的 2. 使用 reinterpret_cast 语法与基本示例适用场景与不适用的场景 3. 转换指针类型 从void* 到其他类型指针将一个指针类型转换为另一…...

Hitboxer SOCD Cleaner:键盘输入仲裁系统的底层实现与技术架构分析

Hitboxer SOCD Cleaner:键盘输入仲裁系统的底层实现与技术架构分析 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏领域,键盘输入精度直接影响玩家操作表现。传统键盘在处理同…...

C++ `const_cast`

1. C 类型转换基础 C为何需要类型转换C风格类型转换与C风格类型转换类型转换的种类:static_cast, dynamic_cast, const_cast, reinterpret_cast 2. const 限定符基础 为何需要 const 限定符const 的位置和含义 对象为 const指针为 const指针指向的内容为 const3. co…...

C++ `dynamic_cast

1. 基础 C类型转换概览为什么需要dynamic_cast 2. dynamic_cast 的使用 基本语法与其他类型转换(如 static_cast、reinterpret_cast 和 const_cast)的对比 3. RTTI (运行时类型信息) 什么是RTTI如何在C中启用和禁用RTTI 4. dynamic_cast 与多态 使用dyna…...

暗黑破坏神2存档编辑器终极指南:5分钟掌握Diablo Edit2核心功能

暗黑破坏神2存档编辑器终极指南:5分钟掌握Diablo Edit2核心功能 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾经因为暗黑破坏神2中角色技能点分配失误而苦恼?是否…...

Moonlight安卓端自定义虚拟按键完全指南:从导入到高级配置

Moonlight安卓端自定义虚拟按键完全指南:从导入到高级配置 【免费下载链接】moonlight-android Moonlight安卓端 阿西西修改版 项目地址: https://gitcode.com/gh_mirrors/moo/moonlight-android 想要在手机或平板上畅玩PC游戏?🎮 Moo…...

3分钟上手XXMI启动器:一站式二次元游戏模组管理平台

3分钟上手XXMI启动器:一站式二次元游戏模组管理平台 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 你是否曾为管理不同游戏的模组而感到头疼?每个游戏都…...

罗技鼠标宏:绝地求生后坐力控制全攻略

罗技鼠标宏:绝地求生后坐力控制全攻略 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 想要在《绝地求生》中实现精准压枪&#xff0c…...

FFXVIFix终极指南:解锁《最终幻想16》的完美游戏体验

FFXVIFix终极指南:解锁《最终幻想16》的完美游戏体验 【免费下载链接】FFXVIFix Migrated to https://codeberg.org/Lyall/FFXVIFix 项目地址: https://gitcode.com/gh_mirrors/ff/FFXVIFix FFXVIFix是一款专门为《最终幻想16》设计的全方位优化工具&#xf…...

macOS完整安装器下载工具终极指南:轻松获取Big Sur系统安装包

macOS完整安装器下载工具终极指南:轻松获取Big Sur系统安装包 【免费下载链接】DownloadFullInstaller macOS application written in SwiftUI that downloads installer pkgs for the Install macOS Big Sur application. 项目地址: https://gitcode.com/gh_mirr…...

如何一键下载30+主流文档平台内容?kill-doc开源工具全解析

如何一键下载30主流文档平台内容?kill-doc开源工具全解析 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…...

DownKyi终极教程:3步掌握B站视频下载,免费打造个人媒体库

DownKyi终极教程:3步掌握B站视频下载,免费打造个人媒体库 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、…...

Real-ESRGAN终极指南:让模糊图像瞬间清晰的AI魔法

Real-ESRGAN终极指南:让模糊图像瞬间清晰的AI魔法 【免费下载链接】Real-ESRGAN Real-ESRGAN aims at developing Practical Algorithms for General Image/Video Restoration. 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN 你是否曾经为那些模…...

为什么mob成为远程团队编程的首选工具?深度解析

为什么mob成为远程团队编程的首选工具?深度解析 【免费下载链接】mob Tool for smooth git handover. 项目地址: https://gitcode.com/gh_mirrors/mo/mob 在当今远程协作成为常态的时代,高效的团队编程工具变得至关重要。mob作为一款专为平滑Git交…...

QueryExcel:高效批量Excel数据查询的终极开源解决方案

QueryExcel:高效批量Excel数据查询的终极开源解决方案 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 面对海量Excel文件中的数据查询需求,你是否还在重复着CtrlF、CtrlC、Ctrl…...

如何构建专业级电子签名:现代前端解决方案指南

如何构建专业级电子签名:现代前端解决方案指南 【免费下载链接】smooth-signature H5带笔锋手写签名,支持PC端和移动端,任何前端框架均可使用 项目地址: https://gitcode.com/gh_mirrors/smo/smooth-signature 在数字化办公时代&#…...

OV5640摄像头数据流抓取与仿真全攻略:从DVP时序到Testbench调试技巧

OV5640摄像头数据流抓取与仿真全攻略:从DVP时序到Testbench调试技巧 在FPGA图像处理系统中,OV5640作为一款高性价比的500万像素CMOS传感器,其DVP接口的数据采集可靠性直接影响整个系统的图像质量。本文将深入探讨如何构建稳健的数据捕获逻辑&…...