Mòdul 4
Serveis de xarxa amb GNU/Linux
Exercici 1234

 
Descripció de l'aplicació "Apache"

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/