IEEE Communications Surveys & Tutorials • Third Quarter 2005 22d hoc networks are complex distributed systems that consist of wireless mobile or static nodes that can freely and dynamically self-organize. In this way they form arbitrary, and temporary, "ad hoc" network topologies, allowing devices to seamlessly interconnect in areas with no pre-existing infrastructure. Recently, the introduction of new protocols such as Bluetooth [1], IEEE 802.11 [2], and Hyperlan [3] are making possible the deployment of ad hoc networks for commercial purposes. As a result, considerable research efforts have been made in this new challenging wireless environment. For simplicity, in this article we will use the term MANETs instead of mobile ad hoc networks, and SANETs instead of static ad hoc networks. Also we note that the term ad hoc networks will represent both mobile ad hoc networks (MANETs) and static ad hoc networks (SANETs).TCP (Transmission Control Protocol) [4] was designed to provide reliable end-to-end delivery of data over unreliable networks. In theory, TCP should be independent of the technology of the underlying infrastructure. In particular, TCP should not care whether the Internet Protocol (IP) is running over wired or wireless connections. In practice, it does matter because most TCP deployments have been carefully designed based on assumptions that are specific to wired networks. Ignoring the properties of wireless transmission can lead to TCP implementations with poor performance.In ad hoc networks, the principal problem of TCP lies in performing congestion control in case of losses that are not induced by network congestion. Since bit error rates are very low in wired networks, nearly all TCP versions nowadays assume that packet losses are due to congestion. Consequently, when a packet is detected to be lost, either by timeout or by multiple duplicated ACKs, TCP slows down the sending rate by adjusting its congestion window. Unfortunately, wireless networks suffer from several types of losses that are not related to congestion, making TCP not adapted to this environment. Numerous enhancements and optimizations have been proposed over the last few years to improve TCP performance over one-hop wireless (not necessarily ad hoc) networks. These improvements include infrastructure-based WLANs [5][6][7][8], mobile cellular networking environments [9,10], and satellite networks [11,12]. Ad hoc networks inherit several features of these networks, in particular high bit error rates and path asymmetry, and add new problems caused by mobility and multi-hop communications, such as network partitions, route failures, and hidden (or exposed) terminals. We note that the following TCP versions -Tahoe, Reno, Newreno, and Vegas -perform differently in ad hoc networks [13]. However, all these versions suffer from the same problem: the inability to distinguish between packet losses due to congestion and losses due to the specific features of ad hoc networks. For more details about TCP versions see the Appendix; for a survey of...