SIP协议学习笔记(2)——对话

1.概念

会话是SIP协议中一个重要的概念,它不同于会话,它是发生在两个UA之间点对点通讯。通俗来说,就像是两个人说话,举个例子:

A:Hi,我叫Tommy,你好!

B:我叫Elaine,很高兴认识你

A:不知道今晚你有没有时间,请你喝咖啡

B:我有时间。

A:那就今天晚上7点在华语的星巴克

B:嗯,好的

A:那就这么定了,晚上见。

B:晚上见。

通常是有一方发起对话,当对方有没有回应,或者回应是“不好意思我不认识你”、“我现在忙没时间”时对话就无法开始;如果对方回应是“稍等”,那对话就处于早期等待开始的状态;如果对法给出回应是“你好”的时候表示对方愿意与你对话,对话就正式开始了。对话的结束通常是一方说“再见”之类的话,或者对方说完“稍等”之后又说“今天谈不了了”,这样对话就算结束了。对一个对话来说对话的双方需要知道自己在跟谁说话,要通过怎样的媒介对话(比如电话、QQ等)对话的顺序等信息,这样一个人同时与多个人对话(比如聊QQ)时也不会出现混乱。两个UA之间的对话也是一样的道理,对话需要有一个开始的标志和结束的标志,中间是对话的内容,对话的双方要保持对话的状态直到对话结束。

2.状态转换

对话包括三种状态:早期(early)、确认(confirmed)、关闭(closed)。

对话由包含特定方法的请求的无失败的应答来创建,具体来说一个对于INVITE请求的101-199应答或者2xx应答会创建一个应答。

  • 一个请求的非终结应答(101-199)将会创建一个早期(early)对话。
  • 一个请求的2xx终结应答将会使一个对话进入确认(confirmed)状态,进入确认状态的对话可以发起一个新的事务(transaction)。
  • 处于早期状态的对话收到该对话的请求对应的非2xx终结应答时会进入关闭(closed)状态,处于确认状态的对话中发送一个BYE请求后,对话也会进入关闭状态

image

3.对话信息

前面提到对话的双方UA需要为对话保持一个状态,也就是对话的信息,这些信息是UA用来区别不同对话的,这些信息在同一个UA端唯一的对应一个对话,但是对话的两个UA对于同一个对话的描述信息却不一定是一样的,实际上在SIP协议中对话双方对于对话的描述信息是不同的。参与对话的UA需要用一个dialog-ID来唯一确定一个对话,这个dialog-ID是由Call-ID和remote-tag和local-tag组成的,同时需要知道双方的地址,即需要一个local-uri和remote-uri,需要知道对话的顺序,那就需要一个remote-CSeq和local-CSeq来标记对话内容的顺序等。

转载于:https://www.cnblogs.com/wangxuchu/archive/2012/10/04/2693373.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值