Networking for Devs (intro)
Tags: networking
Published: 2021-03-16 13:11:48

When I started programming-career, I had no idea that I will eventually need to have a basic understanding of Networking. However, at some point, I wanted to send a request to another computer. As you may easily understand, I probably need to know the address of the computer to which I want to send the request. The same way an individual has an Identity Card, a computer has an IP address.


What is an IP address? Who provides an IP address? Who assigns them to computers? Why don't I type an IP address in my search bar, and type some words instead, and get the result? How does the computer know where to send the information?


If you don't have a confident answer to these questions above, probably you're like me when I started programming. When I failed to answer those questions, I quickly realized that I need some basic understanding of networking.

 
Through this series, you will get to understand the basics you need to get started in the networking world. It will help you in your programming career, especially if you want to improve or learn some DevOps skills.  



# What is networking? 


 I mean computer networking, not the process of interacting with others to exchange information and develop professional or social contacts.

Networking is the process of linking computers to allow them to share and exchange information. These two networking definitions are similar to some extent because they pretty much mean the same thing but in different contexts. 



In the humans' context, we are talking about humans sharing and exchanging information. In the computer context, we are referring to network-enabled devices sharing and exchanging data.  



More like how human communication works, networking is the study of how computers can be linked to share data ( to communicate with each other). 



# What are the elements of a network? 


In order to understand elements of a network, let's take an example from our daily life. Let's say you are with your friend Bob. Bob calls you, and you say "Yes Bob" (in your voice). "Can I write you a joke?" asks Bob. And you say yes. Bob picks up a pen and a paper, writes a funny joke, gives you the paper, you read the joke,  and you laugh. 


From this small conversation, we can see elements of communication. People who are communicating; you and Bob. The information you are sharing; Bob asks you something and you reply with the answer. The medium through which you are sending your information: through written format, speaking and listening, reactions like laughing, and nodding.


There is another element that often goes unnoticed but inherently important to the conversation. If Bob asked you and you didn't reply, and then he goes on to write the joke and then gives you the paper, instead of reading the paper, you use the paper to clean your shoes, Bob would probably feel offended and wonder what's happening. This is because something is not right in this conversation. There are rules/norms of communication that a normal conversation should follow. 

Bob calls you, and you reply with yes or you nod your head, and the conversation goes on. Those rules, that you are following unknowingly, are called protocols. These protocols dictate how you reply to a message, how loud you should be depending on how far the person you talking to is, how to arrange letters on the paper, and how to read them, starting from top-right and ending to the bottom-left. 
     


Similarly, for computers to communicate with each other, there have to be the computers that are communicating, the message they are sharing, the medium through which they are sharing the messages, this may be optic-fiber, wireless, or copper-wires, and the protocols that guide the way they compose, send, receive, and process the message. 

#### Elements of a Network:
               1. Devices 
               2. Message 
               3. Medium 
               4. Protocol 


 
Next: Communicating over the network. Stay tuned.