This paper covers some of the design decisions made in designing the internet protocols. Short but insightful. Here are some of the highlights:
The goal of the internet was to connect smaller networks:
The top level goal for the DARPA Internet Architecture was to develop an effective technique for multiplexed utilization of existing interconnected networks.
Note: Multiplexed in this context means to be able to use the same communication channel to send information from and to many different networks.
The design prioritized survivability of the network over other aspects because it was designed for military use:
since this network was designed to operate in a military context, which implied the possibility of a hostile environment, survivability was put as a first goal, and accountability as a last goal. During wartime. one is less concerned with detailed accounting of resources used than with mustering whatever resources are available and rapidly deploying them it-i an operational manner.
Survivability was improved by storing state on the client (fate sharing), rather than storing and replicating state across intermediate nodes. This simplified the design:
In some network architectures, this state is stored in the intermediate packet switching nodes of the network. In this case, to protect the information from loss, it must replicated. Because of the distributed nature of the replication, algorithms to ensure robust replication are themselves difficult to build, and few networks with distributed state information provide any sort of protection against failure. The alternative, which this architecture chose, is to take this information and gather it at the endpoint of the net, at the entity which is utilizing the service of the network.
I call this approach to reliability "fate-sharing". The fate-sharing model
suggests that it is acceptable to lose the state information associated with an entity if, at the same time, the entity itself is lost.
The origins of TCP:
Different types of service are distinguished by differing requirements for such things as speed, latency and reliability. The traditional type of service is the bidirectional reliable delivery of data. This service, which is sometimes called a “virtual circuit” service, is appropriate for such applications as remote login or tile transfer. It was the first service provided in the Internet architecture, using the Transmission Control Protocol (TCP)“.
UDP was created because TCP couldn't handle audio / video streaming very well. Unlike TCP, UDP didn't require all packets to be in sequence before utilzing them, if a packet was missing it would simply be ignored:
TCP provided one particular type of service, the reliable sequenced data stream, while IP attempted to provide a basic building block out of which a variety of types of service could be built. This building block was the datagram, which had also been adopted to support survivability.
Since the reliability associated with the delivery of a datagram was not guaranteed, but “best effort,” it was possible to build out of the datagram a
service that was reliable (by acknowledging and retransmitting at a higher level), or a service which traded reliability for the primitive delay characteristics of the underlying network substrate. The User Datagram Protocol (UDP)13 was created to provide a application level interface to the basic datagram service of Internet.