Confirmed traffic is ack’d with a header bit, the port is irrelevant, but the port has to be one that is legal for the packet as a whole. An ack is only contextually tied to the uplink it is acking by time, nothing else is necessarily going to match.
An application port number should really only be used if the packet contains an application payload to be delivered to that port.
Network housekeeping messages that don’t have an application payload are sent on port 0, which may show as null in some places that are either expecting an application port, or falling victim to protocol buffer’s habit of omitting default values, which tend to leave them re-parsed as null.
An end device should recognize an ack delivered in any legal packet. The same goes for MAC command traffic, which can be in the fopts of a packet containing application traffic, or be in the payload of a port 0 network management packet.