GB28181协议-SIP协议详解

本文详细介绍了SIP协议,一种基于文本的应用层控制协议,用于创建和管理多媒体会话,包括请求、响应、交易、用户代理、INVITE等关键概念,以及SIP协议的结构、方法和格式。
摘要由CSDN通过智能技术生成

1.SIP协议

SIP(Session initialization Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。

它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。SIP 是一种源于互联网的IP 语音会话控制协议,具有灵活、易于实现、便于扩展等特点。SIP(Session Initiation Protocol)是一种类似于http协议的纯文本应用层协议。SIP可以用来控制会话的建立、取消、关闭等操作。主要可以实现以下功能:

  • 用户定位:检查终端用户的位置,用于通信;
  • 用户有效性:检查用户参与会话的意愿程度;
  • 用户能力:检查媒体和媒体参数;
  • 建立会话:“振铃”,在呼叫和被叫方同时建立会话的参数;
  • 会话管理:包括会话的传输和终止,修改会话参数以及请求服务

目前相关设备供应商和业务供应商联合成立了一个关于SIP的论坛:http://www.sipforum.org,为SIP的发展提供一个自由讨论、展现新思维的发展平台

1.1 概念讲述

1.1.1 SIP request

请求是SIP中一个最基本的概念之一,每一次关于SIP的操作都需要发送请求。

1.1.2 SIP response

回复和请求在SIP中一般都是成对出现,回复中的内容是对端关于请求的处理结果。

1.1.3 Transaction

SIP协议是一种事务型协议。transaction的概念建立在请求和回复之上,一个请求和相关的最终回复就组成了一个transaction。(不包括关于ACK的处理)由于在一次通话建立到结束的过程中,会有多个Transaction,所以需要对Transaction进行唯一性标记,在SIP中对Transaction进行唯一标记的是branch参数

1.1.4 TU

在具备Transaction的概念之后,就出现了Transaction user的概念,Transaction架构在Transaction 上,能够对Transaction进行管理。

1.1.5 Client Transaction 和Server Transaction

有了Transaction的概念之后,针对请求和回复的不同就出现了client Transaction和server Transaction。CT指的是请求发起者所具有的Transaction的部分,ST是请求的接受者所具有的部分。

1.1.6 用户代理 UA(User Agent)

UA指的是一个用户实体。

1.1.7 UAC和UAS用户代理服务器端(User Agent Server)

实际发起请求的用户实体就是UAC,实际接收请求进行处理的用户实体就是UAS。

1.1.8 INVITE

特殊请求。SIP协议中最关键的请求。用于发起会话。

1.1.9 session

session,在收到对应的INVITE请求的2xx回复之后,完成建立。在下一次INVITE请求的2xx回复发送或者收到后进行修改,唯一一种结束方式为发送或者收到bye请求。

1.2.0 dialog

dialog的概念和session的概念类似,不同的是dialog是针对信令交互的一种概念,而session是对实际媒体发送和接收流程的描述。dialog的建立时间也是在接收到信令的200 OK回复之后,结束也是在发送或者接收到bye请求之后。

1.2 SIP的结构

在SIP协议中主要包含以下几种逻辑上的角色:UA、Proxy Server、 Register/Location Server、Redirect Server。

  • UA:用户代理(User Agent)类似于http协议中浏览器的角色,是用户操作的终端界面,用户代理需要符合SIP协议的要求,但是结合其他的协议根据不同的应用场景,会有不同的实现逻辑。比如,SIP协议结合H.323VoIP协议可以实现软件电话功能。用户代理分为UAC(UA Client)和UAS(UA Server)两种逻辑实体,UAC发送SIP Request并接受Response,UAS接收SIP Request并返回Response,一个物理设备既可以是UAC同时也可以是UAS。
  • Proxy Server:代理服务器的作用主要是转发Request和Response给其他的Proxy Server或者UA,Proxy Server分为有状态代理服务器(Stateful Proxy)和无状态代理服务器(Stateless Proxy),前者会保留一次通信事务的状态,通过一个有限状态机来控制转发操作,而后者不保存状态,只是实现透明的转发操作。
  • Registration/Location Server:注册和定位服务器用于登记和定位UA,在线的UA会定时的向Registration服务器发送SIP消息来表明UA当前的位置(如IP地址、端口号等),Registration服务器会将该信息存入数据库(或者散列表)中,当其他UA向该UA发送request时就能获得该UA的位置。
  • Redirect Server:用于重定向,在逻辑上相当于一个特殊功能的UA。

1.3 SIP方法

在SIP的REQUEST中,核心的方法(method)定义了6种:INVITE、ACK、BYE、CANCEL、OPTIONS和REGISTER。

  • INVITE消息用于发起一个新的会话;
  • ACK消息用于完成会话的建立;
  • BYE消息用于结束一个会话;
  • CANCEL消息用于取消一个请求(一般是针对INVITE);
  • OPTIONS消息用于查询服务器的能力;
  • REGISTER消息用于发送注册请求消息。

SIP请求的类型,也称作SIP方法。RFC3261 中定义了六种方法。另外八种方法有独立的RFC扩展描述。如INFO、NOTIFY等等

1.4 SIP协议格式

SIP消息采用[ISO 10646]文本方式编码,分为两类:请求消息和响应消息。

请求消息:客户端为了激活按特定操作而发给服务器的SIP消息。

响应消息:用于对请求消息进行响应,指示呼叫的成功或失败状态。

每条SIP消息由以下三部分组成:起始行( Start Line)/ 状态行(Status-Line),SIP头,消息体;请求消息和响应消息都包括SIP头字段和SIP消息字段。

起始行( Start Line)/ 状态行(Status-Line)

每个SIP消息由起始行开始。起始行传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请求行(请求)或状态行(响应) 。

请求消息

请求消息整体格式如图:

其中:起始行格式:命令名称+目标URI+sip协议版本

请求消息包括以下几种请求命令:

响应消息

响应消息的起始行为状态行(Status-Line),状态行由协议版本、状态码和状态原因短语组成,各个部分之间用一个空格字符进行分隔。下面介绍其中的状态码。

SIP协议中共定义了6类状态码,其中状态码的第1位数字用于指示响应类型,后两位数字表示具体响应。下面用“1xx”标识状态码为“100-199”之间的响应。

  • 1xx:临时响应,表示请求消息正在被处理;
  • 2xx:成功响应,表示请求已被成功接收,完全理解并被接受;
  • 3xx:重定向响应,表示需采取进一步以完成该请求;
  • 4xx:客户机错误,表示请求消息中包含语法错误信息或服务器无法完成客户机请求;
  • 5xx:服务器错误,表示服务器无法完成合法请求;
  • 6xx:全局故障,表示任何服务器无法完成该请求;

响应消息整体格式如图:

其中:起始行格式:sip协议版本+响应返回码+描述性短句

响应消息是从100 - 699的返回码,分别表示不同的意义。

SIP 头

用来传递消息属性和修改消息意义。它们在语法和语义上与 HTTP 头域相同(实际上有些头就是借自 HTTP ),并且总是保持格式: <名字 >:<值>。

样例:

下表是描述的是SIP头格式中的各种Key值,可以大略分为4类:General通用头域,Request请求头域,Response响应头域,Entity实体域。

GeneralRequestResponseEntity
AcceptAuthorizationAllowContent-encoding
Accept-encodingContactProxy-authenticateContent-length
Accept-languageHide Retry-afterContent-type
Call-IDMax-forwardsServer
ContactOrganizationUnsupported
CseqPriorityWarning
DateProxy-authorizationWWW-authenticate
EncryptionProxy-require
ExpiresRoute
FromRequire
Record-routeResponse-key
TimestampSubject
ToUser-agent
Via

消息体

用于描述被初始的会话(例如,在多媒体会话中包括音频和视频编码类型,采样率等)。消息体能够显示在请求与响应中。

SIP 清晰区别了在 SIP 起始行和头中传递的信令信息与在 SIP范围之外的会话描述信息。可能的消息体类型就包括本文将要描述的SDP会话描述协议、还有基于xml的消息体。

GB28181 免费测试工具: https://download.csdn.net/download/JUST_DO_1122/88366062

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值