 We've said that the goal of a computer network is to allow computers to send data to other computers, but in truth, the goal of a network is to allow programs running on those computers to send data to other programs running on other computers. When we talk about programs that make use of the network, we divide them into two broad categories. A server is a program which primarily listens on the network for requests coming from other programs and the server then responds to those requests. A client, in contrast, is a program which makes requests. So a client sends a request to a server, the server is listening for that request, and when it gets a request, it returns a response to the client. Somewhat confusingly, you'll often hear people use the term server to describe a computer system, not a program. A computer, which we call a server, isn't really special hardware. It's just a regular computer, except we're using it to act as a server. The main thing it does is it runs a server program. For example, in this picture here, this computer was mainly used as a server, and someone has written on its front, this machine is a server. Do not power down. That's fairly typical. When you run a server, you generally want it to run 24 hours a day, and so you just leave it running all of the time. Now the obvious problem with IP addresses is that they are numbers, and numbers just aren't very human friendly. They're hard to remember. And so the DNS domain name system was invented. The DNS system is a system of resolving names like yahoo.com to IP addresses. Names in the DNS system are organized into what are called top level domains. The most popular top level domains include COM, NET, ORG, EDU, which is short for education, MIL, which is for military, GOV, which is for government, and then you have some country codes for various countries like UK, for the United Kingdom, CA, for Canada, DE, for Deutschland, for Germany. And the idea behind these top level domains is that each one is controlled by a designated authority. In the case of the country codes like UK, it's fairly obvious who controls that. UK is controlled by the United Kingdom government. GOV is controlled by the American government, MIL by the American military. EDU is controlled by an consortium of various educational institutions. And in the case of COM, NET, and ORG, the authority has been designated to a number of companies. The idea with most of these top level domains is that the authority which controls that top level domain will allow other people to register a subdomain for a price. For example, Google.com is a subdomain of the COM top level domain. Google pays money to the COM registration authority to allow it to have the name google.com. Registering these subdomains is fairly cheap these days. You can register a name for a year for less than twenty dollars. But of course, you're limited in that you can't register a name which has already been registered. Google.com is taken, so I can't register the name google.com. The purpose of registering a domain name is that for every domain name you control, you get to determine which IP address it resolves into. So for example, Google controls google.com so they get to decide which IP address google.com resolves to. Presumably, they'll have it resolved to the IP address of their server so that when people look up google.com, they will be directed to Google server. Now, when a program on your computer wants to know which IP address does google.com resolve to, it needs to ask what's called a DNS server. A DNS server is simply a program which listens for requests asking what does this domain name resolve to and it responds with the answer. Now, the problem is it wouldn't work for everyone in the world to use the same DNS server. You can't have one server responding to millions of requests per second from all over the world. So instead typically, computers are configured to use a DNS server run by their internet service provider. The question then is what happens when a new domain name is registered or what happens when an existing domain name changes its IP address. Ideally, what we want is for all the DNS servers in the world to be instantly updated with that new information. And practice what happens is that every domain name server in the world periodically checks for new updates from a central authority like say the people who control the .com domain. And so there is some lag in the system. When you register a new domain name or change your domain name, it could take a day or so before every DNS server in the world has been updated with that new information. What we call a URL stands for Universal Resource Locator and it is a standard way of designating some sort of resource, some thing on the internet. It's just some piece of text that designates something like say a web page. Each URL has three parts. First, what's called the schema, which designates the nature of the thing being referenced, and then after a colon and two slashes, you put the host, in other words, the location of the resource, as specified by an IP address or a domain name, effectively the computer on which the resource is located, and then after another slash, you put what is called the path. And the path is simply some piece of text which specifies which resource on that host, because of course a single host can have many resources. So for example, here's the URL of a web page on the New York Times website. The schema used for web pages is HTTP, as we'll discuss in a moment. The location here is specified by the domain name of www.nytimes.com. That's a domain owned by the New York Times, and it resolves to the IP address of a computer owned by the New York Times. And then after the domain name and a slash, you see this whole sequence of text of 2010 slash 08 slash 08 slash world slash hazel slash 08 afghan dot html. All of that is the path it specifies which page at the New York Times this URL designates. In this case, the path looks a lot like a file path, but it doesn't necessarily mean that we're requesting a file named 08 afghan dot html inside the directories 2010 slash 08 slash 08 slash world slash Asia. Now that might be the case, but it isn't necessarily the case. It's really entirely up to the computer at the New York Times to determine what this path specifies. So you may often see URLs where the path looks like a file path, but there's no necessary connection between file paths and URLs. Lastly, notice here that the URL doesn't have any spaces in it. URLs are not allowed to have spaces.