SIP代理服务器(1)

SIP代理服务器分两种:
1)无状态代理服务器:简单的转发功能,通过请求信息来选择转发的目的和路由。消息一旦转发立即丢弃。
2)有状态代理服务器:记录到来的请求和发送的请求的信息(特别是事务状态),并以此来控制以后的消息处理。还具有消息的分支(fork)功能。

1 有状态代理服务器
有状态代理服务器是一个纯粹的事务处理引擎。
如图1,有状态代理服务器包含一个服务器端事务及与其相关的一个或多个客户端事务,联系两者的是更高一层的代理处理模块:代理内核。
当一个请求到来之时,先建立一个服务器端事务来处理该请求,然后通过内核来决定请求的路由并选择一个或多个下一跳位置,所以再构建多个客户端事务把请求发送出去。
           +--------------------+
                             | +---+
                             | | C |
                             | | T |
                             | +---+
     +---+|      Proxy       | +---+   CT = ClientTransaction
     | S | |  "Higher"Layer    | | C|
     | T ||                   | | T |   ST = ServerTransaction
     +---+|                   | +---+
                             | +---+
                             | | C |
                             | | T |
                             | +---+
           +--------------------+

              Figure 1: Stateful Proxy Model
当一个请求到来之时,proxy处理请求必须:
1、 验证请求
2、 预处理路由信息
3、 决定请求的目的(targets)
4、 转发请求到每一个目的地
5、 处理所有的应答

2 验证请求
在proxy转发请求之前,它必须检查消息的合法性。一个合法的消息必须经过如下的检查:
1)、 合法的语法
2)、 URI scheme
3)、 最大转发次数
4)、 (可选)循环检测(loop detection)
5)、 proxy-require
6)、 proxy-authorization
(1)合法的语法
请求中的任何与检查相关的部分或者与请求转发节相关的部分都必须语法严格无误。在检查中,其他部分的严格与否,在检查中都被忽略,并且在转发消息过程中保持不变。
(3)最大转发次数
如果请求包含一个Max-Forwards头域,并且这个头域为0,那么这个proxy不能转发这个请求。但是,如果请求是OPTIONS请求,那么proxy可以作为最终响应者来响应这个请求。
(5)proxy-require 检查
本协议的以后的扩展可能会要求额外的proxy特性。所以终端会在请求中包含一个Proxy-Require头域来表明会使用到那些特性,这样proxy就可以根据Proxy-Require判定自己是否能够支持这些特性。
如果请求包含一个Proxy-Require头域(20.29)并且有一个或者多个本proxy不能理解的option-tags。那么这个proxy必须返回一个420(BadExtension)错误,并且这个错误应答必须包括一个Unsupported(20.40)头域列明了那些option-tags这个proxy不能支持。

3 预处理路由信息
proxy必须检查请求中的Request-URI部分。如果Request-URI包含了一个本proxy早先放在Record-Route头域中的值,proxy必须用Route头域中的最后一个值来替换Request-URI,并且从Route头域中删去这个值。proxy必须接着按照个修改后的请求进行处理。
如果Route头域的第一个值就是这个proxy,那么proxy必须从请求中把它移去。

3确定请求的目的
1)如果Request-URI的区域并非本proxy负责的区域,那么Request-URI必须放在目标集合中,并且作为唯一一个目标URI。
2)如果proxy是负责Request-URI所指明的区域的,proxy可以用任何机制来决定往哪里发送这个请求。proxy可以在请求转发的时候增加目的地。他可以在处理过程中,用任何可以获得的信息来决定新的目的地。例如,proxy可以选择把一个转发应答(3xx)所包含的联系地址合并到目的地集合中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arcgis坡度结果有误或z因子前有感叹号

在地理坐标系下我们做坡度的时候arcgis的z因子会出现感叹号 这样作出的效果如下 通常这样的效果是错误的 解决方法: 原理:应为在地理坐标系下xy的单位是度或者十进制的,就导致z与xy的测量单位不同,所有我们就需将DEM数据投影到投…

怎么修改提交git是的用户名_Git 修改用户名以及提交邮箱

问题背景:在已毕业师兄的电脑上提交自己的 Github 代码,(尽管有重新设置了 自己的SSH),但是 Github网站提交结果却显示师兄提交的:验证当前本地属性:怎么知道本地有设置?git config --local --list 看一眼。…

企业效益真的向好么?

根据最新消息,1至7月,全国公共财政收入66739.92亿元,同比增长30.5%。全国公共财政支出51385.06亿元,同比增长29.7%。财政部部长谢旭人昨日表示,财政收入增长较快,是经济运行总体良好及企业效益提高的综合反…

基于集成提升和 Bagging 的地下水潜力预测机器学习模型文件阅读

文章连接:Ensemble Boosting and Bagging Based Machine Learning Models for Groundwater Potential Prediction | SpringerLinkhttps://link.springer.com/article/10.1007/s11269-020-02704-3 一、研究区: Dezekord-Kamfiruz 流域是伊朗法尔斯省的一部分 二、方法:

SIP代理服务器(2)

4请求转发 对于上一步确定的每一个目的地,proxy转发请求都遵循下列步骤: 1)、 拷贝一个接收到的请求 2)、 更新Request-URI 3)、 更新Max-Forwards头域 4)、 可选增加一个Record-Route头域 5)、…

sklearn svm 调参_SVM(Support Vector Machine)

