Networking: People and Computers

Learning Objectives

    • Define the term networking. Explain that networking goes beyond just technology.
    • Explain the importance of communication.
    • List ways that technology can help make communication between humans more effective. Mention real world examples of communication platforms.
    • Explain that computer networking can enable positive and negative communication.

What is Networking?

You may have heard the term “networking” before. The word “networking” can mean different things. You could define networking as, “the linking of computers to allow them to operate interactively”. At least, that’s how Oxford defines it. In this section and for all other sections in the series, let’s define networking using IBM’s definition, which is “defining a set of protocols (that is, rules and standards) that allow application programs to talk with each other without regard to (their) hardware and operating systems”. There’s networking in technology, but there’s also networking in everyday life. When we network with different people, we learn about them. We learn things such as their likes/dislikes, where they come from, and even who they’re related to. If we compare technology to human beings, you might be surprised to hear that technology and human beings communicate in similar ways.

Now, that doesn’t mean you’re a robot…

Though, I admit, being a robot for a day would be kinda cool…

The point is humans create technology, so it makes sense that we would create things in a way we understand. In later sections, we’ll see examples of how computers talk to each other. For now, let’s just keep the idea that technology and human beings communicate in similar ways.

Ok, so we now know that technology and humans communicate similarly, so what?

If we take a step back and look at how we live our lives, do you think communication is important?

I would say, “Heck yeah!”

Without communication, how would we know how a person feels? If you were sick and needed help, how would you be able to signal someone? Simple human communication, like talking, can only go so far. Facial expressions and non-verbal cues are other ways that we can communicate. Going back to talking, what happens if you want to talk with someone who is not physically with you?

Maybe we could reach them by megaphone?

That might get annoying for the other people around you, and on top of that, the person you intend the message for may not be around to hear it. It’s possible that the person you want to talk to may be 2,000 miles away!

Going back to the megaphone, what happens if you want the message to be heard only by that specific person? Maybe the message is a secret. Screaming your secret through a megaphone would definitely make that no longer a secret.

Computers to the Rescue!

Computer networking can solve many of these communication problems. First, some computer networks have the ability to send data at the speed of light, which given a medium like single-mode fiber, is roughly 124,188 miles per second. That’s quicker than any speech I could give!

Computers also have the ability to use encryption, which can make things for peeping eyes very hard to read.

Let’s say we had the following file of text:

the cat is in the tree.

Let’s now look at that same file when it’s encrypted using a 256-bit AES cipher:

U2FsdGVkX1/ysfGqqcUyY9dzVVKt3AgKs9SphLA9VwN1M01ry9rwJ5/hss+fBKQA

I don’t know about you, but I don’t understand a word of that!

Networking is important, whether humans do it directly or use a computer to assist. Computers have allowed us to communicate in ways that redefine what it means to be human. Think about it, we have social media like Facebook that can connect you with people from all over the world. We have cellular networks that make talking with someone over the phone happen in seconds! We even have applications like Google Meet where several people can meet using video.

Just like human communication, communication using computer networks can have positive and negative consequences. With data traveling at crazy speeds, information can be spread quickly to all corners of the world. While relaying life saving news can be seen as a positive, bullying a classmate over social media can be seen as a negative.

As we learn more about computers and how they talk to each other, please remember that we must act morally. A computer can do quite a bit of harm if someone tells it to. When using technology, let’s network positively and solve problems that can make this world a better place to live in 🙂

Resources & Review

Credits

Images provided by Creative Commons contributors.

Explaining & Illustrating curl

