I. 实验环境

SIP服务器: Yate服务器, IP:port=10.15.3.34:5060

SIP客户端: 移植Sipdroid的Android网络电话软件, IP: 10.15.3.73, Android设备型号: X16 Plus(D3A5)

抓包工具: Wireshark 1.10.0

II. 配置SIP服务器

http://blog.csdn.net/stdupanda/article/details/14165231

III. Wireshark使用

抓包和过滤

保存报文

VI. SIP消息分析

4.1 客户端注册请求(无认证信息)


No. Time Source Destination Protocol Length Info
648 38.155145000 10.15.3.73 10.15.3.34 SIP 408 Request: REGISTER sip:10.15.3.34 |

Session Initiation Protocol (REGISTER)

    Request-Line: REGISTER sip:10.15.3.34 SIP/2.0

Message Header
Via: SIP/2.0/UDP 10.15.3.73:5060;rport;branch=z9hG4bK52751
Max-Forwards: 70
To: <sip:123@10.15.3.34>
From: <sip:123@10.15.3.34>;tag=z9hG4bK02183212
Call-ID: 508230833273@10.15.3.73
CSeq: 1 REGISTER
Contact: <sip:123@10.15.3.73:5060;transport=udp>
Expires: 3600
User-Agent: Sipdroid/1.0.0/X16 Plus(D3A5)

(无认证信息)Authorization: Digest username="987", realm="Yate", nonce="b05a6e1b63dcb24c83bf00d28ead4a22.1482820854", uri="sip:10.15.3.34", algorithm=MD5, response="21bcb75b30f1e75307d1e3338721fa87"

Content-Length: 0

4.2 注册异常, port错误

找到不到端口属于ICMP协议,不是SIP的内容, 但是包含了该SIP请求


No. Time Source Destination Protocol Length Info
663 38.286045000 10.15.3.34 10.15.3.73 ICMP 436 Destination unreachable (Port unreachable)

Internet Control Message Protocol

    Type: 3 (Destination unreachable)
Code: 3
(Port unreachable)
Checksum: 0x190d [correct]
Internet Protocol Version , Src: 10.15.3.73 (10.15.3.73), Dst: 10.15.3.34 (10.15.3.34)
User Datagram Protocol, Src Port: sip (), Dst Port: ()
Session Initiation Protocol (REGISTER)
Request-Line: REGISTER sip:10.15.3.34 SIP/2.0
Message Header
Via: SIP/2.0/UDP 10.15.3.73:;rport;branch=z9hG4bK52751
Max-Forwards:
To: <sip:@10.15.3.34>
From: <sip:@10.15.3.34>;tag=z9hG4bK02183212
Call-ID: @10.15.3.73
CSeq: REGISTER
Contact: <sip:@10.15.3.73:;transport=udp>
Expires:
User-Agent: Sipdroid/1.0./X16 Plus(D3A5)
Content-Length:

4.3 注册失败, 未认证

No.     Time      Source       Destination   Protocol  Length Info
26.643950000 10.15.3.34 10.15.3.73 SIP 505 Status: 401 Unauthorized (0 bindings) | Session Initiation Protocol ()
Status-Line: SIP/2.0 401 Unauthorized
Message Header
Via: SIP/2.0/UDP 10.15.3.73:;rport=;branch=z9hG4bK52571;received=10.15.3.73
From: <sip:@10.15.3.34>;tag=z9hG4bK59485601
To: <sip:@10.15.3.34>
Call-ID: @10.15.3.73
CSeq: REGISTER
WWW-Authenticate: Digest realm="Yate", nonce="b05a6e1b63dcb24c83bf00d28ead4a22.1482820854", stale=FALSE, algorithm=MD5
Server: YATE/5.5.
Allow: ACK, INVITE, BYE, CANCEL, REGISTER, REFER, OPTIONS, INFO
Content-Length:

4.4 响应型应答1xx: 收到消息, 正在处理...

