环境:Windows10_x64 
Python版本 :3.9.2
 
sip协议提供了OPTIONS请求方法可用于探测对端状态,今天记录下Windows10环境下使用python3.9简单实现sip协议的options功能(udp承载)的过程,并提供示例代码及相关资源下载,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230624 获取。 

一、背景描述

sip协议提供了OPTIONS请求方法,可实现如下功能:
1)查询对端能力;
2)检测对端状态(类似ping的功能);
3)NAT会话保活;
4)探测网元数量;
其中,检测对端状态用的比较多,主要用于探测对端服务是否正常。
sip OPTIONS的定义及描述,可参考rfc 3261:

二、运行效果

这里演示下使用python发送sip协议的OPTIONS的运行效果,使用FreeSWITCH对接,分为正常探测和异常处理。

1、正常探测

可以在控制台开启sip日志来观察:
sofia global siptrace on

2、异常情况

在控制台关闭freeswitch后,查看脚本运行状态,脚本使用了异常处理,可以处理timeout异常。

运行效果演示视频获取途径:
关注微信公众号(聊聊博文,文末可扫码)后回复 2023062401 获取。 

三、具体实现

这里列举下关键点,并提供示例代码。

1、python实现的关键点

1)协议模板
根据rfc定义的OPTIONS格式,生成python中使用的消息模板:
OPTIONS sip:{dstSipHost}:{dstSipPort} SIP/2.0
Via: SIP/2.0/UDP {srcSipHost}:{srcSipPort};rport;branch={branchId}
Max-Forwards: 70
From: <sip:{srcSipHost}>;tag={tagId}
To: <sip:{dstSipHost}>
Call-ID: {callId}
CSeq: {cseqNum} OPTIONS
User-Agent: myChecker
Content-Length: 0
2)sequence号
需要注意返回消息的CSeq值是否和发送的一致。
3)探测周期
太快和太慢都不好,具体数值根据应用的实际情况调整。
4)socket需要设置超时
可通过 settimeout 函数进行设置,具体参考python的socket文档。

2、示例代码

完整示例代码获取途径:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230624 获取。

四、资源下载

 本文涉及源码和文件,可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230624 获取。 

使用python发送sip协议的OPTIONS的更多相关文章

  1. SIP协议简单介绍

    sip协议是由IETF提出的IP电话信令协议,主要目的是为了解决ip网络中的信令控制,以及同软交换通信. sip协议类似http协议: 报文结构: start-line message-header ...

  2. 阐述:SIP协议是什么

    sip协议是什么?可能刚刚接触这个协议的朋友会掌握不好它的定义.那么首先我们要了解一下,目前企业中大多数VoIP应用都使用H.323协议,但是,随着越来越多的企业研究SIP协议,不久的将来基于SIP协 ...

  3. 【SIP协议】学习初学笔记

    1.SIP这玩意是怎么走来和如何构建的? 通俗的说,SIP就是一个轻量级信令协议,它可以作为音频.视频.及时信息的信令. 说到SIP是怎么出来的就要提H.323,而提到这个标准由不得不提到ITU-T, ...

  4. 深入浅出SIP协议

    传统电话是电磁波的通信,当电话技术发展到IP技术时代,SIP协议成为了电话通信标准协议,不仅可以通电话.还可以收发信息.视频.开会.放PPT.事实上,今天的通信业已全面采用SIP协议作为通信标准,无论 ...

  5. sipp模拟电信运营商VoIP终端测试(SIP协议调试)

    三大运营商都有SIP服务器,用来支持语音对讲,多媒体调度等功能,他们的平台可能不是标准的SIP协议会话. 为了应对没完没了的对接各个厂商的平台,这里再整理了一套协议脚本,毕竟全都是没有意义的无用功,标 ...

  6. SIP协议整理

    本文记录开发.实现IMS项目时,整理的SIP协议基础知识:若有侵权,请告之. SIP协议 1.      SIP协议简介 SIP是一个应用层的控制协议,可以用来建立.修改.和终止多媒体会话(或者会议) ...

  7. SIP协议分析

    - SIP流程 一个标准的SIP通话流程如下: 1. A向B发送一个INVITE消息,邀请B通话. 2.B振铃,向A回复一个RING消息,通知A振铃中,A等待. 3.B提机,向A发一个OK消息,  通 ...

  8. SIP协议参数详解

    1.1  SIP消息分类 SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切. SIP协议将Server和User Agent之间的通讯的 ...

  9. SIP协议 会话发起协议(一)

    会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话. SIP - 概述 以下是有关SIP的几点注意事项 - S ...

  10. 【转】SIP协议 会话发起协议

    转自:https://www.cnblogs.com/gardenofhu/p/7299963.html 会话发起协议(SIP)是VoIP技术中最常用的协议之一.它是一种应用层协议,与其他应用层协议协 ...

