http://programmers.stackexchange.com/qu ... e-requests
That stackoverflow thread seems to have mixed answers. Some of them are ones like this:
Depends on the website you're building. For small/medium websites, basic knowledge of TCP/IP is probably fine.
If you're working on a top website (in terms of traffic) a detailed knowledge of the underlying networking protocols and infrastructure is extremely important. It will guide you frequently in making good design decisions.
but others are like this:
This kind of knowledge comes in very useful very infrequently.
For example, when your ops team sets up your production site behind a router/firewall/load balancer which is set up slightly differently from the one in your test environment and you get a problem related to that, it will serve you well to spot that quickly and talk to ops, rather than digging for some oddity in code. It will serve you even better to be able to understand their language when you have that conversation.
But I really don't understand why people put so much weight on this stuff in interviews, especially when it's for a junior programmer. It is certainly not essential knowledge for everyone on a team and you can be taught.
The problem with the above response if it contradicts other answers that say knowledge of tcp/ip is still a good thing to know for basic web sites but that already seems to contradict the other answer because one is saying it is very useful, but rarely, and the other one appears to say its always somewhat useful for small websites, but not nearly as much as large websites.
So I get some answers saying basic knowledge of TCP/IP is ok to know all of the tme. I get other answers saying its only extremely useful sometimes. I also get other answers that appear to say it is extremely useful all the time to just know the basics:
It's always useful to have an understanding of how the layers beneath the layer you're coding behave if only because it comes in terribly useful when you're trying to debug a relatively complex problem and you need to understand why your application has unexpected performance problems on a WAN or why it fails for users using NAT, etc. It can also be invaluable when you need to be in a room discussing a problem with the developers, the web server admins, the network admins, and the database admins to be able to speak and understand the language everyone else is speaking and to ask intelligent questions. And the more you understand various implementation details, the more likely you are to be able to build a scalable site by, for example, understanding how different features you might implement would generate network traffic that could introduce latency and understanding how different caching strategies for a large site might mitigate those latency issues.
That said, there is clearly a point of diminishing returns where learning more about some abstraction that is 6 layers of abstraction away from the code that you're writing is unlikely to make you a better web developer. So it will depend to some extent on what you mean by "extensive". Understanding the basics of how routers manage requests is something that could be quite useful but understanding how different routers can be configured to prioritize different sorts of traffic is probably not terribly useful unless you happen to be working on an application that network admins are likely to want to throttle.
But even if it isn't particularly practical, strong developers tend to be curious about different layers of the stack and tend to learn about them even if there is no clear benefit to doing so. I would tend to expect that a web developer that had a deep understanding of how relational databases work or how networking works would be stronger than a web developer that is restricted to knowing about web development technologies alone. Obviously, it's not a perfect correlation, but it's reasonable to ask.
I look online and find things like this:
http://code.tutsplus.com/tutorials/http ... -net-31177
I didn't read most of that last article because I don't have enough time, but I read enough to infer that the guy thinks HTTP, which I know is a part of TCP/IP is useful for web development. But I can't seem to find a definitive answer as to how useful it would be to learn tcp/ip suite for a web development career, which is what I'll be doing the school organization I'm trying to join right now. Could someone help me out please? I understand these answers but I see some contradiction in that they are saying different things about how often it could come up.