Slashdot Mirror


HTTP: The Definitive Guide

Michael Palmer writes "OK, how well you know HTTP? Here's a pop quiz: QUESTION: Did you know that the Keep-Alive header was valid in HTTP 1.0, but has been deprecated in HTTP 1.1? A) What does "deprecated" mean? B) What is the "Keep-Alive header?" C) That's too bad - I kind of thought Keep-Alive was handy! D) Get with the program... HTTP 1.1 came out in 1999. The Internet boom is over already! Persistent connections are the default in HTTP 1.1 anyway." Answer (not necessarily your answer) and the rest of Palmer's review follows. HTTP: The Definitive Guide author David Gourley, Brian Totty pages 656 pages publisher O'Reilly & Associates; 1st edition (September 2002) rating excellent overview, plus detail in core areas reviewer Michael Palmer ISBN 1565925092 summary An overview of HTTP and related topics

OK, so I answered "C". I am going to make bold the claim that HTTP: The Definitive Guide, the long-awaited O'Reilly book on HTTP is ambitious enough in breadth and depth that if you answered "B," "C," or "D," you will find this book useful and informative. This is primarily due to clear organization of the book, as well as its friendly (even chummy) writing style.

Even if you are a technically-inclined sort from the Marketing department, and answered "A," you could get a good technical overview of the plumbing of the Web by skimming through this book; plus, having any O'Reilly book on the shelf in your cubicle would score you some street cred with the guys sitting over in Development -- this could be the one you've actually read. :-)

Breadth Unless you answered "D," HTTP is more complicated than you think. This is especially true if, as the authors of a good technical book should do (and these authors do), one spends some time touching on matters one level down (to TCP/IP, and other areas, in this case), and one level up (to HTML, generally, in this case). Because the authors are particularly concerned with HTTP performance, details of the interactions between HTTP and adjacent levels can be important.

The book is divided into five main sections: 1) an overview of HTTP, URLs, and connection management; 2) HTTP Architecture, including Web servers, proxies, caches, gateways, tunnels, robots; 3) Identification, Authorization, and Security; 4) Entities, Encodings, and Internationalization; 5) Content Publishing and Distribution, including hosting, publishing, load balancing, logging. So, even if you classify yourself as a "D," or even if you are hacking on an extensible open-source router software platform (in that case, you are an "F"), you will find yourself pulling this book from the shelf from time to time to check on something in one of these areas. The modular organization of the book is good.

The full Table of Contents is available on line.

Depth One (unfortunate?) thing about the Web is that its "architecture" (if you can even call it that) evolved and grew piece by piece. The design goals people had in mind back in 1993, or even in 1999, have been blown away by what has happened on the ground. Inter-company politics have also been a big factor -- never helpful for promoting standardization, or sound design. (Perhaps another problem has been the lack of an O'Reilly book on HTTP to tie everything together!) Hence, not only do you have a confusing mass of obsolete and/or overlapping specifications documents, you also have major differences between how different browsers, servers, and proxies adhere to these specifications in practice. This is one place the book shines: sprinkled throughout the pages are little tidbits about compatibility or performance pitfalls, gleaned from much practical experience. (The authors were some of the architects of Inktomi's Traffic Server "enterprise class" Web cache. Think "proxy caching for all of AOL's Web traffic.") As one example: "Technically, any Connection header fields (including Connection: Keep-Alive) received from an HTTP/1.0 device should be ignored, because they may have been forwarded mistakenly by an older proxy server. In practice, some clients and servers bend this rule, although they run the risk of hanging on older proxies." I can just imagine the series of bug reports leading to the inclusion of that piece of advice in the book. There are many other such warnings and bits of advice, generally aimed at HTTP application developers, often with an eye to performance tuning.

Here again, appropriate depth of discussion for a variety of readers is handled by clear organization of the book. The basic background material is laid out, and as the authors dive deeper into detail they may make a suggestion like, "If you are [not] writing high-performance HTTP software... feel free to skip ahead." Then, at the end of every chapter, there is a section labelled, "For More Information," which is a collection of relevant references and links, for those who want to dig into the source documents themselves.

Cautions This book review is addressed to the Slashdot crowd, a very technically savvy audience, so it's appropriate to mention what this book is not. It's not a detailed technical reference on all the topics mentioned in the table of contents (above); it would be tough to fit all that material into the book's 650-plus pages. However, the book is a good overview of HTTP and many related topics. The book does dip down into the grungy detail in many areas, but this won't be your only reference if you are a Web application developer.

