这一节将通过一个简单的例子来介绍一些基本的 SIP 操作。先让我们来诊视下图展示的两个用户代理之间的消息顺序。关于SIP协议详细流程,可以参考RFC3261-SIP协议,当然如果不习惯的话可以参考中文翻译版RFC3261-SIP协议中文版

  收到180响应时建立dialog叫做早期对话(early dialog),收到2XX的应答开始才是真正的dialog建立。

sip呼叫.png

当然,这个代理可以有多个代理,其实也就就是多了代理服务器之间的转发过程,如下图:

The SIP dialog flow

发起呼叫流程

//发出 INVITE请求
Request: INVITE sip:100@172.20.16.107 SIP/2.0
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bK5DF007802335421F9A6DAE3DC9B49E54..
From: 300 <sip:300@172.20.16.107>;tag=2549473886
To: <sip:100@172.20.16.107>
Contact: <sip:300@172.20.16.107:5060>
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107
CSeq: 22243 INVITE
Content-Type: application/sdp..//返回响应 100 Trying
Response: SIP/2.0 100 Trying
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bK5DF007802335421F9A6DAE3DC9B49E54
From: 300 <sip:300@172.20.16.107>;tag=2549473886
To: <sip:100@172.20.16.107>;tag=as30112a7b
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107
CSeq: 22243 INVITE
Contact: <sip:100@172.20.16.146> //如果被邀请方收到INVITE 请求,在应答呼叫之前接收到响应180 Ringing
Response: SIP/2.0 180 Ringing
Via: SIP/2.0/UDP
172.20.16.107:5060;branch=z9hG4bK5DF007802335421F9A6DAE3DC9B49E54
From: 300 <sip:300@172.20.16.107>;tag=2549473886
To: <sip:100@172.20.16.107>;tag=as30112a7b
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107
CSeq: 22243 INVITE
Contact: <sip:100@172.20.16.146>
//收到被邀请方应答呼叫的响应 200 OK
Response: SIP/2.0 200 OK
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bK5DF007802335421F9A6DAE3DC9B49E54
From: 300 <sip:300@172.20.16.107>;tag=2549473886
To: <sip:100@172.20.16.107>;tag=as30112a7b
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107
CSeq: 22243 INVITE
Contact: <sip:100@172.20.16.146>
//呼叫发起方收到200 OK消息,直接发送一个ACK确认消息给被邀请方
Request: ACK sip:100@172.20.16.146 SIP/2.0
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bK30F7F7B47E45499BAC441059EFA2DEA2
From: 300 <sip:300@172.20.16.107>;tag=2549473886
To: <sip:100@172.20.16.107>;tag=as30112a7b
Contact: <sip:300@172.20.16.107:5060>
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107
CSeq: 22243 ACK

接受呼叫过程

//接收到 INVITE请求
Request: INVITE sip:300@172.20.16.107 SIP/2.0
Via: SIP/2.0/UDP 172.20.16.146:5060;branch=z9hG4bK5490f4d8
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71
To: <sip:300@172.20.16.107>
Contact: <sip:100@172.20.16.146>
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146
CSeq: 102 INVITE
Date: Tue, 15 Mar 2005 05:41:21 GMT
//发送回应100 Trying
Response: SIP/2.0 100 Trying
Via: SIP/2.0/UDP 172.20.16.146:5060;f=z9hG4bK5490f4d8
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71
To: <sip:300@172.20.16.107>;tag=3363667257
Contact: <sip:300@172.20.16.107:5060>
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146
CSeq: 102 INVITE
//如果接受邀请,则在接受之前发送回应180 Ringing
Response: SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 172.20.16.146:5060;branch=z9hG4bK5490f4d8
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71
To: <sip:300@172.20.16.107>;tag=3363667257
Contact: <sip:300@172.20.16.107:5060>
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146
CSeq: 102 INVITE
如果决定应答呼叫,则发送200 Ok消息
Response: SIP/2.0 200 Ok
Via: SIP/2.0/UDP 172.20.16.146:5060;branch=z9hG4bK5490f4d8
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71
To: <sip:300@172.20.16.107>;tag=3363667257
Contact: <sip:300@172.20.16.107:5060>
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146
CSeq: 102 INVITE
//接收到邀请方发来的ACK确认消息
Request: ACK sip:300@172.20.16.107:5060 SIP/2.0
Via: SIP/2.0/UDP 172.20.16.146:5060;branch=z9hG4bK74cf8e58
From: "ppp" <sip:100@172.20.16.146>;tag=as45eb9e71
To: <sip:300@172.20.16.107>;tag=3363667257
Contact: <sip:100@172.20.16.146>
Call-ID: 0ee9bea806059b0f2770ce5c060d5251@172.20.16.146
CSeq: 102 ACK

