In the graduate networking class today, we were discussing two papers about TCP. One was Congestion Avoidance and Control (CAC) and the other was Simulation-based Comparisons of Tahoe, Reno, and SACK TCP (SCTRS). CAC was written by Van Jacobson, the inventor of TCP. I find the history of TCP very interesting because it is a pretty elegant solution to a very hard problem. The original Tahoe implementation has very deterministic behavior in any kind of situation. For instance, when a packet is lost, you can expect it to act the same regardless of the number of packets loss. The same can't be said for TCP Reno. That really tells you how solid of an algorithm it is. Modern improvements, such as SACK, seem to make it a little more efficient.
So, where can improvements be made? In class, we were discussing another TCP implementation called Vegas, one that uses sending rates rather than window sizes to control congestion. It seems to me like the internet congestion control algorithms seem to work just fine. The only things causing congestion on the internet are P2P networks and spam, but those are application layer issues. I’ve never heard anyone complain about TCP. It provides reliability and congestion control that seem to be working. What more can we ask that layer to do? Maybe transport is where security should go instead of the network or application layers.