RFC 3261与Resiprocate对照参考

SIP协议栈技术解析与开源实现对比 SIP(Session Initiation Protocol)是IP多媒体会话控制的核心协议,采用类似HTTP的文本格式设计,支持VoIP、视频会议等实时通信场景。其轻量级特性与开源协议栈(如PJSIP、JAIN-SIP)的结合,大幅降低了开发门槛,尤其在智能安防和物联网领域应用广泛。协议栈关键技术包括事务状态机、NAT穿透(STUN/TURN/ICE)和SDP媒体协商,这些技术共同保障了高并发和低延迟的通信质量。GB28181标准进一步规范了SIP在视频监控领域的应用,要求设备厂商严格遵循信令和媒体流传 阅读详情

 

  • To do this, SIP network

elementsconsult an abstract service known as a location service,

whichprovides address bindings for a particular domain

---10.1 Overview

ReSIProcate的LocationServer类,职责明确

 

  • In order to handle the case where an INVITE request never

generatesa final response, the TU uses a timer which is called

timerC. Timer C MUST be set for each client transaction when

anINVITE request is proxied. The timer MUST be larger than 3

minutes.Section 16.7 bullet 2 discusses how this timer is

updatedwith provisional responses, and Section 16.8 discusses

processingwhen it fires.

---11. Set timer C

注:Proxy的int mTimerC;

 

  • A dialog is identified at each UA with a dialog ID, which consists of

aCall-ID value, a local tag and a remote tag.

---12 Dialogs

参考resip::DialogId

 

  • A dialog contains certain pieces of state needed for further message

transmissionswithin the dialog. This state consists of the dialog

ID,a local sequence number (used to order requests from the UA to

itspeer), a remote sequence number (used to order requests from its

peerto the UA), a local URI, a remote URI, remote target, a boolean

flagcalled "secure", and a route set, which is an ordered list of

URIs.The route set is the list of servers that need to be traversed

tosend a request to the peer.

---12 Dialogs

联系Dum的Dialog类

 

 

a boolean flag called "secure"

bool mSecure

a route set, which is an ordered list of URIs

The route set is the list of servers that need to be traversed

to send a request to the peer.

NameAddrs mRouteSet;

a remote sequence number (used to order requests from its peer to the UA)

unsigned int mRemoteCSeq;

a local sequence number (used to order requests from the UA to its peer)

unsigned int mLocalCSeq;

Dialog ID

DialogId mId; 

 

 a local URI

NameAddr mLocalNameAddr;

a remote URI

NameAddr mRemoteNameAddr;

Remote target

NameAddr mRemoteTarget;

 

 

  • The client transaction provides its functionality through the

maintenanceof a state machine.

17.1 Client Transaction

注:联想到mStateMacFifo及mStateMachineFifo,附state和machine的值

 typedef enum

      {

         ClientNonInvite,

         ClientInvite,

         ServerNonInvite,

         ServerInvite,

         ClientStale,

         ServerStale,

         Stateless  // may not be needed

      } Machine;

     

      typedef enum

      {

         Calling,

         Trying,

         Proceeding,

         Completed,

         Confirmed,

         Terminated,

         Bogus

      } State;

 

  • For any port and interface

   that a server listens on for UDP, it MUSTlisten on that same port

   and interface for TCP.  This is because a message may need to be sent

   using TCP, rather than UDP, if it is toolarge.  As a result, the

   converse is not true.  A server need not listen for UDP on a

   particular address and port just because itis listening on that same

   address and port for TCP.  There may, of course, be other reasons why

   a server needs to listen for UDP on aparticular address and port.

---18.2.1 Receiving Requests

注:前面也多次提到,在某些限制条件下,即便使用UDP传输,SIP Message也不得不通过TCP传输,因此如果配置UDP传输的话,需要同时监视UDP和TCP。不过Resiprocate的proxy似乎没有注意到这一点。

 

 

 

 

 

 

 

 

Resiprocate 如何使用STUN 应网友要求,拖了个把月,谈谈Resiprocate 如何使用STUN。 阅读详情

相关推荐

ReSIProcate之各工程功能简单介绍

1、basicCall,basicMessage,basicRegister,resip_test测试用的 2、db_static Sleepy Cat开发的Berkeley DB 3、dum为Dialog UsageManager的缩写,包含UAC

soliddream66的专栏 3728

Resiprocate_源码分析

协议栈的层次SIP为应用层(Application-Layer)的协议,所以不需要改变操作系统便可以支持。SIP 已经获得3GPP (Third GenerationPartnershipProject)、3GPP2 (Third Generation PartnershipProjectNumber 2)等机构认证,成为未来第三代行动通讯 (3G) 的标准。下面是SIP的分...

weixin_34352005的博客 1080

ESP32-S3开发环境避坑指南:VS Code+ESP-IDF离线安装全流程(附国内镜像加速)