终止呼叫或拒绝接受邀请

//发送BYE消息
Request: BYE sip:100@172.20.16.146 SIP/2.0
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bK2CF3B0C22620465D988E1CC2C8A71C56
From: 300 <sip:300@172.20.16.107>;tag=2549473886
To: <sip:100@172.20.16.107>;tag=as30112a7b
Contact: <sip:300@172.20.16.107:5060>
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107
CSeq: 22244 BYE
返回200 OK消息
Response: SIP/2.0 200 OK
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bK2CF3B0C22620465D988E1CC2C8A71C56
From: 300 <sip:300@172.20.16.107>;tag=2549473886
To: <sip:100@172.20.16.107>;tag=as30112a7b
Call-ID: B2ADB3A5-CCB1-485D-AB6C-17D70D82D76E@172.20.16.107
CSeq: 22244 BYE
Contact: <sip:100@172.20.16.146>

取消邀请过程

//发出 INVITE请求
Request: INVITE sip:100@172.20.16.107 SIP/2.0
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6
From: 300 <sip:300@172.20.16.107>;tag=1829163469
To: <sip:100@172.20.16.107>
Contact: <sip:300@172.20.16.107:5060>
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107
CSeq: 41305 INVITE
//返回响应 100 Trying
Response: SIP/2.0 100 Trying
Via: SIP/2.0/UDP
172.20.16.107:5060;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6
From: 300 <sip:300@172.20.16.107>;tag=1829163469
To: <sip:100@172.20.16.107>;tag=as3324adcc
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107
CSeq: 41305 INVITE
Contact: <sip:100@172.20.16.146>
//返回响应180 Ringing
Response: SIP/2.0 180 Ringing
Via:SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6
From: 300 <sip:300@172.20.16.107>;tag=1829163469
To: <sip:100@172.20.16.107>;tag=as3324adcc
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107
CSeq: 41305 INVITE
Contact: <sip:100@172.20.16.146>
取消INVITE请求
Request: CANCEL sip:100@172.20.16.107 SIP/2.0
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6
From: 300 <sip:300@172.20.16.107>;tag=1829163469
To: <sip:100@172.20.16.107>
Contact: <sip:300@172.20.16.107:5060>
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107
CSeq: 41305 CANCEL
返回487请求终止应答
Response: SIP/2.0 487 Request Terminated
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6
From: 300 <sip:300@172.20.16.107>;tag=1829163469
To: <sip:100@172.20.16.107>;tag=as3324adcc
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107
CSeq: 41305 INVITE
Contact: <sip:100@172.20.16.146>
//返回应答200 OK
Response: SIP/2.0 200 OK
Via: SIP/2.0/UDP 172.20.16.107:5060;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6
From: 300 <sip:300@172.20.16.107>;tag=1829163469
To: <sip:100@172.20.16.107>;tag=as3324adcc
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107
CSeq: 41305 CANCEL
Contact: <sip:100@172.20.16.146>
//发送ACK确认消息
Request: ACK sip:100@172.20.16.107 SIP/2.0
Via: SIP/2.0/UDP 172.20.16.107:5060;rport;branch=z9hG4bKE7C2E749AA8B49C693EA90BE1BB367D6
From: 300 <sip:300@172.20.16.107>;tag=1829163469
To: <sip:100@172.20.16.107>;tag=as3324adcc
Contact: <sip:300@172.20.16.107:5060>
Call-ID: 7C09DBD4-85DE-4DA7-8881-A9B309F8E672@172.20.16.107
CSeq: 41305 ACK 

