【发布时间】:2016-08-29 12:02:32
【问题描述】:
这个问题是关于 SIP(会话发起协议)中的 ACK 请求。引用 RFC-3261 - 18.1.1 发送请求
If an element sends a request over TCP because of these message size
constraints, and that request would have otherwise been sent over
UDP, if the attempt to establish the connection generates either an
ICMP Protocol Not Supported, or results in a TCP reset, the element
SHOULD retry the request, using UDP.
这对于 INVITE 和除 ACK 之外的其他非邀请请求看起来没问题。以下是我认为上述陈述可能不适用于 ACK 的几点。
-
ACK 只是一个请求而不是事务。所以 SIP 事务状态机一定不适用于 ACK 请求。由于状态机是唯一谈论重传的地方,所以 18.1.1 不适用于 ACK 请求。引用 3261 - “17.1 Client Transaction” - 支持上述论点。
There are two types of client transaction state machines, depending on the method of the request passed by the TU. One handles client transactions for INVITE requests. This type of machine is referred to as an INVITE client transaction. Another type handles client transactions for all requests except INVITE and ACK. This is referred to as a non-INVITE client transaction. There is no client transaction for ACK. If the TU wishes to send an ACK, it passes one directly to the transport layer for transmission. 只有在下一个 B 方重传最终响应时才能重传 ACK。
Q:- 我的假设是否正确,SIP ACK 请求在收到传输错误(如连接错误、ICMP 错误)时无法重传?
引用 3261 - “17.1 客户交易” -
If the TU wishes to send an ACK, it passes one
directly to the transport layer for transmission.
问:- TU希望是什么意思?这是否意味着 TU 可以随时发送,还是意味着只要有最终响应,就只有 TU 发送?
问候, 苏丹苏
【问题讨论】:
标签: sip