def _send_ack(self, ip, port, packet, update_timestamp=True):
        """
        Send an ack packet

        :param ip: Ip to send to
        :type ip: str
        :param port: Port to send to
        :type port: int
        :param packet: Packet to be acknowledged
        :type packet: APPMessage
        :param update_timestamp: Should update timestamp to current
        :type update_timestamp: bool
        :rtype: None
        """
        # TODO: maybe wait a bit, so the ack could get attached to another
        # packet
        ack = APPMessage(message_type=MsgType.ACK)
        ack.header.ack_sequence_number = packet.header.sequence_number
        self._send_packet(
            ip, port, ack,
            update_timestamp=update_timestamp, acknowledge_packet=False
        )
Send an ack packet

        :param ip: Ip to send to
        :type ip: str
        :param port: Port to send to
        :type port: int
        :param packet: Packet to be acknowledged
        :type packet: APPMessage
        :param update_timestamp: Should update timestamp to current
        :type update_timestamp: bool
        :rtype: None