Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the relationship between http connection and request

While I am configuring my nginx, I found two modules: ngx_http_limit_conn_module and ngx_http_limit_req_module one is for limiting connection per defined key, and one for limiting request.

My question is what is the relationship (and difference) between a HTTP connection and a request. It seems that multiple HTTP requests can use one common HTTP connection, what is the principle under this?

like image 267
FingerLiu Avatar asked Dec 02 '15 03:12

FingerLiu


2 Answers

Basically connections are established to make requests using it. So for instance endpoint for given key may accept 5 connections per hour from given IP address. But it doesn't mean only 5 requests can be made but much more - if the connection is not closed after a request (from HTTP 1.1 it's by default kept alive).

E.g. an endpoint accepts 5 connections and 10 requests from given IP address. If connection is established for every request only 5 requests overall can be made. If connection is kept alive single client may make all the requests. If there are 5 clients, every establishes a connection and keeps it alive there are 2 request approx. that can be made by each client - however one can make all the request if it's fast enough.

like image 147
Opal Avatar answered Sep 21 '22 22:09

Opal


HTTP connections - client and server introduce themselves.

HTTP requests - client ask something from server.

Making a connection with server involves TCP handshaking and it is basically creating a socket connection with the server. To make a HTTP request you should be already established a connection with the server. If you established connection with a server you can make multiple request using the same connection(HTTP/1.0 by default one request per connection, HTTP/1.1 by default it is keep alive). As most of the web pages need multiple resources from the server(ex: 100 photos to load in the screen). It is a low burden to the server if we keep the connection and request those 100 images using the same connection(No need to go through the connection establishment process 100 times). That is why HTTP/1.0 came up with keep alive as default.

like image 45
Tharsanan Avatar answered Sep 18 '22 22:09

Tharsanan