Sponsored Links
-->

Monday, April 2, 2018

1 Computer Communication & Networks Lecture 28 Application Layer ...
src: images.slideplayer.com

HTTP persistent connection, also called HTTP keep-alive, or HTTP connection reuse, is the idea of using a single TCP connection to send and receive multiple HTTP requests/responses, as opposed to opening a new connection for every single request/response pair. The newer HTTP/2 protocol uses the same idea and takes it further to allow multiple concurrent requests/responses to be multiplexed over a single connection.


Video HTTP persistent connection



Operation

HTTP 1.0

Under HTTP 1.0, connections are not considered persistent unless a keepalive header is included, although there is no official specification for how keepalive operates. It was, in essence, added to an existing protocol. If the client supports keep-alive, it adds an additional header to the request:

  Connection: keep-alive  

Then, when the server receives this request and generates a response, it also adds a header to the response:

  Connection: keep-alive  

Following this, the connection is not dropped, but is instead kept open. When the client sends another request, it uses the same connection. This will continue until either the client or the server decides that the conversation is over, and one of them drops the connection.

HTTP 1.1

In HTTP 1.1, all connections are considered persistent unless declared otherwise. The HTTP persistent connections do not use separate keepalive messages, they just allow multiple requests to use a single connection. However, the default connection timeout of Apache httpd 1.3 and 2.0 is as little as 15 seconds and just 5 seconds for Apache httpd 2.2 and above. The advantage of a short timeout is the ability to deliver multiple components of a web page quickly while not consuming resources to run multiple server processes or threads for too long.

Keepalive with chunked transfer encoding

Keepalive makes it difficult for the client to determine where one response ends and the next response begins, particularly during pipelined HTTP operation. This is a serious problem when Content-Length cannot be used due to streaming. To solve this problem, HTTP 1.1 introduced a chunked transfer coding that defines a last-chunk bit. The last-chunk bit is set at the end of each response so that the client knows where the next response begins.


Maps HTTP persistent connection



Advantages

  • Reduced latency in subsequent requests (no handshaking).
  • Reduced CPU usage and round-trips because of fewer new connections and TLS handshakes.
  • Enables HTTP pipelining of requests and responses.
  • Reduced network congestion (fewer TCP connections).
  • Errors can be reported without the penalty of closing the TCP connection.

According to RFC 7230, section 6.4, "a client ought to limit the number of simultaneous open connections that it maintains to a given server". The previous version of the HTTP/1.1 specification stated specific maximum values but in the words of RFC 7230 "this was found to be impractical for many applications... instead... be conservative when opening multiple connections". These guidelines are intended to improve HTTP response times and avoid congestion. If HTTP pipelining is correctly implemented, there is no performance benefit to be gained from additional connections, while additional connections may cause issues with congestion.


Perlbal: Persistent Connections perlbal to
src: image.slidesharecdn.com


Disadvantages

If the client does not close the connection when all of the data it needs has been received, the resources needed to keep the connection open on the server will be unavailable for other clients. How much this affects the server's availability and how long the resources are unavailable depend on the server's architecture and configuration.


Chapter 2 (Sec ) Application Layer - ppt download
src: slideplayer.com


Use in web browsers

All modern web browsers use persistent connections, including Google Chrome, Firefox, Internet Explorer (since 4.01), Opera (since 4.0) and Safari.

By default, Internet Explorer versions 6 and 7 use two persistent connections while version 8 uses six. Persistent connections time out after 60 seconds of inactivity which is changeable via the Windows Registry.

In Firefox, the number of simultaneous connections can be customized (per-server, per-proxy, total). Persistent connections time out after 115 seconds (1.92 minutes) of inactivity which is changeable via the configuration.


Study Material: F5 BIG-IP LTM Load balancer Cookie Persistence
src: 2.bp.blogspot.com


References


Chapter 2 Application Layer - ppt download
src: slideplayer.com


External links

  • Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing, Connection Management, Persistence
  • Persistent Connection Behavior of Popular Browsers (dated)
  • Apache HTTPD Keep-Alive Support
  • Network Performance Effects of HTTP/1.1, CSS1, and PNG

Source of article : Wikipedia