SIP IP电话系统定义了注册/注销、呼叫、重定向、能力查询四种工作过程。

注册/注销过程

  SIP为用户定义了注册和注销过程,其目的是可以动态建立用户的逻辑地址和其当前联系地址之间的对应关系,以方便实现呼叫路由和对用户移动性的 支持。逻辑地址和联系地址的分离也方便了用户,它不论在何处、使用何种设备,都可以通过唯一的逻辑地址进行通信。

  注册/注销过程是通过REGISTER消息和200成功响应来实现的。在注册/注销时,用户将其逻辑地址和当前联系地址通过REGISTER消 息发送给其注册服务器,注册服务器对该请求消息进行处理,并以200成功响应消息通知用户注册/注销成功。

REGISTER sip:192.168.0.157 SIP/2.0

Via: SIP/2.0/UDP 192.168.0.212;rport;branch=z9hG4bKc0a800d4000000104c21966c00007c9900000004
Content-Length: 0
Contact: <sip:8002@192.168.0.212:5060>
Call-ID: 19AC17CC-55FE-42A0-9127-9F53943F5291@192.168.0.212
CSeq: 2 REGISTER
From: <sip:8002@192.168.0.157>;tag=1525750021180
Max-Forwards: 70
To: <sip:8002@192.168.0.157>
User-Agent: SJphone/1.60.289a (SJ Labs)
Authorization: Digest username="8002",realm="asterisk",nonce="4fc62d23",uri="sip:192.168.0.157",response="39677e3edaed7037bd8af592d8d2a038",algorithm="MD5"

SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.0.212;branch=z9hG4bKc0a800d4000000104c21966c00007c9900000004;received=192.168.0.212;rport=5060
From: <sip:8002@192.168.0.157>;tag=1525750021180
To: <sip:8002@192.168.0.157>
Call-ID: 19AC17CC-55FE-42A0-9127-9F53943F5291@192.168.0.212
CSeq: 2 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Contact: <sip:8002@192.168.0.157>
Content-Length: 0

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.212;branch=z9hG4bKc0a800d4000000104c21966c00007c9900000004;received=192.168.0.212;rport=5060
From: <sip:8002@192.168.0.157>;tag=1525750021180
To: <sip:8002@192.168.0.157>;tag=as3d657ebf
Call-ID: 19AC17CC-55FE-42A0-9127-9F53943F5291@192.168.0.212
CSeq: 2 REGISTER
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Expires: 120
Contact: <sip:8002@192.168.0.212:5060>;expires=120
Date: Wed, 23 Jun 2010 05:07:00 GMT
Content-Length: 0

呼叫过程

  SIP IP电话系统中的呼叫是通过INVITE邀请请求、成功响应和ACK确认请求的三次握手来实现的。即当主叫用户代理要发起呼叫时,它构造一个INVITE 消息,并发送给被叫。被叫收到邀请后决定接受该呼叫,就回送一个成功响应(状态码为200)。主叫方收到成功响应后,向对方发送ACK请求。被叫收到 ACK请求后,呼叫成功建立。

  呼叫的终止通过BYE请求消息来实现。当参与呼叫的任一方要终止呼叫时,它就构造一个BYE请求消息,并发送给对方。对方收到BYE请求后,释 放与此呼叫相关的资源,回送一个成功响应,表示呼叫已经终止。

  当主被叫双方已建立呼叫,如果任一方想要修改当前的通信参数(通信类型、编码等),可以通过发送一个对话内的INVITE请求消息(称为re- INVITE)来实现。

INVITE sip:8001@192.168.0.163:49152 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.157:5060;branch=z9hG4bK0083a186;rport
From: "8002" <sip:8002@192.168.0.157>;tag=as044943cc
To: <sip:8001@192.168.0.163:49152>
Contact: <sip:8002@192.168.0.157>
Call-ID: 04c421db5d7f5c942393cb65621016dc@192.168.0.157
CSeq: 102 INVITE
User-Agent: Asterisk PBX
Max-Forwards: 70
Date: Wed, 23 Jun 2010 05:13:11 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: 363

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.0.212;branch=z9hG4bKc0a800d40000002b4c2197e00000549c0000004a;received=192.168.0.212;rport=5060
From: "unknown"<sip:8002@192.168.0.157>;tag=156294689213
To: <sip:8001@192.168.0.157>;tag=as46e231f6
Call-ID: EC15DE5D-CE4E-46E7-A506-B37BB42F164B@192.168.0.212
CSeq: 2 INVITE
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Contact: <sip:8001@192.168.0.157>
Content-Length: 0

SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.0.157:5060;branch=z9hG4bK0083a186;rport=5060;received=192.168.0.157
From: "8002" <sip:8002@192.168.0.157>;tag=as044943cc
To: "unknown" <sip:8001@192.168.0.163:49152>;tag=653819a85587
Call-ID: 04c421db5d7f5c942393cb65621016dc@192.168.0.157
CSeq: 102 INVITE
Content-Length: 0
Server: SJphone/1.65.377a (SJ Labs)

OPTIONS sip:192.168.0.157 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.212;rport;branch=z9hG4bKc0a800d4000000104c2197e100000a7a0000004d
Content-Length: 0
Call-ID: 84F39028-3828-41E7-A0F6-C52C1E17EBAE@192.168.0.212
CSeq: 18 OPTIONS
From: <sip:8002@192.168.0.157>;tag=1563048416840
Max-Forwards: 70
To: <sip:192.168.0.157>

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.212;branch=z9hG4bKc0a800d4000000104c2197e100000a7a0000004d;received=192.168.0.212;rport=5060
From: <sip:8002@192.168.0.157>;tag=1563048416840
To: <sip:192.168.0.157>;tag=as3aafc1a7
Call-ID: 84F39028-3828-41E7-A0F6-C52C1E17EBAE@192.168.0.212
CSeq: 18 OPTIONS
User-Agent: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Supported: replaces
Contact: <sip:192.168.0.157>
Accept: application/sdp
Content-Length: 0

SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.0.157:5060;branch=z9hG4bK0083a186;rport=5060;received=192.168.0.157
From: "8002" <sip:8002@192.168.0.157>;tag=as044943cc
To: "unknown" <sip:8001@192.168.0.163:49152>;tag=653819a85587
Contact: <sip:8001@192.168.0.163:49152>
Call-ID: 04c421db5d7f5c942393cb65621016dc@192.168.0.157
CSeq: 102 INVITE
Content-Length: 0
Server: SJphone/1.65.377a (SJ Labs)

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.157:5060;branch=z9hG4bK0083a186;rport=5060;received=192.168.0.157
From: "8002" <sip:8002@192.168.0.157>;tag=as044943cc
To: "unknown" <sip:8001@192.168.0.163:49152>;tag=653819a85587
Contact: <sip:8001@192.168.0.163:49152>
Call-ID: 04c421db5d7f5c942393cb65621016dc@192.168.0.157
CSeq: 102 INVITE
Content-Length: 271
Content-Type: application/sdp
Server: SJphone/1.65.377a (SJ Labs)
Supported: replaces,norefersub,timer

ACK sip:8001@192.168.0.163:49152 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.157:5060;branch=z9hG4bK4ed93e8f;rport
From: "8002" <sip:8002@192.168.0.157>;tag=as044943cc
To: <sip:8001@192.168.0.163:49152>;tag=653819a85587
Contact: <sip:8002@192.168.0.157>
Call-ID: 04c421db5d7f5c942393cb65621016dc@192.168.0.157
CSeq: 102 ACK
User-Agent: Asterisk PBX
Max-Forwards: 70
Content-Length: 0

重定向过程

  当重定向服务器(其功能可包含在代理服务器 和用户终端中)收到主叫用户代理的INVITE邀请消息,它通过查找定位服务器发现该呼叫应该被重 新定向(重定向的原因有多种,如用户位置改变、实现负荷分担等等),就构造一个重定向响应消息(状态码为3xx),将新的目标地址回送给主叫用户代理。主 叫用户代理收到重定向响应消息后,将逐一向新的目标地址发送INVITE邀请,直至收到成功响应并建立呼叫。如果尝试了所有的新目标而无法建立呼叫,则本 次呼叫失败。

能力查询过程

  SIP IP电话系统还提供了一种让用户在不打扰对方用户的情况下查询对方通信能力的手段。可查询的内容包括:对方支持的请求方法(methods)、支持的内容 类型、支持的扩展项、支持的编码等等。

  能力查询通过OPTION请求消息来实现。当用户代理想要查询对方的能力时,它构造一个OPTION请求消息,发送给对方。对方收到该请求消息 后,将自己支持的能力通过响应消息回送给查询者。如果此时自己可以接收呼叫,就发送成功响应(状态码为200),如果此时自己忙,就发送自身忙响应(状态 码为 486)。因此,能力查询过程也可以用于查询对方的忙闲状态,看是否能够接受呼叫。

