SIP协议学习(1)

协议起源

  • SIP(Session Initiation Protocal)成为会话发起协议,是一种实现实时通信应用的信令协议。所谓的会话指的是用户之间的数据交换。在SIP协议中数据可以是不同类型的数据,例如文本数据、经过数字化处理的音视频数据,所以具有很大的灵活性。
  • SIP协议是由IETF组织实现的协议,在实现这个协议的时候,IETF很大程度上借鉴了其他广泛存在于Internet中的协议,例如HTTP、SMTP等协议。这些协议都是基于文本的编码形式,SIP很好的继承了这一点,这也是SIP协议和音视频其他现有标准比最大的特点之一。

协议进展

可以对语音进行优化,并且由于它的可编程性,在移动业务面临灵活性和多样性的变化时也具有了良好的保障。

功能

SIP可以用来生成、修改和终结一个或者多个参与者之间的会话。这些会话可以是多媒体会议、电话呼叫或者多媒体发布等。会话中的成员可以通过单播或者多播的网络进行通信。并且具备了以下功能:

  • 名字翻译和用户定位:无论被呼叫方在哪里都确保呼叫到被呼叫方、执行任何描述信息到定位信息的映射,确保呼叫的本质细节被支持。
  • 特征协商:它允许与呼叫有关的组在支持的特征上达成一致,但并不是所有各方都可以支持相同级别的特征,例如视频。
  • 呼叫参与者管理:呼叫中参与者可以引入其他的用户、加入呼叫或者取消其他用户的链接。
  • 呼叫特征改变:用户可以改变呼叫过程中的呼叫特征,例如一个语音通话,在呼叫过程中用户可以开启视频功能,也就是说一个加入呼叫的第三方为了加入该呼叫可以开启不同的特征。

特点

  • 包容性:可以用来建立音视频通话、多方通话也可以用来传输及时消息和文件。
  • 可扩展性:SIP处于不断丰富的过程当中,在保持核心机制简洁的同时,建立了强大的扩容机制。扩充主要是在传递的消息上做文章,消息分为基本的三个部分:消息类型、消息头和消息体,这三个部分都可以扩充,并且由于基于文本的形式,扩充工作十分方便。

SIP基本组成

按照逻辑功能区分,SIP系统由4种元素组成:用户代理、代理服务器、重定向服务器以及注册服务器。

  • 用户代理:用户代理分成两个部分 客户端(UAC)负责发起呼叫;用户代理服务器(UAS)负责接收用户端的呼叫并做出响应。二者组成了用户代理存在于用户的终端中。可以按照状态分为有状态代理和无状态代理。
  • 代理服务器:负责接收用户代理发来的请求、根据网络策略将请求发给相应的服务器,并根据收到的应答对用户做出响应。
  • 重定向服务器:用于在需要时将用户新的位置返回给呼叫方、呼叫方可以根据新的获取位置进行重新呼叫。
  • 注册服务器:接收和处理用户端的注册请求,完成用户地址的注册。

例:一个SIP的Register请求的消息头
Session Initiation Protoacal
  Request-Line REGISTER sip:115.aa.aa.aa:5060 SIP/2.0
  Message Header
     Via:SIP/2.0/UDP 10.240.80.69:59531;branch=z9hG4bK-524287-1—671b073f870cfe63;rport
     Max-Forwards:70
     Contact: <sip:1008@ 10.240.80.69:59531;rinstance=b22023be9ce02608>
     To:“1008”<sip:1008@ 115.aa.aa.aa:5060>
     From: “1008”<sip:1008@ 115.aa.aa.aa:5060>;tag=9a71ed3c
     Call-ID: 84253M2Q3MDQyZDY0Y2I2NTg1MGE3ZTExODQ0ODIyNDNkYTE
     CSeq: 1 REGISTER
     Expires: 3600
     Allow: SUBSCRIBE, NOTIFY, INVITE, ACK, CANCEL, BYE, REFER, INFO, OPTIONS, MESSAGE
     User-Agent: X-Lite release 4.9.8 stamp 84253
     Content-Length: 0

  • Via:给出了请求消息迄今为止的路径
  • contact:给出一个URL,用户可以与此URL建立进一步的通信
  • To:所有消息中必须有To字段,此字段给出了该请求的接收方
  • From:所有消息中必须有From字段,此字段给出了该请求的发起方
  • Call_id:用于唯一标识特定邀请或者某个客户机的注册请求,一个多媒体会议可以产生多个Call_id进行不同的呼叫。
  • Cseq:用于标识服务器发出的不同请求,如果Call_id相同,那么Cseq值必须不同。
  • Expires:给出了消息内容的截止的日期和时间
    Content-Length:代表消息体的长度
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值