 When we run IF config, it tells us my IP address is 10.10.16.201. My hardware address is this FC address, it's long in hexadecimal, 12 digits, 48-bit address. We use the hardware address for communications inside the LAN. Whenever your wired interface needs to send to another computer in this LAN, say in this room, then the source address will be your hardware address, and the destination address of that frame will be the other person's hardware address. The hardware addresses are used by Ethernet protocol, and the source and destination address are set inside the frame that's sent in the LAN. So that's used for internal communications. But if we want to communicate to someone outside of our subnet, that's where IP addresses come in. But in fact, most applications today we use IP addresses, and when I say I want to communicate with 10.10.16.202, for example, so I specify the IP address as the destination, we know it's in the same subnet, computer 2 is right next to me. For my computer to send a frame to computer 2, it must know the hardware address of computer 2. So I know as the user the IP address of computer 2, 10.10.16.202, but I don't know, or my software doesn't yet know the hardware address of computer 2. So we have a bit of an issue, how does my computer discover the hardware address of other computers? For example, I want to connect a computer, who have we got, computer 37. If I want to connect computer 37, 10.10.16.203.7, I know it's IP address, I need to know the hardware address of computer 37. Does anyone in this room know the hardware address of computer 37? Computer 37, does anyone have the hardware address? That is the IP address 10.10.16.203.7. Maybe that person will stand up. I want to know the hardware address of computer with IP address 10.10.16.203.7. Microphone, what's your hardware address? FCAA143902CD Okay, thank you. Now I know the hardware address. Now my computer can send a frame to computer 37, because everything sent across the LAN is sent using the Ethernet protocol, and they must use the hardware addresses to communicate. If I wanted to contact computer 27, I say I want to contact computer 27. Anyone out there? Yep. Yes, there is. Good. And what do you tell me? My hardware address. Okay. FC. Okay, so she will tell me the hardware address, and there's no need to read it out. Good. So the idea is that for my computer to contact anyone, I must first learn their hardware address. And the way that I did it is I yelled out the whole class saying, who has this IP address? Who is computer 10.10.16.227? And that computer, who is that? Responded to me saying, I am computer 27, and my hardware address is this. Of course, we don't do that manually. That must happen automatically. Whenever I try and contact a particular computer, if I try to secure shell into computer 27, I press enter. The time from when I press enter until when I log in, automatically in the background, something discovered the hardware address of computer 27. Okay, so there's a protocol that operates really in the background. Whenever we want to contact someone by IP address, this protocol goes and finds the hardware address. The protocol is called the address resolution protocol. ARP.UP. We will see this in the next lab. We'll see how it works. But for today, there's also a command called ARP, the address resolution protocol. And it shows me, from my computer's perspective, who do I currently know about? Who have I asked recently? If I run it, it shows me a table, and it doesn't look so good on my output. I'll run it again. Run it here in a slightly better output. There are two main columns there. There are multiple columns there, but two columns of interest. We type it into less. The address, which is the network address and the hardware address. The hardware type is almost always the same, Ethernet. But look at these two columns. The address is the name of the computer that I want to contact, and this is the hardware address. Now, note that the addresses, some are IP addresses. Some are the nicknames. We've given each computer a nickname. And you see the pattern, I think. Netlab, followed by the computer number. Now, I don't like nicknames so much, but I'm going to use this command without nicknames. And many networking commands, if you don't want the nickname, add the minus n option. And you'll see me do that a lot with different commands, and I'll not explain it. But that means show me the raw address, not the nickname. So let's run it again with the minus n option. And it shows that my computer recently has been in communication with 10.10.16.220. And the protocol, ARP, automatically learned that the hardware address for that computer was this one. So this is a table of the recent ones we've learned. And when you run the command, you'll probably see your table is much smaller. The reason I've got many entries here is because you've all logged into my computer. You're all communicating with me now. You use secure shell to communicate to my computer to connect. You can see your hardware address already. But when you run it on another computer, if I log into another computer, I'm on computer 10 now. Computer 10 currently knows about four other computers. IP address.1.231.201.236. And it knows their hardware addresses. So over time, that may change. It's like a cache of the most recent ones that you've communicated with. Over a few minutes, if you don't contact that computer, it disappears. So ARP as the command shows me the most recent or the hardware address of the computers I've recently communicated with. ARP, the protocol, gathers that information. It's running whenever you try to contact another computer by IP address. ARP runs and it works by yelling out, who has this IP address and that computer responding. The yelling out in a network terms is a broadcast. We'll see the protocol work later, but just remember the ARP command shows you those hardware addresses. So then you can see about your friends and see what their hardware addresses are. Let's go back. So maybe just contact a few other computers and see that table change. Currently my table has those four. If I ping another computer, and we haven't studied ping yet, but you've seen it me use it in a number of other cases, so maybe in the lectures, if I ping another computer, 235, and then stop that and look at ARP again, now I see 235s in the list. Before, I didn't know the hardware address of 235. When I pinged or tried to communicate with computer with IP address 235, ARP went to work, it learned the hardware address, and we can see that in the output here, now 235s in the table. Over time, that table will get smaller. It takes, I think, a couple of minutes for the entry to be removed from the table if we don't contact that computer. So just see your ARP table grow by contacting a few other computers, either secure a shell into them, ping them, or use WGED, or access the webpage.