[HN Gopher] Ask HN: Good books/courses to learn networking essen...
       ___________________________________________________________________
        
       Ask HN: Good books/courses to learn networking essentials for web
       developers?
        
       With 'networking essentials' I mean software components which
       constitute the infrastructure which a webapp lives within: e.g
       reverse proxy, DMZ, firewall, etc.
        
       Author : giulianopz
       Score  : 225 points
       Date   : 2021-06-27 11:45 UTC (11 hours ago)
        
       | mattficke wrote:
       | This is a little more idiosyncratic than the other
       | recommendations, but the "Bite Size Networking" zine by Julia
       | Evans is a really nice overview of networking tools on Linux.
       | 
       | https://wizardzines.com/zines/bite-size-networking/
        
       | paulcole wrote:
       | How to Win Friends & Influence Routers is a classic for a reason.
        
         | isbvhodnvemrwvn wrote:
         | Not the reason for OPs question...
        
       | shubik22 wrote:
       | I'd recommend High Performance Browser Networking by Ilya
       | Grigorik[0]. It's definitely less in-depth/comprehensive than
       | some of the other suggestions here but I've found it to be a
       | really clear, accessible exploration of networking concepts
       | relevant for web development.
       | 
       | [0] https://www.amazon.com/dp/1449344763
        
         | jakub_g wrote:
         | There's not much about firewalls etc. there IIRC, more about
         | low level concepts like DNS, TCP and so on. Anyway it's a great
         | book. You can also read online at https://hpbn.co
        
         | eatonphil wrote:
         | It's one of the most practical and in-depth books even among
         | others shared in this thread so far. It's in the top four books
         | I'd recommend every developer to read (particularly because
         | it's so practical)!
        
           | mephitix wrote:
           | Out of curiosity, what are your other top 4 books?
        
             | eatonphil wrote:
             | As luck would have it, my blog on Github pages is down. So
             | here's the post describing the four in markdown.
             | 
             | Tldr; Designing Data Intensive Applications, Effective
             | Python, The Google SRE book, and High Performance Browser
             | Networking.
             | 
             | https://github.com/eatonphil/notes.eatonphil.com/blob/maste
             | r...
        
               | mephitix wrote:
               | This is great, thanks!
               | 
               | +1 for both data intensive apps and Google SRE books. The
               | other two I haven't checked out yet
        
               | drums8787 wrote:
               | How well does the Google SRE book apply to environments
               | at smaller scale?
        
               | eatonphil wrote:
               | If you maintain any software system in a production
               | environment, I think its topics are pretty relevant!
        
               | drums8787 wrote:
               | Thx!
        
               | vitus wrote:
               | Since you mention the Google SRE book, I'm curious if
               | you've read the Google SWE book (and if so, what your
               | thoughts are).
               | 
               | https://abseil.io/resources/swe-book has a link to a PDF
               | copy.
               | 
               | I've read through about... half of it; at least from my
               | perspective (as a current software engineer at Google
               | with experience with most of the systems / processes
               | outlined in the book), a lot of it is philosophical about
               | the "why" of software engineering.
        
       | jijji wrote:
       | TCP/IP Illustrated, Vol. 1: The Protocols by W. Richard Stevens
       | [0]
       | 
       | [0] https://www.amazon.com/TCP-Illustrated-Vol-Addison-Wesley-
       | Pr...
        
         | netfortius wrote:
         | I was waiting for someone to post this.
        
         | [deleted]
        
         | joethrow29292 wrote:
         | This, and any book by W. Richard Stevens. I also cut my teeth
         | on Internetworking with TCP/IP by Comer.
         | https://www.amazon.com/Internetworking-TCP-IP-One-6th/dp/013...
        
         | OminousWeapons wrote:
         | This is my favorite networking book but I think it would be
         | overkill for OP's needs. TCP/IP illustrated walks through
         | basically every protocol in depth starting from layer 2 and it
         | sounds like OP really just wants to understand the basics of
         | network administration like what you would see in a CCNA exam,
         | and even that might be excessive for their needs.
        
       | huy-nguyen wrote:
       | This is an oldie but goodie: " TCP/IP Network Administration (3rd
       | Edition; O'Reilly Networking)" by Craig Hunt. However, I think
       | nothing teaches networking better than making your own network
       | devices from open source components, for example, creating
       | routers/firewalls/access points from barebones Linux/Unix
       | machines.
        
       | giantrobot wrote:
       | Basic course: Networks are unreliable. Everyone's life gets worse
       | when you ignore that fact.
       | 
       | Thanks for coming to my TED talk.
        
       | scudd wrote:
       | I think Beej's Guide to Network Programming is IMO hands down the
       | best resource I've come across: https://beej.us/guide/bgnet/
       | 
       | It also doubles as a very great introduction to C, if that
       | something you're interested in. It's funny because both C and
       | socket level programming are often a barrier, or at least they
       | were for me. It's an attestant to the quality of Beej's guide
       | that he introduces both simultaneously, and makes it very
       | approachable.
       | 
       | This is one of those sources that helped me disproportionately
       | grow as a programmer in a short period of time.
        
         | superchink wrote:
         | +1 for Beej's. I took a networking course at UCLA that used it
         | as the textbook and it was great.
        
       | ruben81adelaide wrote:
       | Try the CCNA course of CISCO, "The Complete Network
       | Fundamentals". I did one of those years ago. It's a great course
       | to achieve a good base of networking. CCNA is just the first step
       | to a good introduction, if you like it, you can expand your
       | knowledge with more.
        
         | Scarbutt wrote:
         | This. A CCNA book is great start of the basics.
        
         | itsmemattchung wrote:
         | I took CCNA about 10 years ago and I would say its hands down
         | one of the best certification programs and applies to my day-
         | to-day as a software engineer. I also wrote about why all
         | software developers should have some basic network
         | troubleshooting skills here: https://dev.to/memattchung/why-
         | all-developers-should-learn-h...
        
         | nickelcitymario wrote:
         | I did the CCNA course in high school, and it's where I learned
         | how to troubleshoot. It has served me well beyond the scope of
         | networking.
        
       | JanMa wrote:
       | When it comes to networking fundamentals I can definitely
       | recommend "Computer Networks" by Andrew Tanenbaum[0].
       | 
       | [0]: https://www.pearson.com/us/higher-
       | education/program/Tanenbau...
        
         | read_if_gay_ wrote:
         | This and the Ross/Kurose one are definitely the canonical
         | textbooks, but Beej's Guide is a lighthearted and more easily
         | digestible alternative if you don't want to learn _everything_
         | in detail.
        
       | sam56718 wrote:
       | I found this series to be very useful:
       | https://www.practicalnetworking.net/series/packet-traveling/...
        
       | oliverx0 wrote:
       | Here are 2 recommendations:
       | 
       | https://hpbn.co/
       | 
       | https://beej.us/guide/bgnet/html//index.html
        
         | ramesh31 wrote:
         | Upvoted for beej. An absolute must read for anyone that works
         | with a TCP/IP based stack.
        
       | arman_ashrafian wrote:
       | I really like this textbook that was used in my undergrad
       | networking course.
       | 
       | https://book.systemsapproach.org/index.html
       | 
       | The "perspective" sections at the end of every chapter are really
       | interesting!
        
       | captn3m0 wrote:
       | Udacity has a Networking for Web Developers course[0], but I'd
       | recommend trying out things (such as running a simple web-app on
       | your own server). Things like:
       | 
       | - Running https://certbot.eff.org/instructions
       | 
       | - Trying out a few different web servers (apache/nginx/caddy)
       | 
       | - Playing around with load-balancers on $cloud_provider.
       | 
       | - Spending time with docker networking
       | (https://docs.docker.com/config/containers/container-networki...)
       | 
       | - Playing around with various X-Forwarded header options in the
       | context of your application
       | 
       | For a web developer, the most useful skill is knowing what each
       | and every component on the pipeline is doing before your code
       | executes on the request. As a common eg, if your application
       | seems to be loading stylesheets from `http://` instead of
       | `https://` despite being loaded over HTTPS, it is often because
       | your application didn't honor the X-Forwarded-Proto header (which
       | most frameworks will do for you). Similarly, seeing a local IP
       | address (192.168.x.y for eg) on a log, and realizing that you
       | should be using the X-Forwarded-Ip by "trusting your proxy"[1]
       | and doing it securely[2].[3].
       | 
       | [0]: https://www.udacity.com/course/networking-for-web-
       | developers...
       | 
       | [1]: https://expressjs.com/en/guide/behind-proxies.html
       | 
       | [2]: https://shubs.io/enumerating-ips-in-x-forwarded-headers-
       | to-b...
       | 
       | [3]: https://blog.ircmaxell.com/2012/11/anatomy-of-attack-how-
       | i-h...
        
       | rsclient wrote:
       | For networking background and history, I came up with [this
       | list](https://sunriseprogrammer.blogspot.com/2019/09/a-network-
       | rea...) for some new people at work. It includes things
       | "everyone" used to know: a little bit about internet history from
       | the original sources, some of the most useful RFCs, and some
       | stuff about certificates.
        
       | nightchalk16 wrote:
       | Ben Eater Network Tutorial
       | https://www.youtube.com/watch?v=XaGXPObx2Gs&list=PLowKtXNTBy...
       | 
       | tcp/ip rfc https://datatracker.ietf.org/doc/html/rfc1180
       | 
       | daryl's ip primer https://www.ipprimer.com/#/
        
       | Tester_rjb wrote:
       | Tester
        
         | [deleted]
        
         | Tester_rjb wrote:
         | tester
        
       | stakkur wrote:
       | Not a book, and I only have one (positive) data point from a
       | coworker, but this free Udacity course tackles that subject:
       | https://www.udacity.com/course/networking-for-web-developers...
        
       | teleforce wrote:
       | I'd recommend Kurose's Computer Networking: A Top Down Approach
       | (now in 8th edition) book if you want to learn a proper computer
       | networks concepts because this is the definitive textbook.
       | 
       | If you want the practical aspects of computer networks, you can
       | try Niall Manfields' Practical TCP/IP designing, using and
       | troubleshooting TCP/IP networks on Linux and Windows book.
       | Granted it's a bit old (2nd edition is essentially the same 1st
       | edition), but because you are after the essentials it should be
       | more than fine. Here's the review of the book:
       | 
       | https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=122...
        
         | yagizdegirmenci wrote:
         | Yes! Kurose's book was the first book that i read about
         | networking and it gave me a pretty good level of foundational
         | knowledge, highly recommended.
        
         | mistahenry wrote:
         | I read Kurose's book in college and recommend it as the perfect
         | book for this topic. As a neophyte at the time, I remember
         | really drilling into the details of TCP and just being in awe
         | of how well thought out the whole system was. This book laid
         | such a good foundation for my career as a software engineer.
        
       | orangefox wrote:
       | TCP/IP Guide http://www.tcpipguide.com/ is one of my favorites.
       | Its free at the website and available as a book.
        
       | tootie wrote:
       | Networking is probably not what you're looking for. You are
       | probably more interested in DevOps and architecture. Topics like
       | DNS and edge caching. Reverse proxies are typically web servers
       | (ie nginx) or cloud services like API Gateways. Things like TCP
       | are rarely relevant unless you're doing serious micro
       | optimization.
        
         | imnitishng wrote:
         | IDK about OP but this is exactly what I'm looking for. Do you
         | have some good books/courses for the same?
        
           | news_hacker wrote:
           | I was also interested in this, instead of all the TCP/IP
           | resources mentioned here. You may find the Interconnect
           | section of this book helpful:
           | https://pragprog.com/titles/mnee2/release-it-second-edition/
           | 
           | It covers:
           | 
           | - DNS
           | 
           | - Load Balancing
           | 
           | - Demand Control
           | 
           | - Network Routing
           | 
           | - Discovering Services
           | 
           | - Migratory Virtual IP Addresses
        
         | inopinatus wrote:
         | On the contrary, I'd say the details of TCP/IP are inseparable
         | from the design, implementation, and practical
         | understanding/configuration of these elements.
        
       | spicyramen wrote:
       | I would start with Cisco CCNA it never gets old
        
       ___________________________________________________________________
       (page generated 2021-06-27 23:00 UTC)