上传者: 26777941
|
上传时间: 2022-05-24 17:41:05
|
文件大小: 822KB
|
文件类型: PDF
17.1 客户端事务
客户端事务是通过维持一个状态机来提供服务的。
TU 和客户端事务通过一个简单的接口进行通讯。当 TU 希望初始化一个新的事务,它
创建一个客户端事务并且通过设置 ip 地址,端口和 transport 来把一个 SIP 请求交给它
传送。然后客户端事务开始执行它自己的状态机。合乎规格的应答会从客户端事务传送
给 TU。
总共有两种类型的客户端事务状态机,根据 TU 传递的请求的方法不同来区分的。一个
用于处理 INVITE 请求。这种状态机对应的是一个 INVITE 客户事务。另外一个是用来
处理其他所有的非 INVITE 请求的。它对应的是非 INVITE 客户事务。对于 ACK 来说,
是不存在客户事务的。如果 TU 希望送一个 ACK 请求,它直接交给通讯层进行通讯处
理。
INVITE 事务和其他事务是不同的,因为它的时间周期很长。通常,对于 INVITE 请求
的应答来说,都需要人的参与,这样会导致在应答 INVITE 请求之前会有很长的延时。
在三方握手(人,两方机器)的时候也会有很长的延时。在另一方面,其他请求的响应
都是很快就完成的。因为其他非 INVITE 请求事务是双方的握手,TU 能够立刻对非
INVITE 请求作出应答。
17.1.1 INVITE 客户事务
17.1.1.1 INVITE 事务概述
INVITE 请求包含了一个三方的握手。客户端事务发送一个 INVITE,服务端事务回送一
个应答,客户端事务发送一个 ACK。对于非可靠传输(比如 UDP),客户端事务每隔
T1 重发请求,每次重发后间隔时间加倍。T1 是一个估计的循环时间(round-trip time,
RTT),缺省设置成为 500ms。几乎所有的事务定时器都以 T1 为单位,并且调整 T1 的
值也就调整了那些定时器的值。请求不会在可靠的通讯协议上重新发送。在接收到 1xx
应答以后,重发机制完全停止,并且客户端等待更进一步的应答。服务端事务可以发送
附加的 1xx 应答,这个应答并非由服务端事务可靠传输。 后,服务端事务会发送一个
终结应答。对于非可靠的传输协议,应答会间隔时间来重发,对于可靠的传输协议,它
只发送 1 次。对于客户端事务所接收的每一个终结应答,客户端事务都发送一个 ACK,
用于终止应答的重发送。
17.1.1.2 正式的描述
INVITE 客户端事务的状态机在图 5 中展示。初始状态,”calling”,必须保证 TU 是用
INVITE 请求来初始化一个新的客户端事务。客户端事务必须把请求发送到通讯层来进
行发送(18 节)。如果使用的是非可靠传输的通讯层,客户端事务必须启动一个定时器
A 并且由缺省值 T1 组成。如果是一个可靠的通讯协议,那么客户端事务不应当启动定