No.     Time         Source      Destination     Protocol Length Info
407 26.684087000 10.15.3.34 10.15.3.73 SIP 314 Status: 100 Trying (0 bindings) |
Session Initiation Protocol (100)
Status-Line: SIP/2.0 100 Trying
Message Header
Via: SIP/2.0/UDP 10.15.3.73:5060;rport=5060;branch=z9hG4bK92670;received=10.15.3.73
From: <sip:987@10.15.3.34>;tag=z9hG4bK59485601
To: <sip:987@10.15.3.34>
Call-ID: 421848292740@10.15.3.73
CSeq: 2 REGISTER
Server: YATE/5.5.0
Content-Length: 0

4.5 确认型应答2xx: 添加认证后重新发送注册请求, 注册成功

No.     Time        Source        Destination     Protocol Length Info
26.689106000 10.15.3.34 10.15.3.73 SIP 468 Status: 200 OK (1 bindings) | Session Initiation Protocol ()
Status-Line: SIP/2.0 200 OK
Message Header
Via: SIP/2.0/UDP 10.15.3.73:;rport=;branch=z9hG4bK92670;received=10.15.3.73
From: <sip:@10.15.3.34>;tag=z9hG4bK59485601
To: <sip:@10.15.3.34>;tag=
Call-ID: @10.15.3.73
CSeq: REGISTER
Expires:
Contact: <sip:@10.15.3.73:;transport=udp>;expires=
Server: YATE/5.5.
Allow: ACK, INVITE, BYE, CANCEL, REGISTER, REFER, OPTIONS, INFO
Content-Length:

V. UserAgent和SIP消息

/*SIP消息body相关*/
public String from_url = null; //User的地址, 和From URL等价
public String contact_url = null; //联系人URL, 格式为: sip:local_user@host_address:host_port
public String realm = null;
public String passwd = null; /*注册状态相关*/
public boolean do_register = false; //是否注册到注册服务器
public boolean do_unregistered = false; //是否注销了联系人地址
public boolean do_unregister_all = false; //向服务器注册前是否注销了所有联系人 /*注册超时和TCP连接保活(非应用层的心跳包)*/
public int expires = 3600; //注册超时时间
public long keepalive_time = 0; //默认为0, 使能客户端和注册服务器之间TCP连接的自动保活功能 /*通话控制相关*/
public int accept_time = -1; //自动应答时间, <0为手动设置模式
public int hangup_time = -1; //自动挂断时间, <0为手动设置模式
public int transfer_time = -1; //呼叫无应答自动呼叫转移时间, <0为无自动呼叫转移 /*音视频相关*/
public int audio_prot = 21000;
public int[] audio_codecs = {3, 8, 0};
public int audio_sample_rate = 8000;
public int video_port = 21070;
public int video_avp = 103; /*参数初始化相关方法*/
public UserAgentProfile(String file); //从file中初始化UserAgentProfile
public void init(); //根据contact_url初始化realm, username, call_to等变量
//根据sip_provider初始化contact_url, 包括getViaAddress(), getPort(), getDefaultTransport()
public void initContactAddress(SipProvider sip_provider);



