Protocol Modules
A protocol module is invoked by the HTAccess module in order to access a
document. Each protocol module is responsible for handling the transmission
of a data object either from the application to a remote server, or vice
verse.
The protocol modules are registered dynamically (using static linking) and
the User's Guide describes how modules can be
registered. Each protocol module is responsible for establishing the
connection to the remote server (or the local file-system) and extract
information using a specific access method. When data arrives from the
network, it is passed on to the format manager.
Most of the protocol modules are now implemented as state machines in
order to support libwww Threads.
When the client parses a request to the library a HTRequest Structure is filled out and
parsed to a load function in the access manager, for example HTLoadAnchor. HTRequest contains all
information needed by the Library in order to fulfill a request.
- File access
- This module provides access to files on a local file system. Due to
general confusion of the "file://" access scheme in the URL Specifications tries FTP access on
failure.
- FTP access
- This is a complete state based FTP client which is capable of
communicating with a lot of weird FTP servers. It uses
PASV
as the default method for establishing the data
connection as PORT
does not work if the application is run
from a firewall machine, as is often the case with proxy server.
- HTTP access
- The HTTP module handles
document search and retrieve using the HTTP protocol. See also information on
the current
implementation of the HTTP client. The module is now a complete
state machine which is a required functionality in the libwww thread model. It uses
streams for both outgoing and incoming data, the outgoing stream is
implemented in HTTPReq.c and the
incoming stream in HTTP.c
- WebDAV access
- The DAV module implements all WebDAV specific methods and
headers. WebDAV (RFC 2518) is a set of extensions to the HTTP
protocol, which allows users to collaboratively edit and manage
web resources.
- News access
- The NNTP internet news protocol is handled by HTNews which builds a
hypertext object.
This module
is under reconstruction!
- Gopher access
- The internet gopher access to menus and flat files (and links to
telnet nodes, WhoIs servers, CSO Name Server etc.) is handled by HTGopher Module.
- Telnet access
- This module provides the possibility of running telnet sessions in a
subshell. It also provides functionality for rlogin and tn3270.
- WAIS access
- WAIS access is not compiled into the Library by default as it
requires the freeWAIS library. This is easily changed in the platform
dependent
Makefile.include
in the
WWW/All/<platform⁢
directory. However, if this library is present then the application can
communicate directly with a WAIS server. Otherwise it must go through a
gateway program.
Henrik Frystyk, libwww@w3.org, @(#) $Id:
Protocol.html,v 1.17 1996/12/09 03:21:43 jigsaw Exp $