The Transmission Control Protocol (TCP) was designed to provide reliable end-to-end delivery of data over unreliable networks. In practice, most TCP deployments have been carefully designed in the context of wired networks. Ignoring the properties of wireless Ad Hoc Networks can lead to TCP implementations,with poor performance. In order to adapt TCP to Ad hoc environment, improvements have been proposed in the literature to help TCP to differentiate between the different types of losses. Indeed, in mobile or static Ad hoc networks losses are not always due to network congestion, as it is mostly the case in wired networks. In this report, we present an overview of this issue and a detailed discussion of the major factors involved. In particular, we show how TCP can be affected by mobility and lower layers protocols. In addition, we survey the main proposals which aim at adapting TCP to mobile and static Ad hoc environments. Index Terms Mobile Ad hoc networks, static Ad hoc networks, TCP, survey ,routing protocol, packet loss, routing failure, power constraint, cross layer. I. I NTRODUCTION Ad 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” networks 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 put on this new challenging wireless environment. For simplicity, in the following 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