SIP的基本工作过程相关推荐

  1. SIP交换中的SDP及RTP的工作过程

      下面是一个典型的SIP会话 要传送媒体首先要建立一个媒体会话(Session).建立媒体会话实际上就是通过SDP offer/answer交换进行就会话的媒体参数进行协商的一个过程.但在SIP中没 ...

  2. 【转】DHCP工作过程详解

    DHCP动态主机配置协议的作用我想作为网管的兄弟们都应该知道了,这里我就不多废话了,今天我要谈的是DHCP的工作过程,了解了工作过程,要排除故障就容易了. 一.DHCP客户机初始化: 1. 寻找DHC ...

  3. 实验四:汇编代码调用系统调用的工作过程

    钟晶晶 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 工作过程 以41 ...

  4. [置顶] 谈谈找工作过程中的那些环节、注意点和经验

    作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/. 声明:版权所有,转载请注明出处,谢谢. 前面写了两篇面试相关的总结性文章,一篇是找工 ...

  5. EIGRP实验--协议工作过程详解(一)

    实验目的: 了解五种报文的格式及工作过程:初步学习,不妥当的地方还请大牛指教! Hello: 我们现在R1路由器上面开启EIGRP进程,R2上暂时不开启,然后使用wireshark进行抓包分析: 由此 ...

  6. 简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程。

    简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程. 参考答案: Linux通过i节点表将文件的逻辑结构和物理结构进行转换. i 节点是一个64字节长的表,表中包含了文件的相关信 ...

  7. 框架源码系列四:手写Spring-配置(为什么要提供配置的方法、选择什么样的配置方式、配置方式的工作过程是怎样的、分步骤一个一个的去分析和设计)...

    一.为什么要提供配置的方法 经过前面的手写Spring IOC.手写Spring DI.手写Spring AOP,我们知道要创建一个bean对象,需要用户先定义好bean,然后注册到bean工厂才能创 ...

  8. 软件工程师怎样减轻工作过程中遇到的压力

    1.经常锻炼身体 身体是革命的本钱,如果身体不好,会影响工作的效率,即使你能力再强,如果身体不好,时不时的出现身体不舒服的问题,对工作效率也是会有影响的,所以经常锻炼身体显得特别重要. 运动时,不仅能 ...

  9. 扫描过程_PLC的循环扫描工作过程

    PLC的循环扫描工作过程 CPU自检阶段 CPU自检阶段包括CPU自诊断测试和复位监视定时器. 在自诊断测试阶段,CPU检测PLC各模块的状态,若出现异常立即进行诊断和处理,同时给出故障信号,点亮CP ...

最新文章

  1. Android中使用xml处理图片,Android布局 – 在xml中偏移背景图像
  2. python 柱状图宽度设置_Python matplotlib 柱状图实例
  3. MyBatis与Hibernate比较
  4. 致力协同办公oa系统服务器设置,致力协同办公oa系统安装手册新.pdf
  5. 如何把VS Code打造成Java开发IDE?
  6. bio java 例子_JAVA BIO 服务器与客户端实现示例
  7. python ssh实现_SSH协议的Python实现paramiko
  8. activiti5第六弹 手动任务、接收任务、邮件任务
  9. [postgresql]postgresql自定义函数查询ETL作业依赖的实例
  10. OpenCV_cv::Mat的深拷贝 浅拷贝问题
  11. (1)前言-JsDroid引流脚本混合式开发技术系列教程By飞云脚本学院
  12. 西门子组态软件wincc短信报警,微信推送
  13. PrintStream和System.setOut(PrintStream ps)用法
  14. 感冒初期试试食疗方 盲目用药伤脾胃
  15. Android开发工具系列 --Hosts映射
  16. linux查看单词个数,Linux怎么统计文本的的行数/单词数和字符数?
  17. apple iMac一体机 装双系统 实战! (Apple +Win 7 64bit)Good
  18. 微信扫二维码调用外部浏览器页面
  19. OpenFaaS - 以自己的方式运行容器化函数
  20. 视觉算法需要哪些知识,视觉算法和图像算法

热门文章

  1. 移动魔百盒M301H 刷机固件及教程
  2. 数据结构思维导图总表
  3. 15 ActionProvider代码例子
  4. 已知收到的汉明码(按配偶原则配置)为1100111、1100001,检查上述代码是否出错?
  5. 嵩天老师python123测验4: 程序的控制结构 (第4周)
  6. Vue2.0快速入门
  7. npm 查看源地址以及更换源地址的方法
  8. 从0开始学爬虫6比价工具开发1之爬取当当、京东的数据
  9. 网易企业邮箱如何追踪邮件?如何知道收件人是否看了邮件?如何打开阅读收条
  10. 电力系统非线性控制_电抗器在电力系统中的应用