SVM是一种二元分类模型(当然它也可以处理回归问题),它通过训练样本寻找分隔两类样本的最优决策边界(超平面),使得两类样本距离决策边界的距离最远(例如H3)。其中距离决策边界最近的样本称为支持向量(即深色的苹果和香蕉),支持向量所在的与决策…

SAGA-GIS软件下载

官网: SAGA - System for Automated Geoscientific Analyseshttps://saga-gis.sourceforge.io/en/index.html点击下载按钮 点击后等几秒即可下载 下载时间过长 下载完解压即可使用

SIP路由

本文主要讨论的是跟SIP消息发送的路由选择和相关头域。SIP消息传输路径依靠的是路由集和目标地址(remotetargetURI)。主要参考的是RFC中的第八章(一般用户代理行为)、第十二章(对话)、第十三四章&#xff0…

MVC 入门之V

1&#xff0c;登录页面 <% page language"java" import"java.util.*" pageEncoding"gbk" errorPage"error.jsp"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.…

使用优化的基于模糊规则的特征选择技术和基于树的集成方法进行山洪敏感性建模--文献阅读

文章连接 Flash flood susceptibility modeling using an optimized fuzzy rule based feature selection technique and tree based ensemble methods - ScienceDirecthttps://www.sciencedirect.com/science/article/pii/S0048969719309349?via%3Dihub#bb0310 解决问题 在…

python 曲面_Python之OpenGL笔记(35):曲面物体的构建

一、目的1、曲面物体的构建画球体&#xff1b;2、棋盘纹理着色器应用&#xff1b;二、程序运行结果棋盘纹理着色器应用三、曲面物体的构建基本原理吴亚峰《OpenGL ES 3.x游戏开发》(上卷)内容OpenGL 中任何形状的 3D 物体都是用三角形拼凑而成的&#xff0c;因此&#xff0c;构…

了解PRACK

概述SIP定义了两种应答&#xff1a;临时&#xff08;provisional)和最终&#xff08;final&#xff09;。最终应答传送的是请求处理的结果&#xff0c;是可靠性的&#xff08;reliably&#xff09;。而临时应答传送的是处理过程的信息&#xff0c;由RFC3261是非可靠的。但是由现…

Silverlight实例教程 - Out of Browser开篇

众所周知&#xff0c;学习一门IT技术&#xff0c;最关键的是实践&#xff0c;无论是软件开发还是网络调试&#xff0c;只要在真实环境下勤于动手和思考&#xff0c;很快就能掌握一门技术&#xff0c;Silverlight也不例外。为了帮助更多朋友快速学习掌握Silverlight应用开发&…

河流水质指标预测与不确定性分析:机器学习模型的比较研究--文献阅读

电导率 (EC)、氢气功率 (pH)、溶解氧 (DO)、总溶解固体 (TDS)、硫酸盐 (SO4)、镁 (Mg)、氯 (Cl)、总大肠菌群 (TC) 和生化需氧量 (BOD) DO、BOD、化学需氧量 (COD)、pH、硝酸盐 (NO3) 和悬浮固体 (SS)

python科学计算三剑客_1-python数据分析-数据分析介绍、数据分析三剑客之NumPy

数据分析三剑客numpypandas(重点)matplotlibnumpy模块NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。侧重在于数值计算&#xff0c;也是大部分Python科学计算库的基础&#xff0c;多用于在大型、多维数组上执行的数值运算。重点numpy数组的创建numpy索引和切片…

SIP可靠性(SIP Reliability)

根据RFC3261&#xff0c;SIPUA必须支持TCP及UDP底层传输协议。这两种方式除了使用方式不一样之外&#xff0c;对SIP协议自身的影响主要体现在可靠性处理上。 SIP可靠性机制主要是为了支持不可靠传输层协议&#xff0c;如UDP。当SIP使用的传输层协议为TCP或TLS时&#xff0c;这种…

可以无限增加iPhone 的图标吗?

可以无限增加iPhone 的图标吗?iPhone屏幕上每个图标都对应一个应用程序&#xff0c;目前苹果商店中应用程序数量已经超过40万个&#xff0c;我们又能在手机里放多少呢&#xff1f;有人可能会说那要取决于iPhone的存储容量有多大&#xff0c;确实如此&#xff0c;那么如果假设空…

在日本山区流域使用支持向量机和 bagging、boosting 和 stacking 集成机器学习框架改进滑坡评估--文献阅读

为了在基于过程的模型中准确表示边坡稳定性&#xff0c;有必要包含大量涉及滑坡几何形状和内部结构的局部特征的特征。这包括但不限于斜坡的分层和不连续性、运动裂缝、裂片、陡坡、地垒/地堑结构、降雨、空气和土壤温度、土壤水分含量、许多点的地下水位、地表和深度但是&…

android 蒙版图片带拖动_推荐一个好用小巧的Android引导蒙版(浮层)库

更新&#xff1a;目前该库已更新v2.0版本&#xff0c;修改了调用api&#xff0c;详细使用可以看&#xff1a;可能是最好用的Android引导层库前言每当一个项目开发一个新功能&#xff0c;总会想办法及时让用户得知有这样一个新功能&#xff0c;这时通常会采用引导页或者蒙版(浮层…

用户代理行为

概述 用户代理分两种&#xff1a;UAC和UAS。区分的依据在于请求方和响应方。 当一个请求发生之时&#xff0c;即使用某个方法&#xff0c;根据请求方和响应方产生了UAC和UAS&#xff0c;从而可以建立起事务&#xff08;Transaction&#xff09;来。所以UAC和UAS是对某个事务而言…