SIP 注册过程

2023-05-16

SIP协议包含两种类型的消息,一种是请求行用于发出邀请,而另一种则是状态行,用于标明当前通信的状态。请求行和状态行军包含三部分,其中每一部分以空格隔开,不论是请求行还是状态行均以CRLF换行符结束。在请求行中,三部分内容分别为Method 请求URI和SIP版本号。如下例所示:
Request-Line: REGISTER sip:192.169.1.150 SIP/2.0
在这里方法是REGISTER,也就是注册。空格之后的sip:192.169.1.150则是请求到达的URI目的地址,SIP/2.0则是SIP的版本号。
Status-Line: SIP/2.0 407 Proxy Authentication Required
状态行的例子如上所示,第一个部分和请求行的解释一样被作为SIP的版本号,第二部分则是一个状态码,类似于浏览器访问出现的404;最后一个部分则是对第二部分状态码进行一个简单的解释。
在上面两种行消息之后是消息头部,消息头部的组成也是以文本字符进行编码的。同样的,消息头部的每一个字段都是以CRLF换行作为结尾符。而每一个字段的格式如下:
Via: SIP/2.0/UDP 192.169.1.147:39814;rport;branch=z9hG4bK80051
上面是定义SIP消息头部字段格式的一种示例,冒号前面的是字段的名称,这里表示消息传递出去经过的路径;而第二部分则是传递的使用到的协议——基于UDP的SIP(SIP也可以基于TCP进行实现),第三部分则是起始地址的IP地址和端口号。第四部分的rport告诉服务器,哪里来的消息从哪里发送回去——IP和端口号都不会改变。第五部分则是一个标志ID,标志ID的前七个字母类似于一个魔数用于区别其他的协议。

下面看一个完整的SIP用户和用户代理之间的鉴权认证过程。

Session Initiation Protocol (REGISTER)
    Request-Line: REGISTER sip:192.169.1.150 SIP/2.0
        Method: REGISTER
        Request-URI: sip:192.169.1.150
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP 192.169.1.147:39814;rport;branch=z9hG4bK80051
        Max-Forwards: 70
        To: <sip:102@192.169.1.150>
            SIP to address: sip:102@192.169.1.150
        From: <sip:102@192.169.1.150>;tag=z9hG4bK17086172
            SIP from address: sip:102@192.169.1.150
            SIP from tag: z9hG4bK17086172
        Call-ID: 281574552997@192.169.1.147
        CSeq: 1 REGISTER
            Sequence Number: 1
            Method: REGISTER
        Contact: <sip:102@192.169.1.147:39814;transport=udp>
            Contact URI: sip:102@192.169.1.147:39814;transport=udp
        Expires: 3600
        User-Agent: Sipdroid/3.6 beta
        Content-Length: 0


Session Initiation Protocol (407)
    Status-Line: SIP/2.0 407 Proxy Authentication Required
        Status-Code: 407
        [Resent Packet: False]
        [Request Frame: 1322]
        [Response Time (ms): 0]
    Message Header
        Via: SIP/2.0/UDP 192.169.1.147:39814;branch=z9hG4bK80051;received=192.169.1.147;rport=39814
        From: <sip:102@192.169.1.150>;tag=z9hG4bK17086172
            SIP from address: sip:102@192.169.1.150
            SIP from tag: z9hG4bK17086172
        To: <sip:102@192.169.1.150>;tag=13d0075e
            SIP to address: sip:102@192.169.1.150
            SIP to tag: 13d0075e
        CSeq: 1 REGISTER
            Sequence Number: 1
            Method: REGISTER
        Call-ID: 281574552997@192.169.1.147
        Allow: ACK, BYE, CANCEL, INFO, INVITE, MESSAGE, NOTIFY, OPTIONS, REFER, SUBSCRIBE
        User-Agent: miniSIPServer V16.0.7 (100 clients) build 20150324
        Proxy-Authenticate: Digest realm="myvoipapp.com",algorithm=MD5,nonce="328E3DAF06BC5374001D626160CB1C21",stale=FALSE
            Authentication Scheme: Digest
            Realm: "myvoipapp.com"
            Algorithm: MD5
            Nonce Value: "328E3DAF06BC5374001D626160CB1C21"
            Stale Flag: FALSE
        Content-Length: 0



