sip篇——服务器

2023-05-16

上篇提到sip定义了如何管理整个会话过程,其实就是负责建立连接、监控和断开一个或多个参与者参与的会话,利用IP地址和协议建立网络会话,使得世界各地的人都可以通过互联网及时建立连接。

1.sip中的逻辑组件

基于sip协议建立的会话过程一般会包含以下这些元素。

1.1代理服务器

代理服务器就是我们所用的计算机设备在互联网中建立连接的中转站,也就是客户端与服务器端之间的桥梁。比如平时我们通过浏览器(客户端)想要访问某个网站或者想要查找什么内容,我们的计算机发送的网络请求会先到达代理服务器,然后转发至服务器端,最后返回我们需要的信息。互联网中的每台计算机都会有一个相对独立的IP地址 ,就像点外卖时填的地址,外卖员才能根据地址把我点的外卖送到我手里。代理服务器也有自己的IP地址和端口(可在客户端计算机上对其进行配置),所以当我们发出一个请求时,计算机会根据该IP地址先把请求发给代理服务器。

作用: 一是可以提高安全性和保证隐私,代理可以修改IP地址再进行发送,可以对我们要发送的数据进行加密,可以不让服务器端知道我们真实IP地址和其他一些信息 ,还可以作为网络防火墙,起到过滤和屏蔽恶意资源的作用;二是节约IP地址资源,降低网络维护成本;三是提高连接速率,若其缓存区有客户端所请求的信息,代理服务器会直接将其发送给用户,提高速率。

代理服务器可分为无状态代理和状态代理,状态代理可以存储接收到的请求和响应信息,需要时可以直接转发,提高会话速率,状态代理还具有重发请求的作用。

1.2DNS服务器

DNS(Domain Name Server)即域名服务器,负责将域名(主机名)翻译成IP地址,所以DNS主要包含有所属网段里的计算机的域名与IP地址相对应的数据库。域名就相当于我们每个人都有一个名字,是一个用户级的地址,而IP则是通信时需要用到的地址,它们都是作为每台计算机设备的唯一标识,所以需要进行通信时,代理服务器接收到的请求中,包含的是服务器端或被叫方的域名而不是IP地址,必须借助DNS将域名翻译成IP地址,然后才能根据该IP地址找到服务器端或被叫方。如果服务器端(被叫方)就在客户端(主叫方)所属域里(此处域指的是网段,也就是在同一个网段里),服务器端的域名通过DNS解析得出IP地址,然后代理服务器根据该IP地址直接转发请求,但若不在同一个域里,DNS会自动完成对下一个DNS的查询,然后在响应中指名下一个DNS的IP地址,代理服务器根据该IP地址将请求转发给服务器所属域的代理服务器,然后进行域名解析,根据解析出的IP地址将请求转发给服务器端。

1.3重定向服务器(Redirect Server)

重定向服务器不负责转发请求,只负责定位服务器端当前的地址,代理服务器接收到请求,将DNS域名解析的结果发送给重定向服务器,将定位到的服务器端当前位置返回给客户端代理服务器。对于分散式DNS服务器,当用户因为配置了错误的DNS服务器地址、配置的服务器出了问题或是用户离开了本地,通过重定向或是负载均衡的技术,会使请求发送至新指定的DNS服务器。

1.4位置服务器(Location)

位置服务器负责向代理服务器提供服务器端的信息,其里面存储的是注册服务器接收到的用户的地址信息。

1.5注册服务器

负责接收用户的注册请求,就像是我们出生时为我们注册身份证号的人员,让我们在这个世界上有了可以验证的身份,注册好的身份证号会被放入身份证号数据库中,位置服务器就相当于该数据库,注册的用户信息会被存储在位置服务器里,供后续查询使用。位置服务器和注册一般是同一台服务器。

1.6用户代理(User Agent)

用户代理UA就是上文提到的客户端、服务器端或主叫方、被叫方,也就是sip协议的会话终端。UA分为用户代理客户端UAC(User Agent Client)和用户代理服务器端UAS(User Agent Server)。

2.总结

sip会话过程一般包含用户代理、代理服务器、重定向服务器和注册服务器这四个元素,其中代理服务器、重定向服务器和注册服务器可以集成在同一个硬件上,可统称为sip服务器,可包含DNS或负载均衡等技术。其中的运行机制如下:

