est Call-ID Max-Forwards SIP: Understanding the Session Initiation Protocol Stateful proxy 200 OK (end to end) 200 OK (end to end) ACK (end to end) ACK (end to end) 410 Gone (hop by hop) 410 Gone (hop by hop) ACK (hop by hop) ACK (hop by hop) Figure 4.2 End-to-end versus hop-by-hop acknowledgments. A stateful proxy receiving an ACK message must determine whether or not the ACK should be forwarded downstream to another proxy or user agent or not. That is, is the ACK a hop-by-hop ACK or an end-to-end ACK? This is done by comparing the branch ID for a match pending transaction branch IDs. If there is not an exact match, the ACK is proxied toward the UAS. Otherwise, the ACK is for this hop and is not forwarded by the proxy. The call flows of Chapter 10 show examples of both types of ACK handling. An example ACK containing SDP contains: ACK sip: laplace@mathematica.org SIP/2.0 Via: SIP/2.0/TCP 128.5.2.1:5060;branch=z9hG4bk183 Max-Forwards: 70 To: Marquis de Laplace k<sip:laplace@mathematica.org>;tag=90210 From: Nathaniel Bowditch<sip:n.bowditch@salem.ma.us>;tag=887865 Call-ID: 152-45-N-32-23-W@128.5.2.1 CSeq: 3 ACK Content-Type: application/sdp Content-Length: 143 o=bowditch 2590844326 2590944532 IN IP4 salem.ma.us s=Bearing C=IN IP4 salem.ma.us m=audio 32852 RTP/AVP 0 a=rtpmap 0 PCMU/8000 The mandatory and optional headers in an ACK message are shown in Table 4.5. SIP Request Messages Table 4.5 Mandatory Headers in an ACK Request Call-ID Max-Forwards 4.1.5 CANCEL The CANCEL method is used to terminate pending searches or call attempts. It can be generated by either user agents or proxy servers provided that a 1xx response containing a tag has been received, but no final response has been received. A user agent uses the method to cancel a pending call attempt it had earlier initiated. A forking proxy can use the method to cancel pending parallel branches after a successful response has been proxied back to the UAC. CANCEL is a hop-by-hop request and receives a response generated by the next stateful element. The diffe