This paper presents a sender-side TCP congestion control mechanism that improves both throughput and fairness in wired as well as wireless networks. A traditional windows-based congestion control scheme adjusts the transmission rate only when the TCP sender receives an acknowledgement message or it detects a transmission timeout. Therefore, competing flows with different packet roundtrip times experience throughput unfairness because a flow with a short packet roundtrip time increases the transmission rate more quickly than the others do. Moreover, the cumulative acknowledgement message induces burst traffic, which overloads the network. In addition, packet losses delay the packet transmission until the amount of date transmitted without acknowledgements from the receiver equals to the reduced congestion window size, and it degrades transmission performance. The proposed mechanism adjusts the transmission rate based on a timer maintained by the TCP sender. As the mechanism adjusts the transmission rate regardless of the reception of acknowledgement messages, it improves fairness among flows with different packet roundtrip time, and prevents burst traffic caused by the cumulative acknowledgement message. The mechanism has been implemented in the Linux platform, and experienced with various TCP variants in real environments. The experimental result shows that the mechanism improves both throughput and fairness in wired as well as wireless networks.