SIP协议总结

SIP消息

SIP是基于文本的协议,使用UTF-8字符集,其消息分为请求消息(由客户端发往服务器)和响应消息(由服务器发往客户端)。

请求消息

请求方法 请求地址 SIP版本号

请求头字段名称:字段值
请求头字段名称:字段值

请求体

请求方法

  • INVITE    主叫UA发出的会话建立请求,即拨号
  • ACK         INVITE请求被最终请求,会话建立
  • BYE         主叫或被叫发出的释放会话的请求,即通知对方我要挂机
  • CANCEL  取消挂起的呼叫
  • REGISTER     UA发出的用户注册请求,即通知SERVER我在线
  • OPTIONS        查询服务器能力

响应消息

SIP版本 状态码 状态描述

响应头字段名称:字段值
响应头字段名称:字段值
....

响应体

头字段

许多常见的SIP报头字段具有紧凑形式,其中报头字段名称由单个小写字符表示。 

报头紧凑型
ToT
ViaV
Call-IDI
ContactM
FromF
SubjectS
Content-LengthI

状态码说明

临时应答(1XX)
100 Trying 正在处理中
180 Ringing 振铃,可以理解为发给主叫方的回铃音
181 call being forwarder 呼叫正在前向
182 queue 排队
181 session progress 会话进行

会话成功(2XX)
200 OK 会话成功

重定向(3XX)
300 multiple 多重选择
301 moved permanently 永久移动
302 moved temporaily 临时移动
305 use proxy 用户代理
380 alternative service 替代服务

请求失败(4XX)
400 bad request 错误请求
401unauthorized 未授权
402 payment required 付费要求
403 forbidden 禁止
404 not found 未发现
405 method no allowed 方法不允许
406 not acceptable 不可接受
407 proxy authentication required 代理需要认证
408 request timeout 请求超时
410 gone 离开
413 request entity too large 请求实体太大
414 request-url too long 请求URL太长
415 unsupported media type 不支持的媒体类型
416 unsupported url scheme 不支持的URL计划
420 bad extension 不良扩展
421 extension required 需要扩展
423 interval too brief 间隔太短
480 temporarily unavailable 临时失效
481 call/transaction does not exist 呼叫/事务不存在
482 loop detected 发现环路
483 too many hops 跳数太多
484 address incomplete 地址不完整
485 ambiguous 不明朗
486 busy here 这里忙
487 request terminated 请求终止
488 not acceptable here 这里请求不可接受
491 request pending 未决请求
493 undecipherable 不可辨识

服务器失败(5XX)
500 server internal error 服务器内部错误
501 not implemented 不可执行
502 bad gateway 坏网关
503 service unavailable 服务无效
504 server time-out 服务器超时
505 version not supported 版本不支持
513 message too large 消息太大

全局性错误(6XX)
600 busy everywhere 全忙
603 decline 丢弃
604 does not exist anywhere 不存在
606 not acceptable 不可接受

sip呼叫过程

UA启动后向ProxyServer发送Register请求(我上线了),server收到Register后对其进行验证,如果是有效用户则发送Ok响应。UA收到Ok后,就可以开始接打电话了。Ok响应中会携带Expires头,告知UA超时时长,为了避免掉线,UA在Expires秒内要重新发出Register请求。但当TU处于通话中期间,不再受Expires的限制,不需要重新发出Register请求,但需要发出Invite请求。

SIP Call Flow

主叫方拨号后发出INVITE请求,被叫方收到INVITE消息开始振铃同时发送Ringing响应给主叫方,主叫收到Ringing响应后播放回铃音;被叫接听电话时发送Ok响应,主叫收到Ok响应知道被叫接听了,同时发送ACK请求告知被叫开始通话了。

主叫方在发出INVITE请求后,在接收到Ok响应前,可以发出Cancel请求取消呼叫。

主被叫任一方挂断电话时发送BYE请求,对方接收到Bye请求后发送Ok响应,知道要挂机了。

SIP Trapezoid

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值