HTTP
Hypertext Transfer Protocol
- Top-level application protocol that exchanges information between a client computer and a local or remote web server.
HTTP 1.0 / 1.1/ 2.0
| HTTP 1.0 | HTTP 1.1 | HTTP 2.0 |
---|
Persistent | No | Yes | Yes |
Multiple requests | No, 1 per TCP connection | Yes, head-of-line (HOL) blocking - previous requests block the queue | Binary Framing Layer - parallel streams of data encoded and re-assembled (multiplexing) |
Handling buffer overflow | No | Yes, state receive window in TCP ACK | Flow control based on each streams |
Resource Request | No | Resource Inlining - include the resource directly within the HTML | Server Push - push resource alongside HTML |
Compression | No | Header not compressed | HPACK to compress headers |
HTTP Method
POST vs PUT vs PATCH
Method | Operation | Example |
---|
POST | Creates a child resource | Creates new user and generates userid |
PUT | Creates (If nil) / Replaces the resource with idempotency | Update this user via userid |
PATCH | Updates part of the resource | Update username of this user via userid |
HTTP Resp Codes
- Server informs the client that the request is in motion
2xx Successful Responses
- Announces a successful operation
Code | Description |
---|
200 OK | Success |
201 Created | Success. After POST/PUT |
3xx Redirection Responses
- Appear during redirections and forwardings
Code | Description |
---|
301 Moved Permanently | The URL of the requested resource has been changed permanently. The new URL is given in the response. |
302 Found | URI of requested resource has been changed temporarily |
304 Not Modified | Cached, response has not been modified |
4xx Client Error Responses
- The server has received the request, but cannot perform it.
Code | Description |
---|
400 Bad Request | Will not process request due to client error (invalid) |
401 Unauthorized | Not aunthenticated |
403 Forbidden | Does not have access rights to the content |
404 Not Found | Server can not find the requested resource |
408 Request Timeout | Server would like to shut down this unused connection |
5xx Server Error Responses
- Server has failed to perform the request.
Code | Description |
---|
500 Internal Server Error | The server has encountered a situation it does not know how to handle |
502 Bad Gateway | Server, while working as a gateway to get a response needed to handle the request, got an invalid response |
503 Service Unavailable | The server is not ready to handle the request |
HTTP / HTTPS
HTTPS is HTTP + Encryption (TLS / SSL)
TLS / SSL
TLS: Transport Layer Security
SSL: Secure Sockets Layer
SSL replaced by TLS
HTTPS Encryption Steps
- TLS Handshake
- Contains information such as TLS version to support
- Uses asymmetric key - two different keys are used on the two ends of the conversation
- Certificate Exchange
- Exchange SSL certificate, containing owner name, domain, public key, digital signature (cipher text signed by CA with private key), validity
- Client verifies certificate / certificate authority (CA)
- Verify digital signature by decrypting with the certificate's CA public key
- Key Exchange
- Creates a session key
- Encrypt with server's public key and send to server
- Server receives and decrypt with private key
- Done!
- Session key used for both encryption and decryption
- Uses symmetric key
- Valid until next session