SIP信令及抓包工具介绍

本文详细介绍了SIP协议的工作原理,通过实际案例展示了如何使用sngrep抓包工具分析通话过程中的信令交互,包括INVITE请求的处理以及SDP媒体描述。同时,文中还介绍了tcpdump的使用及其参数,提醒注意抓包工具对系统资源的影响。
摘要由CSDN通过智能技术生成

SIP信令及抓包工具介绍

培训的目的

  • 让大家了解sip协议,了解话务系统内部是如何进行通信的;
  • 了解信令抓包工具sngrep的基本使用;
  • 知道如何通过tcpdump进行抓包;

1、sip信令分析

以石家庄为例:192.168.2.241(语音网关),192.168.2.105(CTI),在CTI上开始抓包:

# -r 参数就抓媒体流
# sngrep -r

在这里插入图片描述
案例为呼入场景,发起方为户手机号,被叫方为热线号码。

1.1、内容分析

​ 本次通话的场景是市民呼入到石家庄12345热线,主叫号码:15713080482,被叫:12345热线,呼入一般是发起方(这里是用户手机号)发起的呼叫,语音网关(2.241)–>CTI(2.105),经过以下几个交互:

  • 呼叫方发起invite请求;
  • 接收方回复100trying;
  • 接收方回复180Ringing(根据情况而定);
  • 接收方回复200ok;
  • 呼叫方回复ack;
  • 双方开始建立媒体连接;
  • 挂机的一方发送bye消息;
  • 另一方接收到bye消息后回复ack;

1.2、消息头

  • Via(经由):指示消息传输的路径。它包括了发送者的主机名和端口,还有一个分支参数,用于唯一标识事务。
  • From(来自):包含发送者的SIP地址,可能包括用户标识符和域名。
  • To(到):包含接收者的SIP地址,也可能包括用户标识符和域名。
  • Call-ID(呼叫标识):一个唯一的呼叫标识符,允许将所有相关的消息与同一个呼叫相关联。
  • CSeq(命令序列):指示消息的执行顺序,它包括一个序列号和一个方法(比如INVITE、ACK、等等)。

1.3、消息体

m=audio 10408 RTP/AVP 18 8 0 101

  • 这是SDP的"媒体描述"(media description)行。它指示会话将包含音频流,将使用端口10408进行传输,使用RTP协议,同时支持的媒体格式有18、8、0和101。

a=rtpmap:18 G729/8000

  • 这是一个媒体属性行,指示编号为18的媒体格式是G.729编解码器,采样率为8000Hz。

a=rtpmap:8 PCMA/8000

  • 这是另一个媒体属性行,指示编号为8的媒体格式是PCMA(A-law PCM),采样率为8000Hz。

a=rtpmap:0 PCMU/8000

  • 这是另一个媒体属性行,指示编号为0的媒体格式是PCMU(μ-law PCM),采样率为8000Hz。

a=rtpmap:101 telephone-event/8000

  • 这是一个媒体属性行,指示编号为101的媒体格式是用于传输电话事件(如拨号音或按键音)的格式,采样率为8000Hz。

a=fmtp:18 annexb=no

  • 这是一个媒体属性行,提供了特定于媒体格式18(G.729)的附加参数,其中"annexb=no"可能是指示不使用Annex B(一种传输模式)。

a=ptime:20

  • 这是一个媒体属性行,指示音频的包时长为20毫秒,也就是每个RTP包中包含的音频数据的时长。

2、sngrep的使用

2.1、定义

​ sngrep是一个用于监听、分析SIP(Session Initiation Protocol)通信的命令行工具。它可以捕获网络流量中的SIP消息,并以易于阅读的格式显示这些消息的详细信息。Sngrep 对SIP抓包的专业性体现在实时抓取,实时展示。可以作为sip PCAP查看器。对sip信令中的任意字段设置过滤器。对一个dialog的sip信令自动关联。

2.2、抓包命令

[root@localhost opt]# sngrep
# 或
[root@localhost opt]# sngrep -r

在这里插入图片描述

2.3、常见参数

sngrep 参数
-h --help:显示帮助信息
-V --version:显示版本信息
-d --device:指定抓包的网卡
-I --input:从pacp文件中解析sip包
-O --output:输出捕获的包到pacp文件中
-c --calls:仅显示邀请消息
-r --rtp:捕获RTP数据包有效载荷捕获rtp包
-l --limit:限制捕获对话的数量
-i --icase:使大小写不敏感
-v --invert:颠倒(不太明白)
-N --no-interface:不显示sngrep界面,仅捕获
-q --quiet:不要在无界面模式下打印捕获的对话框
-D --dump-config:打印活动的配置设置并退出
-f --config:从文件中读取配置
-R --rotate:达到捕获限制时轮换呼叫。
-H --eep-send:荷马sipcapture网址(udp:XXXX:XXXX)
-L --eep-listen:监听封装的数据包(udp:XXXX:XXXX)
-k --keyfile:RSA私钥文件解密捕获的数据包

抓取INVITE请求的包:
sngrep ^INVITE

抓取REGISTER请求的包:
sngrep ^REGISTER

抓取OPTIONS请求的包:
sngrep ^OPTIONS

捕获端口5060上的所有SIP数据包:
sngrep port 5060

2.4、关键词搜索

​ 在抓包页面按下TAB键,即可通过关键词进行过滤,可以是手机号,可以是IP地址,如下图所示:
在这里插入图片描述

2.5、暂停恢复抓包

​ 在抓包页面直接按P键进行暂停抓包,再次按P键进行恢复抓包。

2.6、呼叫页面即功能使用

选择一通通话,按照回车后者F4进行查看详细交互信息,数字0和9可以控制消息边界显示宽窄,如下图:
在这里插入图片描述

2.6.1、查看媒体交互消息

在抓包详细页面可以通过F2查看SDP消息,通过F3可以查看媒体交消息,详情如下:

主叫发起INV消息,其中在INV中包含自己需要交互的端口信息,此处提供自己的交互端口为13658,被叫在200ok中携带了被叫自己的协商端口,这里是12134端口。
在这里插入图片描述

2.6.2、保存抓包文件

在抓包页面按下F2进行保存抓包,上下肩头为换行,空格为选中,如下图:
在这里插入图片描述

2.6.3、打开抓包命令
sngrep -I XXX.pcap

例:

打开以前的抓包:

[root@localhost ~]# ll /opt
总用量 76
-rw-r--r--  1 root root 63244 919 09:37 15713080482.pcap
drwxr-xr-x. 2 root root  4096 326 2015 rh
drwxr-xr-x  2 root root  4096 118 2023 snmp
drwxr-xr-x  2 root root  4096 925 2022 snmp20221121
[root@localhost ~]# cd /opt/
[root@localhost opt]# sngrep -I 15713080482.pcap

在这里插入图片描述

2.6.4、其他快捷指令
  • ESC 为退出快捷键。
  • F5 为清屏快捷键。

3、tcpdump使用

解释: Tcpdump 可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump 抓包(服务器端抓包),有灵活的命令参数,可以抓取任何端口任何协议任何网卡的数据包,可以通过wireshark分析抓包。

3.1、tcpdump使用帮助

[root@VM-4-14-centos ~]# tcpdump --help
tcpdump version 4.9.2
libpcap version 1.5.3
OpenSSL 1.0.2k-fips  26 Jan 2017
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
                [ -Q|-P in|out|inout ]
                [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
                [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
                [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
                [ -Z user ] [ expression ]

3.2、常见参数

# tcpdump常见参数
-i 指定网卡名,any是任意网卡
-C 指抓包文件的大小,单位:M,大写
-W 指定分包数量(循环抓包)
-w 把数据包数据写入指定的文件

# 例:单个包设置300M的大小,数量设置成10个,保存路径为/tmp下
[root@VM-4-14-centos ~]# tcpdump -i any -C 300 -W 10 -w /tmp/test.pcap
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes

主意: 不管是sngrep还是tcpdump都不能抓太长时间,因为抓包工具会比较占资源,抓包时间过长会导致系统资源占用过高,从而导致影响业务。

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值