What Is The Internet
In this tutorial we will use the public internet, a specific computer network, as our principle vehicle for discussing computer networks and their protocols. But what is the Internet? There are a couple of ways to answer this question. First, we can describe the nuts and bolts of the internet, that is, the basic hardware and software components that make up the internet. Second, we can describe the internet in terms of a networking infrastructure that provides services to distributed applications. Let’s begin with the nuts-and-bolts description.
A Nuts-and-Bolts Description
The internet is a computer network that interconnects hundreds of millions of computing devices throughout the world. Not too long ago, these computing devices were primarily traditional desktop PCs, Linux workstations, and so-called servers that store and transmit information such as web pages and e-mail messages. Increasingly, however, non-traditional internet end systems such as laptops, smartphones, tablets, TVs, gaming consoles, web cams, automobiles, environment sensing devices, picture frames, and home electrical and security systems are being connected to the Internet. Indeed, the terms computer network is beginning to sound a bit dated, given the many non-traditional devices that are being hooked up to the internet. In internet jargon, all of these devices are called hosts or end systems.
As of July 2011, there were nearly 850 million end systems attached to the internet (ISC 2012), not counting smartphones, laptops, and other devices that are only intermittently connected to the internet. Overall, more thre are an estimated 2 billion internet users (ITU 2011)
End systems are connected together by a network of communication links and packet switches. We’ll see in Module 1.2 that there are many types of communication links, which are made up of different types of physical media, including coaxial cable, copper wire, optical fibre, and radio spectrum. Different links can transmit data at different rates, with the transmission rate of a link measured in bits/second. When one end system has data to send to another end system, the sending end system segments the data and adds header bytes to each segment. The resulting packages of information, known as packets in the jargon of computer networks, are then sent through the network to the destination end systems, where they are reassembled into the original data.
A packet switch takes a packet arriving on one of its incoming communication links and forwards that packet on one of its outgoing communication links. Packet switches come in many shapes and flavours, but the two most prominent types in today’s internet are routers and link-layer switches. Both types of switches forward packets toward their ultimate destinations. Link-layer switches are typically used in access networks, while routers are typically used in the network core. The sequence of communication links and packet switches traversed by a packet from the sending end system to the receiving end system is known as a route or path through the network. The exact amount of traffic being carried in the internet is difficult to estimate but Cisco (Cisco VNI 2011) estimates global internet traffic will be nearly 40 exabytes per month in 2012.
Packet-switched networks (which transport packets) are in many ways similar to transportation networks of highways, roads, and intersections (which transport vehicles). Consider , for example, a factory that needs to move a large amount of cargo to some destination warehouse located thousands of kilometres away. At the factory, the cargo is segmented and loaded into a fleet of trucks. Each of the trucks then independently travels through the network of highways, roads, and intersections to the destination warehouse. At the destination warehouse, the cargo is unloaded and grouped with the rest of the cargo arriving from the same shipment. Thus, in many ways, packets are analogous to trucks, communication links are analogous to highways and roads, packet switches are analogous to intersections, and end systems are analogous to buildings. Just as a truck takes a path through the transportation network, a packet takes a path through a computer network.
End systems access the Internet through Internet Service Providers (ISPs), including residential ISPs such as local cable or telephone companies; corporate ISPs; university ISPs; and ISPs that provide WiFi access in airports, hotels, coffee shops, and other public places. Each ISP is in itself a network of packet switches and communication links. ISPs provide a variety of types of network access to the end systems, including residential broadband access such as cable modem or DSL, high-speed local area network access, wireless access, and 56 kbps dial-up modem access. ISPs also provide Internet access to content providers, connecting web sites directly to the internet. The internet is all about connecting end systems to each other, so that ISPs that provide access to end systems must also be interconnected. These lower-tier ISPs are interconnected through national and international upper-tier ISPs such as Level 3 Communications, AT&T, Sprint, and NTT.
An upper-tier ISP consists of high-speed routers interconnected with high-speed fibre-optic links. Each ISP network, whether upper-tier or lower-tier, is managed independently, runs the IP protocol (see below), and confirms to certain naming and address conventions. We’ll examine ISPs and their interconnections more closely in Module 1.3
End systems, packet switches, and other pieces of the internet run protocols that control the sending and receiving of information within the internet. The Transmission Control Protocol (TCP) and the Internet Protocol (IP) are two of the most important protocols in the internet.
The IP protocol specifies the format of the packets that are sent and received among routers and end systems. The internet’s principal protocols are collectively known as TCP/IP . We’ll begin looking into protocols in this introductory tutorial. But that’s just a start – much of this course is concerned with computer network protocols.
Given the importance of protocols to the internet, it’s important that everyone agree on what each and every protocol does, so that people can create systems and products that interoperate. This is where standards come into play. Internet standards are developed by the Internet Engineering Task Force (IETF) [IETF 2012] . The IETF standards documents are called requests for comments (RFCs) . RFCs started out as general requests for comments (hence the name) to resolve network and protocol design problems that faced the precursor to the Internet [Allman 2011] . RFCs tend to be quite technical and detailed. The define protocols such as TCP, IP, HTTP (for the web), and SMTP (for e-mail). There are currently more than 6.000 RFCs. Other bodies also specify standards for network components, most notably for network links. The IEEE 802 LAN/MAN Standards Committee [IEEE 802 2012], for example, specifies the Ethernet and wireless WiFi standards.
A Services Description
Our discussion above has identified many of the pieces that make up the internet. But we can also describe the internet from an entirely different angle – namely, as an infrastructure that provides services to applications. These applications include electronic mail, web surfing, social networks, instant messaging, Voice-over-IP (VoIP), video streaming, distributed games, peer-to-peer (P2P) file sharing, television over the internet, remote login, and much more. The applications are said to be distributed applications, since they involve multiple end systems that exchange data with each other. Importantly, Internet applications run on end systems – they do not run in the packet switches in the network core. Although packet switches facilitate the exchange of data among end systems, they are not concerned with the application that is the source or sink of data.
Let’s explore a little more what we mean by an infrastructure that provides services to applications. To this end, suppose you have an exciting new idea for a distributed internet application, one that may greatly benefit humanity or one that may simply make you rich and famous. How might you go about transforming this idea into an actual internet application? Because applications run on end systems, you are going to need to write programs that run on the end systems. You might, for example, write your programs in Java, C, or Python. Now, because you are developing a distributed internet application , the programs running on the different end systems will need to send data to each other. And here we get to a central issue – one that leads to the alternative way of describing the internet as a platform for applications. How does one program running on one end system instruct the internet to deliver data to another program running on another end system?
End systems attached to the internet provide an Application Programing Interface (API) that specifies how a program running on one end system asks the internet infrastructure to deliver data to a specific destination program running on another end system. This internet API is a set of rules that the sending program must follow so that the internet can deliver the data to the destination program. We’ll discuss the internet API in detail in Module 2. For now, let’s draw upon a simple analogy, one that we will frequently use in this course. Suppose Alice wants to send a letter to Bob using the postal service. Alice, of course, can’t just write the letter (the data) and drop the letter out her window. Instead, the postal service requires that Alice put the letter in an envelope; write Bob’s full name, address, and zip code in the centre of the envelope; seal the envelope; put a stamp in the upper-right-hand corner of the envelope; and finally, drop the envelope into an official postal service mailbox. Thus, the postal service has its own “postal service API,” or set of rules, that Alice must follow to have the postal service deliver her letter to Bob. In a similar manner, the internet has an API that the program sending data must follow to have the internet deliver the data to the program that will receive the data.
The postal service, of course, provides more than one service to its customer. It provides express delivery, reception confirmation, ordinary use, and many more services. In a similar manner, the internet provides multiple services to its applications. When you develop an internet application, you too must choose one of the internet’s services for your application. We’ll describe the internet’s services in Module 2.
We have just given two descriptions of the internet; one in terms of its hardware and software components, the other in terms of an infrastructure for providing services to distributed applications. But perhaps you are still confused as to what the internet is. What are packet switching and TCP/IP? What are routers? What kinds of communication links are present in the internet? What I a distributed application? How can a toaster or a weather sensor be attached to the internet? If you feel a bit overwhelmed by all this now, don’t worry – the purpose of this course is to introduce you to both the nuts and bolts of the internet and the principles that govern how and why it works. We’ll explain these important terms and questions in the following modules.