Most data applications are built on top of a TCP, since TCP provides end-to-end reliability via retransmissions when IP packets are missing. TCP was originally designed for wired networks, where packet loss was due to network congestion, and consequently, the TCP window size was adjusted upon detection of the loss. However, packet loss within wireless networks is mostly due to bad radio conditions, and not
network congestion. Errors in the air-link are often caused by several factors e.g., interference from other sources, fading due to mobility, or scattering due to a large number of reflecting surfaces [1]. The performance metric of TCP in a cellular environment is the average throughput, which is the same as wired networks. The average throughput in the cellular case does not only depend on network congestion,
but may also be attributed to other factors, such as the bit error rate of the wireless medium, the cell handoff time, and the cell resident time [2]. TCP is typically used in wired communication systems with very small error probabilities. However, the error characteristics of wireless channels differ significantly from that of wired channels. Therefore