Conclusion Overall, this is one of the more accessible O'Reilly books I own. In addition, while experts will certainly seek out greater depth in their particular area of expertise, few people are expert in the whole range of topics related to HTTP that this book covers. In addition, the book provides many tips drawn from practical experience, and references to more detailed material. HTTP, if not the heart and soul of the Web (perhaps that is Web content itself), could perhaps be called the Web's circulatory system. If you have a professional interest in Web content distribution, or Web application development, I believe this book deserves a spot on your shelf.

You can purchase HTTP: The Definitive Guidefrom bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

34 of 283 comments (clear)

  1. Wow, long article by TopShelf · · Score: 4, Funny

    I think I'll download it to my PDA and go deprecate for a while...

    --
    Stop by my site where I write about ERP systems & more
  2. Invalid Question by Anonymous Coward · · Score: 5, Funny

    True or false questions should not be followed by a list of four choices, none of which are "true" or "false."

    1. Re:Invalid Question by ePhil_One · · Score: 4, Funny
      True or false questions should not be followed by a list of four choices, none of which are "true" or "false."

      True or False questions are always be Pre-pended with (T or F). Trust me, I tried putting True down for an essay question once and it didn't work.

      --
      You are in a maze of twisted little posts, all alike.
  3. Missing poll option by Anonymous Coward · · Score: 5, Funny

    I choose:

    E) CowboyNeal gives good header

  4. Jesus Christ! Get with the program, grandpa! by Anonymous Coward · · Score: 1, Funny
    Nobody uses html anymore, everythings' all Flash these days!

    Damn grognards.

    1. Re:Jesus Christ! Get with the program, grandpa! by Fizzl · · Score: 2, Funny

      So your answer would be:

      e) I thought the HTTP standard would be 4.01 already!

      Which means you should definetely first read "internet protocols for dummies".

      Ok, I'm a bit mean here, but I just couldn't resist.

      *smug smirk*

    2. Re:Jesus Christ! Get with the program, grandpa! by jointm1k · · Score: 2, Funny

      Actually, they would be at XHTTP1.1 by now ;)

      --
      You know it makes sense, a little reminder from jointm1k.
    3. Re:Jesus Christ! Get with the program, grandpa! by bigman2003 · · Score: 5, Funny

      Geez, I've been running Internet 6.0 for a long time. I don't know anyone still running 1.1. Some of the Netscape people are still running version 4, but I heard they can move up to seven.

      I hope that Microsoft comes out with version 8 of the Internet- but by then AOL will have Internet version 9. This is so hard to keep track!

      Who cares about Internet 1.1 though. Maybe you should get a new computer.

      --
      No reason to lie.
  5. well by Joe+the+Lesser · · Score: 5, Funny

    A) What does "deprecated" mean?

    deprecated: adj. In a state of having soiled oneself. Johnny was not efficient enough and failed to reach the restroom, and was thus deprecated.

    --
    "I only speak the truth"
    Karma: null(Mostly affected by an unassigned variable)
    1. Re:well by Wakkow · · Score: 2, Funny

      Hopefully the next version will fix this bug..

    2. Re:well by Anonymous Coward · · Score: 2, Funny

      If you wrote in a less impenetrable style, people might be able to tell if you made sense or not.

  6. Yes/No or Multiple choice? by JUSTONEMORELATTE · · Score: 3, Funny

    QUESTION: Did you know that the Keep-Alive header was valid in HTTP 1.0, but has been deprecated in HTTP 1.1?

    Uhh, my answer is "No"

    --

    1. Re:Yes/No or Multiple choice? by RetroGeek · · Score: 4, Funny

      How exactly does one ask a yes/no question and then give a multiple choice answer?

      You sir, are NOT a marketing guy....

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    2. Re:Yes/No or Multiple choice? by keli · · Score: 2, Funny

      How exactly does one ask a yes/no question and then give a multiple choice answer?

      Like this:

      Is this a binary question?
      a) Yes
      b) No

      Duhh.... :-

    3. Re:Yes/No or Multiple choice? by JUSTONEMORELATTE · · Score: 3, Funny

      d) I use a trinary computer, you insensitive clod!

      --

    4. Re:Yes/No or Multiple choice? by TobiasSodergren · · Score: 3, Funny

      Is this an unary question?

      a) what?

  7. not likely by DNS-and-BIND · · Score: 1, Funny

    If you deprecate in here, you'll clean it up.

    --
    Shutting down free speech with violence isn't fighting fascism. It IS fascism!
  8. Re:I don't have a web server by garcia · · Score: 0, Funny

    that would be, I don't use HTTP... I use Gopher you insensitive clod!

  9. I do know this... by Otter · · Score: 3, Funny

    ===================
    QUESTION: Did you know that the Keep-Alive header was valid in HTTP 1.0, but has been deprecated in HTTP 1.1?
    A) What does "deprecated" mean?<br>
    B) What is the "Keep-Alive header?"
    C) That's too bad - I kind of thought Keep-Alive was handy!
    D) Get with the program... HTTP 1.1 came out in 1999. The Internet boom is over already! Persistent connections are the default in HTTP 1.1 anyway.
    ============

    Well, I'm no HTTP expert but I do know this -- that <br> tag doesn't belong there.

  10. I'm in management now... by AKAJack · · Score: 4, Funny

    ...I have someone I can fire if they don't know the answer to this question.

    1. Re:I'm in management now... by sandbagger · · Score: 3, Funny

      You can't fire them if they're in marketing and they insist on saying things like "This HTTP sounds interesting. Can it be put in the web?"

      Oh yeah, the same applies to human resources.

      --
      ---- The above post was generated by the Turing Institute. Maybe.
  11. Re:answer e) by jc42 · · Score: 2, Funny

    everyone with any real cred still uses HTTP 1.0.

    Huh? To get real cred, you do:

    : telnet foo.bar.com 80
    GET /some/file.xml

    And you hit Return twice, of course, but you knew that.

    HTTP 0.9 is the Real Thing.

    Hey, anyone remember HTTP 0.5?

    --
    Those who do study history are doomed to stand helplessly by while everyone else repeats it.
  12. But I thought... by pdpTrojan · · Score: 0, Funny

    HTTP must be at 6.0! Why else would I need Internet Explorer 6?

  13. Re:It even answers by glenstar · · Score: 5, Funny
    Here are some other interesting codes, pulled directly from the RFC:

    402 -- Payment Required
    406 -- Not Acceptable
    300 -- Multiple Choices

  14. Re:Or... by weston · · Score: 4, Funny

    Where do you think you can find HTTP on the W3C site?

    And yet, as has been pointed out, you can indeed find it on the w3 site.

    The RFCs on HTTP are useful if you are writing a server or client, however they are less useful as a guide to how what is out there works.

    But, as anyone who's tried CSS or just about anything else knows, this is absolutely true. Differences between vendor implementations are one reason why many geeks are bald, sickly, and pale.

  15. "OK, how well you know HTTP?" by Anonymous Coward · · Score: 4, Funny

    Me know HTTP real good!

  16. Re:Or... by Kredal · · Score: 2, Funny

    Aww, I miss blink. I used to have a version of my webpage wherein every other word blinked. It was actually quite pretty, in a geeky epileptic sort of way.

    --
    Whoever stated that signature sizes should be limited to one hundred and twenty characters can just go ahead and kiss my
  17. Re:Or... by Yunzil · · Score: 3, Funny

    One of the big problems with the IETF is that the RFCs look like shit, they are designed to be printed in a fixed width font because thats the way they did things in Babbage's day. So not surprisingly engineers tend to go for documentation that is easier on the eye, even if it turns out to be wrong.

    I don't know about that. I'm an engineer, and I'd rather have something printed in fixed-width font, on green-and-white fanfold paper. Less BS, more facts. :)

  18. Two minutes to midnight. by HarveyBirdman · · Score: 4, Funny
    A) What does "deprecated" mean?

    "Soon to be a Microsoft standard."

    --
    --- Ban humanity.
  19. Other useful error codes by Mr_Silver · · Score: 2, Funny
    I find the error codes generated by here rather enlightening.

    (reload a couple of times)

    Yes, I did have something to do with it. Sorry.

    --
    Avantslash - View Slashdot cleanly on your mobile phone.
  20. Re:Or... by mmol_6453 · · Score: 3, Funny

    The blink tag works great for papers on quantum physics.

    (Credit to UserFriendly goes here)

    --
    What's this Submit thingy do?
  21. How well you know HTTP? by sharkey · · Score: 2, Funny

    I'm an IIS coder, you insensitive clod!

    --

    --
    "Outlook not so good." That magic 8-ball knows everything! I'll ask about Exchange Server next.
  22. what deprecated really means by marhar · · Score: 4, Funny

    A) What does "deprecated" mean?

    "No matter how much we pretend otherwise, this will stay around forever."

  23. My guide to HTTP by Anonymous Coward · · Score: 1, Funny

    Save your money, here's my guides to HTTP.
    Client sends:

    GET (uri)

    Server sends:

    (the web page)

    This concludes the guide.