sip协议之注册说明

2023-05-16

    注册是SIP协议中重要的功能,所谓注册,就是用户A客户端将自己的联系地址告知服务器,以便后续有其它用户呼叫用户A时,服务器能够将呼叫转接到用户A. SIP协议中的联系地址是指由账号、IP/PORT、传输方式等组成的地址记录,也称为URI。

一、注册流程:

二、流程说明

     1. 客户端首先发起注册,此时没有鉴权头

     2. 服务器返回401进行鉴权

     3. 客户端带上鉴权信息Authorization(账号、密码等)再次注册

     4. 返回200-OK注册成功

三、常见问题

注(由于实际环境部署和软件实现差异,以下问题分析仅供参考)
1. 403错误
    一般是密码不正确


2. 404错误
    账号不正确/认证账号不正确


3. 408错误
   服务端不响应


4. 500错误
   服务端错误


5. 502错误
   网络断开

四、消息格式解析

4.1 注册

REGISTER sip:192.168.0.201:5060;transport=udp SIP/2.0
Via: SIP/2.0/UDP 192.168.1.6:5060;rport;branch=z9hG4bKPj7ZkTqtRf1t8qu.gYYoocd.dBk86drsCG
Max-Forwards: 70
From: "1018" <sip:1018@192.168.0.201>;tag=fqEkbfW40BGFRa7XoJlFyIk-.yT7T3Ux
To: "1018" <sip:1018@192.168.0.201>
Call-ID: lcKW6mBcLBx0wngn@192.168.1.6
CSeq: 12990 REGISTER
User-Agent: VoIP
Contact: "1018" <sip:1018@192.168.1.6:5060>
Expires: 3600          注册超时时间
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Content-Length:  0


SIP/2.0 401 Unauthorized
v:SIP/2.0/UDP 192.168.1.6:5060;rport=5060;branch=z9hG4bKPj7ZkTqtRf1t8qu.gYYoocd.dBk86drsCG
f:"1018"<sip:1018@192.168.0.201>;tag=fqEkbfW40BGFRa7XoJlFyIk-.yT7T3Ux
t:"1018"<sip:1018@192.168.0.201>;tag=gmpKe30Btr2Zj
i:lcKW6mBcLBx0wngn@192.168.1.6
CSeq:12990 REGISTER
User-Agent:FreeSWITCH-mod_sofia/1.10.7-dev+git~20210720T181005Z~4c04914003~64bit
Allow:INVITE,ACK,BYE,CANCEL,OPTIONS,MESSAGE,INFO,UPDATE,REGISTER,REFER,NOTIFY,PUBLISH,SUBSCRIBE
k:timer,path,replaces
WWW-Authenticate:Digest realm="192.168.0.201",nonce="fdcf1fa0-a1bf-11ec-834a-51de18a27486",algorithm=MD5,qop="auth"
l:0

REGISTER sip:192.168.0.201:5060;transport=udp SIP/2.0
Via: SIP/2.0/UDP 192.168.1.6:5060;rport;branch=z9hG4bKPjhibPo5KuWptanbOg74iSI50U3Y6DEfGH
Max-Forwards: 70
From: "1018" <sip:1018@192.168.0.201>;tag=fqEkbfW40BGFRa7XoJlFyIk-.yT7T3Ux
To: "1018" <sip:1018@192.168.0.201>
Call-ID: lcKW6mBcLBx0wngn@192.168.1.6
CSeq: 12991 REGISTER
User-Agent: VoIP
Contact: "1018" <sip:1018@192.168.1.6:5060>
Expires: 3600
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Authorization: Digest username="1018", realm="192.168.0.201", nonce="fdcf1fa0-a1bf-11ec-834a-51de18a27486", uri="sip:192.168.0.201:5060;transport=udp", response="b4366d02187cb254adb617367cb7d77f", algorithm=MD5, cnonce="zIhex-YJ-8ChFLOTzhHyp-6raNK96Q06", qop=auth, nc=00000001
Content-Length:  0


SIP/2.0 200 OK
v:SIP/2.0/UDP 192.168.1.6:5060;rport=5060;branch=z9hG4bKPjhibPo5KuWptanbOg74iSI50U3Y6DEfGH
f:"1018"<sip:1018@192.168.0.201>;tag=fqEkbfW40BGFRa7XoJlFyIk-.yT7T3Ux
t:"1018"<sip:1018@192.168.0.201>;tag=HXFcgyHFQ1rje
i:lcKW6mBcLBx0wngn@192.168.1.6
CSeq:12991 REGISTER
m:<sip:1018@192.168.1.6:5060>;expires=600    服务器协商后的超时时间
Date:Sat, 12 Mar 2022 04:50:51 GMT
User-Agent:FreeSWITCH-mod_sofia/1.10.7-dev+git~20210720T181005Z~4c04914003~64bit
Allow:INVITE,ACK,BYE,CANCEL,OPTIONS,MESSAGE,INFO,UPDATE,REGISTER,REFER,NOTIFY,PUBLISH,SUBSCRIBE
k:timer,path,replaces
l:0

  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sip协议之注册说明 的相关文章

