HACKER Q&A
📣 tusharvaswani

Resources for learning networking for back end development


Hello everyone, I am a frontend developer and I am trying to shift to backend development. I am studying directly from Node JS docs but I have realised that most of their networking modules are hard to understand without have a knowledge of networking . So searched google for resources but didnt find a single resource. All resources were in depth covering those OSI layers that a backend developer would not need. So anyone please suggest me some resources(videos, books, articles anything) for studying networking but for a level of backend engineer.


  👤 Nextgrid Accepted Answer ✓
For a web frontend dev switching to backend I'd assume you still want to stay within the web space rather than let's say systems programming - in this case I wouldn't worry too much about the lower-level details yet and instead focus on what's relevant for the web:

HTTP - headers, the concept of forward/reverse proxies, etc

TLS - not necessarily the underlying cryptographic primitives but the high-level overview, how certificates are obtained/managed, the data they encode, how are they validated, etc

DNS - the types of records, etc

The best way IMO would be to learn by doing - set up a basic server-side rendered application (you can add a JS frontend later, this will come with its own challenges such as serving it from another domain and setting up CORS, etc) purely on a dedicated server or even self-hosted hardware. It's not that the cloud is always a bad idea (though it can be in some cases), but doing it by hand from scratch will teach you plenty of things that the cloud otherwise abstracts away from you.

Get yourself a Linux VPS from a provider offering fixed, capped pricing (so a mistake can't cause a huge bill) and serve that web app from it, doing everything yourself - no S3, no Cloudflare/AWS ELBs, etc.

You won't learn anything in depth, but you'll get a good high-level overview of how all these concepts fit together and will be able to know how to dig further and where to dig.


👤 robcohen
Go get CompTIA Network+ certified. There’s plenty of material (prof Messer in particular). After that, play around with simulated network with GNS3 or similar software. Learn to SSH tunnel through multiple hosts. Play with socat and other low level networking tools. Implement some basic apps with your language of choice. Learn wire shark doing wire shark CTFs. Finally, reimplement a networking protocol from a spec.

Congrats you know networking now.


👤 jmconfuzeus
Just search for TCP handshake on Youtube.

Then install a program called Wireshark. Search Youtube on how to use it to inspect traffic.

Then read this excellent article on how web frameworks actually work: https://shopify.engineering/building-web-app-ruby-rails

Unless you're looking to build your own web framework or something that's all you need to know for backend development because everything is nicely encapsulated these days.

If you want to build frameworks and stuff then learn C and grab a book called TCP/IP Illustrated.


👤 ryanchants
The closest I can think of is High Performance Browser Networking:

https://hpbn.co/

But I'm not really sure what backend-specific networking knowledge you need.


👤 janstice
I’d have a look at something like an Udemy CCNA course, but stick to the generic stuff, and skip the Cisco-specific things - this should get you enough of the basics that you can pick up the rest. Udemy is good here in that you can pick & choose from the videos.


👤 floatinglotus
You really shouldn’t have to learn this stuff these days. If you build your apps for Kubernetes then the routing, DNS and even TLS should be handled automatically.