D.1.1 提供“最多一次”功能
- 当协议消息在UDP上进行传输时,可能会发生消息丢失。如果发送的消息无法获得及时响应,则可能导致命令重复发送。对重发的消息,协议处理进程必须遵循 “最多一次”机制。
- 协议实体应当在各自的内存中保留两个列表, 一个用来记录执行完最近所接收到的TransactionRequest后返回的TransactionReply,另一个用来记录当前需要处理的事务。当协议实体接收到一个TransactionRequest 消息时, 它将接收到消息的TransactionID 与最近为具有相同MID 发出的TransactionReply响应的TransactionID相比较。两者经过比较后,如果发现TransactionID相同,则接收方不应执行接收到的事务,而只是重复发送TransactionReply响应消息。如果发现TransactionID不相同,则接收方将该接收到的TransactionRequest消息与需要处理的事务列表相比较。如果在列表中查找到TransactionID相同的消息,则表明此TransactionRequest消息为重复发送,接收方不应执行此TransactionRequest消息(参见D.1.4中TransactionPending发送机制)。
协议处理机制规定了一个长定时器值(LONG-TIMER),LONG-TIMER设定的时间值应该大于一个事务的最大持续时间,该时间还应该考虑事务重复最大次数、重复定时器的最大值以及分组在网络中的最大传输时延。 - 当协议实体发出响应消息后,如果LONG-TIMER超时,或者已接收到来自对等实体包含“ResponseAcknowledgement Parameter”参数的响应证实消息,则协议实体重复发送的TransactionReply响应消息应被丢弃。
D.1.3 计算重传定时器
<