事务(Transaction)是SIP(Session Initiation Protocol)协议中的核心概念,它允许终端设备之间建立和管理通信会话。通过请求和响应的交互,SIP事务确保了通信的可靠性、一致性和灵活性,使得多媒体通信成为可能。这对于实现语音通话、视频通话、实时消息传输等各种通信应用都至关重要。
事务的核心是状态机,通过状态机来管理其状态和进展,用于建立、修改或终止会话。在RFC3261中定义了四种事务类型,分别是invite client transaction(ICT),invite server transaction(IST),NON-invite client transaction(NICT),NON-invite server transaction(NIST)。
INVITE Client Transaction(INVITE 客户端事务):
[RFC3261][Page 127][Figure5]: INVITE client transaction
角色:INVITE 客户端事务是指发起一个 SIP INVITE 请求的一方的角色,通常是发起呼叫的一方。
功能:发送 INVITE 以建立通话,并接收来自服务器的响应。
生命周期:INVITE 客户端事务的生命周期包括发送 INVITE 请求、等待初始响应(如 100 Trying、180 Ringing)、等待最终响应(如 200 OK 或 4xx、5xx、6xx 类型的响应),以及可能的 ACK 请求以确认通话建立。
INVITE Server Transaction(INVITE 服务器事务):
[RFC3261][Page 135][Figure7]: INVITE server transaction
角色:INVITE 服务器事务是接收和响应 SIP INVITE 请求的一方的角色,通常是被呼叫的一方。
功能:接收 INVITE 请求、发送初始响应(如 100 Trying、180 Ringing)、等待最终响应(如 200 OK 或 4xx、5xx、6xx 类型的响应),并等待可能的 ACK 请求。
生命周期:INVITE 服务器事务的生命周期在确认通话建立之前完成。它通常用于响应 INVITE 请求并建立通话。
NON-INVITE Client Transaction(非 INVITE 客户端事务):
[RFC3261][Page 132][Figure6]: non-INVITE client transaction
角色:非 INVITE 客户端事务用于处理非 INVITE 类型的 SIP 请求,如 REGISTER(用于用户注册)、SUBSCRIBE(用于订阅事件通知)等。
功能:发送非 INVITE 请求,并接收服务器的响应。
生命周期:非 INVITE 客户端事务的生命周期包括发送请求、等待初始响应和处理可能的重试。这些事务通常与建立通话无关,而是用于其他 SIP 功能,如注册和事件通知。
NON-INVITE Server Transaction(非 INVITE 服务器事务):
[RFC3261][Page 139][Figure8]: non-INVITE server transaction
角色:非 INVITE 服务器事务用于接收和响应非 INVITE 类型的 SIP 请求。
功能:接收非 INVITE请求、发送初始响应,并等待可能的重试或最终响应。
生命周期:非 INVITE 服务器事务的生命周期在响应请求之前完成。这些事务通常用于处理非 INVITE 请求,如注册响应和事件通知。