Application Programming Interface, a means to extend a software system in terms
of functionality. Usually an API consists of a set of functions to extract data
from the system and manipulate the system. In Apache, the core calls module
callbacks via the module API while the procedures of a modul can use the Apache
(core) API to access and modify Apache data structures and alter the way it
Common Gateway Interface, one of the first techniques of enhancing web
servers and creating dynamic and multifunctional web pages. Using cgi
the web server is enabled to execute applications or basic programming
instructions which usually generate an HTML document. If used with
HTML forms, the client transmits data with parameters encoded in the URL
or with the message body of a "POST" request. Today other techniques like
PHP, servlets, java server pages (JSP) or
ASP are widely used alternatives for cgi.
Directive (Configuration Directive)
Apache processes Configuration Directives while reading the configuration
files during start-up or during request processing.
A Filter processes data by reading from an input and writing to an output
channel. A sequence of filters where one filter processes the output of
another is called filter chain.
Apache 2 uses an input filter chain to process the HTTP request
and an output filter chain to process the HTTP response. Modules can
dynamically register filters for both chains.
the administrator wants to apply a changed configuration
to a running Apache, he must restart the server. This
would interrupt the server processes which currently
process requests. A client would encounter an error or
time-out. A graceful restart leaves alone all server processes
which currently process a request. They can finish the
answer to the request and terminate. Therefore a client does not
notice the server restart.
A handler is a callback procedure registered for a certain event. When the
event occurs, the event dispatcher will call all handlers in a specific
order. In Apache, the events during request processing are marked by hooks.
Apache Modules register Handlers for certain hooks, for example for "URI
Most messages transmitted in the internet consist of a header and a body.
A header usually contains protocol information and meta information about
the payload transmitted in the body.
A hook is a processing step where the handlers (callback procedures) registered
for this Hook will be called. In Apache 1.3, the hooks were defined by the
module API, while Apache 2 allows adding new hooks.
Hyper Text Mark-up Language is a document format which is used for
documents in the World Wide Web. An HTML document basically contains the text,
with formatting hints, information about the text and references to futher
components of the document like images that should be included when
displaying the page. A web server's task is to deliver the HTML page and
supply the resources referenced within the HTML page when requested.
HTML documents can be static files or created dynamically by the server.
Job Queue Server Model
A Multitasking Server Model using a job queue
to provide communication between dedicated listener task(s) and a
pool of idle worker tasks. A listener task waits for a request and
puts a job entry holding the connection information into the queue.
An idle worker task waits until it gets a job entry and uses the
connection information to get and process the request.
An idle worker queue advises the listener to only accept
requests if there is at least one idle worker in this queue. Else
the request could not be processed immediately.
Leader-Follower Server Model
A Multitasking Server Model using a pool
of tasks changing their roles: One Listener Task is waiting for requests
(the leader) while idle tasks (the followers) are waiting to become
the new listener. After the listener task has received a request, it
changes its role and becomes worker processing the request. One idle
task now becomes the Listener. After the work has been done, the worker
becomes an idle task. The Preforking Model (see p.
is a Leader-Follower Model
A separate piece of software intended to enhance an existing software system
using a dedicated interface. This interface must be general enough to allow
adding new functionality with future modules. An Apache module can register
handlers for hooks that will be called in well-defined situations, and it
can access resources of Apache and use its core functionality by the Apache API.
Multiprocessing or threading
Multitasking means the concurrent execution more than one program by the
same machine. Each task executes a program and uses resources of the machine.
For each task, the machine provides a virtual processor equipped with a
program counter (PC), a stack, and access to memory and I/O resources.
In Unix, the tasks are called processes which don't share resources while
in Windows, the tasks are called threads which use the same memory and I/O
MUTual EXclusion mechanism, a means for inter-task communication
usually provided by the operating system.
Concurrent tasks use a mutex to ensure that only one task can access
a shared resource. Any other task trying to get the mutex will either
be blocked (suspended) until the mutex is released, or its request
will be rejected.
In TCP/IP, a Port is part of an address. Each node on the Internet can be
identified by its IP address. Using TCP or UDP, a node can offer 65536 ports
for each of these protocols on each IP address, and assign ports to
services or a client applications. A TCP or UDP packet contains both
origin and destination addresses including the ports, so the operating
system can therefore identify the application or service as its receiver.
Preforking Server Model
A Multitasking Server Model using a
pool of Unix Processes (see Leader-Follower above).
In contrast to the straightforward solution where a master
server process waits for a request and creates a child server process
to handle an incoming request, the Apache master server process creates
a bunch of processes that wait for the requests themselves. The master
server is responsible for keeping the number of idle servers within
a given limit.
In the Multitasking context, a process is a task with high protection and
isolation against other processes. The memory areas of two processes
are separated completely. Processes can be executed using different user
IDs resulting in different access rights. Sub-processes share file
handles with their parent process.
A mechanism for inter-task communication, provided by the operating system.
A semaphore is similar to a mutex, but provides a counter instead of a
A protocol is stateless if there is no relation between
subsequent request-response pairs. The server can handle each
request uniquely and does not have to keep a session state for the
In the Multitasking context, a thread is a task with low protection and
isolation against other threads because they share memory and file handles.
Usually, a thread runs in the context of a process. A crashing thread will
not only die but cause all other threads of the same context to die as well.
A Uniform Resource locator is an address for a resource on the Internet.
Resource in this context can be a document, a file or dynamic information.
URL usually contains information about the protocol which has to be used
to access the resource, the address of the node the resource resides on
and the location of the resource within the target node. Furthermore it
can contain additional information like parameters especially for dynamically