随机推荐

  1. 系统评价——数据包络分析DEA的R语言实现(七)

    数据包络分析(Data envelopment analysis,DEA)是运筹学中用于测量决策部门生产效率的一种方法,它是基于相对效率发展的崭新的效率评估方法. 详细来说,通过使用数学规划模型,计算 ...

  2. 3D开发工具HOOPS最新解析合集!助力实现web端高性能模型渲染!

    一.3D技术为创新提供强大助力(1)3D专家提供专属技术支持服务不管您想搭建桌面.WEB或者移动端APP应用,技术领先全球的HOOPS Platform组件都可以为您提供弹性的3D集成架构,同时,一批 ...

  3. 环形链表_相交链表_多数元素(java语言)

    环形链表 力扣141题 问题: 思路:创建hashset,把链表的每个节点放到集合中,在放入的过程中检查这个节点是否已经存在,存在则证明存在环. 代码实现: public class Solution ...

  4. Disruptor-源码解读

    前言 Disruptor的高性能,是多种技术结合以及本身架构的结果.本文主要讲源码,涉及到的相关知识点需要读者自行去了解,以下列出: 锁和CAS 伪共享和缓存行 volatile和内存屏障 原理 此节 ...

  5. Django框架——静态文件配置、form表单、request对象、连接数据库、ORM简介、ORM基本操作和语句

    配置文件介绍 SECRET_KEY = '0yge9t5m9&%=of**qk2m9z^7-gp2db)g!*5dzb136ys0#)*%*a' # 盐 DEBUG = True # 调试模式 ...

  6. LDAP数据过滤问题

    集成ldap同步用户遇到的问题: 首先说明同步需求: 业务需要只同步 objectClass 类型为user的用户 连接ldap查询用户的时候 过滤器只加了 .where("objectCl ...

  7. CS144 计算机网络 Lab2:TCP Receiver

    前言 Lab1 中我们使用双端队列实现了字节流重组器,可以将无序到达的数据重组为有序的字节流.Lab2 将在此基础上实现 TCP Receiver,在收到报文段之后将数据写入重组器中,并回复发送方. ...

  8. 驱动开发:通过MDL映射实现多次通信

    在前几篇文章中LyShark通过多种方式实现了驱动程序与应用层之间的通信,这其中就包括了通过运用SystemBuf缓冲区通信,运用ReadFile读写通信,运用PIPE管道通信,以及运用ASYNC反向 ...

  9. CS144 计算机网络 Lab3:TCP Sender

    前言 在 Lab2 中我们实现了 TCP Receiver,负责在收到报文段之后将数据写入重组器中,并回复给发送方确认应答号.在 Lab3 中,我们将实现 TCP 连接的另一个端点--发送方,负责读取 ...

  10. P1014 [NOIP1999 普及组] Cantor 表

    题目链接:https://www.luogu.com.cn/problem/P1014 有理数可枚举 In 1873 Cantor proved the rational numbers counta ...