在《理解 SIP》一书中,他们说只对 INVITE 的响应发送 ACK,但在这个呼叫流中也有 BYE 的 ACK。
有人能向我解释一下这种现象吗?
]
]
答案1
呼叫流程图不正确。对 BYE 的响应应为 2xx;ACK 仅用于确认对 INVITE 的响应(如前所述)。请参阅RFC 3261更多细节。
通话结束时,Bob 首先断开连接(挂断)并生成 BYE 消息。此 BYE 直接路由到 Alice 的软电话,再次绕过代理。Alice 使用 200(OK)响应确认收到 BYE,这将终止会话和 BYE 事务。不发送 ACK - 仅在响应 INVITE 请求时才发送 ACK。对 INVITE 进行这种特殊处理的原因将在后面讨论,但与 SIP 中的可靠性机制、接听振铃电话所需的时间长度以及分叉有关。因此,SIP 中的请求处理通常分为 INVITE 或非 INVITE,指除 INVITE 之外的所有其他方法。有关会话终止的完整详细信息请参见第 15 节。