In the paper A Protocol for Packet Network Intercommunication (Cerf and Kahn, 1974), a protocol for communication (sharing of resources) across networks using data packets is proposed by Cerf and Kahn. During this time there are already existing individual packet switching networks with already established protocols for routing packets internally. These individual networks may differ on the protocol used for addressing the receiver of message, on the maximum size of data packet accepted by each host within the network, the time delays in accepting, delivering and transporting data packets within the network, the mechanism used for error correction for corrupted messages and the mechanisms for checking of status information, routing, fault detection and isolation.
Given these much differences between individual networks, if internetwork communication is desired, it is necessary therefore to provide a mechanism for communication in which all these differences are taken into consideration. An obvious way to approach this problem is to make transformations in conventions from the source to the interface into an internetwork-wide agreed set of conventions. This will complicate the design of the internetwork interface though. In the paper, the authors assumed a common set of conventions shared by the hosts or processes in all networks belonging to an internetwork to relieve the interface the design complexities. Instead, the interface’s concern will mainly be the transport of packet data from a network to another or several others. Since the interface acts as an entrance or exit to or from a particular network, the authors obviously called it GATEWAY.
As discussed by the authors, the notion of gateway is a very simple and intuitive one. Any data packet which needs to be transported to another network must pass through the gateway. The authors proposed a protocol in which all the networks which wants to communicate with each other need to subscribe to. In the proposal, formatting is done for each data packet which traverses from a network to another. Upon crossing a gateway, data packets from a network are formatted to meet the requirements of the other network. The data packets are formatted every time they cross a gateway and enter a new network. Splitting or fragmentation of data packets may occur in the gateway so that the packets being transported would fit the requirements of the network it is entering. The details of the information describing the packets are indicated in the packet headers. Most notable are the source and destination information indicated in the internetwork header of the packet.
A mechanism for handling the transmission and acceptance of messages from host to host is assigned to a transmission control program (TCP), as proposed by the authors. TCPs in turn is connected to packet switches which serve the host. Fragmentation of messages into segments may also be done by the TCP for the reasons that the local network has a limit on the maximum message length (in bytes) and that the TCP may be serving several processes which wishes to communicate with the outside networks. The problem of segmenting messages intended for a common destination process or host by the TCP is also discussed and two approaches were considered. The authors opted for the proposed solution wherein each packet are assumed to contain information regarding the destination and source process, which is indicated in the process header of the packet.
The notion of ports is also introduced as a unique identifier for a specific message stream between two communicating processes. Since the identification of ports is different for each operating system there is also a need for a uniform addressing scheme for ports.
The authors also discussed the problem of reassembly and sequencing of segments received by destination TCP. They proposed a scheme to handle this problem in the receiving end. Each arriving packet is identified to a specific port and are reassembled to the original message/text based on their sequence numbers. The check sum for the message is computed once reassembly is done to verify if the reassembled message is not corrupted. Additional flags ES (end of segment) and EM (end of message) are also included in the packet headers to indicate the completion of assembly of messages and segments in the receiving side.
Retransmission and duplicate detection were also tackled by the authors. They proposed an aknowledgement-based approached wherein the receiving end will acknowledge the receipt of packets according to a sliding window of sequence numbers. Any packets arriving outside this window are discarded and are requested to be retransmitted by the sender. As proposed, buffers can also be employed to handle incoming packets. Any packets which cannot be accommodated yet in the buffers are discarded and are requested to be retransmitted by the sending sending end.
The proposal of Cerf and Kahn generally describes how the Internet works as we know it to this day. There could have been deviations from the whole proposal but in general it describes the basic set of protocols in which the Internet subscribes.