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 22.214.171.124 126.96.36.199 These addresses are globally addressible. With that one sequence, you can communicate with just about any computer. Now, not everyone wants to memorize 188.8.131.52. 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.