Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'd like to get a better understanding of what requests are and how to describe them. For example, when I go to a homepage for a django project, I get the following five requests:

[21/May/2012 12:16:31] "GET / HTTP/1.1" 200 1958
[21/May/2012 12:16:31] "GET /static/css/all.css HTTP/1.1" 304 0
[21/May/2012 12:16:31] "GET /static/js/all.js HTTP/1.1" 304 0
[21/May/2012 12:16:31] "GET /static/images/logo.png HTTP/1.1" 304 0
[21/May/2012 12:16:31] "GET /static/images/login-button.gif HTTP/1.1" 304 0

Would this be considered 5 concurrent requests? If not, how is a concurrent request defined?

Also, why is the length for the images always 0 here? When I do tail -f on my apache logs, I see a different content length -

[21/May/2012:12:09:45 -0700] "GET / HTTP/1.1" 200 1359 
[21/May/2012:12:09:45 -0700] "GET /static/css/all.css HTTP/1.1" 304 209 
[21/May/2012:12:09:45 -0700] "GET /static/js/all.js HTTP/1.1" 304 210
[21/May/2012:12:09:45 -0700] "GET /static/images/logo.png HTTP/1.1" 304 187 

What accounts for the difference in length? Finally, where would be a good reference to learn more about requests/responses and see how they work? (I'm not looking for something like http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html, but to see for myself how they work and learn about them).

share|improve this question
    
Where is the first log from if the second if from apache, and how are these two logs connected, exactly? –  rackandboneman May 21 '12 at 19:42
add comment

3 Answers

up vote 2 down vote accepted

You mention that you are not looking for something like RFC2616, but that is precisely where you should be looking. The RFC describes exactly how it works.

If you really want to see how it works, write a simple client and server in the programming language of your choice. As you've mentioned Django, perhaps Python would suit you.

share|improve this answer
add comment

You can't really tell from the logs whether the requests are concurrent or serialized. You would have to be watching a network trace to make that determination, and it probably varies depending on the client.

The length on the images requests is zero because the webserver is not actually sending any data. The 304 response code means "not modified", and is the result of the client checking to see if it's cached version of the image is current.

You can see more information about HTTP response codes here. I suspect Kyle's pointer to Wikipedia is a good place to start w/r/t understanding the basic protocol.

share|improve this answer
add comment

Well the best place to start would be wikipedia: http://en.wikipedia.org/wiki/HTTP_protocol

The difference in length is probably based on the headers sent. The reason you see 0 for the images is because your server is sending a status 304 (Content not modified) status. Learn more here: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.