So next what I'm going to do is, I'm going to give you some examples of addresses. We're going to walk you through some specific examples of address types, so you can see how they're used in practice. I'm going to start out by talking about Medium Access Control addresses. So these are addresses that are used at layer two in the Internet. The MAC address is a numerical address associated with the network interface card, is associated with a physical interface. If you want to define a physical interface on a device, use a MAC address. MAC address is in Ethernet or a flat name space of 48-bits. I'm showing you an example here, 0015. They're typically written in hexadecimal by convention. They don't have to be. But pretty much everyone writes them that way. MAC addresses are unique, so they're often hard coded in the adapter when it's built. You don't want to have two hosts with the same MAC address on the network because that leads to confusion. You are in Ethernet, is sending a package to a destination. Both these hosts receive it and respond, that's an address conflict. You really want your MAC addresses to be unique. MAC addresses are assigned via a hierarchical allocation. There's an agency, the IEEE which owns the name space. They own every single address in the 48-bits. Then they give them out to vendors. For simplicity, they have a single demarcation point, where they'll give a block to a vendor denoted by the first 24-bits. So each vendor gets a specific set of first 24-bits, and then they can define the lower bits however they want. They can get two to the 24 addresses. These are assigned to vendors like Dell and other companies that make network interfaces. The organizational unique identifier is the upper 24-bits, these are assigned to vendors. Then the vendor assigned address is the lower 24-bits. Those are assigned by the vendor. When you go online and you buy some NICS, you're going to buy them from Intel and these various places they make the NIC. They're going to burn these addresses into the card. Intel is going to make sure that the lower 24-bits are unique. They only have one organizational identifier, and that's unique. This is how we ensure uniqueness. Now, the problem is, if you go online, you buy some cheap NICS. Then they may be made by companies that didn't go through the right processes with IEEE, those make up numbers. Those makeup MAC address. You'll see these on Amazon when you go and you buy them, this happens. They may work okay for a while because what are the chances someone's gonna choose a random number in two to the 40, and that's going to happen to overlap with another host in your network. But you see this all the time if you're a network operator because you have so many computers, and they come and go, that with these cheap NICS, people have addresses that overlap and it causes problems. You want to buy your NICS from reputable vendors because you want your addresses to be unique. The MAC address provides the ability to denote broadcast as well. If I'm on an Ethernet, I want to send a frame to all host with some protocols need to do, then there's a special address for that. It's the address of all ones or FF-FF-FF-FF-FF. If I send a frame with that sequence of bits, then that denotes that the frame should be sent to all adapters. With MAC addresses, the MAC address denotes the network interface that you're connected to. If you have a device with multiple NICS, there's going to be a separate MAC address for each of those NICS. If I have a host and I'm running multiple virtual machines on top of it, then there's the question of what MAC address do I use. Now, there's different ways to do this. All your virtual machines could share the single MAC address. That's one way to do it. Virtual machines also have the ability to have their own virtual NICS in modern virtual machines, and those could have their own MAC addresses too. So it's possible for one physical interface to have multiple MAC addresses assigned to it. One to the physical interface and then one to each of the VMs on top of it. There's different ways to do that. Now, the thing is, if you build a network, it's good to know that MAC addresses are associated with the physical port because they can be used for access control. What you can do is, you can do something called MAC filtering, where you're going to set up your ports on your routers, and you're going to define the MAC address on the other side, and that makes it the only host with that MAC address can connect. By using the MAC address to determine whether someone can access your network or not, you can block out NICS that are not authorized. That's a commonly used approach. Okay. So those are MAC addresses. Now, I also want to talk about IP addresses, which are different. So IP addresses are the addresses we use at layer three, and they mean something entirely different. With IP addresses, these denote the connection point to the Internet. They don't identify the NIC. They identify where that NIC is in the internet. It is a hierarchical name space of 32-bits. Because these bits follow the topology, they have to be assigned by operators. You can't just have an IP address be random. They can't be burned into NICS. They have to follow the structure of the topology because they're used for routing. Because of this, there's a lot of manual work in assigning IP addresses. Operators do this continual task of planning their networks and figure out how many hosts are going to be in different locations. So they know how many addresses to assign to different routers. Then they have to move them around when they get it wrong. So there's a lot of work here that goes on behind the scenes. IP addresses are assigned hierarchically as well. There's an agency known as ICANN. This was previously done by IANA which manages the global IP space for both IPv4 and IPv6. What ICANN does, is it takes the entire space, and it divides the space up into blocks called prefixes. Then it doesn't give these out itself. It gives these out to regional Internet registries. The thinking was, it'd be so much work for ICANN to talk to every ISP in the entire world. That'll be a lot of work because all these different ISPs, they speak different languages, and different cultures, and different countries with probably different laws and how to disseminate addresses and legal disputes. What ICANN did is, they said, we're not going to deal with all that. We're going to set up some regional internet registries, which are agencies of ICANN which are responsible for different parts of the earth. So there's APNIC, which is for the Asia Pacific region, there's RIPE for Europe, and ARIN for North America. These are different agencies that are responsible for different parts of the globe. These are the agencies that actually give out the prefixes. If you're an ISP and you need some addresses, you'll get in touch with your local regional Internet registry and you'll make a request. Then if you're an enterprise or you're a smaller ISP, you may not have enough of a case to get IP addresses, so what you can do is, you can get blocks from other ISPs. This has worked well for a long time. One problem that's starting to happen is, with IPv4, we're running out of address space. So 32-bits made a lot of sense back in the '70s, but it turns out that with [inaudible] , there's billions and billions of devices, and we're just going to blow through that 4 billion address boundary. There's only 4 billion addresses we can deal with on IPv4. These addresses are getting really constrained. What's happening is, these regional internet registries are getting more conservative about giving out addresses. This has led to a market where people buy and sell addresses. You probably heard about Amazon and Microsoft going out and buying up big blocks of IPv4 space because they have these huge data centers and they're Cloud Computing and things like that, so they need addresses, and so they're starting to buy them. There's a market for these as well. This is how internet protocol addresses work. They're different than MAC addresses. But the thing to keep in mind is, that all these addresses have different layers, and you need them all to, all work together to compute an intent route, and we're going to see how to do that next.