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 wireless networks, improvements have been proposed in the literature to help TCP to differentiate between the different types of losses. TCP assumes a relatively underlying network where most packet losses are due to congestion. In a wireless network, however packet losses will occur more often due to unreliable wireless links than due to congestion. When using TCP over wireless links, each packet loss on the wireless link results in congestion control measures being invoked at the source. This causes severe performance degradation. If there is any packet loss in wireless networks, then the reason for that has to be found out and then only congestion control mechanism has to be applied. This paper includes an analysis of the most important issues of TCP over wired and wireless networks.