We’re going to begin with computer networks, and how they grew from small groups of connected computers on LAN networks to eventually larger worldwide networks like the ARPANET and even the Internet we know today.
This video is about how that stream of characters you punch into your browser's address bar, like "youtube.com," returns a website. Just to clarify, we're talking in a broader sense about that massive network of networks connecting millions of computers together.
The World Wide Web is built on the foundation of simply linking pages to other pages with hyperlinks, but it is this massive interconnectedness that makes it so powerful. But before the web could become a thing, Tim Berners-Lee would need to invent the web browser at CERN, and search engines would need to be created to navigate these massive directories of information.
In this interactive activity adapted from the Wisconsin Online Resource Center, discover how computers communicate with one another through networks. Learn about types of networks (local area networks and wide area networks) and three common components: links, nodes, and routers. In addition, investigate some of the advantages and disadvantages of four kinds of network topologies: mesh, bus, star, and ring. Finally, explore the role of routers and how data travels from one network to another.
The policy of net neutrality prevents internet service providers (ISPs), like Verizon and AT&T, from slowing down the loading speeds of certain websites or creating “fast lanes” for sites that pay a fee. This policy will almost certainly be overturned by the Republican-controlled Federal Communications Commission. This Lowdown lesson explores the pros and cons of net neutrality and examines the different ways lawmakers view internet service.
Denial of Service (DOS) and Distributed Denial of Service (DDOS) attacks take down servers by distracting them with meaningless traffic until they grind to a halt. Scientology, Westboro Baptist Church, and other controversial organizations have been hit by this form of attack. This video discusses how the way we talk about the results of a software program -- words like "attack" -- reflects how we view the online world.
Think about the last time someone sent you mail. They probably wrote some content on some paper, put it in an envelope, wrote an address and put it in a mailbox. From there, the letter probably went into a sorting center, got sorted, and was put in a bag. The bag then went into a vehicle like a truck, plane or boat. The vehicle either traveled through water, the air, or on the road. The postal system is a complicated one, designed to let individuals communicate easily, yet being efficient enough to group many letters into one postal delivery. The same ideas apply to how messages move around the internet. Whether it be a ‘like’ on Facebook, a video stream or an email – the internet and its various protocols look after it for you so it is delivered on time and intact to the other person.
In this chapter we introduce some concepts, algorithms, techniques, applications, and problems that relate to network protocols; it isn’t a complete list of all ideas in the area but should be enough to give you a good idea of what this area of computer science is about.
In this lesson, students explore more deeply how communication between multiple computers can work over the Internet. They do this by playing a simplified game of Battleship, in which the first game is played unplugged, in their table groups, and the second game is played using the Internet Simulator so that multiple students can connect to each other and see each other’s messages. Students must devise a messaging protocol that makes it clear who is sending the message and who the intended recipient is. Students then devise a binary protocol for playing this game which will entail developing an addressing system for players, as well as a formal packet structure for transmitting data about the state of the game.
NOTE: this is a large lesson that will likely need to span two days of class.
This lesson builds up to students learning about the “Internet Protocol” addressing system, commonly known as IP Addresses. Up to this point in the course, the Internet Simulator has only assumed point-to-point communication. The "protocols" students were inventing mostly had to do with encoding information in binary, rather than also encoding communication information required for successful delivery of the message.
The lesson mimics a real problem that designers of the internet had to solve. Many computers are connected together by networks. So if a computer sends some bits out, those bits pass through many computers. How does a computer know who those bits are for? If a response is necessary, how does it send it back? This is a complicated question, but the first part of the answer is that you need an addressing system, and some kind of fixed structure for messages that everyone agrees on (a protocol) so messages can be interpreted properly. (We'll get to routing later.)
The Internet Simulator for this lesson is set up to “broadcast” every message to every person in the group. Since everyone receives any bits that were sent by anyone else, a method for identifying the intended sender and receiver of the message is needed. Students will invent a protocol for addressing messages.
Many network systems, such as local ethernet and WiFi, rely on addressing schemes to make sure bits are received by the correct computer based on address and for other computers to simply ignore messages not intended for them.
Students will be able to:- explain why messages need to contain addressing information (sender/recipient identification).- invent an informal addressing protocol for use in the Battleship game.- recall that browsing the Internet entails computers sending each other requests and sending back data to satisfy those requests.
Note: You will need to create a free account on code.org before you can view this resource.
In this lesson, students explore the benefits (and potential security concerns) associated with routing traffic across the Internet. Building on their introduction to IP addresses in the previous lesson, students use a version of the Internet Simulator that allows messages to be sent only to an intended recipient, as indicated by the IP address. The Internet Simulator also allows students to examine the traffic that goes through all of the (simulated) routers on the network. They will discover that messages go through many different routers, may not always take the same path to reach the final destination, and that the routers (and their owners) can see all of this traffic!
The main purpose here is to use the Internet Simulator to dive into examining the network traffic that's generated by students in the class. Seeing traffic like this in real life is very hard if not impossible since only engineers of large networks have access to router data on a large scale, and it's also more complicated to understand. While our network is simulated and provides a simple view, the basics are the same, and quick investigations reveal interesting things. We want students to simply get a taste for both the scale and the implications of what routers do.
CS Background: A router is a computer designed to receive and redirect packets of information based upon the addressing information (e.g. an IP address) contained in the packet. Routers will either deliver a packet to its final destination or forward it to one of several other routers it is connected to. By monitoring current network conditions, a router can determine which of these will allow the packet to reach its destination fastest. There will often be redundant paths between two locations on the Internet, and so if one path is experiencing traffic or otherwise out of service, additional paths will be available. This redundancy makes the Internet more reliable and also helps the Internet to scale, accommodating new users (and routers!) as they are connected to the system.
Students will be able to:- describe the redundancy of routing between two points on the Internet.- evaluate the benefits and security concerns associated with the use of a routed system of sending packets.- send messages using a numeric addressing protocol with the Internet Simulator.
Note: You will need to create a free account on code.org before you can view this resource.
In this lesson, students develop a protocol for reliably sending a message over an unreliable internet. The Internet Simulator has been set up for this lesson to restrict messages to no more than 8 characters each, and messages get dropped with some probability on every hop.
Students are given time to experiment with the Internet Simulator and develop their own protocol, possibly testing or demonstrating their protocol to their peers. At the conclusion of the lesson, students watch a short video explaining how these challenges are addressed in the real world with TCP - the Transmission Control Protocol.
This is a problem-solving lesson. On the real Internet, packet sizes are limited, and transmission is unreliable. In this lesson, we have set up the Internet simulator to restrict packet-size to be very small - 16-bits for the to ;and from addresses plus only 8 ASCII characters. Also, the Simulator drops packets pretty regularly. In a set of 10 messages, it's very likely one or two will be dropped. You may need to justify these restrictions to students, acknowledging that, yes, this is a simulation, but these types of constraints are a very real problem on the Internet.
The problem students have to solve is how to use the 8-ASCII-characters-worth of data to include both a piece of message you're trying to send, as well as information about how many messages (packets) there are in the whole message, and which number this packet is.
Students should invent or at least appreciate the need for something like the Transmission Control Protocol TCP. TCP was designed to overcome the inherent unreliability of the Internet. A small but non-negligible percentage of packets are lost in transmission because of faults in the infrastructure of the Internet. In order to constrain the extent of these errors, larger messages are divided into many packets which are individually routed to their recipient. The receiving computer will send an acknowledgment confirming the receipt of that packet. If the sending computer does not receive an acknowledgment, it will resend the packet until all packets have been acknowledged.
Since packets may arrive out of order, additional data must be included to indicate the order in which the packets should be arranged. Thus, while individual packets cannot be guaranteed to arrive, eventually an entire message can be accurately reconstructed.
Students will be able to:- explain why protocols are necessary to overcome the underlying unreliability of the Internet.- justify the need for acknowledgments and packet numbering in TCP.- develop a protocol for reliable communication on the Internet.
The core idea of this lesson occurs in the unplugged activity that kicks off the lesson, in which students try to keep track of IP addresses that had been randomly assigned to each student in the class, while at the same time the teacher occasionally changes students' addresses. This leads to identifying the need for an authoritative system for name-to-address mappings, known as the Domain Name System or DNS. Students then briefly experiment with a DNS protocol in the Internet Simulator. The activity is similar, in that students will have to grapple with IP addresses changing in real time and use the built-in DNS protocol to resolve the issues. The lesson ends with students doing some rapid research about DNS and some of its vulnerabilities, particularly what are known as Denial of Service Attacks.
The basic purpose of this lesson is to show students in kinesthetic and interactive ways some of the challenges are solved and created by DNS. At its core, the DNS is "simply" a hierarchical system of computers and databases, that maps IP addresses to domain names. It enables Internet users to connect human-language locations on the Internet with numeric addresses used by IP. While distributed and hierarchical, it can be treated in the abstract as a centralized registry of locations on the Internet, allowing users to quickly find locations they are looking for and register themselves so that others may find them.
Students will be able to:- give a high-level description of DNS as a name-to-IP-address mapping system used on the Internet.- give a few reasons why DNS is useful and necessary.- describe at least one vulnerability of DNS and how an attack on it works.
In this lesson, students are introduced to another high-level protocol of the Internet, HTTP. The lesson begins with a review of the layers of the Internet covered thus far, before transitioning to a video covering high-level protocols of the Internet, most notably HTTP. Students will investigate HTTP traffic generated within their own browser by accessing the browser’s developer tools and visiting a variety of websites. A handout summarizing the structure of HTTP is provided to help students understand the components of the HTTP requests and responses they will observe. The lesson concludes with students sharing their findings with their classmates and a reflection on how the layers of the Internet make use of abstraction.
The main purpose of this lesson is round out understanding of one of the main Enduring Understandings and associated Learning Objective of the CSP Framework:
There are two main purposes of this lesson:
First, simply getting a basic understanding of what HTTP is and what it's for. HTTP, like DNS, is an ASCII-text based protocol - it's just two computers sending text messages to each other. What makes it a protocol are the rules of the "conversation" the two machines are having. In the case of HTTP, it is a call-and-response protocol for a client/server relationship, where a client requests a web page or other content (image, sound, video, etc.) from a server. The server looks for it and sends it back.
Second and perhaps more importantly, is understanding HTTP as a "high level" protocol that sits on top of all the other protocols and internet systems we've learned about in the course. That text message conversation between the computers is being broken up into TCP/IP packets, and all the data gets sent as bits over wires and airwaves, taking different paths, and it gets interpreted and reassembled at the end.
We often talk about how the Internet works in "layers" and this is a perfect example of abstraction on the Internet, as one layer makes use of the functionality provided by the layer below it, without worrying about the details of how this functionality is achieved. HTTP doesn't have to worry about anything other than the text protocol of HTTP works. The network software and devices on your and others' computers handle looking up addresses, breaking down data, packeting, routing, transmission, interpretation, and reassembly. It's really amazing.
What we want students to understand is some degree of the "Big Picture". We want them to be able to recognize that these layers exist and to reasonably explain how they work together for common web page requests.
Students will be able to:- explain how layers of protocols allow the Internet to function.- use developer tools in a modern browser to explore the HTTP traffic associated with visiting common websites.- identify abstractions used in the development of Internet protocols.- describe how a protocol or layer of the internet acts as an "abstraction" for other layers.