Unit 1 Review
Unit 1 Review
In this unit you have learned how computers represent all kinds of information and how the Internet
allows that information to be shared with millions of people.
The first chapter explored the challenges and questions that arise when representing information in a
computer or sending it from one computer to another. It begins by investigating why on-off signals, also
known as binary signals, are used to represent information in a computer. It then introduces the way
common information types like text and numbers are represented using these binary signals. Finally, it
illustrates the importance of establishing shared communication rules, or protocols, for successfully
sending and receiving information.
In the second chapter, you learned how the design of the internet allows information to be shared
across billions of people and devices. Making frequent use of the Internet Simulator, they explore the
problems the original designers of the internet had to solve and then you “invented” solutions. To
conclude the unit, you will research a modern social dilemma driven by the ubiquity of internet and the
way it works.
While you build and modified your "binary message devices" you should have recognized that it's easier
to invent a system of communication that uses combinations of binary signals with a simple device,
rather than making a new, or increasingly complex device for each new problem. This lays the
foundations for:
This is the first lesson in which you used the Internet Simulator which was designed to give you a
hands-on experience experimenting with (and solving) different kinds of problems associated with
networked computers and the Internet. A goal of using the internet simulator was put best by a student
near the conclusion of Unit 1 who said "Whoa, I feel like I just invented the Internet!"
We want to expose the fact that numbers themselves (quantities) are laws of nature, but the symbols
we use to represent numbers are an arbitrary, man-made abstraction. Sometimes you memorize
conversions from one number system to another without really understanding why. By effectively
having invented your own base-3 number system in this lesson the goal is for you to see that all number
systems have similar properties and function the same way. As long as you have 1) a set of distinct
symbols 2) an agreement about how those symbols should be ordered, then you can represent any
number with them.
When using this binary representation of numbers, certain values (1, 2, 4, 8, 16, etc.) are seen
repeatedly. When written in binary, these values are 1, 10, 100, 1000, 10000, and so on, and so are the
incremental place values in this binary number system.
You had to make choices about how to structure your messages in terms of number of bits to use for
each number and even how to communicate the beginning and end of the list. While the binary number
system can be used to represent any value we wish, in practice the range of values we are able to
represent is limited by the number of bits we use. Thus, protocols for exchanging binary information
must specify in advance how many bits will form a single number among other things. Without knowing
this information the receivers of a message have no way of determining how to break up an incoming
stream of bits into individual numbers; it will just appear to be a random string of 0s and 1s.
Lesson 7: Sending Text
This lesson concluded your initial study of data representation. After this lesson you should be able to
identify the most common types of information, text and numbers, which are stored using binary. More
importantly you should understand the challenges or principles that led to the creation of these
systems. For example, in the previous lesson you saw that representing more numbers means you need
more bits for each number. In this lesson you should have seen that needing to represent more symbols
(in this case characters), similarly necessitates using more bits.
You should also have seen the importance of shared protocols for communicating successfully with
bits. The only reason a pattern of bits represents the letter "A" for example, is that everyone agreed to
that system. You developed the important understanding that representation systems are somewhat
arbitrarily created to solve a shared problem, and they work not because there was "one right answer"
but because many people agreed to use them.
The wrap up discussion began to explore the concept of abstraction. This is a challenging concept to
understand and one that you will return to many times throughout the course. In this case your
understanding only need be that, while we know everything on a computer is represented with patterns
of binary electric symbols, we create abstractions (in this case decimal numbers) to allow us more
easily reason about what those patterns
It is both interesting and important to know that the protocols or rules by which Internet traffic is
governed are not owned or controlled by any government or business (at the moment). It’s a group of
well-meaning citizen-engineers dedicated to keeping the Internet free, open and robust for all.
The Internet Engineering Task Force (IETF) is the group of mostly volunteer citizens that proposes and
develops all of the standards and protocols that exist on the Internet. Request for Comments (RFC)
documents - like the one we use in the lesson - are how these standards and protocols are defined and
published for all to see on the IETF website. They are some of the best-written technical documents in
existence.
And with a little background in how bits work, what’s necessary for protocols to work when bits are
transferred over wires, they are relatively accessible reading. Here’s the full set:
https://www.ietf.org/rfc.html. RFC 000 (the first one) is related to what we ask students to do in the
next several lessons.
Up to this point in the course, the Internet Simulator has only assumed point-to-point communication.
The "protocols" you 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 was setup 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. You had to 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.
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.
The problem you had to solve was how to use the 8-ASCII-characters-worth of data to include both a
piece of message you were trying to send, as well as information about how many messages (packets)
there were in the whole message, and which number the packet was.
You invented or at least appreciated 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
acknowledgement confirming the receipt of that packet. If the sending computer does not receive an
acknowledgement, 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.
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. And 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
and interpretation and reassembly. It's really amazing.
What was intended for you to understand was to some degree the "Big Picture", to be able to recognize
that these layers exist and to reasonably explain how they work together for common web page
requests.