ca613ffa3e9c422a8c53dfeb535f44c0.png

(1)主叫方向被叫方发送的INVITE请求被送到本地的代理服务器1,INVITE请求里提供的地址是被叫方的域名

(2)代理服务器1通过DNS域名解析得到被叫方所属域的重定向服务器的IP地址,便将请求转发至该重定向服务器。代理服务器1进行DNS解析后,会先在本地的位置服务数据库中查询,若没有才将请求转发给重定向服务器,重定向服务器会 查询到服务器端当前就在其本地或当前不在本地,若其当前就在本地,重定向服务器会将该本地的代理服务器2的IP地址返回给代理服务器1,但若被叫方当前不在其本地,重定向服务器也会查询到其当前所在地,并将该地的代理服务器3的IP地址返回给代理服务器1

(3)代理服务器1都会根据返回的IP地址将请求转发给对应的代理服务器,该代理服务器就会查询当地的位置服务数据库,若查询到被叫方还在当前域的下一级域中,则继续转发请求至下一级域中的代理服务器,直到代理服务器在位置服务数据库中查询到了被叫方的IP地址。域名是层次化的管理方式,一个域名对应一个IP地址,层层往下就能找到所需要的IP地址,也就找到了被叫方。

(4)被叫方收到请求后,会沿着代理服务器的路线给主叫方返回响应,最后对话建立。

 

注: 为本人学习日志,如有错误,欢迎指正

2022.12.09

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

sip篇——服务器 的相关文章

  • SIP鉴权—摘要式认证

    SIP 认证过程源自 HTTP 摘要式认证 HTTP Digest Authentication xff0c 它是一种基于质询的安全机制 当服务器收到一个请求 xff0c 将质询请求的发起者 xff0c 要求提供相应的身份信息 服务器发出的
  • SIP 注册过程

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

    sip的register重传与超时 当发送第一个register时候 xff0c 开启定时器 xff0c 超过500ms没有响应 xff0c 重新发送 在发送的register 1s内没有响应 xff0c 在重发 xff0c 一致到32s的
  • sip注册示例

    这里给出一个sip注册的示例 xff0c 其中平台注册的密码为12345678 xff0c 供相关开发参考 REGISTER sip 34020000002000000001 64 192 168 88 119 SIP 2 0 Via SI
  • pjsip库使用时,顺序也有一定要求,

    LIBS PWD third lib pjsip lib libpjsua aarch64 unknown linux gnu a LIBS PWD third lib pjsip lib libpjsip ua aarch64 unkno
  • 最全FreeSwitch 1.10.9 Linux通用编译部署教程

    FreeSwitch 通用编译部署教程 文章目录 FreeSwitch 通用编译部署教程 FreeSwitch的版本历程 1 基础环境 2 安装方式 3 安装基础依赖 4 下载cmake并进行编译安装 5 需要手动安装所需的依赖 6 下载源
  • 学习SIP非常好的视频

    https www youtube com watch v gMcUpktyhOE
  • 5G Capital一年,“首都标准”初现

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

    我在 Android 2 3 4 中使用 SIP 堆栈 一切运行良好 但是 我需要系统使用 SSL 并创建了以下代码 SipProfile Builder builder new SipProfile Builder user domain
  • C# SIP 堆栈/库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个好的 SIP 库 要么用 C 编写 要么提供 C 包装器 不一定需要免费 有人用过什么好东西吗 为了澄清起见 我说的是 VoIP 协议
  • 在 Raspberry PI 上安装“ring.cx SIP 客户端”

    情况 我希望在我的 Raspberry Pi 上进行基于终端 无头 的 SIP 呼叫 并且我已经使用 linphone 尝试过此操作 RaspberryPI 使用 linphonec 或替代 SIP 软电话进行 SIP 出站呼叫 由于我目前
  • 如何编码 WAV 以使用 SIPp 播放

    通过观察另一个SIPp相关问题我了解到现在可以使用rtp stream action 我尝试了几个不同的 WAV 文件 但没有成功 我听到的只是一些噪音 而不是预期的声音 在上述问题的一条评论中 有一条简单的指令将 WAV 文件转换为兼容格
  • 如何使用 Visual Studio 2015 构建 PJSUA2 (swig)

    我尝试为 Python 编译 PJSUA2 我可以设法使用 Visual Studio 2015 社区版编译源代码 我的问题是 现在如何安装Python模块 该指南建议使用 make 和 make install 我也尝试安装 minwg
  • 思科可视消息等待指示器(VMWI 或 MVI)

    如何以编程方式点亮 Cisco IP 电话可视消息等待指示灯 VMWI 或 MWI 对于 sipwiz 的回答 IP地址10 1 1 2 gt 是我将在其中发送 SIP 通知消息的本地 IP IP地址10 1 1 9 gt 是 IP 地址思
  • 为什么 Android 2.3 中包含的本机 SIP 堆栈无法在 3g 上工作?

    我想知道为什么 Android 框架 自 2 3 起 中包含的本机 SIP 堆栈不能在 3g 上工作 这是否与谷歌对其合作伙伴可能有的任何法律或限制有关 此外 有人知道是否有计划取消该限制吗 Thx In 姜饼 http androidxr
  • W/AudioGroup:设备循环超时

    我正在尝试在我的 android 中进行 SIP 呼叫 第一次通话时声音效果很好 但是当此通话结束并开始第二次通话时 声音被中断 并且我收到以下警告 每秒多行 W AudioGroup 设备循环超时 我以以下方式开始通话 mSipManag
  • Android 以编程方式创建 SIP 帐户

    在我的应用程序中 我希望有一个 Activity 使用户能够在字段中添加他的 SIP 帐户参数 我不希望他们去 设置 gt 通话 gt 互联网通话设置 gt 添加帐户 gt 添加 我使用以下代码创建了具有活动的帐户 SipManager m
  • 如何仅使用音频编解码器制作 iOS VOIP/SIP 应用程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以帮助我消除我的疑虑 我正在尝试实现 SIP 应用程序 我已经设置了 sip 服务器 并且我有我的 sip 帐户的用户名和密码
  • 星号传入消息给出:415 不支持的媒体类型

    我和我的项目组正在尝试设置带有星号的 PBX 我们已经设法让它仅适用于 SIP 呼叫 而且效果非常完美 但是一旦我们想尝试向其中添加 XML 消息 Asterisk 就无法识别它并给出 415 不支持的媒体类型 看起来这个电话甚至没有打通
  • Android 2.3 使用外部 JAIN-SIP(J-SIP) 堆栈 |类路径

    我正在尝试在 Android 2 3 3 上使用 JAIN SIP J SIP 库 http jsip java net 因此 我使用了 SIP Stack 附带的一个非常基本的 SIP 示例应用程序 此示例在 Android 设备 问题是