作者:samychen
链接:https://www.jianshu.com/p/c627695f1b55
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

pjsip开发——sip日志分析相关推荐

  1. [原创]Android Monkey 在线日志分析工具开发

    [原创]Android Monkey 在线日志分析工具开发 在移动App测试过程中,Monkey测试是我们发现潜在问题的一种非常有效手段,但是Android原生的Monkey有其天然的不足,数据不能有 ...

  2. Java开发必须掌握的日志分析命令

    转载自 Java开发必须掌握的日志分析命令 对于大型网站来说,很多网站在可用性方面提出4个9或者5个9的要求,如果是4个9,那么网站全年的不可用时间不能超过52.6分钟,如果是5个9,全年不可用时间不 ...

  3. LS1021ATWR开发板启动日志分析

    一.背景 LS1021ATWR开发板运行官方的openwrt系统 二.日志分析 2.1 linux相关日志 root@OpenWrt:/# reboot  重启 root@OpenWrt:/# [ 2 ...

  4. IIS日志分析方法及工具

    出处: http://xugang.cnblogs.com 日志的重要性已经越来越受到程序员的重视,IIS的日志更是不言而喻. IIS日志建议使用W3C扩充日志文件格式,这也是IIS 5.0已上默认的 ...

  5. iis日志字段解析 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

    网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置) https://www.cnblogs.com/fuqiang88/p/5870306.html 我们只能通过各种系统日志来分析网 ...

  6. 开源实时日志分析ELK

    开源实时日志分析ELK 2018-01-04 转自:开源实时日志分析ELK平台部署 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错 ...

  7. ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志. ...

  8. Kubernetes Ingress 日志分析与监控的最佳实践

    2019独角兽企业重金招聘Python工程师标准>>> 前言 目前Kubernetes(K8s)已经真正地占领了容器编排市场,是默认的云无关计算抽象,越来越多的企业开始将服务构建在K ...

  9. 部署Awstats日志分析系统

    AWStats分析系统是使用Perl语言开发的一款开源日志分析系统.可用于分析Apache.Samba.Vsftpd.IIS等服务的日志信息.也可以结合crond等计划任务,不断对增长的日志进行定期分 ...

最新文章

  1. python控制手机发短信_python-在python3中使用容联云通讯发送短信验证码
  2. 零基础自学python的建议-关于零基础学习 Python 有什么好的建议?
  3. linux 操作系统安装配置vnc
  4. js中的鼠标滚轮事件
  5. System.ArgumentException: 输入数组长度大于此表中的列数。
  6. ABAP 泛型处理的overhead - generic programming
  7. 如何掌握C#的核心技术
  8. JavaMelody开源系统性能监控软件:
  9. postman替换快捷键ctrl加什么_电脑截图快捷键ctrl加什么
  10. 关于WP7中的90M内存限制问题及设计原则
  11. DeepMind开源了强化学习库“松露”,团队自身也严重依赖它
  12. 世界时间与伦敦时间_伦敦政治经济学院LSE 2021申请时间线来了,提交申请
  13. lycos搜索引擎_Lycos中国推出全新搜索引擎
  14. 重装战姬服务器正在维护,《重装战姬》2月25日更新维护公告
  15. 关于uniapp获取ios客户端平台安全距离(底部导航条)的方法
  16. NLP神经语言学的12条假设(不是自然语言处理哪个NLP哈)
  17. android x86主动防御,360手机卫士首家实现X86架构手机主动防御
  18. 带你了解下Kafka的客户端缓冲池技术
  19. 模拟弹子台球--java多线程应用
  20. 判断访问来源是pc端还是手机端

热门文章

  1. steam++下载(最新,2023年)
  2. 数据结构之平衡树(Treap)
  3. ps -aux ps -ef 命令
  4. python功能真的强大吗_Python都有什么强大的功能
  5. sql2000安装的一般问题
  6. 转载:项目经理必备工具包:项目管理中的22个思维导图
  7. cf #379div2
  8. 使用KeyManager免费更换多域名SSL证书。
  9. python文本框随窗体变化_Javascript 文本框textarea高度随内容自适应增长收缩
  10. Perten谷物蛋白分析仪维修IM8800红外光谱仪维修