抓包分析SIP消息的更多相关文章

  1. qxdm,qpst,qcat抓包分析VoLTE SIP协商包

    QXDM,QPST和QCAT是Qualcomm高通公司针对高通芯片的抓包分析工具. QXDM抓包分析,QPST与手机com口连接,QCAT用来分析抓包产生的isf文件(log). 使用版本: QXDM ...

  2. HTTP2特性预览和抓包分析

    背景 近年来,http网络请求量日益添加,以下是httparchive统计,从2012-11-01到2016-09-01的请求数量和传输大小的趋势图: 当前大部份客户端&服务端架构的应用程序, ...

  3. 实战录 | 基于openflow协议的抓包分析

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全SDN工程师宋飞虎,将带来基于 ...

  4. 网络协议抓包分析——ARP地址解析协议

    前言 计算机之间可以相互通信的前提是要知道对方的地址,才可以发送信息给其他计算机,就像别人要联系你也得先知道你的电话号码一样.这里的地址因为网络分层的原因就包括IP地址和MAC地址(即网卡地址.硬件地 ...

  5. Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析

    Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一.介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计 ...

  6. 转:tcpdump抓包分析(强烈推荐)

    转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666539134&idx=1&sn=5166f0aac71 ...

  7. FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接

    一.为什么写这个 昨天遇到个ftp相关的问题,关于ftp匿名访问的.花费了大量的脑细胞后,终于搞定了服务端的配置,现在客户端可以像下图一样,直接在浏览器输入url,即可直接访问. 期间不会弹出输入用户 ...

  8. WebSocket抓包分析

    转载自:https://www.cnblogs.com/songwenjie/p/8575579.html Chrome控制台 (1)F12进入控制台,点击Network,选中ws栏,注意选中Filt ...

  9. 抓包分析LVS-NAT中出现的SYN_RECV

    CIP:192.168.10.193 VIP:192.168.10.152:8000 DIP:100.10.8.152:8000 RIP:100.10.8.101:8000 和 100.10.8.10 ...

随机推荐

  1. 由浅入深学习.NET CLR 系列:目录

    经过对Android的一阵折腾,些许熟悉了一些Java的东东,又开始转战.NET.我觉得学习最好和工作不要相离太远,才会更加随笔随意,索性整理一些比较系统的.NET的基础知识学习学习.一提起学习.NE ...

  2. 临时对象与NRV技术

    <More Effective C++>中讲到,在C++中真正的临时对象是看不见的,它们不出现在你的源代码中.建立一个没有命名的非堆(non-heap)对象会产生临时对象,这种未命名的对象 ...

  3. TortoiseGit for windows安装与配置

    1. 下载地址 TortoiseGit与Language Packs下载: https://code.google.com/p/tortoisegit/wiki/Download?tm=2 msysg ...

  4. C#伪彩色处理

    伪彩色处理是指将灰度图像转换成彩色图象.因为人眼对于彩色的分辨能力远高于对灰度图像的分辨能力,所以将灰度图像转换成彩色可以提高人眼对图像细节的辨别能力.伪彩色并不能真实的反映图像像的彩色情况. 效果图 ...

  5. WCF从零学习之设计和实现服务协定2

    WCF从零学习之设计和实现服务协定(二)   在创建服务协定之前,有很多WCF术语,比如: 消息.服务.终结点 创建协定 类或接口都可以定义服务协定,建议使用接口,因为接口可以直接对服务协定建模 服务 ...

  6. ASP.NET交互Rest服务接口(Jquery的Get与Post方式)

    ASP.NET交互Rest服务接口(Jquery的Get与Post方式) 本文将通过一个简单的实例,介绍如何创建一个Rest服务接口,以及通过JQUERY去对它进行调用;主要采取两种方式分别为Get跟 ...

  7. VS调试技巧与快捷键&&VS快捷键

    VS调试技巧与调试快捷键 1.添加断点或取消断点:F9(或者点击代码行最左边的灰色行)   2.调试:F10逐过程(不进入函数内部,直接获取函数运行结果)  F11逐语句(会进入函数),如果想跳出函数 ...

  8. [转]ARM Pipeline

    Add r0, PC, # g_oalAddressTable - (+ 8) instruction, a lot of people had cprogramdev.com Forum asked ...

  9. WebLogic使用SSH架构部署遇到org.hibernate.hql.internal.ast.HqlTok

    其实这个问题在以前就遇到过,当时解决了,但今天在部署一个测试轻应用的时候一直没有想起来,特此记录一下. 这个问题出现在使用WebLogic(我使用的是10.3.5版本)发布SSH架构的应用.在操作数据 ...

  10. PHP的curl实现get,post 和 cookie(几个实例)

    类似于dreamhost这类主机服务商,是显示fopen的使用 的.使用php的curl可以实现支持FTP.FTPS.HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE ...