is tcp/ip knowledge useful in web development?

What's the best way to setup a home network? Why should I care about BGP?

is tcp/ip knowledge useful in web development?

Post by ghostheadx2 on Wed Jun 08, 2016 6:12 pm
([msg=92429]see is tcp/ip knowledge useful in web development?[/msg])

Alright, so I'm about to take a class in TCP/IP networking. How useful would that knowledge be for professional web development? I looked up the question and found this:

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.
ghostheadx2
Contributor
Contributor
 
Posts: 728
Joined: Wed Nov 19, 2014 1:19 am
Blog: View Blog (0)


Re: is tcp/ip knowledge useful in web development?

Post by Jbraithwaite on Thu Jun 09, 2016 3:59 am
([msg=92430]see Re: is tcp/ip knowledge useful in web development?[/msg])

Well if you think of it from an attackers perspective, you'll see that it is quite important. Take for instance if a web dev sets up a site using all default ports for all web goodies. FTP, http, ssh if needed, squid proxy, mySql etc etc. Standard scans would just open you too so much.

Now take that and come in from the other angle. Knowing you've got some 65k ports to play with. Why not put your services higher up the range? Why not filter the ports. Install Knock and make it even harder for folk to port scan. Instal a WAF even.

Web devs have a harder time trying to prevent SQLi, XSS, CSRF and all that other stuff to be making sure a server box is also secure. That's likely to be dealt with by a service host like cloudflare, Azzure or AWS. However in the case of some rookie setting up his own server on a low level hosting company. It's going to have some sort of protection but nothing is safe really.

As far as TCP/IP being useful I'd say of course. It's always useful as without it, we can't get anywhere on the net or a network without it. It's fundamental to everything we do really.

So think about Web development from the perspective of someone who is looking to create a fluid UI, slick and future proof with a strong backend with resilience, until a Web App Pen tester comes along on a Bug Bounty and tears it apart. They then have to go back and recode a lot of what they have done. Fix bugs and holes. More often than not limiting the user functionality of the web app.

In my experience, web devs could care less about networking. Some of them aren't even open to learning how to protect themselves against the simplest of attacks, and just copy code from Github or stackoverflow and hope it works.
In training....
Jbraithwaite
Poster
Poster
 
Posts: 198
Joined: Tue Nov 10, 2015 4:35 am
Location: Whatever my VPN says.
Blog: View Blog (0)



Return to Networking

Who is online

Users browsing this forum: No registered users and 0 guests