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