The Internet is a tremendously powerful piece of technology. In order to do what it does, it necessarily contains a huge amount of technical complexity. To make their task easier, the creators of the Internet decided to break the problem down into more manageable chunks. This is how many daunting programming tasks are solved: a programmer writes a subroutine once, and from that point on simply calls the subroutine without having to worry about how it works. Similarly, the Internet is made up of several layers of abstraction, each of which manages a set of details and provides a simplified interface to the layer above. As you may have guessed, this approach is known as Layering.
In the early days of the Internet, researchers envisioned a model for computer networks known as the OSI 7 Layer Model. This model did a remarkable job of breaking the different aspects of the network into logically distinct chunks. However, it is rare for reality to match theory perfectly. As the Internet developed, it became clear that two of the layers, the Session Layer and the Presentation Layer, really didn't need to be considered separately from the Application Layer. Thus, the Internet today is best described by the 5 Layer Model, which is just a flattened version of the 7 layer model. We present a brief overview of each layer here, and then consider the details of each in the ensuing pages. It is recommended that you read the pages in order, since some terminology that is introduced in earlier pages appears on later pages.
The lowest layer in the Internet model is known as the Physical Layer. It consists of the physical mechanism by which 1's and 0's, known as Bits, of data are communicated from one location to another. Examples of different physical layer technologies include copper wire, optical fiber, coaxial cable, and wireless radio. A tremendous amount of work and research goes into analyzing and improving various physical layer communication techniques. For example, by tightly twisting copper wire pairs together, it is possible to reduce their susceptibility to electrical interference. Nevertheless, physical layer technologies are the domain of electrical engineers, and analyzing them properly requires a broad range of communication theory and mathematical knowledge that we do not require you to possess. As such, we do not consider the implementation of the physical layer on Inside The Wires. For more information on the subject, consult an introductory textbook on digital communications.
The physical layer generally provides the abstraction of a shared medium of communication between two or more computers. However, this capacity is usually limited to the ability to send a bit and receive a bit, which, alone, is not very useful in exchanging information. In order to communicate effectively, computers must have some way of communicating larger chunks of information. Moreover, they need to be able to specify what kind of information it is, avoid sending bits at the same time, and, in the case where more than two computers are involved, they need to be able to specify which computer a chunk of data is intended for. These are the services provided by the Link Layer. Link layer protocols govern the transmission of data over Local Area Networks (LANs).
The most common link layer protocol is the Ethernet Protocol. While most people associate Ethernet with category 5 twisted pair copper wires (if you're not using WiFi, your computer is probably connected to the Internet using category 5 cable), the Ethernet protocol can actually run over a variety of physical layer technologies. Indeed, Ethernet was originally designed to run over a shared coaxial cable, and was only later adapted to run over telephone-like cables. To read more about the link layer, click here.
Before the creation of the Internet, computers were only able to communicate with other computers on their link layer networks. This was fine for communication within an office, but researchers began to envision a 'super-network' that would interconnect all of the existing link-layer networks. This idea was the seed for what eventually became the Internet.
While the notion of the Network Layer is technically a general one, the only network layer protocol of importance on the Internet is the Internet Protocol (IP). While every link layer protocol has its own way of identifying different computers, IP was designed to be a unifying, standardized way of carrying chunks of data between any two computers on the globe. Usually, an IP message will go across several different link layer networks on its way to its destination. While the link layer handles communication between computers on the same LAN, the network layer is responsible for routing data through multiple LANs to connect computers on different LANs. To read more about the network layer, click here.
While the IP protocol provides the ability to send chunks of data between any two computers on the Internet, it has some limitations. First, IP can only transmit discrete chunks of data of limited length called packets. Moreover, two packets destined for the same receiver don't necessarily follow the same path through the Internet, so they can arrive out of order. Since Internet applications like email programs usually want to send and receive continuous streams of data, this arbitrary reordering is a problem.
Issues are further complicated by the fact that the Internet is a Best Effort Service. This means that the Internet makes no guarantees that a packet of data will ever reach its destination. If packets run into a traffic jam, the Internet's traffic controllers are free to just delete some of them to clear things up. This makes it significantly easier to build the infrastructure at the center of the Internet, but it makes things much harder for two computers trying to communicate. This design decision is an embodiment of what is known as the end-to-end principle, which states that the core of the Internet should be as simple as possible, and that complexity should be handled by the end points. The end-to-end principle is one of the guiding ideas of the Internet's design.
The Transport Layer is a place for protocols that are used to fix one or more of these deficiencies in the network layer. By far the most common transport layer protocol is the Transmission Control Protocol (TCP), which accounts for more than 90% of the traffic on the Internet. TCP generally uses IP to send its data but provides the abstraction of a reliable pipe into which a sender can push data and from which the receiver can read the same data, in-order and complete. We discuss TCP in more detail on the transport layer page.
By far the most broadly defined layer in the Internet model is the Application Layer. In essence, an application layer program is any program that communicates over the Internet using the transport layer. Email, the Web, instant messaging, peer-to-peer programs, and online games are all examples of application layer programs. The types and varieties of application layer programs and protocols are quite numerous, and we defer discussion of them to the application layer page.