[HN Gopher] Ask HN: Resources for learning networking for back e...
       ___________________________________________________________________
        
       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.
        
       Author : tusharvaswani
       Score  : 7 points
       Date   : 2022-08-20 21:23 UTC (1 hours ago)
        
       | robcohen wrote:
       | 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.
        
       | Nextgrid wrote:
       | 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.
        
         | isbvhodnvemrwvn wrote:
         | I 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).
        
       ___________________________________________________________________
       (page generated 2022-08-20 23:02 UTC)