Introduction to Networks for Software Engineers

Stupid Questions Only

As a technology specialist, at some point you may experience the phenomenon of other technology specialists assuming you know something about networking that you do not. You might have experience in programming but not in the underlying technologies that support network methods… and you might be too afraid to ask.

Luckily, you don’t need a long career in systems administration and network engineering to pick up the basics and work more effectively with the operations team or troubleshoot network stack issues on your own.

Please feel free to DM me questions on LinkedIn or Mastodon and I’ll periodically update these posts with the answers, if you do not wish to ask a question publicly in the comments below.

This will be a series!

Check back at this page as I will be adding more articles over time.

What is a network?

Networks are multiple connected computers. These computers may all have special roles, like a server and several workstations. These roles allow the computers to decide how to share resources, like files, in a structured way.

“Roles”

Service

service is an application program that makes its functionality available to other programs. These can be for other programs on the same computer (local services) or networked services for remote clients.

Server

A server was traditionally a separate computer with its own service applications. Client computers or client applications would interact with the server to get the resources they wanted – a file server shares files, a web server provides web pages, and an email server provides emails. In the age of cloud computing, this definition has expanded, so I’ll go into that more deeply in a separate article.

Client

Clients are any application or hardware which needs access to a service. A web browser is a client for web servers – it requests the web pages that its user would like to see.

Network Equipment and Roles

Do you have a certain box from your Internet Service Provider that provides the Internet? If it basically does everything and all that was needed was to turn it on, then congratulations – you don’t just have a router, you have a multifunction network appliance. This appliance fulfills one or more of the following roles:

  • Modem
    • modem (modulator, demodulator) translates signals between media. In this case, the signal is being translated between the long-range cable or fiber to your residence, and the short-range cable or WiFi inside your residence
  • Router
    • A router connects networks together, like your home network and the network your ISP operates.
  • Switch
    • A switch connects computers on the same network together, like your phone and your computer to your printer
  • WiFi access point
    • Broadcasts and receives WiFi radio signals to allow wireless access to a network
  • DHCP server
    • Assigns IP addresses on a network
  • Firewall
    • Basically a bouncer at a nightclub. Does not inspect traffic deeply, simply enforces rules about what kind of traffic may pass
  • Intrusion Detection or Protection
    • Inspects traffic and takes alerting or preventative action if it sees something that looks like malicious activity

ISPs like these because they can provision them easily and there are fewer parts to keep track of. Consumers also tend to like these because they are very physically space-efficient. However, the trade off that these devices make is that it is difficult to service one role separate from the others – if more WiFi access points are needed because of a challenging physical space, it is more challenging to work with this than with separate, dedicated WiFi equipment.

Systems administrators like to use separate servers, services, or appliances to handle all of these roles. If you ever work in a corporate office, there may even be multiple copies of some or all of these to provide redundancy, which allows the systems administrator to protect the organization against downtime caused by hardware failure or maintenance periods.

OSI Model

The Open Systems Interconnection model (OSI model) helps organize the different aspects of internetworking into “layers” or related concerns. While I have placed a star next to the ones that are most important for programmers to know, I will be summarizing each of them since it will be important to have heard some of the terms before.

Real conversation I have had with a senior developer, justifying including the extra information.

$senior: Why are you including stuff about link layers? I don’t think I’ve ever had to solve a layer two issue at work in my entire career.

$me: Oh, you’ve never had a virtual bridge issue prevent communication between containers in a virtualized environment?

$senior: Oh, you know… you’re right. I don’t remember who solved the issue in the end, but I remember working with $sysadmin on that exact issue one time… wait, is this why I was his favorite??

So you know, just because it won’t be your job to deal with it won’t mean it won’t be useful for you to have heard of it before.

  1. Physical Layer
    • Cables and WiFi
  2. Link Layer
    • How computers talk to their close neighbors
  3. Route Layer *
    • How computers talk to other networks
  4. Transport Layer
    • How networks ensure integrity
  5. Session Layer *
    • How networks keep track of ongoing communication
  6. Presentation Layer *
    • How data is presented to an application
  7. Application Layer *
    • How data is presented to a user

Thank you for reading. Please let me know if there are any clarifications I can make or further questions I can answer either down in the comments, on LinkedIn, or hit me up on Mastodon.

Related Posts