It has long been common practice to split the functionality of computer networks into distinct layers. In the context of the most common networks today, there are five such layers, bracketed by hardware at the lowest layer and application software at the highest. While this modularization has generally been a huge success story for the field, networks have now been subject to decades of changes in terms of both technologies and use cases. Moreover, we have accumulated significant hindsight.
This dissertation examines the three infrastructural layers that fall between hardware and applications, and in each case suggests an improvement. A new approach to resiliency is explored at the link and network layers. In the former case, the result eliminates the need for the typical spanning tree based approach. In the latter, it can radically improve performance during times of routing protocol convergence, eliminating the need for things like precomputed backup paths. At the transport layer, an approach to server load balancing is discussed, which avoids the fate-sharing problem of stateful load balancers as well as the consistency problems of stateless ones. Finally, this dissertation argues that there is a layer "missing" from our common layered model, the inclusion of which is a vital enabler for the continued evolution of the Internet.