下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

你需要知道的SIP协议概念

作者:课课家教育     来源: http://www.kokojia.com点击数:2528发布时间: 2019-02-20 09:59:40

标签: SIP信令协议多媒体通信

  SIP协议是一个多媒体通信协议,由IETF制定,中文名为会话初始协议。对于SIP协议,你所知道的概念是什么呢?接下来看看小编写的这篇文里面的理解吧。

  SIP是一种信令协议,用于初始、管理和终止网络中的语音和视频会话,具体地说就是用来生成、修改和终结一个或多个参与者之间的会话。可以配置和管理任何类型的 peer-to-peer 通信会话, 但并不关心媒体类型 (语音、短信、游戏、视频等)。

  SIP与负责语音质量的资源预留协议(RSVP) 互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。

  1.SIP协议的分层结构

  SIP是一个分层结构协议,它的行为根据一组平等独立的处理阶段来描述,每一阶段之间只是松耦合。

  SIP的最底层是语法和编码。它的编码使用增强Backus-Nayr形式语法(BNF)来规定。

  第二层是传输层,定义了网络上客户机与服务器发送请求和接收响应的方式,所有的SIP元素包含传输层。

  第三层是事务层。事务是SIP的基本元素。事务层具有客户机组成部分(称为客户机事务)和服务器组成部分(称为服务器事务),一个事务由客户机事务发送给服务器事务的请求(使用传输层),以及服务器事务发送对应该请求的响应组成。

  事务层之上的层为事务用户(TU)。当一个TU希望发送请求时,生成一个客户机事务实例并向它传递请求和IP地址、端口和用来发送请求的传输机制。

  2.SIP几个重要参数

  1)如下三个值相同代表同一个dailog(会话)

  Call-id

  Form tag

  To tag

  2)branch值相同,代表同一个transaction(事务)

  3)cseq

  其生存域是一个会话。用于将一个会话中的请求消息序列化,以便用于重复消息、“迟到”消息的检测,响应消息与相应请求消息的匹配等。包含两部分:一个32位的序列号,一个请求方法。

  通常在会话开始时确定一个初始值,其后再发送消息时将该值加1。主叫方与被叫叫各自维护自己的CSeq序列,互不干扰,这有点像TCP/IP中IP包的序列号。

  一个响应消息有与其对应的请求消息相同的CSeq值。

  【注意】SIP中CANCEL消息与ACK消息总是比较特殊。CANCEL消息的CSeq中的序列号总是跟其要cancel的消息的相同,而对于ACK消息:如果它所要确认的是INVITE请求的non-2xx响应,则ACK消息的CSeq中的序列号与对应INVITE请求的相同;如果是2xx响应,则不同,此时ACK被当作一个新的事务。

  3. Dialog

  Dialog:对话,一个对话是持续一段时间的两个UA之间的端到端的SIP关系。一个对话由SIP消息建立,就像用2xx响应INVITE请求。我们用Call identifier,local tag(本地tag),remote tag(对方tag)来标志一个对话,一个对话在RFC 2543中被正式叫做CALL LEG.

  Dialog(会话) 会话是两个UAs(user agent) 之间持续一段时间的端到端(peer-to-peer)的SIP 关系. 一个会话由一个Call-ID, 一个local tag 和 一个remote tag来标识.会话过去也叫做 "call leg".

  Call-id,local tag,remote tag 三者值相同,代表同一个dailog

  4.Transaction(事务)

  事务发生于客户端和服务器端之间,包含从客户端发出请求给服务器,到服务器响应给客户端的最终消息(non-1xx message)之间的所有消息. 如果请求是一个"Invite"消息,并且最终的响应是一个non-2xx消息,那么该事务包含一个"Ack"响应消息.如果服务器的响应是一个2xx消息,那么,随后的ACK是一个单独的事务.

  branch参数含义 branch值相同代表同一个Transaction事务系列

  Branch是一个事务ID(Transaction ID),用于区分同一个Client所发起的不同Transaction。

  对于遵循RFC3261规范的实现,这个branch参数的值必须用magic cookie”z9hG4bK”打头. 其它部分是对“To, From, Call-ID头域和Request-URI”按一定的算法加密后得到。

  根据本标准产生的branch ID必须用”z9h64bK”开头。这7个字母是一个乱数cookie(定义成为7位的是为了保证旧版本的RFC2543实现不会产生这样的值),这样服务器收到请求之后,可以很方便的知道这个branch ID是否由本规范所产生的(就是说,全局唯一的)

  5.SIP的呼叫方式

  SIP支持三种呼叫方式:

  (1)由客户端像服务器端直接呼叫

  (2)由UAC在重定向服务器的辅助下进行重定向呼叫

  (3)由代理服务器代表UAC向被叫发起呼叫

      SIP把一个呼叫分为三个阶段:呼叫建立,呼叫保护,呼叫释放。

