I am trying to break into web development. I have taken a basic intro to OS, intro to Networking as part of my bachelors degree several years ago. I cannot say that we went into things deeply, beyond academic assignments.

I would like to understand things much better regarding to this specific task (e.g what goes on in at the OS level, at networking level, what are other computers involved, where do proxy servers and hackers come in). Again, at the very basic level this has been covered, but I would like to review this specific thing better.

Are there chapter(s) OS a specific book, or specific SHORT reading that you recommend? I have nothing against your list of 20 favorite books, but I want to understand this one thing better in 2-3 weeks of reading after work / on the weekends (realistically 5-10 hrs per week, so I am looking for about 15-20 hrs of reading material, NO MORE).

  • 1
    It's very hard to answer this question. Too broad. – Maniero Jan 4 '11 at 16:10

Well, as with most things in computers, it's a lot of relatively simple concepts stitched together. To understand it fairly deeply (but not EE-deep, since I don't go there), you could start by learning these networking concepts:

  • TCP/IP - since it's how the various players will talk to each other; you could learn Ethernet too - since you are likely on an Ethernet network, but that falls further into EE world. The OSI model may be a useful primer if you're not familiar with it already.
  • DNS - since it's how what the user types in gets translated to IP addresses for the TCP/IP calls. Circularly enough, it's also implemented in IP - which is why it's second. It's the application layer in the OSI model.
  • HTTP - since it's the application layer (there's that OSI model again) that will be used between the client and the web server.
  • HTTP variations and standards, for the proxy server and hacker issues

For things like these (general Internet standards), the actual RFCs are gold. They can be dry, they can be vague, and they may not 100% reflect shipping products - but they are the best general technical resource IMO.

As usual, Wikipedia is a great first-level resource for all of this as well. It'll tell you the basics, and generally link you to the correct RFCs (RFCs have a habit of being updated, superseded, not implemented, etc. so the quick Google searches I did are likely to be somewhat incorrect).

The OS side is a bit harder. Since it's not a "standard", there's no published reference to any of it. And, even better, different OS will do things slightly differently. I'm mainly a Windows guy - I learn this type of stuff from blogs; Mark Russinovich and Raymond Chen are the 2 best guys I know of to give you this seriously technical stuff.

  • OS execution - terribly complicated, you could spend years on this topic. For the purpose of web apps, it's probably enough to know the basics of memory models and maybe a little bit of assembly language to understand how the web server and browser will do their jobs.
  • Pick a webserver, and it's processing model. I'm a Windows guy, so here's IIS. Since every webserver will have an extension model, it's likely that what's happening after the initial request is that it's passed to another program. So, you'll have the transfer of the request, and then you can dive into the extensions processing model. At the end of the day, they'll all buffer up a string of HTML to send back over HTTP to the client.

Speaking of HTML, now you need to know the rules for that (and CSS) so that you know what the browser does to parse it into visual elements. Oh - and since this all shows in a GUI program, you can now start down the road of message loops and input handling. It really never ends - one of the greatest (and worst) things about this profession.

| improve this answer | |

"Web development" is a very broad term, as I think you understand by breaking down some of the layers. Given your background, I think you should look at this page. It should give you more vocabulary to find out what you want to study next. That covers the "web" portion. As you find out more, the "development" portion will become clearer. A little more than half-way down that page is a line answering your question.


When you type a URL into a web browser, this is what happens:

  1. If the URL contains a domain name, the browser first connects to a domain name server and retrieves the corresponding IP address for the web server.

  2. The web browser connects to the web server and sends an HTTP request (via the protocol stack) for the desired web page.

  3. The web server receives the request and checks for the desired page. If the page exists, the web server sends it. If the server cannot find the requested page, it will send an HTTP 404 error message. (404 means 'Page Not Found' as anyone who has surfed the web probably knows.)

  4. The web browser receives the page back and the connection is closed.

  5. The browser then parses through the page and looks for other page elements it needs to complete the web page. These usually include images, applets, etc.

  6. For each element needed, the browser makes additiona l connections and HTTP requests to the server for each element.

  7. When the browser has finished loading all images, applets, etc. the page will be completely loaded in the browser window.

| improve this answer | |

To answer the specific question in your title, the term you're looking for is "web page life cycle".

The ASP.NET Page Life Cycle Overview page on MSDN describes the cycle for an ASP.NET page. The terms are general (for the most part), but the details of the actions are specific for ASP.NET.

The MSDN goes into the full detail, but the page life-cycle has 7 stages:

  1. Page request
  2. Start
  3. Initialization
  4. Load
  5. Postback event handling
  6. Rendering
  7. Unload

and the page goes through them all and finishes at stage 7 when it's viewed.

At each stage events are fired that allow the developer to run their own code appropriate to that stage.

| improve this answer | |
  • Good answer, though specific to ASP.NET development, and very "object-orienty." I think a more general approach would be appropriate for Job's level of experience. – jbm Jan 4 '11 at 0:46
  • Thanks, this is not overwhelming, but ASP.NET - specific. I will check it out. – Job Jan 4 '11 at 1:38

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