SIP简述-协议和结构-架构设计论坛-技术-SpringForAll社区

SIP简述-协议和结构

 

简介

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有自己独特的协议栈:明确区分了独立的信令协议与媒体传输协议。

c32e56d31220240402103310

SIP会话流程

发起会话流程

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

ee2a74420220240402103311

修改会话流程

ccef4a47d120240402103311

结束会话流程

50e6422a6f20240402103310

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),也可能是其他内容

bb25fa28a020240402103311

 

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

引用

  • SIP之NAT穿越:https://zhuanlan.zhihu.com/p/587072680
  • SIP呼叫流程:https://zhuanlan.zhihu.com/p/452129365
  • SIP消息:https://zhuanlan.zhihu.com/p/451686871
  • 什么是SIP:https://zhuanlan.zhihu.com/p/436583417
  • 开源SIP服务器:https://developer.aliyun.com/article/243201
  • JAINSipRi框架介绍:https://www.techdatafuture.com/article?id=fc786f4f-5988-4a26-bebf-fdb5df5b3d71

%MCEPASTEBIN%

请登录后发表评论

    没有回复内容