1. A system for providing network communications, the system comprising: a TCP/IP stack module stored in memory and executed by a processor to: receive application data in a data flow, inform a communications scheduler module that the data flow has data to be transmitted over a network, and generate at least one data packet for the data flow from the application data to be transmitted over the network, when directed by the communications scheduler module; the communications scheduler module stored in memory and executed by the processor to: determine the capacity of a path, select a suitable path, prioritize data flows for the selected path based on the TCP/IP stack module informing the communications scheduler module which data flows have data to be transmitted, select a data flow for the selected path, and direct the TCP/IP stack module to generate the at least one data packet for the data flow from the application data in the selected data flow, buffering of the at least one data packet from the application data not being required at the communications scheduler module; and a communications interface module stored in memory and executed by the processor to transmit the at least one data packet for the data flow via the selected path at an optimal transmission rate, wherein the data flow is transmitted over the selected path without waiting for lost packets or acknowledgements to indicate network congestion.