Session Initiation Protocol (REGISTER)
    Request-Line: REGISTER sip:192.169.1.150 SIP/2.0
        Method: REGISTER
        Request-URI: sip:192.169.1.150
        [Resent Packet: False]
    Message Header
        Via: SIP/2.0/UDP 192.169.1.147:39814;rport;branch=z9hG4bK99109
        Max-Forwards: 70
        To: <sip:102@192.169.1.150>
            SIP to address: sip:102@192.169.1.150
        From: <sip:102@192.169.1.150>;tag=z9hG4bK17086172
            SIP from address: sip:102@192.169.1.150
            SIP from tag: z9hG4bK17086172
        Call-ID: 281574552997@192.169.1.147
        CSeq: 2 REGISTER
            Sequence Number: 2
            Method: REGISTER
        Contact: <sip:102@192.169.1.147:39814;transport=udp>
            Contact URI: sip:102@192.169.1.147:39814;transport=udp
        Expires: 3600
        User-Agent: Sipdroid/3.6 beta
        Proxy-Authorization: Digest username="102", realm="myvoipapp.com", nonce="328E3DAF06BC5374001D626160CB1C21", uri="sip:192.169.1.150", algorithm=MD5, response="bdf9504e7f2e0d6c685e57f9eef22f43"
            Authentication Scheme: Digest
            Username: "102"
            Realm: "myvoipapp.com"
            Nonce Value: "328E3DAF06BC5374001D626160CB1C21"
            Authentication URI: "sip:192.169.1.150"
            Algorithm: MD5
            Digest Authentication Response: "bdf9504e7f2e0d6c685e57f9eef22f43"
        Content-Length: 0



Session Initiation Protocol (200)
    Status-Line: SIP/2.0 200 OK
        Status-Code: 200
        [Resent Packet: False]
        [Request Frame: 1324]
        [Response Time (ms): 0]
    Message Header
        Via: SIP/2.0/UDP 192.169.1.147:39814;branch=z9hG4bK99109;received=192.169.1.147;rport=39814
        From: <sip:102@192.169.1.150>;tag=z9hG4bK17086172
            SIP from address: sip:102@192.169.1.150
            SIP from tag: z9hG4bK17086172
        To: <sip:102@192.169.1.150>;tag=55d70430
            SIP to address: sip:102@192.169.1.150
            SIP to tag: 55d70430
        CSeq: 2 REGISTER
            Sequence Number: 2
            Method: REGISTER
        Call-ID: 281574552997@192.169.1.147
        Allow: ACK, BYE, CANCEL, INFO, INVITE, MESSAGE, NOTIFY, OPTIONS, REFER, SUBSCRIBE
        User-Agent: miniSIPServer V16.0.7 (100 clients) build 20150324
        Contact: <sip:102@192.169.1.147:39814;transport=udp>
            Contact URI: sip:102@192.169.1.147:39814;transport=udp
        Expires: 180
        Content-Length: 0

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

