在RFC 3261定义了SIP:INVITE,以下是具体内容。
当UA客户端希望发起session,例如voice call 或video call时,UAC就可以发送INVITE request。INVITE request会要求服务器建立session,然后该请求由代理转发,最终到达一个或多个可能接受邀请的UAS。 UAS 可以通过发送 2xx response来接受INVITE,也就是说建立session。如果不接受INVITE,UAS可以根据场景发送 3xx、4xx、5xx 或 6xx response。
在发送final responses前,UAS 还可以发送provisional response(即1xx response),以告知UAC联系被叫用户的进度。
在可能收到一个或多个provisional response后,UAC就会收到一个或多个2xx responses或一个non-2xx final response。由于接收对 INVITE 的final response可能需要很长时间,为保证可靠性INVITE 会由Transaction user (TU) 按周期传输,直到收到单独的transaction ACK,则表明 UAC 已接收到 2xx。对 INVITE 和 ACK 消息的 2xx 响应的可靠性是端到端的。
因此一旦收到final response,UAC 需要为其收到的每个final response发送ACK。对于 300~699之间的final response,ACK的处理是在事务层完成,具体处理规则在RFC3261 section 1