How The Web Works
Learning Goals
- Understand the HTTP request/response cycle
- Answer the question what happens when I type in “www.google.com” in my web browser
Vocab
Client
A computer that is consuming data (and is a client of a server)Server
A computer that is providing (serving) dataURI
Uniform Resource IdentifierURL
Uniform Resource LocatorHTTP
Hyper Text Transfer ProtocolDNS
Domain Name SystemIP Address
Internet Protocol Address
The Why.
Journal for 3 minutes,answer the following.
Why is learning how the web works important for you as a computer programmer.
Client Server Model
Really in a very small and simplistic sense the internet is just a bunch of computers talking to computers. The internet is comprised of Servers that hold files and information on them. These servers or server networks are connected by wires either underground or underwater.
Now typically what you will find is that a Server typically will provided a service and that the client typically will take advantage of that service. The client will send a request to the server to utilize that service.
In most cases you’ll see that a client is software that accesses the data provided by the server. That service is typically a file or application stored on a physical server somewhere. For example if you bank online. Your browser is acting as the client and is communicating to a physical server to grab information about the user’s bank account. It uses requests
to get information / services from the server.
This is where things can get a little tricky. A server/client can be a physical piece of hardware or some software that lets you serve up information. In group project
you utilized something called a webpack-dev-server
. When you strip everything down it’s really just a node-server
in the background serving your game / project locally on your machine. In this specific case your computer was a physical server and your laptop was also the client.
How do Clients and Servers interact?
For the most part what you will be building at your time at turing will be mainly client-side. Your applications will talk to other back-end services. When you think about a regular conversation you typically have a request (a questions) and a response from the person you’re asking. That is how the web works. The client makes requests to the server and the server will always send a response. There is obviously a lot more parts to this interaction and we are going to cover those now.
What’s inside of a request?
Check out this page on requests to find out more about an HTTP request. Write down everything you can and then if you want to find out more, click on the dropdown link below.
Request
The Header
The Body
What about a response?
So just like any sort of conversation there needs to be some sort of response from the server. Once a request is received by the server it issues an appropriate response. That response is sent back to the client.
The response will hold 3 parts.
- Meta Data: Content type / Content Length (size in bytes)
- Status Code: 200, 400, 404, 302, 500
- Body: css, json, html etc
Now the response codes that you’ll typically run into are
- 200 (Ok)
- 400 (Bad Request)
- 404 (Not Found)
- 302 (Found)
- 500 (Internal Server Error)
If you want to see all the type of server responses check out http status dogs
Your Turn
Turn to person next to you and discuss the following things
1) What goes into a client-request
?
2) What are some examples of:
- A GET request in slack?
- A POST request in slack?
- A PUT/PATCH request in slack?
- A DELETE request in slack?
DNS
DNS also known as domain name system is used to map domain names to IP addresses. A domain name is the same as the url you would type into your web browser. www.google.com for example. Now this name has a corresponding IP address. The IP address meaning internet protocol address, which is a unique string of numbers separated by periods.
A common analogy used is to think of DNS like a phone book, each person’s name is mapped to a phone number, similar to how a domain name is mapped to a IP address. IP address numbers needing to be unique so there is not namespace collision.
This video explains DNS!
If you are curious on what how to find the IP address of a domain name, you can use the nslookup
command in your terminal, it stands for namespace lookup. Type it in the terminal with the domain you are interested in finding the IP address. You can always type nslookup man
to see further instructions on how to use the nslookup
tool.