随机推荐

  • 一个空文件夹和空文件占多少空间?

    用于显示文件夹和文件大小的命令 span class token function du span h 显示目前在 Linux 系统上的文件系统磁盘使用情况统计 span class token function df span i 一 问
  • 虚拟地址如何访问到物理地址

    环境 xff1a 32bit CPU 一 通过二级页表映射的方式访问物理地址 1 取一级页表的基地址Abase1 2 取虚拟地址的前12bit 31 20 地址O1 3 计算得到新地址Apgd 61 Abase1 amp 0xFFFFF00
  • 添加自定义的section

    一 基本知识点 编译出来的程序 xff08 o so exe ko等等 xff09 都是以elf格式进行排列保存的 elf文件分析情况 xff1a https blog csdn net edonlii article details 87
  • 如何打印堆栈

    一 打印堆栈可以方便问题定位 xff0c 找到具体的函数调用流程 二 打印堆栈的方法 2 1 用户态 include lt stdio h gt include lt stdlib h gt include lt stddef h gt i
  • 内存飞踩问题的几点思考

    1 程序编译 xff0c 链接后生成二进制可执行程序 二进制可执行文件以elf格式实现排列 可以通过readelf S xxxx查看具体section的划分 xff0c 粗略划分如下图所示 在这些section中 xff0c 代码段是只读的
  • CFS调度算法

    1 CFS调度算法 xff0c 顾名思义就是完全公平调度策略 比方说 xff0c 调度延迟时间是10ms xff0c 存在两个进程A和B xff0c 那么两个进程分别占用CPU的时间是5ms 然而 xff0c 阶级总是存在的 xff0c 毕
  • ARM处理器的异常模式

    1 ARM处理器有各种异常模式 xff0c 用于应对ARM出现的不同状态 出现异常时 xff0c 会随即进入相关的异常向量 xff0c 同时CPSR的寄存器也会设置成具体的模式 例 xff1a 当出现中断时 xff0c 不管是哪种中断 xf
  • 内核态和用户态相关的内存泄漏

    应用程序通过系统调用进入内核态代码 假如内核态代码存在内存泄漏 xff0c 此内存泄漏属于内核态还是用户态 xff1f 查看内核态和用户态的统计信息
  • 为什么在telnet登入界面下没有日志输出?

    1 每个进程的输入输出导向目标都可以在进程号下的fd软链接上查看 如 569号进程的输出目标是 dev console xff0c 即串口 其中0是标准输入 xff0c 1是标准输出 xff0c 2是标准错误输出 2 因此我们只需要查看te
  • 【无标题】

    1 将虚拟地址传入到内核态 xff0c 借助内核态中mm struct结构体的pgd页表基地址成员 xff0c 经过查页表的方式最终获取到物理地址 这种方法虽然很直观 xff0c 但是一会内核态 xff0c 一会用户态 xff0c 操作起来
  • C#串口=>发送和接收

    作用 xff1a 串口发送命令后 xff0c 等待下位机应答帧 代码 xff1a 一旦读取到数据就立即返回给上层 public string TXandRX byte buffer string data 发送 RS485专用 start
  • kprobe功能的代码实现

    1 可以借助 sys kernel debug tracing目录下的文件 xff0c linux提供了kprobes功能 xff0c 抓取内核函数中的入参和返回值 kprobes xff0c 强大的调试工具 sydyh43的博客 CSDN
  • 上位机使用C++通过ADS协议与倍福PLC通信例程-通过变量名方式读写浮点数

    前言 建议初学者先看这一章节内容 xff0c 里面包括一些基础的环境配置和项目建立流程 xff0c 以后开发项目这些流程是通用的 xff0c 务必掌握并熟练 链接 上位机使用C 43 43 通过ADS协议与倍福PLC通信例程 布尔变量的读取
  • 弄清USART串口的使能位(UE、TCIE、RXNEIE)和标志位(TC、RXNE)

    下面通过485半双工的通信过程 xff0c 记录USART串口的几个使能位 标志位 说明 xff1a USART IT TC 和 USART IT RXNE是一个常量 xff0c 并不代表 xff08 TC RXNE 这两位 define
  • 机器人视觉检测+跟踪:行人跟随过程中对目标提取特征+匹配

    今天上午也是没有很大的成效 xff0c 一直到下午睡醒 xff08 论好的睡眠的重要性 xff09 xff0c 在一篇帖子中看到一种新的写法 xff0c opencv3将IplImage转换为Mat格式的写法 xff0c 在我们的代码中采用
  • ubuntu firefox打不开网页

    检查ubuntu右上角联网开关是否打开 xff1a 需要勾选Enable Networking 如果能ping通其它主机地址 xff0c 浏览器却上不了网 xff0c 很有可能是dns域名解析的问题 查看域名配置文件 xff1a cat e
  • Java如何利用JNI调用C++(简略介绍及步骤)

    Java如何利用JNI调用C 43 43 xff08 简略介绍及步骤 xff09 文章目录 Java如何利用JNI调用C 43 43 xff08 简略介绍及步骤 xff09 一 原理介绍二 详细步骤步骤一 xff1a 编写Java类步骤二
  • HttpParser解析节点遇到的不解问题

    HttpParser遇到table时 xff0c 解析时 xff0c 直接抽取th或者td xff0c thead和tbody解析或出现异常 比如 lt table gt lt thead gt lt tr gt 相关内容 lt tr gt
  • CMakeLists 理解

    CMakeLists 理解 最近发现其实之前对CMakeLists 理解不是很全面 xff0c 零零散散在网上看到的一些教程 xff0c 其实都是为了解决某个命令的问题 xff0c 要不然就是对一些命令的翻译理解 xff0c 实际上是很劝退
  • sip协议之注册说明

    注册是SIP协议中重要的功能 xff0c 所谓注册 xff0c 就是用户A客户端将自己的联系地址告知服务器 xff0c 以便后续有其它用户呼叫用户A时 xff0c 服务器能够将呼叫转接到用户A SIP协议中的联系地址是指由账号 IP POR