Okay. So next, we're going to be talking about addressing, and how addressing is used across the entire Internet architecture. So it turns out in the Internet, you can't just send packets to a destination. It turns out that you have to help the internet out. Because if you think about the Internet's job is really hard. There's so many different computers out there, each of this computers has so many different files. There's estimates that the number of files is in the billions and billions. If you think about, the Internet has such an incredibly hard job, they have to take a request index into hundreds of billions of different files, very hard for it to do. So the designers in the Internet faced this really challenging problem. The way they solved it is, they pushed some of the complexity back onto the indoors little bit. They require you that if you want to send data, you don't just send data to a particular file, or a particular application, you have to do some work first to help out the Internet. You've got to look up intermediate indexes or intermediate addresses that are used to help the Internet deliver your packet to the actual destination. When you send the packet, you have to put in these list of addresses, and you do that through encapsulation, that's what the different layers are inside the packet. So in particular, the Internet has a set of layers. There's the OSI stack: Application, Transport, Networking, Datalink and Physical, and these are different. Some of this numbers, things like applications layer seven, transport layer four, networking layer three and so on. Each of these layers has its own type of addresses. So at the application layer, we use URLs, and this is really what we care about. End users know what URLs are. You've typed these in before in your web browser, you typed in addresses of websites. That's really all you care about. It would be great if the internet could route without operating directly on these URLs but it can't, so there's all these different layers below. But your URLs are in some sense kind of the most important thing because they denote what you actually want. The uniform resource locators, they identify resources that you actually want, files and content. Part of the URL is a domain name. So domain name identifies a set of computers that are under a single administrative control like Illinois.edu or microsoft.com. In the part of the URL, so in order to come up with the URL, we have to make the users can understand domain names. So this is already some complexity we're pushing back on indoors and pushing on end-users is, if you want a file, you need to know where it is. The internet is not going to really find it for you, or it might with search engines and things like that. But this is something that you have to figure out somehow using a search engine or just knowing where it is. So that's at the application layer. Now, at the transport layer, we address using port numbers. So port number is an identifier which denotes the application number running at the end host and these are just numbers. It turns out that it's helpful to have certain kind of well-known port numbers. So if you're running a protocol like the web using a protocol called HTTP for Denley webpages and things like that, HTTP server sits on port 80. That's a well-known port that if you're looking for web, data and a server, you're just going to look at pot 80 by default. If you doing SSH/422.143 for IMAP, so there's certain kind of well-known port that you're going to use, and these are defined as specifications. Port numbers identify the application or the application type running on a computer. Below that, at the networking layer, we have IP addresses. IP addresses identify the location where a computer's interface attaches to the Internet. So IP addresses are all about topological location, where in the Internet are you? Where in the Internet are you connected to? Below networking there's the datalink layer, and there we use MAC addresses. MAC addresses identify a specific computer interface. So if you want a route to something, if you want to get a file at a certain URL, you can't just do that, you have to identify all these things beneath it, and that's what your operating system does, and that's what your web browser does for you. You might do a little bit of work yourself usually remembering things like domain names. So if you think about, you want to route to maybe this URL www.cs.illinois.edu/index.html that's what you want. In order to do that, you have to kind of parse out the domain name because that's the domain where you want to reach. Then you want to send packets to that URL but you can't do that. What you need to do is, you need to first route to the the transport endpoint, you need to route to the particular application layer in point where you want to send the data. But you can't do that before, you can route to the location where they're connected to. So that's the networking address. You can't do that without getting off your local area network first, you need the MAC address to do that, you need the MAC address of the gateway router to get you off onto the public Internet. So it's kind of like a series of layers where you want to route to the content, but in order to do that you need kind of to specify these intermediate steps. So you kind of tell the Internet, "I set of steps to reach your actual destination." That's why we have these different addresses, and these different addresses for each of the different layers in the Internet.