1. A method for communicating data, the method including: performing by at least one processing device: prioritizing data by assigning a priority to the data, wherein the prioritization occurs at least one of: in a transport layer of a network communications protocol stack of a data communication system, and at a top of the transport layer of the network communications protocol stack of the data communication system; analyzing a network to determine a status of the network; selecting a mode of the data communication system based upon the status of the network; changing rules for assigning priority to the data based upon the mode of the data communication system; and communicating the data based at least in part on the priority of the data and the status of the network, wherein the data is communicated at a transmission rate metered based at least in part on the status of the network.