4 ms·
Ask HN: 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 4y agoFor 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.
- tusharvaswani 4y agoThanks a lot for your answer! I agree on the thing that doing something would actually give me knowledge for that. But still if you can share some resources then I would be very grateful to you.
- isbvhodnvemrwvn 4y agoI would still learn at least basics of TCP and IP, so that you are aware e.g. what firewalls do and how this shows up on the client side (vs when nothing is listening on the port but the port is otherwise open), what private IP ranges are, or what a timeout look like. These are the basics which are going to be extremely relevant when you start troubleshooting. Especially if they slap a docker image on their VPS. There's a frightening number of people who can't tell DNS resolution failure from a timeout, think they are going to get HTTP 500 if server breaks the connection, or don't take those failures into account (and it shows up in how they design their code).
- tusharvaswani 4y agoCan you please share some resources which could help me in that!
- __d 4y agoThe W Richard Stevens book "TCP/IP Illustrated, Volume 1" taught me, but it's not really a good overview: more of a deep dive. Still, that along with his companion volume "Unix Network Programming, Volume 1" will help set you up for a rewarding career. A quick search suggests both are available as PDFs from multiple sources, or you can get the hardcover Bible-style editions, which I personally find quite fitting.
- robcohen 4y agoGo 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.
- tusharvaswani 4y agoAs I said I dont want to cover the whole networking just I need to learn those things that are required for backend development.
- throwaway0asd 4y agoThat makes absolutely no sense. Either you want to learn the basics of networking or you don’t. It sounds like you are living in some ignorance qualified fantasy of what networking is. You need to know theory of networking, all of it. What you don’t need are the instructions to configure a router or switch. Otherwise, I recommend giving up and doing something else.
- ryanchants 4y agoThe closest I can think of is High Performance Browser Networking: https://hpbn.co/ https://hpbn.co/ But I'm not really sure what backend-specific networking knowledge you need.
- tusharvaswani 4y agoThanks for sharing! I want to know about TCP, UDP and all those fancy terms in backend development like reverse proxies, load balancers.
- floatinglotus 4y agoYou 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.
- kashfi 4y agohttps://www.wa4e.com/lessons https://www.wa4e.com/lessons
- janstice 4y agoI’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.
- jmconfuzeus 4y agoJust 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 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.