model by implementing one or more versions of HTTP protocol, often including the HTTPS secure variant and other features and extensions that are considered useful for its planned usage. The complexity and the efficiency of a web server program may vary a lot depending on (e.g.): common features implemented; common tasks performed; performances and scalability level aimed as a goal; software model and techniques adopted to achieve wished performance and scalability level; target hardware and category of usage, e.g. embedded system, low-medium traffic web server, high traffic Internet web server. Common features Although web server programs differ in how they are implemented, most of them offer the following common features. These are basic features that most web servers usually have. Static content serving: to be able to serve static content (web files) to clients via HTTP protocol. HTTP: support for one or more versions of HTTP protocol in order to send versions of HTTP responses compatible with versions of client HTTP requests, e.g. HTTP/1.0, HTTP/1.1 (eventually also with encrypted connections HTTPS), plus, if available, HTTP/2, HTTP/3. Logging: usually web servers have also the capability of logging some information, about client requests and server responses, to log files for security and statistical purposes. A few other more advanced and popular features (only a very short selection) are the following ones. Dynamic content serving: to be able to serve dynamic content (generated on the fly) to clients via HTTP protocol. Virtual hosting: to be able to serve many websites (domain names) using only one IP address. Authorization: to be able to allow, to forbid or to authorize access to portions of website paths (web resources). Content cache: to be able to cache static and/or dynamic content in order to speed up server responses; Large file support: to be able to serve files whose size is greater than 2 GB on 32 bit OS. Bandwidth throttling: to limit the speed of content responses in order to not saturate the network and to be able to serve more clients; Rewrite engine: to map parts of clean URLs (found in client requests) to their real names. Custom error pages: support for customized HTTP error messages. Common tasks A web server program, when it is running, usually performs several general tasks, (e.g.): starts, optionally reads and applies settings found in its configuration file(s) or elsewhere, optionally opens log file, starts listening to client connections / requests;