In this paper, we consider the problem of weighted rate differentiation using purely end-to-end mechanisms. Existing approaches to solving the problem involve changes in the AIMD congestion control mechanism used by TCP. However, such approaches either do not scale well to large weights, or make impractical assumptions. We use a new multi-state transport layer solution called pTCP to achieve end-to-end weighted service differentiation. A pTCP flow of weight w consists of w TCP virtual flows that collectively achieve w times the throughput of a default TCP flow. pTCP scales significantly better than approaches that change the AIMD congestion control mechanism of TCP. On the other hand, pTCP achieves more effective service differentiation and incurs less host overhead than the simplest form of a multi-state solution using multiple TCP sockets through application striping. We substantiate our arguments through simulations, and testbed experiments based on a user-level implementation of pTCP.