1. 20

Hello fellow lobsters!

Networking in general is probably the area related to Computer Engineering I’m less familiar with, but I would like to use this quarantine to change that. Usually every time I deal with a networking issue I end up fixing it by trial and error and a bit of intuition but I would like to understand what is going on, and be able to reason about it.

What are good resources (blogposts, books, platforms) to learn about networking.

  1. 15

    I’ve worked in networking a good while and have a draft blog post on just this subject - but it’ll probably stay draft a bit longer. 🙂

    My four main book recommendations are:

    1. High Performance Browser Networking (available for free online https://hpbn.co) - great crash course on protocols and browsers. This is probably 90% of what most software developers need to know.
    2. Interconnections by Radia Perlman - if you want to learn about routing protocols, this is still the best resource. Perlman is extremely accomplished in the field and has an accessible writing style. A few newer protocols will be missing, but this will give you the basis you need to pick those up easily from eg. wikipedia
    3. Network Routing by Deep Medhi and Karthik Ramasamy - I only recommend this for the chapter on hardware, and possibly the chapter on label switching. It has a great overview of how a physical router is actually put together and works, but I found most of the rest of the book extremely dry and nowhere near as engaging as Perlman.
    4. The Internet Peering Playbook (much of the content is free at drpeering.net) - if you want to understand the people/business rather than the technical side of how the Internet is put together
    1. 2

      i would also heartily recommend ‘network algorithmics’ it is really very good.

    2. 6

      for ipv6 hurricane electrics IPv6 Certifications is nice, you even get a free shirt ;)

      1. 1

        This is great! I’ve been wanting to really figure out IPv6 networking. Plus, you had me at free shirt.

        It looks like they setup sort of tool that verifies your configuration? That’s pretty cool.

      2. 5

        There was a thread a couple days ago on socket programming and networking in general with some pretty good recommendations

        1. 3

          I’d give Tanenbaum’s Computer Networks a shot, for 2 reasons (I didn’t read it).

          • I loved Operating Systems and how it was written
          • I didn’t like Kurose’s book on Networking that was our official book at university
            • I probably have to add that I wasn’t a total beginner when I took this networking course, I had been working as developer for years already, so a lot of the material wasn’t new to me. I simply didn’t like the presentation.

          Also Beej’s guide to network programming.

          There’s a few points to add, though

          • if the revision of the book is “kinda” old: TCP/IP didn’t change except for specifics, still read these books
          • top layers have changed, but it’s absolutely fine to e.g. learn about HTTP/1.1 and then additionally, later read about HTTP2
          • iirc there’s not much about P2P networking, but it builds on the basics
          • “carrier-grade” routing like BGP or OSPF might be seen as mandatory by some, but I’d still call it advanced and so you should probably postpone this. Also the chances might be low you ever need it, if all you do is administering stuff “in a building” or “inside the data center” :)
          1. 2

            I did read Tanenbaum’s Computer Networks and highly recommend it for self-study.

            1. 1

              +1 The best book about networking. If you want something more work oriented, you can read Cisco CCNA preparation books.

            2. 1

              I own a few of his books including Computer Networks and Operating Systems. In every case, his style is to be pretty thorough. His books are like reading a (guided) encyclopedia. It’s easy to read, but it’s too slow for me.

              I’d prefer a slightly faster path to get to the most important information.

              For this reason I don’t really recommend Computer Networks unless you want the comprehensive, but still easy to read version. For most developers today, starting with High Performance Browser Networks and then going to the TCP/IP layer is a good use of time. However I haven’t yet found a good book on TCP/IP (including TCP/IP Illustrated).

            3. 1

              I share some links I collected on networking

              1. 1

                The oldie, but goodie is “TCP/IP Illustrated” by Richard Stevens. It finally got networking clicking for me, and later editions are quite good too.

                1. 1

                  I’m not very experienced at networking either, but using Wireshark to see what’s going on was very illustrative when I did it years ago (although I suspect that with the whole HTTPS thing going on, it might be more difficult to peek into packages?… Not sure).

                  1. 1

                    I would recommend Networking for Systems Administrators it’s great introduction into Networking.