For anyone just beginning their career in computer networking, I have always thought that one of the best protocols to learn about first, is the Address Resolution Protocol also known as ARP.
To understand ARP, let's quickly talk about 2 concepts. Areas and Addresses
The main one to know about is a Local Area Network (LAN). A home Wi-Fi network is a good example of a LAN. All of the devices connected to the home Wi-Fi are all interconnected and can communicate freely with each other. Some devices may even be connected by cable into the back of the router.
Being part of a LAN is like being in a room at a party. You can see everyone in the same room as you. If you wanted you could announce something to the room (a broadcast), speak to a small group (a multicast), or have a nice 1-2-1 chat with a friend (a unicast). Anyone in the room should be able to speak to and hear anyone else in the room.
To say there are a lot of LANs in the world would be an understatement.
Most of these LANs in turn, connect to the Internet. In the UK, every household has the right to have access to affordable and "decent" broadband. This means (in theory) that every household should have a LAN or at the very least be capable.
There are other areas, like Wide Area Networks (WAN), Person Area Networks, and a few others but for the sake of ARP we can leave them alone just now.
There are 2 categories of addressing in the computing world. Physical Addressing and Logical Addressing.
Physical addresses are similar to your characteristics. What you look like, what your voice sounds like, the expressions you make. The things that make you more than just a name, and make you recognizable across a room at a party.
An example of a physical address is a Media Access Control (MAC) address. Just as there should be only one "you", every device in the world should have a unique MAC address.
Logical Addresses are akin to your name. The string of syllables and mouth sounds that when spoken get the attention of a person (with certain characteristics).
A big difference between physical and logical is that you will always be you, but the name you may want to go by can change depending on the scenario. In a room (a LAN) with your parents you may be "Christopher". With your friends at a party (a different LAN) you might be "Topher" , "Chris" or "XtFR". You may even go by a different name, simply because the name is "Christopher" already taken (having two in the same room would get confusing after all).
Unlike MAC addresses where every device needs to have a unique address in the world. Logical addresses (for the most part) only need to be unique in the local area. Meaning I can be "Christopher" in one room, and someone else can be "Christopher" in another.
With all of this information we can now get down to the crux of it.
ARP is a protocol that allows you to map the logical IP addresses to the physical MAC addresses. Basically it allows you to put a name to a face.
ARP is a protocol that only works on the Local Area. Back to our "fictional party" it's like walking into the room and yelling, "is there anyone called Boris here?" The hope is that the Boris you are looking for replies. Everyone hears this message but unless they are called Boris they will just ignore it.
If there is no reply, we can assume Boris is not in the room. If we do get a reply though, we can mentally pair the name Boris with a set of physical characteristics or the person who replied.
Computers do this very same thing and the process is ARP.
Send out an ARP Broadcast to the broadcast MAC address FF:FF:FF:FF:FF:FF Asking the question "I, AA:BB:CC:12:DD:DD am 192.168.0.4. Who is 192.168.0.3?"
Everyone in the local area will receive the message but unless they are the requested address the message will be ignored.
If someone on the network is the address 192.168.0.3 they will be able to send a unicast message in return to the asking device. The message will basically declare that "I AA:BB:CC:12:CC:CC am 192.168.0.3"
Now the original device has all the information it needs. Now the two devices can communicate.
But wait doesn't 192.168.0.3 now need to also ARP for the information of the original device?
No! This is the great thing about ARP. By sending the ARP in the first place we provide all the information required by the recipient to be able to identify and recognize us.
How does this help?
ARP really is just such a cool protocol considering its simplicity. Understanding it can unlock a lot of doors in IT careers.
If you are in Networking, you now understand how devices learn about each other.
If you are in Programming, you can use it to help populate variables within your programs.
If you are in Cyber Security, It helps you understand how layer 2 broadcasts and replies interact.
If you are in Ethical Hacking, It can be used or manipulated for certain types of attacks.
Happy "ARPing" (which is not just the verb of ARP, but also a command utility tool you might want to have a look into).