SIP/VOIP
文章平均质量分 66
专注于VOIP领域
浪游东戴河
专注于SIP/VoIP协议、音视频、Linux C/C++网络编程等领域,长期提供技术咨询、问题解答、软件开发、知识讲座等服务
学无止境,习有所长,没有终点,永不放弃
展开
-
SIP协议之匿名呼叫
匿名呼叫是SIP呼叫中的一个特殊业务,原理是构造一个没有个人信息的From头域,其中显示名部分为Anonymous, 这样被叫收到呼入请求时,按照From头域中的显示部分“Anonymous"显显示为Anonymous(匿名)来电。原创 2024-08-24 10:33:32 · 214 阅读 · 0 评论 -
SIP调试之SIPP测试工具
SIPP是针对SIP协议的一个性能测试的命令行工具,可以动态显示测试的统计信息(如呼叫速率、延时、消息统计等)。用户可以通过XML场景配置文件,自定义模拟各种UAC/UAS测试场景的信令交互流程,可以被用来测试IP话机、SIP代理、SIP PBX等SIP设备。官方网站:参考文档:linux平台:注:也可以下载源码编译安装3.2 常用参数说明-v作用:显示版本信息作用:后台模式运行作用:输出SIPP内嵌的默认场景部分参数说明:将场景内容重定向到文件-sf作用:加载指定的场景文件-sn原创 2024-03-15 19:58:53 · 2709 阅读 · 0 评论 -
VoIP之音视频质量及弱网解决方案
衡量音视频通信质量的指标主要有两个,延迟性和服务质量,即延迟性越低、服务质量越高,则音视频通信的质量就越好。音视频质量主要受网络情况(带宽限制,网络拥塞,网络丢包、抖动等)影响,导致通信质量下降。在实际应用中,针对不同情况有多种优化方案来提高通信质量。原创 2024-03-08 20:01:40 · 1298 阅读 · 0 评论 -
VoIP之AVPF(Audio-Visual Profile with Feedback)
在VoIP音视频通话中,接收者可以依赖rtcp机制向发送者报告RTP数据接收的统计情况,以便发送者根据接收情况(丢包数量等)调整传输行为(发送速率等)。由于基本的RTCP统计报告是定期发送的,通过该机制来调整发送端行为会有一定的滞后性,比如视频因丢包解码出现花屏时,急需新的I帧来刷新图像。原创 2024-02-27 19:59:22 · 694 阅读 · 0 评论 -
VoIP之主备注册服务器机制
在IP话机的实际使用中,不可避免的会出现服务器离线运维、服务宕机、IP话机和服务器连接中断等情况。为了保证电话服务的连续性,在VoIP部署服环境中必须有冗余机制。常见的冗余机制以主备服务器的形式实现。原创 2024-02-06 15:48:29 · 775 阅读 · 0 评论 -
VoIP之IP直呼
在VoIP应用场景中,有一种功能叫IP直呼,也称为IP直拨。就是两个SIP终端或终端和服务器之间,通过呼叫(Invite)对方IP地址实现音视频通话的功能。与常见的SIP账号呼叫的区别是from/to字段没有账号(user)部分,只有IP地址。原创 2023-09-14 19:42:57 · 340 阅读 · 0 评论 -
SIP/VoIP之常见的视频问题
除了语音通话外,视频通话也是SIP协议通话中重要的功能,在实际应用中,经常会遇到一些视频问题,如下(以h264为例)原创 2023-08-14 17:09:20 · 1773 阅读 · 0 评论 -
SIP协议之音/视频转换
在SIP通话应用场景中,有时需要在音频和视频通话中进行切换,这个功能实现的需要发送re-INVITE重新协商媒体,即重新协商媒体(SDP)中是否允许视频。原创 2023-08-08 16:51:55 · 1097 阅读 · 0 评论 -
SIP协议之呼叫保持(HOLD)
呼叫保持是SIP协议应用中的一个重要功能,用于实现不挂断电话而达到暂停媒体(常见于音频,视频很少用)的目的,而解保持操作会恢复通话。原创 2023-08-05 09:51:03 · 1712 阅读 · 0 评论 -
sip协议与IPv6
IPv6(Internet Protocol Version 6)是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,而SIP协议作为一种应用层协议,也同样能够在IPv6网络中使用。IPv6地址长度为128位,由8组用冒号分隔的16进制数组成。由于IPv6地址中含有冒号(😃, 与IP:Port的通常用法中的冒号冲突,因此在与端口写在一起时,需要用括号[]把IPv6地址包起来,如[2023:93ab:2:9999::3d]:5060。原创 2023-07-15 11:29:16 · 660 阅读 · 0 评论 -
SIP业务之BLF
BLF(Busy Lamp Field)是SIP应用中的一项重要业务,用来监视目标号码的状态,常用于调度、坐席监控等场景。原创 2023-07-12 20:21:55 · 614 阅读 · 0 评论 -
SIP协议之NOTIFY控制SIP终端通话
在SIP协议的应用中,可以通过NOTIFY消息控制终端接听来电或保持通话。原创 2023-05-18 21:52:34 · 1484 阅读 · 0 评论 -
SIP协议之通话转接
在SIP协议应用中,有一个常用的功能叫通话转接,用于将接通后的通话转给第三方接听处理。原创 2023-04-23 22:16:43 · 2488 阅读 · 12 评论 -
SIP协议之RTP负载类型(payload type)
在SIP 音视频通话中,媒体数据是由RTP包携带的, RTP包中的PT字段标识了负载媒体数据的类型。不同的媒体编码格式对应不同的整型数值,由RFC3551定义:0~95范围内,一部分已经被占用,如PCMU是0,PCMA是8等待,另一部分是未定义。而96-127范围是由使用者动态定义的,可以动态用作未定义的音频和视频RTP包类型, 比如H264、VP8、Opus等。原创 2023-04-17 22:45:18 · 5948 阅读 · 2 评论 -
SIP/VoIP之常见的语音问题
语音通话是SIP或VoIP应用中最重要的功能,一旦语音方面出现问题,将极大的降低产品的口碑,很容易被市场和用户淘汰。原创 2023-04-14 23:28:21 · 2367 阅读 · 0 评论 -
SIP终端常见的功能及协议支持
在实际的VoIP应用领域,有很多常见的SIP协议软硬件终端设备,比如SIP软电话、IP话机、SIP服务器、MCU会议系统等等。虽然这些SIP设备功能和应用场景不尽相同,但很多特性都是常见的。原创 2023-04-05 09:34:46 · 1358 阅读 · 0 评论 -
VoIP之IP直拨
在VoIP应用场景中,有一种功能叫IP直拨,也称为IP直呼。原理是在两个SIP终端或终端和服务器之间,按照SIP协议定义,通过呼叫(INVITE)对方IP地址实现SIP音视频通话的功能。该功能要求被叫方要监听在相应的网络传输协议及服务端口上,SIP协议默认传输协议是UDP, 默认端口5060。原创 2023-04-04 21:54:30 · 426 阅读 · 0 评论 -
SIP协议之T1、T2、T4
T1: RTT Estimate, RTT估算值, 发出请求到接收到对端响应的往返时间, SIP中默认是500msT2: 非INVITE请求和INVITE应答的最大传输间隔, SIP中默认是4sT4: 消息在网络中存活的最大时间, SIP中默认是5s在SIP终端或服务器中,T1、T2、T4一般都可配置,可根据实际网络环境调整SIP请求/应答消息的重传间隔和T1、T2、T4有关T1、T2、T4和事务状态机的逻辑紧密相关。原创 2023-04-01 09:48:42 · 1170 阅读 · 0 评论 -
SIP协议之事务(transaction)及INVITE事务
SIP事务(SIP Transaction):SIP 事务发生在客户端和服务器之间并且由从第一个从客户端发送到服务器的请求直到最后一个。SIP协议是一个事务协议,组件间的交互是由一系列独立的消息交换完成的。具体来说,一个SIP事务由一个请求和任意个应答组成,包含0个或多个临时应答以及一个或多个最终应答。原创 2023-03-16 21:42:42 · 2844 阅读 · 0 评论 -
VoIP之前向纠错(FEC)
在VoIP领域中,音视频等媒体一般采用RTP/UDP进行封装传输。实际网络(尤其公网)传输中存在拥塞等不稳定情况引发丢包,导致接收端声音变形或视频花屏。为了应对这种情况,一般有以下几种方式: 1. 实时计算和预测网络带宽,降低视分辨率和编码质量,减少数据量,降低网络拥塞情况 2. 引入丢包重传技术 3. 增加冗余包,如FEC(前向纠错)等 由于实时类应用往往有着比正常数据传输更严格的时延要求,因此,丢包重传通常不是一个合适的解决丢包的方式。更好的方法是通过FEC(Forward Error Corre原创 2022-06-29 19:53:43 · 1055 阅读 · 1 评论 -
VoIP之REFER
REFER是SIP的一个扩展请求方法,用于通知接收方(用户代理)访问REFER中提供的URI/URL资源。该方法由RFC3515(The Session Initiation Protocol (SIP) Refer Method)定义。 REFER可以用来实现许多应用功能,比如呼叫转接。例如,A正在和B通话,如果A认为B需要和C通话,那么A可以发送SIP REFER请求给B,并在请求中提供了C的联系地址信息,B收到请求后将尝试呼叫C,与C建立通话。在呼叫过程中,B会向A报告呼叫的状态(是否成功等原创 2022-06-19 09:24:33 · 1057 阅读 · 0 评论 -
VoIP之DTMF
DTMF: Dual Tone Multi Frequency,双音多频,是贝尔实验室开发的信令方式,通过承载语音的模拟电话线传送电话拨号信息,由高频音和低频音组成,高低频音各包含4个频率。一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。DTMF信号有16个编码,代表数字按键(0~9 * # A B C D)。属于带外检测方式,通过SIP信令消息传输DTMF数据。一般通过SIP INFO包中的signal字段识别DTMF按键。注意当DTMF为“*”时不同的标准实现对应的signal=*或sig原创 2022-06-18 15:43:17 · 1424 阅读 · 1 评论 -
VoIP之MTU
以太网最大的数据帧是1518字节,除去以太网帧的帧头14字节和帧尾CRC校验部分4字节(也做FCS),剩下最大值1500字节用于承载上层协议,这个值(1500)称为MTU(MaximumTransmission Unit),中文为最大传输单元。对于应用层来说,发送的数据包最好是小于MTU, 这样可以避免IP层出现分片。在VoIP应用场景中,媒体传输是基于IP/UDP/RTP的,其中至少20字节的IP头,8字节的UDP头和12字节的RTP头,共占用40字节,这样RTP载荷剩下最多1460字节(1500-40原创 2022-06-15 22:18:42 · 839 阅读 · 0 评论 -
VoIP之消息等待提示(MWI)和语音信箱(VoiceMail)
消息等待提示(Message Waiting Indication,简称MWI)是电话网络中的一个通用功能。由rfc3842定义(rfc3842:A Message Summary and Message Waiting Indication Event Package for the Session Initiation Protocol (SIP)),一般包含可看见的或可听见的消息等待提示,比如播放一个特殊的提示音,点亮话机上的提示灯,或者显示图标、文字。用户代理通过订阅事件的方式进行订阅,服务器通过N原创 2022-06-12 17:16:56 · 1943 阅读 · 0 评论 -
VoIP之呼叫转移
呼叫转移又称呼叫前转、呼入/来电转移等,一般是指当用户不想接听、不方便接听或者终端故障无法接听时,将来电转移到其它号码上时的一项功能。主要有以下几种:1. 无条件转移:设定后,呼叫本号码的所有来电都被转移到预先设定的号码上,本号码不能接听到电话2.遇忙转移:设定后,本号码正在与其它用户通话时,如果有有新的呼叫到来时,将被转移到预先设定的号码上3.无应答转移:设定后,本号码收到来电振铃无人接听时,该来电将会被转移到预先设定的号码上4.不可达(无信号或关机)转移:设定后,如果号码所在终端无信号或原创 2022-05-28 08:21:09 · 1377 阅读 · 0 评论 -
VoIP之RTP/RTCP协议
在VoIP领域中,一般使用RTP作为媒体的传输协议。RTP(real-time transport protocol)由rfc3550定义(其中RFC1889已经过期)。RTP提供了一种适用于应用在端到端之间传输音频、视频等实时数据的网络传输方式。RTP没有资源预留机制,不确保实时服务的服务质量。通过RTCP控制协议监控数据传输来最大化的利用网络。RTP/RTCP是独立于传输层和网络层设计的。RTP应用场景:一般使用IP和UDP承载,如下图1. 简单的多播音频会议2. 音频和视频会议3原创 2022-05-27 11:01:05 · 975 阅读 · 0 评论 -
VoIP之SDP说明及媒体协商
当建立多媒体电话会议、语音通话、视频流或其它会话时,需要参与方表明自己的媒体信息、传输地址和其它会话描述信息。会话描述协议(SDP, RFC4566:SDP: Session Description Protocol)为上述需求提供一种标准方式。SDP只是一种会话描述信息的格式,可以配合多种传输协议使用,如SIP、RTSP、RTC等。 SIP协议是一个用来创建、修改、终结多媒体会话的应用层协议。SDP和SIP协议一起使用时,offer/answer模型提供了一个简单的媒体协商框架(所谓媒...原创 2022-05-23 17:16:25 · 2484 阅读 · 2 评论 -
SIP协议之OPTIONS
OPTION是SIP协议中基本的请求方法之一。由RFC3261定义,OPTION方法允许用户代理/终端查询另一个用户代理/终端或SIP服务器提供的能力,所有的SIP用户代理都要实现对该方法的处理。实际应用场景如下:1. 查询对端能力这个机制允许客户端查询到服务端支持的方法、内容类型、扩展,编码等信息,在查询过程中不会触发响铃或其它机制提醒对方用户。所有的用户代理/终端必须支持OPTION方法。其中一个应用场景,客户端准备在INVITE请求中插入一个强制需要的头域,又不确认对端是否支持该头域时...原创 2022-05-21 11:25:41 · 4266 阅读 · 0 评论 -
VoIP之业务功能特征码
在VoIP实际应用环境中,软交换(SIP服务端)会实现一些业务功能供IP终端使用,比如呼叫转移、黑名单、呼叫代答等。而IP终端(包括软件终端或话机)可以通过拨号的方式开启或关闭这些业务功能,其中的原理就是通过INVITE请求将业务功能对应的特征码和额外参数发送到服务端,服务端返回相应的应答码来表明业务功能开启成功(200-OK)或失败(比如500)。消息示例: 开启无条件呼叫转移, 特征码 *411*, 转移目的号码:9336INVITE sip:*411*9336@192.168.0.1...原创 2022-05-16 19:42:15 · 467 阅读 · 0 评论 -
SIP协议之Session Timer会话保活机制
SIP协议没有为处于完成状态的会话定义一种保活机制。为了解决一方发送BYE失败或BYE消息在网络传输过程中丢失导致会话不能结束的问题,引入Session Timer(会话定时器)机制。Session Timers由RFC4028(Session Timers in the Session Initiation Protocol)定义。RFC4028作为SIP协议的扩展,允许通过re-INVITE或UPDATE request来周期性的刷新SIP会话,该刷新机制允许会话双方判定会话是否是活跃的,扩展原创 2022-05-15 17:12:55 · 3339 阅读 · 0 评论 -
VoIP之TLS
在VoIP领域中,为了保证SIP信令不被篡改和窃取,使用TLS作为传输方式来对SIP信令进行加密。TLS(安全传输层协议)用于在两个通信应用程序之间提供保密性和数据完整性,TLS处于TCP协议之上。服务器端对于TLS一般选择5061作为监听端口SIP注册(TLS)示例:1. TLS协商(使用tls 1.0版本)2. 注册过程关键说明:1. 使用TLS传输方式后,从wireshark中已经无法查看到明文信令2. 可以通过过滤tcp/tls查看TLS协商是否成功.原创 2022-05-14 17:48:58 · 561 阅读 · 0 评论 -
VoIP之SRTP
互联网已经渗透到生活的方方面面,用户对于网络信息安全的要求非常高。在VoIP领域中,使用SRTP对音频、视频数据进行加密,保证数据安全。SRTP的作用如下:1. 保证RTP包中负载(音视频数据)的机密性2. RTP包完整性确认(消息认证)3. RTP数据(音视频数据)的重放保护,即防止音视频数据能够重新播放而造成的泄密SRTP实际是RTP的一个扩展,SRTP用于RTP数据提供机密性,由RFC3711(The Secure Real-time Transport Protocol)定义,SRTP原创 2022-05-14 10:11:19 · 822 阅读 · 3 评论 -
VoIP之Wireshark使用
Wireshark是网络协议分析必不可少的工具软件,熟练使用wireshark能在网络软件问题分析中起到事半功倍的效果。在VoIP领域中,Wireshark软件也是不可缺少的。无论是SIP协议分析、音视频问题定位、或是项目安装部署问题排查,都有它的一席之地。本文从以下几个方面介绍Wireshark在VoIP领域中的应用。一、报文过滤一般抓到的报文中都包含大量其它协议的网络包,为了更好的分析问题,需要输入合适的过滤条件。实际分析中过滤条件有以下几种:SIP最常用的过滤条件SIP+RT原创 2022-05-08 15:41:00 · 2886 阅读 · 0 评论 -
VoIP之 DHCP自动部署
DHCP(动态主机配置协议)是一个局域网的网络协议,用于主机动态获取IP地址、网关地址、DNS地址等信息。除此之外,DHCP通过OPTION(选项参数)完成更多的功能。在VoIP领域中,通过DHCP可以实现以下功能:IP话机配置信息自动部署IP话机通过43或66选项,从DHCP server获取到预先设置的配置文件服务器地址(可以是tftp或http协议),再通过获取得的配置文件服务器地址下载以自身MAC地址为前缀的配置文件(比如1A-2B-3C-4D-5E-6F.xml)。如果配置文件比话机现有配置原创 2022-05-01 17:00:31 · 472 阅读 · 0 评论 -
sip协议之网络传输方式
SIP协议是一个基于互联网的应用层协议,支持的网络传输方式有三种: UDP、TCP、TLS。一、UDP UDP是在SIP协议中比较常用的传输方式。UDP是不可靠的,可能会出现丢包,因此,SIP协议在应用层设计了消息重传机制,来保证传输的可靠性。 关键说明: SIP服务器一般使用5060作为UDP监听端口 UDP存在NAT保活问题,因此会采用较小的注册超时时间或者定时发送网络空包(\r\n等)来保证链路的连通性 出现丢包、对端响应慢或无响应时...原创 2022-04-19 20:05:43 · 5278 阅读 · 0 评论 -
SIP协议之RTP与H264
SIP视频通话或会议中,通常以H264作为视频编码,通过RTP进行传输。这部分应用以RFC3984为标准规范。rfc3984: RTP Payload Format for H.264 VideoH264中一些概念:SPS: sequence parameter set 序列参数集,包含图像大小、编码模式等参数PPS: picture parameter set 图像参数集IDR: Instantaneous Decoding Refresh I帧,立即刷新,是一幅可以完整显示的画...原创 2022-04-16 11:51:38 · 1639 阅读 · 2 评论 -
SIP协议之PRACK机制
SIP PRACK(Provisional Response ACKnowledgement)是由SIP的扩展协议RFC3262定义的,旨在为SIP的临时应答提供传输的可靠性。扩展机制使用选项100rel和临时应答方法PRACK实现。该机制同SIP协议中的2xx对INVITE应答的可靠机制类似。流程图:信令流程:编号1:1015呼叫1012INVITE sip:1012@192.168.0.24:5060 SIP/2.0Via: SIP/2.0/UDP 192.168.0.2...原创 2022-03-19 11:37:51 · 2256 阅读 · 0 评论 -
SIP协议之头域的简短格式
SIP提供了一种使用简短格式( compact form)的表示头域名称。这种机制在使用UDP传输方式而消息体积超过MTU时是非常有用的。常用头域对应的简短格式:示例:Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@biloxi.comi:f81d4fae-7dec-11d0-a765-00a0c91e6bf6@192.0.2.4Call-ID: i Contact: mContent-Length:lConte...原创 2022-03-19 11:27:17 · 632 阅读 · 0 评论 -
SIP协议之呼叫流程
SIP呼呼叫是SIP协议最基本的功能。一个用户呼叫另外一个用户最终完成多媒体通话。此处以常见的B2BUA的服务器模式进行介绍。环境说明:主叫:1006 192.168.1.131被叫:1012 192.168.0.24SIP服务器(以下简称服务器): 192.168.0.201 主、被叫均注册在此服务器1 主叫输入1012号码,开始呼叫2 被叫收到1006来电,点击接听3 主叫点击挂断结束通话流程图如下: 关键说明: 1. 1006...原创 2022-03-18 20:23:48 · 9376 阅读 · 1 评论 -
SIP协议之应答码
SIP应答码是协议中重要的部分,可以表明请求的处理状态。但需要注意的是,应答码不能反应产生状态的真实原因,例如,返回486不一定代表被叫拒绝接听呼叫,但是通常是表示拒接。以下内容参考RFC3261:Provisional 1xx:临时应答,表明服务器已经开始进一步处理请求,但还没有获得最终的处理结果。1xx应答不会被可靠传输,不会触发客户端回复ACK100 Trying: 表明请已经被下一跳服务器处理,像其它的临时应答一样,会停止UAC 对于INVITE消息的重传。与其它临时应答不同...原创 2022-03-17 20:17:17 · 6802 阅读 · 2 评论