Go Beyond

Only read if you don't mind being offended.


The Internet

I found this lying around among my files, written for an ex to try and explain some technical concepts. Not sure how relevant it is to most, but I figured I'd share it.


	The Internet

Every good thing has its origin in need, or want. Every solution is a
fix to a problem. To understand the solution, you must understand the
problem.

Imagine a world with no mouths and no ears. Just eyes, hands, and a
keyboard. This is the Internet, more or less.

So we start with Bob, an ordinary man. And Alice, an ordinary woman. Bob
wants to talk to Alice.

Bob runs a cable from his computer to Alice's. The computers are setup
like walkie-talkies. Bob's computer says what Alice's keyboard says, and
vice-versa. It's all very simple.

Eventually, Bob wants to send Alice a picture. Except, a picture doesn't
look like text, does it? He has to find a way to differentiate between
text and picture.

So now, data is no longer one continous stream. It has to begin and end,
sent like messages or letters. If you had a continous stream with text
and picture, you would never know which was which.

So here's something that might work. A basic letter format:

START
TYPEtext
Hi Alice!
END

Here, the letter begins with START. The type is text. And END is the
last word. After END, Alice's computer knows there is no more data in
this letter.

Let's try a picture:

START
TYPEpicture
(Picture here)
END

This works fairly well. Alice's computer receives a letter. It learns it's a
picture, so it displays the data as a picture.

But what if you have a letter that looks like this?

START
TYPEtext
Hi Alice,

Just wanted to explain how our system works if you wanted to reprogram it.
Messages look like this:

START
TYPEtext
Your words here.
END

Make sure "END" is in all caps.

Sincerely,
Bob
END

What just happened?

Alice got a message like this:
---------
Hi Alice,

Just wanted to explain how our system works if you wanted to reprogram it.
Messages look like this:

START
TYPEtext
Your words here.
---------

The computer received an END statement, so it ended as you told it to do so. How
can we work around this?

One helpful thing is obfuscation, as it's called. Instead of "END", something
you might concievably write, you can write
"ILOVEPONIESHORSESANDPINKTOMATOESEND". However, if you ever want to tell Alice
the exact sequence for ending a transmission, you can never do so verbatim.

Here's another alternative:

START
TYPEtext
LETTERS50
Hi Alice,

You end messages with END.

Yours,
Bob

Assuming the last message was 50 letters long, that would work. However, then
you don't even need to "end" messages at all. You have to know the length in
advance and transmit it all at once.

Ultimately, there are two problem concepts that the Internet has faced in
design, or really, any digital communication at all. Multiple interpretations of
data and multiple potential recipients. The scale of these varies the best
solution.

The Internet could address computers like this:

START
TOTeranMcKinney
TYPEtext
LETTERS14
You're fired!

But then, if there were another Teran McKinney, there would be a collision. With
computers, are you talking to computers or people? Usually, computers.

And this is also very long. If we are sending billions of messages a second,
shouldn't they be as consise as possible?

Modern day Internet addresses computers by IP addresses. There are about 4
billion of them. They take up only 32 bits per address, which is 4 bytes, or
more simply said, about four letter spaces. In the amount of disk space it takes
to write "Sara", one can write to almost any accessible server in existence.
This is extremely fast and efficient. Of course, it doesn't look like "Sara",
except for one IP address sequence interpreted as text, not an IP. Doing so is
just novelty. IP addresses are read as numbers, ranging from 0-255, with four of
them separated by periods. This can look like:

192.168.0.1
10.0.0.0
8.8.8.8
45.255.254.255

These addresses are globally addressible. With that one sequence, you can
communicate with just about any computer. Now, not everyone wants to memorize
45.77.8.123. And even so, IP addresses are assigned in blocks regionally. While
you can, under the right circumstances, bring up your computer with the same IP
address anywhere, generally, it's best to assume they are transient, and not
permanent. To look up computers, just like with the phone book with phones, you
need an address book solution. The computer's easy to remember addresses are
domains. Just like google.com, microsoft.com, go-beyond.org, blommerorbust.org,
and dagnyschocolates.net. Domain names are generally bought from registrars
online, as DOMAIN.TLD (top level domain).

One domain can have practically unlimited subdomains. Any of these can point to
any computer.

One can make i.hate.googles.badintentions.org point directly to Google.com's web
servers. One can also make dagnyschocolate.com point to a server hosting a
website claiming to be Dagny's Chocolates.

Before these global addresses are routed to, there is a simple concept. It's
link local addressing. It's more like setting up everyone in the office under
the same four-digit-dialing, or in the neighborhood. You address everyone from
one number range. In practice, this is generally done with 48 bit (six letter
space) addresses rather than 32 bit, like the global addresses. These local
addresses are called "MAC" addresses. Nothing to do with Apple computers in
specific, though.

Everyone in the neighborhood would plug up to the same switch, or series of
switches. When someone sends a packet to a new computer, the switch "broadcasts"
the packet to all of the connected computers on the switch. Hopefully, the
computer will reply. When it does, the switch learns which computer (or really,
the MAC address) in on a particular port. It then sends traffic destinated to
that MAC address on solely that port.

Internet traffic is sent out like letters, in data called packets. The packets
are like compounded headers. They start with the layer 2 portion, which is the
link-local MAC address later. The next bit is either the data (if you wanted to
talk without specifying what type of data you wished to send), or the IP address
header. A computer on the local network generally handles connection to the
internet and acts as a router. The computers on the network should be set in the
routing table to send all non-local traffic (not in a certain, predefined local
range which all computers on the network use) targeted at a certain IP address.
What happens is the computer looks up the router's IP address and sees if it
knows the MAC address. If it doesn't, it probes for it via an ARP who-has
request.