As Rails developers, we depend on network protocols to ensure the products we build are available and accessible to our users. Despite this, many of us are poorly aware of how the layers of the network stack actually work, or why they are there.
Understanding the things that happen between physical signals on the wire and your Rails application will help you hone your craft and level you up. Fortunately, the basic concepts of network protocols are easy to grasp, with a little guidance. So let's walk together through these concepts, and peel away the layers of the network stack one by one.
Most developers who work with Ruby on Rails build solutions that ultimately work on intricate layers of networking protocols. Despite this, most developers are oblivious to what those network layers are, how they work and what they might mean for their work.
My aim in this talk is to bring my experience of teaching network protocols to high-schoolers to the people who actually are working on those protocols day-in and day-out.
The intended audience for the talk will be Ruby on Rails developers who want to learn more about network protocols to improve their skills. The outcome of the talk will be to give the audience enough information regarding the basics of the OSI model layers and introduce them to some tools they can use to improve those skills.
The basic concepts of networking protocols at different layers are easy to convey through analogies to other human-built networks like the (snail)mail network or the telephone network. I will be explaining the concepts underlying local connectivity (MAC), network (IP), transport (TCP/UDP), and application (HTTP, DNS, etc) as well as showing the audience some tools they can use for troubleshooting or understanding what is going on at various layers (e.g. Nmap, Wireshark, etc).
Throughout my career, I have always been interested in learning more about the technologies that undergird the runtime of my software. This has made me learn about the OSI model and the various ways in which the networking protocols at different layers work. Because of this knowledge, I was able to troubleshoot and fix many problems that were unrelated to my software but were caused by a network problem.
Unfortunately, this knowledge is not universal amongst web developers which include Ruby on Rails developers. This holds back many of those developers from levelling-up in their careers and gives them an unnecessarily narrow viewpoint into their work.
A few years ago, I was offered a chance to teach the International Baccalaureate (IB) Diploma Programme Computer Science course to high-school students in a local school part-time. That opportunity made it more obvious how easy it is to motivate the basic concepts behind why the OSI model exists in the first place and why each protocol at each layer is structured the way it is. Basic analogies of “how, in the real world, you would discover who your neighbours are” or “how your (snail) mail makes it to its destination without anyone in between having to know who the recipient is” are strong teaching tools that motivate these concepts well.
I would like to bring this exported experience of teaching high-school students about the fundamentals of the networking concepts to an audience of professional Ruby on Rails developers who don’t necessarily come from a Computer Science background.