A TCP/IP Tutorial (1991)

290 points by Liwink 5 years ago | 33 comments
  • systemvoltage 5 years ago
    Tangential: Does anyone know how to generate HTML docs such as this? It looks like a page in a book - with a header/footer and page number. And, surprisingly no one in 1991 imaged we would be reading it on a 4k widescreen - and here I am, and it is extremely readable (using SF Mono on macOS). I would love to know what tools can be used to generate almost paper-like HTML docs.

    Edit: I found the answer, tiny link at the bottom: https://tools.ietf.org/tools/rfcmarkup/

  • hashhar 5 years ago
    Is there an up to errata to track what has changed in to 30(?) years?

    This was quite easy to follow and worked up from basics. Don't really see such well written documentation these days.

    • ainam48948 5 years ago
      Yeah, this documentation was really well written.
    • state_less 5 years ago
      Opening raw sockets in Linux is a fun way to bang out your own IP, ARP, and ICMP packets for experimenting. I remember the joys of packet spoofing/flooding in college. I think with WiFi you're limited to the AP you're attached to?

      It'd be a fun hack to read and inject raw wifi or LTE frames to get a count of radios within range, when they transmit and other details of the low level protocols. It looks like with SDR, folks are able to get better access to the physical layer.

      https://www.crowdsupply.com/lime-micro/limesdr-mini/updates/...

      • 2bitencryption 5 years ago
        Only a few years ago in college (2014?) I lived in a fraternity house and frequently had to track people down for updates on projects.

        Turns out Apple devices did (or still do?) expose the DNS hostname with a format like: JAKES-iphone-some-guid

        I created a little script to ping the local network for known hosts, return a reverse lookup of the hostnames, parse the name from the iPhone hostname, and update their status in little list of who was in the building, in case I needed them for something.

      • middleclick 5 years ago
        Are there other good resources to learn about TCP and UDP? Everyone recommends the Stevens book so I think I should get that?
        • commandlinefan 5 years ago
          I'll just second the Stevens book (TCP/IP Illustrated, volume 1). But get a used copy of the first edition, NOT the second edition that was desecrated by that other author, it's awful. Although the first edition is decades out of date, it still does a great job of explaining WHY things are designed the way they are, and you'll easily be able to make sense of the newer stuff on your own.
          • tzs 5 years ago
            I miss the days of books like that. They seem much rarer for today's technology.

            By "books like that", I mean a book that is well-written, detailed, gets you will up to speed on the topic, and does not assume you will be reading the thing while sitting at a computer.

            For example, in college I got a part time job doing programming for the physics department in C. I bought K&R, and read it in the evenings. Maybe every couple of chapters or so I'd go to the computer center and write a program to test out what I'd read.

            This was before personal computer were common, so the authors could not assume you were at a computer while reading...thus avoiding the fate of far too many modern books that end up more of a "how to use this particular tool set to compile and run X code" book than a "how to write programs in language X" book.

            At a later job I was going to need to write router and bridge firmware. I bought and read the Stevens books and Tanenbaum's computer networking book. That got me sufficiently up to speed to cover most of what I needed for my firmware and gave me enough background to read specs and standards for whatever more I needed.

            In the '70s, '80s, and much of the '90s that is how it went for every technical thing I needed to learn.

            It's harder to find those kinds of resources today. Two things have changed.

            First, as computing became more mainstream, a lot more people jumped in to do books. Instead of only one or two good books, like K&R and Harbison & Steel for C, there would be dozens of books and most of them were poor at best. The good books were still there, but harder to find.

            Second, as more and more documentation moved to the web authors and site designers seem to have forgotten that we read and learn linearly. I want the site to tell me a good starting point, and provide "next" links on each page that will take me through the whole topic in a good learning order.

            Too often each article just has a set of links to various related articles, and it is easy to end up in some closed subset of the articles and no idea you've missed anything unless you remember that the article you read 10 articles back had links to X, Y, and Z, you followed X, and Y eventually came up again and you read it, but you haven't seen a link to Z for a while, and so you go back to the top of the site and start looking for Z.

          • ignoramous 5 years ago
            If you fancy reading some rust, smoltcp [0] by u/whitequark_ [1] is a pretty good starting point, especially considering it intentionally leaves out functionality and compliance for the sake of simplicity and safety [2][3].

            Then there are the more complete netmap [4] and lwIP [5] TCP/IP implementations too, but in C.

            ---

            [0] https://docs.rs/smoltcp/0.6.0/smoltcp/

            [1] https://news.ycombinator.com/item?id=17896175

            [2] https://github.com/smoltcp-rs/smoltcp/blob/master/README.md

            [3] https://news.ycombinator.com/item?id=20241138

            [4] http://info.iet.unipi.it/~luigi/netmap/

            [5] https://www.nongnu.org/lwip/2_1_x/index.html

          • XnoiVeX 5 years ago
            I really like Doug Comer's books on the topic. https://www.cs.purdue.edu/homes/comer/netbooks.html
            • blueatlas 5 years ago
              I was just going to say the same - I learned basic networking and the TCP/IP stack with Comer's first edition of Internetworking with TCP/IP. His way of explaining it just clicked with me.
            • tptacek 5 years ago
              I started my career doing low-level TCP/IP stuff and always found Comer's books more readable and more coherent than Stevens, which I'm not especially a fan of.

              https://www.amazon.com/Internetworking-TCP-IP-One-6th/dp/013...

              I'd second everyone else's recommendation that you just start hacking on an embeddable TCP/IP stack. It's not even hard to build one from scratch once you get over the reading/writing ethernet frames hurdle (which is just a library integration challenge).

            • echeese 5 years ago
              I've always been a fan of Beej's Guide to Network Programming https://beej.us/guide/bgnet/
              • zw123456 5 years ago
                Data and Computer Communications, William Stallings
              • chrisweekly 5 years ago
                Related tangent: "Browser-based Networking" (O'Reilly) is a fantastic, reasonably modern and fairly thorough resource that, in encompassing some higher levels in the stack, can at least complement core reference materials for the foundation. Highly recommended.
                • qilo 5 years ago
                  You probably meant “High Performance Browser Networking” https://hpbn.co
                  • chrisweekly 5 years ago
                    (facepalm) Yes, thank you, that's exactly what I meant. Left to confirm the title and link, got distracted, too late to edit.

                    HPBN is great!

                  • afroisalreadyin 5 years ago
                    Do you mean "High Performance Browser Networking"? I couldn't find a "Browser-based Networking.
                    • chrisweekly 5 years ago
                      yep, thanks, see my res to peer comment
                  • Jahak 5 years ago
                    Are there any new tutorials on TCP/IP? Modern computer networks and free articles, books, etc.
                  • 0xff00ffee 5 years ago
                    I think this is a great example of how to take a fairly complicated topic that goes deep, and progressively build an understanding with successive refinement of examples. They way the paper goes from the "what" to "why" is really well thought-out.
                    • ainam48948 5 years ago
                      Oh yeah, I was going to read this a while back, I'll be sure to keep this on my reading list.
                      • SeanFerree 5 years ago
                        Very cool!