Ask HN: As a software engineer, how do I best learn basic network engineering?

Is there a "System Design Primer" equivalent for network engineering for application developers?

In school I never took networking class and I never had to use any of the networking utilities/commands at job beyond a simple telnet to check of host/port is reachable.

I have looked into youtube videos --- but they are all too abstract and tend to go into enough depth only many videos later.

I have looked into coursera courses --- same deal as youtube videos.

So, to summarize the problem with all these tutorials seems to be too much time commitment -- unfortunately I don't have that much time.

Perhaps a good tutorial would be something that would be a hands-on tutorial based on several scenarios.

Any advice?

Thanks

PS: it's embarrassing to admit I have more than 10 years of experience and I still don't know the basics of network engineering.

17 points | by ksd482 1153 days ago

8 comments

  • rulambo 1153 days ago
    My advice would be to start with web applications and use for example Rust (because it is easier to get started on simple stuff) and build a TCP server (20-30 lines of code).

    Then ask yourself what you are seeing and why. OSI model and such. Then try to find out what the kernel has to do to setup a socket and build something in C (just google Linux socket programming).

    And after that, try researching how the packets you receive can be blocked by a firewall and why.

    And go on and on. I am currently writing a book which touches the topic a bit and it helps to build stuff and see packages.

    For example: Use Wireshark and try to find out how you can see the communication of the browser.

    Google: - Linux Networking - What are sockets - Socket programming - Firewall blocks a domain how - How to bypass firewall for domain

    • ksd482 1152 days ago
      Thank you for your advice especially for the google terms --- that's going to lead me to discover a whole lot of information.

      The pattern I am seeing in this thread is that I can't escape the basics and theory.

      That's fine because at least now I know that putting time into learning the basics and theory is worth it.

  • runjake 1152 days ago
    20+ year network engineer and programmer here.

    Get a good CCNA study book (like Todd Lammle’s) and browse the first few chapters until you are satisfied. Stop when you don’t care about the chapter topics anymore.

    Lammle’s book is highly-regarded and an easy read. It begins at layer 1 (electrical signals) and continues up the OSI stack.

    You could even buy an old, used edition. The information you’re interested in hasn’t changed.

  • hn_asker 1153 days ago
    The obligatory Beej's suggestion: https://beej.us/guide/bgnet/html/.
    • ksd482 1152 days ago
      Wow this is quite a well organized tutorial. Seems self contained since it contains definitions, explanation and examples.

      Thanks for sharing this!

  • viraptor 1153 days ago
    > all these tutorials seems to be too much time commitment -- unfortunately I don't have that much time.

    There's quite a bit of content there. I'm not sure what your threshold for much time is, but don't expect to dive into more than basics in <10h.

    An alternative for practical application would be just to look at what you actually use and dive deep. For example two concepts: routing tables and TCP/IP header - go to the articles on wikipedia, and go deeper into things you don't know about.

    • ksd482 1153 days ago
      > ...look at what you actually use and dive deep

      At work we are trying to implement some network security, and I feel lost in the discussion. So perhaps this might be a good starting point?

      I have also noticed that I learn best by doing things. For e.g., many many years ago I struggled to understand OAuth protocol, or even load balancing concepts by reading tons and tons of articles on them. A few days later my understanding would vanish into thin air. Then I had to implement this for work -- I struggled but I was not only able to re-learn it, actually put it to use but also retain the theoretical concepts very well.

      So I am looking to do something similar. But I don't have the luxury to be hands on at work because the security stuff would be handled by a different team.

      That's why I am looking for some tutorials that would guide me but actually make me do something in a sandbox environment.

      • viraptor 1153 days ago
        You have everything you need for playing around available at home:

        Want multiple endpoints? VMs.

        Want some routing rules? Put VMs on one bridge.

        Firewalls? Iptables or whatever is the thing windows uses.

        General looking at the traffic to understand what's happening? Wireshark.

  • austincheney 1153 days ago
    The industry standard for network credentials are the Cisco certifications, namely: CCNA, CCNP, and CCIE. I recommend getting a text book and starting with CCNA. If that’s a bit rough you can study for Network+, the baby cert from Comptia.

    Get the Cisco “Packet Tracer” application to help you study. It is a network simulation application that allows you drop fake hardware into a fake network that you can configure and pass packets across.

    I know software developers don’t do certifications, but networking does (actually absolutely everybody else does). Those certifications are the equivalent of a law license or medical license for that industry.

    > So, to summarize the problem with all these tutorials seems to be too much time commitment -- unfortunately I don't have that much time.

    Make time. Find it. Skills and knowledge take study and practice which take time. If you cannot be bothered to spend time learning this I recommend you stop lying to yourself about it and go do something else.

    • ksd482 1152 days ago
      I have heard of those certifications. Thank you for your advice. I will definitely check out these applications.

      I guess I was just being lazy when I wrote that I don't have time. Of course, I have time. I took some time to ask this question, so I obviously care enough to put in time to learn.

      My problem, I believe, was I didn't know if I putting in time to resources that I had myself discovered was worth it. This is coming from my experience on reading certain protocols' wikipedia entry, watching tutorials etc. and not gaining useful knowledge and understanding after spending dozens of hours into it. So I was being cautious of that.

      So, what was missing, until now, was some guidance. With comments such as yours and many others here I have enough confidence that putting in time into these resources would not only be worth it but also would be an efficient use of my time.

      So thanks for that as well.

  • joana035 1153 days ago
    After reading the theory don't forget to apply it a couple of times, tcpdump, tc, iproute2, iptraf, virtual machines and GNS3 are some tools that help augment your learning process.
  • brudgers 1153 days ago
    Tanenbaum’s Computer Networks is a pretty standard textbook on the subject. It pours a solid foundation in an organized and systematic form.

    If nothing else you won’t be flailing around the internet.

  • easytiger 1151 days ago
    It's not clear to me what you want to learn, do you want to learn sockets & client/server development?