随机推荐

  • 输出 0~N 内的素数 ( C++ )

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • 快读模板 ( C++ )

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • Java正整数分解质因数

    leetcode 2 Java正整数分解质因数 1 题目 xff1a 将一个正整数分解质因数 例如 xff1a 输入 90 打印出 90 61 233 5 2 题目解析 xff1a 先将数m从2开始整除 xff0c 如果能被2整除 xff0
  • you-get使用教程

    you get爬虫 xff0c 依赖于Python3 10 xff0c 可以爬取网页无法下载的视频文件 xff0c 具体步骤如下 xff1a 1 xff0c 下载Python3 10无脑下一步安装 2 xff0c 新建一个空白文件夹 xff
  • Windows如何自定义右键新建菜单栏

    目录 右键新建菜单的实现原理在右键新建菜单中新增项方法一可能出现的问题 方法二编辑右键新建菜单的图标 修改右键新建菜单栏的顺序 右键新建菜单的实现原理 参考文章 修改 win10 右键 新建 菜单 xff08 原理 两种方法及注意事项 xf
  • Centos 8升级至Centos 8 Stream

    文章目录 一 背景 xff1a 二 分析 xff1a 三 升级步骤 xff1a 四 成功安装 openstack 软件仓库参考链接 xff1a 一 背景 xff1a 因使用华为云ecs部署 openstack yoga 版本过程中 xff0
  • Ceph OSD为DOWN时修复

    本文所使用Ceph版本为luminous 不同版本删除OSD基本操作相同 xff09 xff0c 当出现Ceph OSD为down的情况时 xff0c 可以通过以下方法解决 xff08 假设ceph admin节点OSD 1 Down xf
  • 【Anaconda创建虚拟环境】报错及解决办法

    Q1 CondaHTTPError HTTP 000 CONNECTION FAILED for url 错误原因 xff1a 下载网速过慢 xff0c 时间过长 xff0c 自动断开 解决方法 xff1a 在下载命令前加入 conda c
  • 二叉树的绘制

    目录 一 知乎方法 二 动手实践 DOT 语言 无向图 有向图 绘制二叉树 设置属性 如何绘制优美的二叉树 一 知乎方法 知乎上的大佬提供了一系列画图的方法 xff0c 感兴趣的朋友可以自行去看看 用 Graphviz 绘制一棵漂亮的二叉树
  • 修改CPU的调频策略

    cat proc cpuinfo 查看CPU信息 CPU的调频策略修改 xff0c scaling governor xff1a governor 调频 策略 xff0c Linux 内核一共有 5 中调频策略 Performance xf
  • 一文看懂map、odom、base_link、laser之间的tf关系

    这三者之间的关系到底是怎样的 xff1f 尤其是map坐标系到odom坐标系之间的变换 xff0c 到底是有什么意义呢 xff1f 我当时被这个问题也是困扰了很久 现在经过实践终于有机会记录一下拙见 xff0c 如有错误 xff0c 还请指
  • VTK库cmake编译时找不到Qt5UiPlugin_DIR和QT5Sql_DIR

    ubuntu使用cmake gui编译VTK时 xff0c Qt5UiPlugin DIR和QT5Sql DIR是红的 xff0c 怎么办 xff1f 答 xff1a 安装libqt5x11extras5 dev和qt5 default两个
  • 超前进位加法器原理与递推式超详细推导+verilog实现与测试

    当记忆的线缠绕过往支离破碎 xff0c 是慌乱占据了心扉 寂寞沙洲冷 超前进位加法器原理 1 一位二进制的加法 首先考虑两个1位二进制相加 a 43 b xff0c 不考虑上一级的进位 xff0c 0和1简单相加 xff0c 即使是三岁小孩
  • 一生一芯 算术逻辑部件 ALU verilog浅析与实现

    仙歌音 xff0c 玉笛灵 xff0c 酒盏玉露清 剑舞轻 xff0c 潇洒过白袍影 谪仙 一生一芯项目 xff0c 预学习部分 xff0c 数电实验学习记录 xff0c 笔者电子寄术挂科 xff0c 基础知识甚是不熟 xff0c 故文中可
  • Verilated model didn‘t converge报错原因及解决

    还留着你的回忆 xff0c 分不清南北东西 我真的不想从此迷失在这幻境 迷失幻境 想必你急于知道原因 xff0c 不想听笔者解决问题的过程 xff0c 所以我先放结论 xff0c 再说我发现的过程 1 错误原因 一句话概括 xff0c 根本
  • CMake初级简明教程

    我藏在人群中 然后失去晴空 像我的名字 从你的记忆清空 你头顶的风 本文仅仅介绍了一些常用函数的参数的简单写法以及个人理解 xff0c 如果你想了解更多 xff0c 可以去查找专门介绍该函数的博客 本文只能保证你读完之后对各个函数有基本的认
  • ubuntu18安装ros1

    是非成败转头空 青山依旧在 xff0c 几度夕阳红 临江仙 滚滚长江东逝水 杨慎 0 前言 我都不明白安装一个ros有这么难么 xff0c 某学弟经常说卡住了安不了啥啥的 真是服了 xff0c 我再安一遍看看还有谁特么再说安不上 1 添加源
  • centos urllib3安装出错

    当卸载urllib3之后 xff0c 尝试重新安装 xff0c 发现出现问题 而后 xff0c 经过一番学习 xff0c 找到了解决办法 pip install upgrade urllib3 问题解决 xff01
  • Numpy简单学习(Spyder)

    1 Numpy创建 A 61 np array 1 2 3 4 5 6 两行三列的列表 类型为n维列表 Z 61 np zeros 3 2 3行2列的全0矩阵 Z1 61 np zeros 3 5 3行5列全0矩阵 全1矩阵 np ones
  • sip篇——服务器

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