SIP极简教程

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: SIP运行在我们熟知的TCP和UDP协议之上,既可以使用TCP协议通信也可以通过UDP协议通信。SIP是对等协议,一个端既是客户端又是服务端。

[toc]

简介

SIP(Session Initiation Protocol),会话发起协议,顾名思义,就是用于发起会话的协议。

SIP会话(Session)是两个用户终端之间(也可能是多个用户之间)基于IP网络的会话,即VoIP会话;会话的媒体一般是语音、视频、也可能有其他形式。

SIP协议本身只负责会话的建立,具体来说,就是在两个用户终端之间通过SIP消息交换传递消息,完成会话的建立;

会话建立过程中的一个关键点是交换发送/接受会话媒体的地址及相关参数,即媒体描述;媒体描述是通过SDP来完成的;会话建立以后,两方得到了彼此的媒体地址之后,就可以向对方发送媒体,开始通话。媒体传输是通过RTP(实时传输协议)完成的。

SDP、RTP,与SIP协议是相对独立的。

SIP运行在我们熟知的TCP和UDP协议之上,既可以使用TCP协议通信也可以通过UDP协议通信。SIP是对等协议,一个端既是客户端又是服务端。

VoIP(Voice on IP),从字面上看就是语音跑在IP网络上。具体来说就是将电话业务(或者说模拟信号)与web浏览,email等其它数据应用一样,承载在IP网络上。常见的应用场景有:传送语音、传真、视频、和数据等业务,如统一消息业务、虚拟电话、虚拟语音/传真邮箱、查号业务、Internet呼叫中心、Internet呼叫管理、电话视频会议、电子商务、传真存储转发和各种信息的存储转发等。

与主流的web应用相比,VoIP具有以下特点

  • 媒体(内容数据)的传输是双向对称,实时的,基于单独的实时传输协议
  • 呼叫建立过程基于单独的信令协议,独立于语音数据传输

这使得VoIP有自己独特的协议栈:明确区分了独立的信令协议与媒体传输协议。
Image1.png

SIP会话流程

发起会话流程

实际就是tcp三次握手,握手成功之后,双方就可以传输数据。

Image2.png

修改会话流程

Image3.png

结束会话流程

Image4.png

SIP消息

消息分类和对应的操作

SIP消息(Method) SIP操作 说明
INVITE 会话邀请
ACK 确认会话邀请
CANCEL 取消会话邀请 请求方在还未收到ACK的时候可以主动取消会话邀请
BYE 结束会话
REGISTER 注册 心跳机制
OPTIONS 查询服务器能力 查询对端具备的能力,如支持的方法(Method),扩展(extensions),编解码(codecs)

SIP消息体格式

SIP是一个基于文本(text-based)的协议,使用 UTF-8 字符集。

SIP消息与HTTP消息非常类似,由三部分构成(如下图所示)

  • 第一行:请求行(Request-Line),状态行(Status-Line)
  • 消息头域(message header)
  • 消息体(message body):通常是会话描述(session descriptions),也可能是其他内容

Image5.png

  • SIP请求的第一行是请求行(Request-Line)
  • SIP响应的第一行是状态行(Status-Line)
  • SIP请求消息(SIP Request)有很多,例如INVITE、ACK、BYE、CANCEL等,不同的SIP请求消息通过请求行(Request-Line)的方法(method)区分

引用

目录
相关文章
|
存储 监控 算法
详解SIP服务器用来做什么的
什么是SIP服务器? SIP服务器是IPPBX的主要组成部分,主要处理网络中所有SIP呼叫的管理。SIP服务器也称为SIP代理或注册器。SIP是SIP服务器的主要组件,负责建立网络中所有的SIP电话通话。SIP服务器也叫SIP代理服务器或注册服务器。
1895 0
详解SIP服务器用来做什么的
|
Web App开发 安全 数据安全/隐私保护
IP电话交换机WebRTC使用方法一
WebRTC 简介 WebRTC 是网络实时通信的缩写(Web Real-Time Communication), 是一种支 持网页浏览器进行实时语音通话的技术。在 CooVox V2 IP PBX电话交换机 中成功运用该技术实现网 页分机,为企业用户提供了一个直接与客户沟通交流的免费平台。网页分机是指在 Web 浏览器中通过使用 WebRTC 的方式注册的分机号。客户可以通过企业网站直接与企业人员 通话寻求支持。
|
编解码 网络协议 Unix
SIP协议&开源SIP服务器搭建和客户端安装
1. SIP SIP 是一个应用层的控制协议,可以用来建立,修改,和终止多媒体会话,例如Internet电话 SIP在建立和维持终止多媒体会话协议上,支持五个方面: 1)   用户定位: 检查终端用户的位置,用于通讯。
15723 0
|
Linux
LINUX编译sofia-sip
LINUX编译sofia-sip
192 0
|
Web App开发 应用服务中间件 Linux
freeswitch使用sip集成网页电话,nginx配置https协议
文章目录 网页集成软电话 配置freeswitch开启wss nginx配置自签名https域名 页面集成软电话开发 网页集成软电话 网页集成软电话需要使用https协议,页面与freeswitch平台建立websocket长连接。使用jssip库进行相关开发
|
Linux 测试技术 数据库
我的SIP开发之路
http://hi.baidu.com/ltlovelty/blog/item/837baf1ece7fc6f11ad57647.html     经过对SIP协议和开源协议栈快半年的研究,我现在终于有点入门了。
3682 0
SIP能否成为主流? 三种IP电话协议比较
SIP能否成为主流? 三种IP电话协议比较   随着IP电话应用的普及,建立终端设备和网关的可扩展网络已成为业界面临的一大技术挑战。目前IP电话技术已完美实现了对语音和传真信息的编码和传输,但仍需进一步发展为大型公司和服务提供平台的呼叫控制和地址管理技术。
1479 0
|
JSON 网络协议 开发工具
基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 报文设计 (二)
基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 报文设计
542 0
基于声网的音视频SDK和FreeSWITCH开发WebRTC2SIP Gateway 报文设计 (二)
|
XML 存储 Java
freeswitch之SIP动态注册及动态配置拨号方案
本文档描述freeswitch的动态配置SIP账户,以及动态修改拨号方案的问题
2058 0