SIP 注册过程 的相关文章

  • [教程] 中兴光猫f477V2改固话桥接,支持电脑、手机SIP APP拨打

    坐标北京 联通免费开通固话 xff0c 新给的光猫是比较新的型号中兴F477V2 光猫本身支持voip xff0c 买个最普通的座机接到phone口就可以用了 xff0c 固话号码是01082xxxxxxx打头的 xff0c 资费市内0 1
  • sip篇——服务器

    上篇提到sip定义了如何管理整个会话过程 xff0c 其实就是负责建立连接 监控和断开一个或多个参与者参与的会话 xff0c 利用IP地址和协议建立网络会话 xff0c 使得世界各地的人都可以通过互联网及时建立连接 1 sip中的逻辑组件
  • SIP 鉴权 & HTTP 认证

    sip 鉴权是基于摘要签名认证的 具体来说 每一个用户都有一个用户名和密码 用户名和密码在客户端和SIP 服务器的数据库中都有保存 在认证的过程中 客户端将自己的信息 用户名 密码 url 等信息 做一些复杂的MD5 或者SHA256 SH
  • 对SIP摘要认证方案的理解

    一 口令认证常见机制 基于口令认证的系统一般有以下几种口令验证方式 xff1a 1 客户端以明文形式将用户名密码通过网络发送到服务器 xff0c 服务器与已经保存在服务端的用户名密码进行比较 xff0c 一致则通过验证 xff1b HTTP
  • 最全FreeSwitch 1.10.9 Linux通用编译部署教程

    FreeSwitch 通用编译部署教程 文章目录 FreeSwitch 通用编译部署教程 FreeSwitch的版本历程 1 基础环境 2 安装方式 3 安装基础依赖 4 下载cmake并进行编译安装 5 需要手动安装所需的依赖 6 下载源
  • SIP Using SDP with Offer/Answer Model

    根据RFC3261 13 2 1所述 SIP使用的Offer Answer模型是建立在对话环境下的 RFC中还特意对Offer Answer交互有限制 1 初始Offer必须在INVITE消息或者第一个可靠的非失败型响应中 注 当时RFC3
  • pjsip的一个qt写的demo

    msvc版本编译的pjsip的demo 有源码 也有可直接运行的包 本程序解决了pjsip双方互相同时呼叫时会出现的问题 目前只是用来呼叫接听的demo 没有做流媒体传输 https download csdn net download q
  • SIP 抓包后获取媒体内容备忘(解析RTP)

    SIP呼叫并抓包 从网上找免费的sip 软中端 两个转中端建立呼叫且抓包 详情可以参考 https blog csdn net liuxingrui4p article details 96709136 spm 1001 2014 3001
  • 5G Capital一年,“首都标准”初现

    在北京生活许多年 如果问我什么时候京味浓度最高 答案可能是下了飞机 走上出租车的那一刻 北京司机连闲聊都是一副见过世面的样子 你研究人工智能 我觉得吧交通管理就该这样那样 高铁咱都造出来了 什么高科技我看中国人很快就能搞出来 冬奥会场馆建得
  • 某些设备不支持SipApi

    我正在使用本机 sip api 在 android 应用程序中实现 sip 呼叫 它工作正常 但在某些设备 如 CANVAS 3 中它无法工作 调试后我发现这行代码正在返回NULL manager SipManager newInstanc
  • Internet Explorer和Google Chrome Frame可以支持webRTC吗?

    我尝试并测试了各种方法来使 webRTC 在 Internet Explorer 上工作 使用谷歌浏览器插件 网络RTC4all Sipml5 不响应这两种方法 我还阅读了 可定制的 无处不在的网络实时通信 CU RTC Web 实时媒体和
  • 应用程序在 Android 模拟器上正常工作时无法访问设备上的互联网?

    我开发了一个基于 SIP 的应用程序 该应用程序在 Android 设备上调试时无法使用互联网连接 但在模拟器上调试时却可以正常工作 我已在manifest xml 中授予了有关互联网连接的所有权限 是否有任何其他权限可以使用互联网连接在设
  • 如何使用 Visual Studio 2015 构建 PJSUA2 (swig)

    我尝试为 Python 编译 PJSUA2 我可以设法使用 Visual Studio 2015 社区版编译源代码 我的问题是 现在如何安装Python模块 该指南建议使用 make 和 make install 我也尝试安装 minwg
  • 您可以将 SIP 电话与 Twilio Endpoint 连接吗?如果是这样,怎么办?

    我有一个基于 Linksys Cisco SPA942 电话的 SIP 电话系统 我想将现有的 PBX 排除在外 并使用 Twilio 为我们编写一个自定义 PBX 我熟悉 Twilio 并且过去编写过许多应用程序 但 Twilio 的 S
  • 是否可以将 VoiP 呼叫转接至 GSM [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以使用 Android 手机作为简单的 GSM 网关 电话将使用 最好 Android 内置 SIP 堆栈接收 VoiP 呼叫
  • 使用 sip.js 录制 SIP 通话中的麦克风和音频

    晚上好 堆栈溢出 我的一个项目确实需要帮助 我在该项目中使用 sip js 和 VoIP 来拨打电话号码 The Goal 我想允许用户录制音频和麦克风并将数据保存在服务器上 以 base64 编码或作为文件 因此 对话结束后我可以再次听到
  • W/AudioGroup:设备循环超时

    我正在尝试在我的 android 中进行 SIP 呼叫 第一次通话时声音效果很好 但是当此通话结束并开始第二次通话时 声音被中断 并且我收到以下警告 每秒多行 W AudioGroup 设备循环超时 我以以下方式开始通话 mSipManag
  • SIP:错误数据连接丢失

    我已经在 android 中使用本机 sip 创建了 sip 应用程序 在其中 我在从 sip 服务器取消注册帐户时遇到问题 每次我得到数据连接丢失我也在android文档中看到 但没有对此错误的简短解释 而且它在注册时面临各种错误 如in
  • 使用webrtc时可以关闭SRTP吗

    现在我测试webrtc与SIP客户端 sx20 的通信 我使用 webrtc sdp 发送邀请消息 但 sip 客户端答案没有指纹 并且 sip 客户端的答案不是 SRTP 只是 RTP 所以我需要关闭WEBRTC中的SRTP 我可以做吗
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa

随机推荐

  • Java多线程(含生产者消费者模式详解)

    多线程 导航 多线程1 线程 进程 多线程概述2 创建线程 xff08 重点 xff09 2 1 继承Thread类 xff08 Thread类也实现了Runnable接口 xff09 2 2 实现Runnable接口 xff08 无消息返
  • Java网络编程(两种聊天室:TCP和UDP)

    网络编程 您的导航 网络编程网络编程基础知识一 网络编程三要素IP地址端口协议 二 IP地址与InetAddress类IP地址分类InetAddress类三 端口 xff08 Port xff09 与 InetSocketAddressIn
  • 免费发布一个网站(保姆级图文教程)

    利用GitHub Pages发布一个网页 第一步 xff1a 注册一个github账户 访问官网 点这两个都可以注册 根据提示输入一些信息 xff0c 然后创建账户 xff1a 然后你会收到一封邮件 xff0c 输入验证码或是打开邮件的验证
  • 修改键盘映射、交换按键

    修改键盘映射 交换按键 导航 修改键盘映射 交换按键写在前面一 创建配置文件二 修改键盘映射三 重启四 键位表 写在前面 这两天买了个黑爵的小键盘 xff0c del和ins键是同一个键 xff0c 通过fn来区分 xff08 我的笔记本电
  • Spring Cloud Gateway(黑马springcloud笔记)

    Gateway 目录 Gateway一 为什么需要网关二 gateway入门三 断言工厂四 过滤器工厂五 全局过滤1 实现2 过滤器执行顺序 六 跨域问题 一 为什么需要网关 不能让外部能够直接访问微服务 xff0c 而是需要通过网关访问
  • Docker(黑马spring cloud笔记)

    Docker 目录 Docker一 介绍和安装1 安装2 启动3 镜像加速 二 Docker基本操作1 镜像操作2 容器操作3 数据卷操作 三 Dockerfile1 镜像结构2 Dockerfile 四 Docker Compose1 安
  • RabbitMQ(黑马spring cloud笔记)

    MQ 目录 MQ一 同步通讯和异步通讯1 同步通讯2 异步通讯 二 RabbitMQ1 部署2 架构3 常见消息模型3 1 基本消息队列 xff08 Basic Queue xff09 3 2 工作消息队列 xff08 Work Queue
  • Redis实战—黑马点评(一) 登录篇

    Redis实战 黑马点评 xff08 一 xff09 登录篇 来自黑马的redis课程的笔记 黑马程序员Redis入门到实战教程 xff0c 深度透析redis底层原理 43 redis分布式锁 43 企业解决方案 43 黑马点评实战项目
  • tigerVNC的简单使用教程(CentOS的远程桌面连接)

    tigerVNC的简单使用教程 xff08 CentOS的远程桌面连接 xff09 1 环境和软件准备 1 CentOS 6 3下 root 64 localhost rpm q tigervnc tigervnc server tiger
  • Redis实战—黑马点评(二)缓存篇

    Redis实战 黑马点评 xff08 二 xff09 缓存篇 目录 Redis实战 黑马点评 xff08 二 xff09 缓存篇1 什么是缓存1 1 缓存的作用和成本 2 添加 Redis 缓存3 缓存更新策略3 1 三种更新策略3 1 1
  • Reids实战—黑马点评(三)秒杀篇

    Reids实战 黑马点评 xff08 三 xff09 秒杀篇 来自黑马的redis课程的笔记 黑马程序员Redis入门到实战教程 xff0c 深度透析redis底层原理 43 redis分布式锁 43 企业解决方案 43 黑马点评实战项目
  • RT-Thread Stm32f103开启UART2(中断接收及轮询发送) 使用RT-Thread Studio

    RT Thread Stm32f103开启UART2 使用RT Thread Studio 1 使用RT Thread Studio新建RT Thread项目 2 修改dricer gt doard h 增加UART2的宏定义设置gpio接
  • 串口收发数据

    1 1 字符串接收函数 发送方结束标志是你接收方判断的依据 xff0c 也可以说是属于协议的一部分 我们这里使用串口助手数据发送自动添加了 r n xff0c 所以我们将它们看成结束标志 1 2 数据传输方式 计算机与外部进行沟通只有并行和
  • VsCode Studio的C/C++代码自动补全

    关于VsCode Studio的C C 43 43 代码自动补全 第一步 xff1a 需要下载VsCode中的C C 43 43 插件 如图 xff1a 插件下载后 xff0c 最好是重新启动一下VS 第二步 xff1a 找到设置 在输入框
  • Nginx lua设置Cookie,及学习Cookie

    网上看到这篇文章 xff0c 很喜欢这种分析思路 xff0c 这里学习记录一下 最近小了解了下cookie 以前觉得cookie无非就是一连串键值对 在深入了解之后发现 远没自己想的那么简单 自己果真太肤浅了 好吧 这里主要探讨一下以下几个
  • nginx中不同client设置User-Agent与user_agent的坑

    最近发现nginx内部用lua获取user agent xff0c 得到的是一个table值 xff0c 很奇怪 xff0c 自己测试记录一下 xff1a 1 nginx配置 location zcy hello set by lua re
  • Nginx - request_time和upstream_response_time详解

    网上查了查资料 xff0c 这里记录一下 前言 最近分析服务器性能 xff0c 考虑到nginx在前面做反向代理 xff0c 这里查一下nginx日志来反应服务器处理时间的问题 注 xff1a 本文提到的所有变量 xff0c 如果需要区分
  • Spring Boot 2.3.0 Redis拓扑动态感应,使用Lettuce拓扑刷新

    背景 关于 Redis 在生产中我们一般情况下都会选择 redis cluster 高可用架构部署 xff0c 既能保证数据分片并且实现节点的故障自动转移 基本部署拓扑如下 xff1a 创建测试集群 这里通过我封装的 pig4cloud r
  • Country Codes and Language Codes

    ISO 3166 Country Codes and ISO 639 Language Codes 1 ISO 3166 Country Codes Table 20 1 ISO 3166 Country Codes Country ISO
  • SIP 注册过程

    SIP协议包含两种类型的消息 xff0c 一种是请求行用于发出邀请 xff0c 而另一种则是状态行 xff0c 用于标明当前通信的状态 请求行和状态行军包含三部分 xff0c 其中每一部分以空格隔开 xff0c 不论是请求行还是状态行均以C