Many applications want to use TCP congestion control to regulate the transmission rate of a data packet stream. A natural way to achieve this goal is to transport the data packet stream on a TCP connection. However, because TCP implements both congestion and error control, transporting a data packet stream directly using a TCP connection forces the data packet stream to be subject to TCP’s other properties caused by TCP error control, which may be inappropriate for these applications. The TCP decoupling approach proposed in this thesis is a novel way of applying TCP congestion control to a data packet stream without actually transporting the data packet stream on a TCP connection. Instead, a TCP connection using the same network path as the data packet stream is set up separately and the transmission rate of the data packet stream is then associated with that of the TCP packets. Since the transmission rate of these TCP packets is under TCP congestion control, so is that of the data packet stream. Furthermore, since the data packet stream is not transported on a TCP connection, the regulated data packet stream is not subject to TCP error control. Because of this flexibility, the TCP decoupling approach opens up many new opportunities, solves old problems, and improves the performance of some existing applications. All of these advantages will be demonstrated in the thesis. This thesis presents the design, implementation, and analysis of the TCP decoupling approach, and its successful applications in TCP trunking, wireless communication, and multimedia streaming.