| If you have been using the internet for | | | | line. The reason sending numbers out |
| a while, you have probably typed into | | | | along your phone can work, is that at |
| your browser something that starts with | | | | the other end of the line is your ISP's |
| "http:" and ends with ".html", hit "Go", | | | | computer. This computer, and all the |
| watched your modem lights flicker on and | | | | other computers on the internet, have |
| off, and a couple of seconds later you | | | | layers written by programmers and |
| are magically looking at page of todays | | | | designed by computer architects, that |
| news or a page of pictures. Let's try | | | | follow strict and detailed |
| and take some of the magic away ...I | | | | specifications of what to do with the |
| thought about calling this article a | | | | numbers coming out of your computer.This |
| "Geeks view of HTTP"; I am not going | | | | sounds complex (and the details are!), |
| into the nitty gritty, but rather | | | | but it is just the same as the person on |
| present a sketch of how a geek might see | | | | Rock n Roll knowing to wait until they |
| something like HTTP, how they can think | | | | heard "over and out" before calling |
| something like HTTP is simple, and why | | | | Jazz, and saying "over" at the end of |
| they are not trying to make things | | | | each sentence. If no one followed these |
| complicated just for the sake of it!--* | | | | protocols the channel would have been |
| Layers *--The background to the sketch | | | | chaos, everyone trying to talk over |
| is that computers are full of layers. | | | | everyone else. In the same way, if your |
| Programmers and designers think in | | | | computer and the other computers on the |
| layers, because organizing in layers | | | | internet did not follow the |
| makes it easier to build things.You | | | | specifications, the fact that your |
| don't need to know what or where the | | | | computer sends out some numbers over |
| layers are in your computer, or where | | | | your phone line would be as useless as |
| one starts and another stops, but it is | | | | it sounds in the first place! ... but, |
| helpful to remember that they are | | | | if the rules are followed, it works.I am |
| everywhere because that is how geeks | | | | not going to go into the actual details |
| organize things.--* Specifications and | | | | of these specifications, but you have |
| Protocols *--Specifications and | | | | probably seen the acronyms; TCP/IP and |
| Protocols are the things that are the | | | | DNS (and a heap more!)--* HTTP *--Lets |
| mostly likely cause of all your computer | | | | say that someone on Rock n Roll knows |
| frustrations ... but they are a | | | | there is a football almanac onboard Jazz |
| necessary evil. A wise man once said | | | | which will confirm the score of a |
| that any specification longer than one | | | | particular game and settle an argument |
| line will have ambiguities and be a | | | | onboard Rock n Roll. When Rock n Roll |
| source of problems. There are lots of | | | | hears Jazz say "this is Jazz, go ahead, |
| specifications and protocols in everyday | | | | over" they know they have a connection |
| life. An example of a protocol is when | | | | to Jazz and can start a conversation. |
| you are driving and see a red light you | | | | Rock n Roll might say "Jazz can you get |
| slow down and stop until it turns green. | | | | me the score of the 1987 Superbowl, |
| The specification of this protocol is | | | | over", and Jazz comes back with the |
| the rule that is (probably) written down | | | | answer finishing with an "over". Rock n |
| in the road-rule book. But we don't need | | | | Roll might ask for another score, or |
| to read the road rules, it is just | | | | might ask for the list of players, or |
| common sense to know to stop for a red | | | | might just say "thanks, over" and which |
| light. Of course we all know the words | | | | point Jazz would say, "See ya, over and |
| computers and common sense don't belong | | | | out".--* *--That is really what HTTP is |
| in the same sentence, and that is why | | | | doing. The connection has been made at |
| there are so many computer | | | | lower separate layers which are handling |
| specifications and they are generally so | | | | the numbers traveling out of your |
| long and detailed.A common sentiment is | | | | computer and moving them to the computer |
| "you really need to spell things out for | | | | you are connecting to. HTTP is a fairly |
| a computer". I think this is a bit | | | | simple specification that allows one |
| misleading. It isn't the computer that | | | | computer to ask another for some |
| needs things spelt out, it is the | | | | information (by naming it), and for that |
| programmers and designers who build the | | | | information to be returned. It doesn't |
| higher layers who need to spell things | | | | say anything about where that |
| out for other programmers creating other | | | | information comes from; as far as the |
| higher layers.If one programmer ignores | | | | HTTP specification is concerned, |
| the rules of a specification, or doesn't | | | | somebody could be sitting at the other |
| know there is a rule to follow, the | | | | computer typing in the response. |
| result can be the same as if a driver | | | | However, usually the information that is |
| runs a red light ... a crash.--* | | | | asked for is the name of a file, which |
| Connection *--I have finished with the | | | | is a bunch of numbers on the hard drive. |
| background of the sketch, and now I am | | | | Those numbers get moved from the hard |
| going to draw a picture of a couple of | | | | drive into memory into the modem and |
| boats in a bay, each with a two- way | | | | back to your computer.Thats it! That is |
| radio. I grew up around boats and always | | | | the essence of HTTP.The point is, to see |
| liked listening into the chatter on the | | | | why a geek can think something like HTTP |
| two-way radios. The following | | | | is simple you need to think in layers |
| conversations are from my memories of | | | | like a geek. Thinking in layers is not |
| growing up, but the ideas are probably | | | | some kind of zen like discipline for |
| the same for cb and other forms of | | | | them, they probably do it without even |
| radio.The first boat we will call "Rock | | | | being aware of it as that is what their |
| n Roll" the second "Jazz". There was | | | | tools and languages encourage. If a |
| only one channel, and I noticed that | | | | programmer was writing an HTTP program |
| there was a protocol that everyone | | | | they may write something like:LowerLayer |
| seemed to follow (except on Sunday | | | | connectTo: "Jazz".LowerLayer send: "GET |
| afternoons) to keep things orderly. I | | | | SuperbowlScore1987".LowerLayer out.The |
| don't know if this protocol was written | | | | programmer who writes this is not |
| down anywhere as a set of specification | | | | thinking about the details of how the |
| rules or was just common sense. If Jazz | | | | connection is established or how the |
| wanted to call Rock n Roll they would | | | | message is sent. They may have no idea! |
| wait until they heard the current | | | | When they are working with HTTP they |
| conversation end with an "Over and Out". | | | | just assume the lower layer works. If |
| They would wait a couple of seconds and | | | | they, or you, do want to understand the |
| then say something like "Rock n Roll, | | | | lower layer, then put HTTP out of your |
| Rock n Roll, this is Jazz, do you read | | | | mind and read up on the TCP/IP and DNS |
| me, over". If someone on Jazz was | | | | layers and specifications (have fun, and |
| listening, they would say "Rock n Roll, | | | | have a good supply of coffee |
| this is Jazz, go ahead, over". Bingo!, | | | | ready).Similarly, they are not trying to |
| they have a connection.The same kind of | | | | understand how the information that is |
| thing happens when you type an address | | | | received is displayed so nicely in your |
| into your web browser and hit "Go". Your | | | | browser. That is a higher layer and yet |
| computer is just moving a bunch of | | | | another specification (HTML).I hope you |
| numbers to the modem. To keep things | | | | enjoyed reading this article, it has |
| simple, lets ignore that the modem is | | | | taken an unusual perspective of HTTP! If |
| converting those numbers into sounds, | | | | you want to read up on the details there |
| and pretend that it is those numbers | | | | are a number of good articles on the web |
| that are traveling out along your phone | | | | and the HTTP specification itself. |