Introducció
El servidor web Apache
és un dels majors triomfs del programari de lliure distribució
amb un increment notabilíssim en quant a la quota de mercat, ja que
en els últims tres anys s'ha col·locat prop del 65% del total de servidors
web d'arreu del món.
Apache fou inicialment
uns 'parxes' (A PAtCHy sErver) per al servidor de
WWW de NCSA cap a principis de 1995 conegut com httpd.
A l'igual que GNU/Linux,
va ser un projecte que va atraure molta gent pel gran interès de
la seva fita: aconseguir el servidor web més ràpid, més
eficient i amb major funcionalitat sempre sota l'enfocament de la lliure
distribució, regit per la llicència GNU
General Public License.
Així, amb un enorme
equip de voluntaris d'arreu de la xarxa s'ha aconseguit aquesta fita desbancant
els servidors web de companyies comercials de la talla de Microsoft i Netscape.
Tant és, que la companyia IBM en aquests moments és atreta
per aquest projecte proporcionant recolzament tant a nivell de suport com
de desenvolupament.
Característiques generals
L'Apache és un
servidor web flexible, ràpid i eficient, contínuament actualitzat
i adaptat als nous protocols HTTP/1.1. Les seves característiques
més destacables són:
-
És multiplataforma
-
Conforme al protocol HTTP/1.1
-
És modular ,ja
que s'adapta a diferents entorns i necessitats gràcies als diferents
mòduls de suport que proporciona. A aquesta característica
podem afegir l'API de programació de mòduls amb la finalitat
de disseny i desenvolupament de mòduls específics.
-
Es desenvolupa de forma oberta
i
es retroalimenta de noves idees, 'logs' d'errades i 'parxes' per a la resolució
de problemes
-
És extensible,
ja que gràcies a la seva característica modular s'han desenvolupat
diverses extensions com la PHP que es correspon amb un llenguatge
de programació que camina paral·lelament al servidor
El protocol HTTP
El protocol HTTP és
el motor que dóna vida a Internet, i gràcies al qual, els
clients i servidors es poden comunicar.
El funcionament bàsic
és que el client estableix una connexió TCP amb el servidor,
li fa una petició, el servidor li respon i es tanca la connexió.
En la primera versió
del protocol (1.0), el client només podia invocar tres operacions
al servidor:
- GET per demanar
un pàgina
- HEAD per demanar
la capçalera d'una pàgina, i
- POST per enviar
dades a una URL
El funcionament més
profund del protocol comença amb una petició al servidor
per part del client. Aquesta esmentada petició està composta
per un mètode d'invocació al servidor (URI), una versió
del protocol seguida per un missatge compatible amb MIME amb els paràmetres
de la petició, informació del client i un cos opcional amb
més dades per al servidor.
El servidor respon amb una
línia d'estat, incloent-hi la versió del protocol, l'èxit
o fracàs de la petició seguit d'un missatge (compatible amb
MIME) amb informació del servidor, de l'entitat sol·licitada
i un cos opcional amb l'esmentada entitat.
Els propis creadors de l'HTTP/1.1
el
descriuen com un protocol de nivell d'aplicació orientat a sistemes
distribuïts per a la col·laboració i la hipermèdia.
Això es vol traduir en un protocol genèric orientat a objectes
i que pot ser utilitzat per a moltes aplicacions (servidors de DNS...) a través dels diferents mètodes de petició. Una
característica d'aquest protocol és la negociació
dels tipus i representació de les dades, permetent que els sistemes
no depenguin dels tipus de dades que s'utilitzin.
D'un estudi que es recull
a http://www.w3.org l'evolució del protocol HTTP es deu a les limitacions
d'escabilitat i rendiment de la versió 1.0 que s'ha hagut d'adaptar
ràpidament als vertiginosos canvis en el món de la informàtica.
La versió 1.0
Les connexions del protocol
TCP són lentes d'establir (connexió en tres passos i ajust
de finestres de recepció de dades), i com que per cada pàgina
i cada imatge d'aquesta pàgina s'ha d'establir una nova connexió,
la transmissió de dades s'alenteix moltíssim supeditat al
propi establiment de les connexions. Com a dada representativa direm que
en una connexió, per transmetre 1Kbyte de dades d'informació,
trigaria al voltant de mig segon (500 ms).
La versió 1.1
Ara per ara és el
protocol més estès arreu del món, vigent des de principis
del 1997, amb les característiques següents:
-
Connexions persistents,
ja que no es tanquen després de l'enviament de cadascuna de les
parts d'un document, evitant així la sobrecàrrega d'establiment
de connexions TCP.
-
Diverses peticions simultànies
per
a un mateix client utilitzant una sola connexió sense haver d'esperar
a la resposta del servidor per a cada una d'elles.
-
Existeix una negociació
del contingut assignant diferents valors a les característiques
de la comunicació en curs (com en quina quantitat es pot degradar
la qualitat de la connexió esmentada, etc).
-
Apareixen nous mètodes
al costat dels ja comentats GET, POST i HEAD:
-
DELETE: per esborrar un recurs
del servidor
-
TRACE: per veure què
rep el servidor del que ell mateix està enviant
-
PUT: per enviar dades
-
PATCH: per aplicar correccions
-
COPY: per copiar recursos d'una
destinació a una altra
-
MOVE: per moure recursos identificats
a un altre lloc
-
LINK: per establir enllaços
entre diferents recursos
-
OPTIONS: perquè el client
pugui obtenir del servidor les seves característiques
-
WRAPPED: permet unir diverses
peticions encapsulant-les amb algun tipus de filtrat relacionat amb la
seguretat (com pot ser l'encriptació)
-
Nou mètode d'autenticació
en
el qual les claus d'accés van encriptades per la xarxa per proporcionar
seguretat, fidelitat i confidencialitat de les dades.
El futur proper del
protocol HTTP
Vistes les característiques
(molt generals) de la versió de protocol HTTP 1.1 s'entreveu que
aquesta no és més que un pont cap allò que en realitat
es vol imposar a Internet: l'HTTP-NG (HTTP-Next Generation).
Aquest nou protocol pretén cobrir una gran quantitat de noves funcionalitats
entre les quals destaca el comerç electrònic.
Els seus criteris de disseny
han estat:
-
Simplicitat (seguint
el criteri de l'HTTP/1.0) a l'hora de la implementació del protocol.
-
Rendiment: ha de ser
eficient transmetent objectes en xarxes de comunicacions.
-
Asincronia: les peticions
des dels clients han de poder-se fer en paral·lel a través
d'una única connexió.
-
Seguretat: els objectes
que es transmeten han d'anar encriptats sense forçar cap política
de seguretat en particular.
-
Autenticació:
s'ha de poder autenticar les dues parts de la connexió, així
com a qualsevol intermediari, amb suport a la realització de pagaments
en línia.
-
Servidors intermediaris:
s'ha de suportar la comunicació entre servidors per al manteniment
de 'caches', 'mirrors' (miralls de dades) i 'proxys' (intermediaris
de comunicació).
-
Visualització obligatòria
de certes dades: s'ha de poder obligar el client a mostrar certes dades
al voltant de l'objecte que s'està transmetent, com l'autor, el
copyrigth i la llicència.
-
Informació de registre:
la informació de registre (logs) ha de poder ser enviada entre diferents
servidors.
-
Requeriments de xarxa:
el protocol ha de treballar de forma independent de la capa o trama de
transport de què disposi, tot i que ha de funcionar especialment bé
amb el protocol TCP per ser el més utilitzat a Internet.
Tots aquests avenços
del protocol HTTP ja estan suportats en l'aplicació Apache 1.2
i
de cara a un futur no molt llunyà (amb la versió 3.0) el
principal i únic objectiu serà el de donar suport absolut
a l'HTTP-NG implementant-lo de manera automàtica per arribar
a copsar el 60% de la quota de mercat, la qual cosa li donaria un impuls definitiu.
Projectes associats
Hi ha molts projectes associats
a Apache que només tenen com a objectiu l'augmentar la seva funcionalitat.
Al nostre parer hem de destacar dos d'ells:
- PHP: molt útil
per als desenvolupadors d'aplicacions, i
- SSL: orientat a
la privacitat de les comunicacions.
Tot seguit en farem cinc
cèntims de cada un d'ells.
PHP
Dins la programació
d'aplicacions Internet hi ha eines de programació que s'utilitzen
del costat dels clients (Java, VisualBasic, JavaScript...) i d'altres
del costat del servidor com el Perl.
De fet el PHP és
un llenguatge similar al Perl que té com a principals característiques
que és fàcil d'utilitzar, és un llenguatge molt potent
que pot substituir fàcilment la programació 'cgi' i, potser
la més important, que proporciona una llibreria de funcions que
permet accedir directament a les principals bases de dades del mercat informàtic
com Informix, Oracle, MySQL, PostgreSQL, Adabas...
SSL
L'altre projecte, potser
el de més perspectiva de futur, és l'associat amb Apache-SSL
(Secure Socket Layer) encarat al comerç electrònic. En aquest
aspecte s'estan desenvolupant constantment estàndards de seguretat
a Internet especialment dins el món Web. Apache-SSL inclou totes
les característiques de seguretat com poden ser l'encriptació
i l'autenticació.
El més sorprenent
és que aquests 'parches' o mòduls són de lliure distribució
utilitzant-se una llibreria d'encriptació també de lliure
distribució com RSA (de 128 bits), DES o MD5.
Pàgina Web, principal projecte
del projecte Apache
La seu principal del projecte
httpd Apache, iniciat i potenciat per l'Apache Software Fundation, la
podeu trobar a:
http://httpd.apache.org/