你需要知道的SIP协议概念_SIP_信令协议_多媒体_通信_课课家 

1 SIP的呼叫

  首先要建立呼叫信道,即一个TCP/UDP连接。因此,由服务器的IP地址和端口号建立客户端与服务器端之间的呼叫信令道。然后,客户端向服务器端发送消息INVITE消息,如果服务器段同意呼叫,发送(2),(3)消息。其中,1xx状态码表示请求已收到,正在处理中,200表示请求已经完成。这时,如果客户端突然不想参加此次会话,可以向服务器发送BYE。

  上图中3xx相应只会在用重定向服务器出现的时候,表示对请求的重定向处理,4xx响应表示客户端的请求有语法错误不能被服务器执行。5xx响应表示服务器出错,不能执行合法请求。6xx响应表示所有服务器出错,不能执行合法请求。当客户接受3xx,4xx,5xx响应后,可根据响应中的消息修改消息,并重发请求。当客户端接受6xx响应后,结束此次呼叫。

  6.SIP协议的体系结构

  SIP协议中的组成元素包含两个要素:SIP 用户代理(User Agent,UA)和 SIP 用户服务器(User Server,US)。用户代理是呼叫的终端要素,而用户服务器是处理与多个呼叫相关联信令的网络设备。在理想情况下,两个终端间的通信并不需要用户服务器的参与即可完成。但是现实总是比理想残酷,因为各个网络运营商、服务提供者希望对其网络的业务有所了解,固需要中间用户服务器的参与。

  图2所示是典型的网络结构,称之为“SIP 梯形”。SIP 终端构成通信的端点,它们负责发送和接受 SIP 请求和响应,同时它们也是多媒体流的终点。UA 可能是终端上的一个应用或者是专门的硬件设备。

  用户代理本身又可分为:客户机端(User Agent Client,用户代理客户机)和服务器端(User Agent Server,用户代理服务器)。用户代理客户机是发起请求的主叫应用;客户代理服务器是通话的被呼叫端,主要负责接受、重定向或者拒绝请求,给到来的请求发送响应。用户代理在发起呼叫的时候它是用户代理客户端,而当被呼叫的时候它是用户代理服务器端。

  用户服务器是SIP消息在到达其最终目的地前所经过的逻辑节点,这些服务器用于对请求进行路由和重定向,既进行名字解析和用户定位。主要包括以下几种服务器:

  有状态代理服务器(Proxy Server):负责接收和转发SIP请求。可解析并重构SIP消息的部分信息。但是这些重构不会影响请求或会话的状态;

  无状态代理服务器(Stateless Server):其负责将上游的请求向下游转发和将下游的响应向上游转发,其不纪录请求或会话的状态;

  重定向服务器(Redirect Server):其负责将请求的地址映射为新地址;它对请求进行重定向但是不参与事务的处理。

SIP典型的网络结构 

2 SIP典型的网络结构

  对于上述的这些内容,大家有什么困惑或者不懂的吗?如果有可以给小编留言提出你的疑问哦,小编必定会认真地与大家交流互动的,请继续支持小编支持我们课课家,谢谢!

赞(28)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程