Web server

From ArticleWorld


A web server is a computer program that communicates with web clients, delivering the requested pages. Web servers implement the standard HTTP protocol, which is used to negotiate with the clients, to deal with requests and deliver the pages when required.

Historically, Tim Berners-Lee developed the first web server that ran on a NeXTcube computer. Today, the most common web servers are the Apache HTTP Server, developed by the Apache Software Foundation, IIS from Microsoft, Sun Java System Web Server developed by Sun and Zeus Technology's Zeus Web Server.

Features

There are some features that all commonly used web servers implement. These are features required by webmasters and administrators in order to correctly secure and control the delivery.

These features are:

  • Implementation of the HTTP protocol: web servers must implement the standard HTTP protocol and be able to handle requests. They should be able to deliver HTML documents, but also text files, images and any other files, respecting the file type requirements when they are passed.
  • Logging events.
  • Authentication support, possibly supporting the HTTPS protocol.
  • Handling of dynamic content like CGI, PHP, ASP or ASP.NET.
  • Content compression for clients that can handle compressed content.
  • Path translation, which is required to translate the path fed by the client to a local path, enabling the required information to be found locally and delivered.

Optimizations

Web servers use various advanced programming techniques in order to increase response speed. The general paradigm is that of a finite state machine with non-blocking I/O, using concurrent programming and multithreading in order to allow content to be delivered to multiple clients at the same time. This paradigm also gives a fair amount of scalability. Professional web servers use multiple CPUs wherever possible.

Optimizations should be implemented carefully though, so that the security risks are minimized. Web servers must be thread-safe and should support privilege separation techniques.