# Examples
## HTTP/1.1 Request
An HTTP request looks like this:
```http
GET / HTTP/1.1
Host: 192.168.1.51:8000
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,fr;q=0.8
```
## HTTP/1.1 Response
An HTTP response looks like this:
```http
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 07 Nov 2021 16:25:17 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 14
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Cache-Control: private, no-cache, no-store, must-revalidate
X-Content-Type-Options: nosniff
Pragma: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Referrer-Policy: no-referrer-when-downgrade
The content goes here.
```
* The empty line is important as it marks the end of the headers and the start of the actual content.
The following headers are especially important:
* `Content-Type` marks the type of content and what the browser needs to do with it.
* `Server` is the name of the server software. We'll probably put `Bashweb/1.0 ` in here.
* `Content-Length` is not required but recommended, especially with file downloads.