Jon Postel once said, “be conservative in what you do; be liberal in what you accept from others.” While the philosophical implications of this statement run deep, Postel was not trying to found a religion or a school of philosophical thought. He was establishing guidelines for robust network interconnectivity. Postel was one of the early researchers working on ARPAnet, and is perhaps best remembered for his contributions to the “Request for Comment” memos which informally suggest methods, guidelines, and advice for improving networks (the above quote is included in RFC 793.)
That the Internet can support such a wide array of data, both in quantity and variety, is frankly astonishing. Yes, the electrical signals that encode the data are just a stream of ones and zeros, but turning information shared between applications into a stream of bits and back again is no easy feat, requiring a simple but ingenious model to transform the information. The group of protocols used to communicate over the Internet is known as the Internet Protocol Suite, although it is more commonly referred to as TCP/IP, for “Transmission Control Protocol” and “Internet Protocol”, the two most important protocols in the suite. TCP/IP is made up of four separate layers, with each layer in the model accepting a wide variety of data in various forms, and breaking it down into simpler pieces which conform to a more rigid protocol—accepting liberally, and sending conservatively—to ensure maximum interoperability and unfettered communication between peers on a complex and crowded network. Every time you send an email, open a webpage, or watch a video online, the data you send and receive goes through the following steps:
4. The Application Layer This is the uppermost layer, in which programs can communicate directly, and request and send data from and to each other. BitTorrent, FTP, and HTTP are all Application Layer protocols; they connect two endpoints (say, your computer and this website) and allow them to request information and interpret the incoming information. However, the Application Layer has no knowledge of how the data are packaged for transmission, or which sub-processes of a program need what information; this brings us to…
3. The Transport Layer This layer takes information from the Application Layer and breaks it up into standardized blocks of data called “packets”, and then attaches information identifying the network address and sub-process of the sending and receiving parties. Some protocols, like TCP, also include error checking (to make sure the data wasn’t scrambled in transmission) and congestion avoidance to avoid overloading a network node’s capacity to receive data. The Transport Layer creates the packets and addresses them, but doesn’t send them; it doesn’t even know where the recipient is located in the network. To find the right path of intermediate nodes along which to send the data, we need…
2. The Internet Layer This layer has a very simple purpose: it addresses the nodes on the network, and figures out how to route packets through the nodes. If sending a packet, this layer determines which neighboring node to send it to; if receiving a packet, it either sends it back out towards the recipient, or, if the packet has reached the final recipient, passes the packet up to the Transport Layer to be routed in turn back to the application. The most common Internet Layer protocol is named, unsurprisingly, Internet Protocol (IP). Interestingly, the Internet Layer provides no guarantee that a packet is transmitted correctly; that burden rests with with the endpoint nodes in the Transport Layer. This reduces the overall strain on the network, increasing reliability.
By this point application data have been packaged, addressed, and routed, but we have not established a protocol for actually sending the packet between neighboring nodes. Enter…
1. The Link Layer This is the bottom of the totem pole. The Link Layer is responsible only for sending information across the link between neighboring nodes, and knows nothing of the outside network. This is the level on which the ones and zeros are sent, without any knowledge of their meaning, original source, or final recipient.
Routing data on a network as vast as the Internet is not a trivial task, but by using this layered model for data transmission, no single protocol is responsible for interpreting, routing, and transmitting the data. By breaking down the process into many simple tasks, nodes on a network can be extremely flexible in the kinds of data they receive (packets can be routed through many nodes to many recipients with many different applications), and rigidly conservative in what they send (packets on the Link Layer are extremely simple), resulting in the incredibly versatile and robust network we know today as the World Wide Web.











Leave a Comment
You must be logged in to post a comment.
* You can follow any responses to this entry through the RSS 2.0 feed.