本文提供了一份详细的ESP32-S3开发环境离线安装指南,重点解决网络依赖问题。通过整合国内镜像加速,手把手教你完成VS Code、ESP-IDF框架、工具链及Python依赖的本地化部署,实现稳定、可重复的开发环境搭建,大幅提升IoT开发效率。

peach的博客 961

resiprocate 学习笔记

resiprocate学习

liuxingrui4p的专栏 422

【tips】在PyCharm中安装opencv图文版详细教程

pip如下图所示,左边的蓝色图标就是终端。点开终端后,键入命令,按下回车后就开始下载了。如果你更喜欢图形化操作,可以在 PyCharm 中直接安装:。点击右上角的 +按钮(添加包)。搜索或,点击。

zhousanguhe的博客 6741

硬件笔记——HDMI接口

HDMI可以同时传输视频信号、音频信号和控制信号。其中高速信号有四组:从Data TX到Data RX有3组差分数据信号(TMDS_DATA0~2)和一组差分时钟信号(TMDS_CLOCK)。以及若干低速线。脚编号信号名称信号类型功能说明1热插拔检测连接状态检测。接收端通过此引脚向源端发送高电平信号,通知其已连接并可以开始读取EDID。2UTILITY车载用途悬空3TMDS数据通道2差分信号正极,用于传输视频像素、音频和数据包。4TMDS数据2屏蔽。

2501_94625908的博客 537

几种开源SIP协议栈对比(文章很早了,仅供参考)

几种开源SIP协议栈对比

aflyeaglenku的博客(QQ1010316426) 1万+

G.6 PaddleHub实战篇{ERNIE实现文新闻本分类、ERNIE3.0 实现序列标注}【四】

百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]_汀、的博客-优快云博客PaddleHub--飞桨预训练模型应用工具{风格迁移模型、词法分析情感分析、Fine-tune API微调}【一】_汀、的博客-优快云博客 PaddleHub--{超参优化AutoDL Finetuner}【二】_汀、的博客-优快云博客PaddleHub实战篇{词法分析模型LAC、情感分类ERNIE Tiny}训练、部署【三】_汀、的博客-优快云博客通过前面几篇文章大家都有一定了解,下面

丨汀、的博客 6185

开源协议栈 rlc rrc_从ReSIProcate SIP协议栈库到GB28181

背景最近Gemfield团队在使用其它部门的某三方库进行GB28181协议的适配,然后在Docker化的过程中遇到了问题:SIP信令在Docker网络上无法正常工作。具体来说,当服务部署在宿主机(192.168.2.102)上的时候,UAS给UAC发送invite指令是没有问题的;但是服务一旦部署在Docker容器里,网络使用Docker自身的bridge进行SIP协议的收发时,UAS发送给UAC...

weixin_39988930的博客 879

学Simulink——基于新型动力与推进系统的场景实例:混合动力无人机的续航能力优化

通过本次 Simulink 仿真,你已掌握:✅混合动力系统架构设计✅内燃机、电机、电池联合建模✅三种能量管理策略(规则型、功率跟随、优化型)✅续航能力仿真与对比分析✅参数调优与优化方法核心收获混合动力是突破续航瓶颈的有效路径能量管理策略(EMS)决定系统效率电池SOC管理是关键Simulink 支持复杂多能源系统的协同仿真掌握混合动力无人机技术,你将具备设计长航时巡检机、应急通信平台、边境巡逻系统的能力。

xiaoheshang_123的博客 100

RK3568平台YOLO11模型部署实战:从环境搭建、模型转换到板端性能优化全解析

摘要: 本文详细介绍了在RK3568平台上从零部署YOLO11模型的完整流程。主要内容包括:1) 基于Conda搭建Python 3.8开发环境并安装RKNN-Toolkit2工具链;2) 使用LabelImg工具标注数据并构建YOLO格式数据集;3) 基于Ultralytics框架进行YOLO11模型训练及参数优化;4) 实现PyTorch→ONNX→RKNN的完整模型转换链。文章特别针对RK3568平台的NPU特性提供了关键参数配置建议,并分享了实际开发中的经验总结,最终可达到30FPS的稳定推理性能。

LXY_LOVE36的博客 280

resip学习一

reSIProcate介绍介绍了RESIP的一些基础架构和用法。(参考resiprocate源码一起看)http://blog.chinaunix.net/uid-23023613-id-88230.html 配合RFC一起看更有效http://www.ietf.org/rfc/rfc3261.txt rfc起步注意http://blog.chinaunix.net/uid...

weixin_33697898的博客 307

RK3568平台YOLOv11模型部署全流程实战:环境搭建、模型转换与性能优化解析

