Hyper Text Transfer Protocol
Published: 2023-06-03 03:55:37

### What is HTTP ?

> HTTP is what's used whenever you view a website, developed by Tim Berners-Lee and his team between 1989-1991. HTTP is the set of rules used for communicating with web servers for the transmitting of webpage data, whether that is HTML, Images, Videos, etc.

### What is HTTPS ?

> HTTPS is the secure version of HTTP. HTTPS data is encrypted so it not only stops people from seeing the data you are receiving and sending, but it also gives you assurances that you're talking to the correct web server and not something impersonating it.


When we access a website, your browser will need to make requests to a web server for assets such as HTML, Images, and download the responses. Before that, you need to tell the browser specifically how and where to access these resources, this is where URLs will help.


### What is a URL ?

A URL is predominantly an instruction on how to access a resource on the internet. The below image shows what a URL looks like with all of its features - 



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arg3b000jb6heu4368t2.jpg)

- **Protocol**: This instructs on what protocol to use for accessing the resource such as HTTP, HTTPS, FTP (File Transfer Protocol).
- **Domain**: The domain name or IP address of the server you wish to access.
- **Port**: The Port that you are going to connect to, usually `80` for HTTP and `443` for HTTPS, but this can be hosted on any port between `1 - 65535`.
- **Path**: The file name or location of the resource you are trying to access.
- **Query string**: Extra bits of information that can be sent to the requested path. For example, `/blog?search=test` would tell the blog path that you wish to receive the blog articles with search parameter value as test.
- **Fragment**:  This is a reference to a location on the actual page requested. This is commonly used for pages with long content and can have a certain part of the page directly linked to it, so it is viewable to the user as soon as they access the page.


### How to make a request ?


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ovo7hlxoj44v3ctyujl7.png)

It is possible to make a request to a web server with just one line `GET / HTTP/1.1`. But for a much richer web experience, you’ll need to send other data as well. This other data is sent in what is called headers, where headers contain extra information to give to the web server you’re communicating with, but we’ll go more into this in the Header task.

### Example Request :

```

GET / HTTP/1.1
Host: www.google.ie
User-Agent: Mozilla/5.0 Firefox/87.0
Referer: https://www.google.com/

```

To breakdown each line of this request:

- Line 1: This request is sending the GET method ( more on this in the HTTP Methods task ), request the home page with / and telling the web server we are using `HTTP protocol version 1.1`.
- Line 2: We tell the web server we want the website `google.ie`
- Line 3: We tell the web server we are using the Firefox `version 87` Browser
- Line 4: We are telling the web server that the web page that referred us to this one is `https://www.google.com`
- Line 5: HTTP requests always end with a blank line to inform the web server that the request has finished.

### Example Response :

```

HTTP/1.1 200 OK
Server: nginx/1.15.8
Date: Sat, 03 Jun 2023 10:00:00 GMT
Content-Type: text/html; charset=ISO-8859-1
Content-Length: 98

<html>
<head>
    <title>Google</title>
</head>
<body>
    Welcome To Google.com
</body>
</html>

```

More about HTTP headers, HTTP methods and HTTP response codes in the upcoming blog.