Yasin,
1. The Request URI of the ACK must match the Contact of the other end (the Contact URI in the 200 OK), was you correctly surmised. This includes all attributes of the Contact URI, including port.
2. The ACK you pasted needs to contain Route: headers whose values match the Record-Route headers in the 200 OK. This is not the case in the ACK you pasted.
3. The construction of the ACK is entirely up to the calling User Agent; if it is malformed, this is not something Kamailio can fix.
-- Alex