curl is an exceptionally useful program. As described on the project homepage (https://curl.se/), curl is a tool to transfer data from or to a server, using one of the supported protocols. curl can be used to send & receive data with the following protocols:

  • DICT
  • FILE
  • FTP
  • FTPS
  • GOPHER
  • HTTP
  • HTTPS
  • IMAP
  • IMAPS
  • LDAP
  • LDAPS
  • POP3
  • POP3S
  • RTMP
  • RTSP
  • SCP
  • SFTP
  • SMB
  • SMBS
  • SMTP
  • SMTPS
  • TELNET
  • TFTP

To better explain curl, I will demo curl on Ubuntu 14.04. First, I will execute curl http://gitlab.com

The command executes very quickly. However, a lot is actually being performed in the background.

curl http://gitlab.com

When the user executes curl http://gitlab.com, a request is sent from the application (i.e. curl) to the kernel.

The kernel acts as a middle man between the system’s software applications and hardware. curl needs to talk to some of the hardware components, including the CPU, memory, and network adapter. Given that curl is a network application, the kernel definitely needs to talk with the network adapter. When curl http://gitlab.com is executed, the user is telling curl to send some data over HTTP, in hopes of a response.

In order to visualize the HTTP data being sent to http://gitlab.com, I will use WireShark to sniff the outgoing packets. Below is the packet capture performed while executing curl http://gitlab.com:

My computer is currently using Google’s public DNS server (8.8.4.4). Given that gitlab.com is out on the Internet, my computer has to send a DNS request to Google so the domain name can be translated to an IP address. Gitlab.com appears to be at 52.167.219.168. Now that my computer knows the IP address of gitlab.com, HTTP requests can be sent. The curl HTTP requests go from my computer, to my ISP gateway, and out to 52.167.219.168. The processes appear to have completed and data was received.

Let’s see what WireShark collected from the HTTP request:

The text highlighted in red was the request my computer sent to gitlab.com’s server. The text highlighted in blue is what was returned from gitlab.com’s server. When the request was sent to gitlab.com’s server, gitlab.com returned a 301 status. The HTTP 301 status code means Moved Permanently. This code is usually thrown when an user accesses a site and the web server redirects them to another. To prove this holds true, let’s open a web browser and go to http://gitlab.com.

When launching the HTTP request from my web browser, the server redirected me to this:

The URL http://gitlab.com takes you to the home page of gitlab.com:

Hard to believe all of that happens just by executing a small command! The preceding was the whole curl process, from the kernel to over the network, and completed on gitlab.com’s server.

(Originally posted on June 8th, 2017. Updated on December 29th, 2020)

OSPF Routing

This is an OSPF single area network. OSPF or Open Shortest Path First is an interior gateway routing protocol used in dynamic network architectures.

The topology above is a simple OSPF setup, nothing fancy. Hopefully, I can expand on this network in the future and make it more sophisticated.

(Originally posted on September 29th, 2015. Updated on December 29th, 2020)

IGRP & EIGRP Routing

As you can see, GNS3 does an awesome job with simulating real life networks. In this lab, I simulated two Cisco 3700 Series Routers running EIGRP with the autonomous system ID of 12. The two routers are connected via Serial and the network layout is as follows:

192.168.2.2 (My real life network adapter; I can communicate with the virtual network from the real world)

192.168.2.4 (R1’s Fast Ethernet0/0 adapter, in order to communicate with the outside world)

192.168.15.10 (AS12) – Network connection in order to bridge the two networks together (192.168.2.0 and 174.16.34.0)

192.168.15.11 (AS12) – Network connection in order to bridge the two networks together (192.168.2.0 and 174.16.34.0)

174.16.34.1 – Virtual FastEthernet0/0 interface on other side of virtual network.

In the end, I was able to ping from my real Windows laptop to R2’s FastEthernet0/0 interface (172.16.34.1). Although I had to add the routes manually in Windows, this still proves connectivity from the real world to the virtual world.

(Originally posted on September 28th, 2015. Updated on December 29th, 2020)

Having Fun with RIP Routing

As you can see, a pretty simple setup. Think of the two networks as two separate locations. The Serial WAN link would simulate going over an ISP connection. We have Network 1 (192.168.10.0) and Network 2 (192.168.20.0) routing data between each other using RIP (Routing Information Protocol).

Pictured below is the RIP table using the show ip rip database command:

(Originally posted on September 16th, 2015. Updated on December 29th, 2020)