TCP congestion control is the primary enabler for the coexistence of multiple application flows on a single link. It is designed to achieve long-term fairness between the multiplexed flows in a fully distributed manner. However, long-term fairness between TCP flows does not always translate into Quality-of-Experience (QoE) fairness between the users of the Internet applications that generate those flows. Many applications today exhibit traffic patterns that are far different from those that originally motivated the emphasis on long-term fairness and so end up being under-served by traditional congestion control. We explore the idea of dynamically adjusting the parameters that control the congestion control algorithm of the TCP source to the QoE needs of each type of traffic. This approach preserves the distributed nature of TCP and resides entirely within the transport layer of the application server: the transport client, the application layer, and the link layer are not affected. We implement an instance of our Application-Aware TCP concept in the Linux kernel and show that it improves the response time of web browsing and the video quality of adaptive video streams without negative impact on background traffic.