Sip协议中Call, Dialog, Transaction和Message之间的关系[转]

如果你对Sip协议中Call, Dialog, Transaction和Message之间的关系感觉到迷惑,那么,那么我可以告诉你,你并不孤单,因为大多数初学者对于这些名词之间的关系都会感到疑惑.

Messages(消息) 消息是在服务器和客户端之间交换的独立文本, 有两种类型的消息,分别是请求(Requests)和响应(Responses).


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

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

Call(呼叫) 一个被叫的的呼叫由它所有参与的会话组成. 我认为一个呼叫就是一个会话(Session)

注: Dialog和Session都翻译成了会话,但两者显然不同.

下面的示意图清晰的显示了它们之间的关系
Sip_relation
(RINGING 是 1xx 响应,  OK是 2xx 响应)

caller呼叫callee的号码来建立一系列的会话(Dialogs),这些会话组成了一个呼叫(Call).

posted @ 2011-02-25 11:11  木瓜脑袋  阅读(1791)  评论(0编辑  收藏  举报