在AI边缘计算领域,瑞芯微RK3568芯片凭借其强大的NPU算力和丰富的接口资源,成为了众多开发者的首选平台。然而,瑞芯微官方文档虽然提供了YOLO11预训练模型的部署方案,但对于需要自定义数据集训练的开发者来说,从模型训练到板端部署的完整流程却缺乏详细指导。本文将带你走完从环境搭建、数据准备、模型训练到最终板端部署的完整技术路线,并分享实际开发中遇到的各种坑点和解决方案。让我们一起探索如何在RK3568平台上实现30FPS稳定推理的YOLO11目标检测应用!

LXY_LOVE36的博客 120

Voip/Sip开源项目的一些简单描述

Voip/Sip开源项目的一些简单描述 RESIPROCATE: http://www.sipfoundry.org/reSIProcate/ reSIProcate is a high performance, object-oriented, C++ sip stack that is compliant with RFC 3261. It includes support for a

STEP BY STEP 3633

儿童启蒙教育APP

pinyinList.add(createPinyin("a", "啊,像阿姨的阿", R.raw.pinyin_a));pinyinList.add(createPinyin("i", "衣,像衣服的衣", R.raw.pinyin_i));pinyinList.add(createPinyin("u", "乌,像乌鸦的乌", R.raw.pinyin_u));pinyinList.add(createPinyin("ü", "鱼,像小鱼的鱼", R.raw.pinyin_v));-- 固定竖屏 -->

寒寒豆豆软件公司的博客 167

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

reSIProcate添加对自定义头字段的支持

首先在SourceInsight中查找User-Agent,参考该头字段实现对自定义头字段的支持,以下是详细步骤:1. resip/stack/HeaderTypes.hxx;    resip/stack/Headers.hxx;    resip/stack/SipMessage.hxx;    resip/stack/Headers.cxx;    resip/stack

xutom2006的专栏 1635

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SIP Applications (Proxy, PBX, ...)的开源

SIP Applications (Proxy, PBX, ...)的开源 Sip Express Router (ser): Highspeed GNU SIP proxy with a lot of features and a lot of ongoing development. Homepage: http://www.iptel.org/ser/. A really co

庞景元的技术专栏 3397

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VoIP SIP 相关的协议栈简介

<!-- google_ad_client = "pub-4628161686422646";/* 336x280, 创建于 09-9-8 */google_ad_slot = "8637637089";google_ad_width = 336;google_ad_height = 280;// -->网络上,随便一搜就能找到很多sip协议栈方面的内容,这

iSmart -- 艾思 1376

Voip/Sip开源项目的一些简单描述_拔剑-浆糊的传说_新浪博客

http://blog.youkuaiyun.com/fancyaphy/archive/2006/03/09/619411.aspx Voip/Sip开源项目的一些简单描述 收藏 Voip/Sip开源项目的一些简单描述 RESIPROCATE: http://www.sipfoundry.org/reSIProcate/ reSIProcate is a high performance, o...

拔剑—浆糊的传说 127

开源 SIP 协议栈介绍

Sofia-SIP 是用 ANSI C 开发的事件驱动型 SIP 协议栈,被广泛用于 FreeSWITCH 等通信系统中。PJSIP 是一套跨平台的 C 语言多媒体通信库,涵盖 SIP、SDP、RTP、ICE 等协议,适用于桌面和移动平台。reSIProcate 是由 SIPfoundry 社区发起的 C++ SIP 协议栈项目,具备较强的可扩展性和功能完整性。Kamailio 是基于 SIP Express Router(SER)的高性能 SIP 服务器项目,支持大规模分布式部署。

至虛極,守靜篤 1891

ReSIProcate之编译、安装、配置、运行、测试proxy

我使用了vs2008编译器,下载的最新版本ReSIProcate 1.51,在windows 7下编译编译 Build->Configuration Manager钩掉basicCall,basicMessage,basicRegister,还有resip_test,接着Build Solution.我用vs2008编译,有一处错误,AresDns Line 158,Warni

soliddream66的专栏 9391

如何使用SIPp测试ReSIProcate的Proxy

花了两天时间阅读SIPp的文档,包括SIPp Reference Document,STSLabs User Manual。 颇有些说明书控的感觉,一切准备好了,开始进行了使用SIPp测试ReSIProcate的Proxy的实践,没想到颇为不顺,于是有了这篇博文,记录一下个人经验,以供后人借鉴。 一开始按照说明Run sipp with embedded server (uas

soliddream66的专栏 3295

ReSIProcate如何建立调试环境

我觉得大家对ReSIProcate存在一个误区。大多数人接触ReSIProcate基于应用的目的,考虑采用ReSIProcate服务于应用的时候总是要问ReSIProcate支持不支持某种应用,比如支持不支持语音编码啦,支持不支持电话多方视频会议啦,支持不支持MFC啦......甚至于在问这些问题之前对ReSIProcate是什么一无所知。在将ReSIProcate考虑入应用的候选行列之前,总该先

soliddream66的专栏 3059
上一篇: RFC 3261摘录
下一篇: Mysql 断开连接之后自动重新连接
soliddream66
博客等级 码龄19年 93粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值