1. A method for congestion control of a communication session over a network comprising: determining an estimation of the network condition by a computing device; determining a congestion window for the communication session by said computing device based on a number of parallel virtual communication sessions that will fully and fairly utilize the bandwidth of the network and a congestion control mechanism of the communication session; and setting the congestion window for the communication session to the determined congestion window by said computing device; said method further comprising determining the number of parallel virtual communication sessions based on the determined estimation of the network condition and a congestion control mechanism; wherein the number of parallel virtual communication sessions is periodically updated according to: N t + 1 = N t + 1 , Q < α ⁢ ⁢ C ⁢ ⁢ wnd N t N t + 1 = N t , Q = α ⁢ C ⁢ ⁢ wnd N t N t + 1 = max ⁢ ⁢ ( 1 , N t - 1 ) , Q > α ⁢ C ⁢ ⁢ wnd N t where, N t+1 is the updated number of parallel virtual communication sessions; N t is the current number of parallel virtual communication sessions; Q is the average queue length; α is a parameter selected to be between 0 and 1; and Cwnd is the congestion window; and the congestion window is determined according to: Each ⁢ ⁢ RTT ⁢ : ⁢ ⁢ Cwnd ← Cwnd + N t Each ⁢ ⁢ Loss ⁢ : ⁢ ⁢ Cwnd ← Cwnd - 2 3 ⁢ N t + 1 ⁢ Cwnd .