what networking knowledge should I have in order to develop web applications?I know how to use XHTML&CSS plus javascript to develop frone-end static pages,then what networking knowledge sholud I learn in order to using,say PHP/python etc.to develope dynamic web pages?
You should know about HTTP, specifically HTTP headers, the whole transport process would be too so you can understand why your website might be slow. Also how to configure run and troubleshoot a webserver.
Here's a similar question:
http://stackoverflow.com/questions/757719/skills-needed-for-a-web-programmer/757756#757756
and another:
If you're going to be doing any Ajax / Web 2.0 type of stuff, I highly recommend checking out Ajax Security. It's not really language specific, but it will get you started thinking about security right from the beginning.
Definitely HTTP, since that's the meat of the web.
Other than that, knowing a thing or two about DNS might be useful. I think most browsers (try to) enforce a policy about what javascripts from different domains can't poke at each other (but I'm not expert).
What might be tangentially useful is the transport protocols over which HTTP and DNS travels; that is, TCP and UDP, respectively. They sit on top of IP, which sits on top of either ethernet or 802.11{a,b,g,whatever}.
Finally, it may be interesting to know how packets find their way around the tubes. The answer is BGP (which ISPs use to communicate internally about which IPs are placed where).
That might be a big mouthful; start with HTTP and (a rough understanding of) DNS. Add more according to interest.
If you want to develop serious web apps, then you should master the following, in the specified order:
HTML, CSS - You already know this, but from a programming POV, you should know about DOM structure of XHTML pages (actually, XML documents).
HTTP - a knowledge of the HTTP headers, GET and POST requests, Keep-alive, proxy, cookie etc. This is just for knowledge. Most of this can be accessed via language constructs.
Now you have two paths: one of the old style web programmer, and the other of the modern Web 2.0 app developer.
For Path 1:
- you need to know how to set up a web server with the tools of your choice. Eg., if PHP is your choice, you should install the mod_php on apache. Of course, there are alternatives to apache, but why would you use them unless forced?
- Then you will need to learn how to use this tool. In case of PHP, I personally guarantee that you will find abundant free tutorials on the internet, and you can start programming without even reading a single book
For path 2:
- Path 2 is for the ambitious javascript programmer. You will need to learn javascript, and learn it well. You probably know about "alert" and "onclick" etc., but after you know real javascript, you should know about callbacks, timers, event model and cross-browser differences in javascript (that sure is hell). By the way, be sure to check out javascript libraries (I recommend jQuery) after learning the basics of javascript. You just wont be able to do without them after you go pro.
- Ajax: that is really the corenerstone of web 2.0. It may seem like a big bite at first, but its quite easily managed.
- At the last stages, you will need to learn about data exchange formats like XML and JSON. Perhaps you will encounter them while learning data handling with javascript.
Thats it, do all this, and you are as good as any certified web programmer!
cheers, jrh