Home
Temas
Preguntas
Webs Amigas

Tecnología y Cultura
Sexo y Religión


Derechos Animales
Fotos Naturaleza
Ecología y Filosofía

Copyleft
Licencia de Creative Commons
Temas >> Estándares y Protocolos
Protocolos que componen el Web
Estos son los protocolos o acuerdos tecnológicos que sustentan la Web

RFC2616 reemplaza a RFC 1945. El protocolo HTTP es:

  1. Stateless
  2. .Extensible, por medio de cambios en los encabezados, requests y respuestas
  3. Involucra negociación entre cliente y servidor

Lo importante de HTTP/1.0 es su soporte para tipos MIME, pero no toma en cuenta ni proxies, ni caching, ni conecciones persistentes o virtual hosts. HTTP/1.1 por otra parte implementa estas características, pero cuenta con una conección perfecta y no hace corrección de errores.

El uso normal es un UserAgent que envía una cadena de requerimiento, y recibe una cadena de respuesta, o un stream. Entre ellos pueden haber proxies, gateways o túneles.

Subcomponentes

Básicos:

  1. Paso de versión del protocolo (también: sirve para backwards compatibility).
  2. Inclye URLs, y cual es la forma normal de una URL.
  3. Formato para fechas y para deltas de tiempo.

Negociación de cotenido:

  1. Sets de caracteres y codificaciones (ej.: compresión).
  2. Soporte para tipos MIME
  3. Lenguajes

Y algunos componentes más esotéricos:

  1. Quality values (algunas restricciones son más importantes que otros)ej.: de Mozilla 0.9.2: "HTTP_ACCEPT_CHARSET = ISO-8859-1, utf-8;q=0.66, *;q=0.66"
  2. Chunked transfers (rangos).
Mensajes

Los mensajes tienen varios encabezados de la forma nombre=valor y un cuerpo de mensaje. Se dividen en mensajes de requerimiento y mensajes de respuesta.

Existen algunos encabezados compartidos:

  1. Cache-Control
  2. Connection (close,persistent)
  3. Date
  4. Pragma
Request messages

Comienzan con una línea del tipo "MÉTODO URL VERSION", como "GET / HTTP/1.1". A continuación siguen normalmente uno o varios de los siguientes encabezados:

  1. Host (para virtualhosts)
  2. Authorization (para suplir credenciales)
  3. Accept-* (aceptar lenguaje, mime, etc.)
  4. User-Agent (identificar el browser)
Response messages

Comienzan con una línea del tipo "VERSIÓN CÓDIGO MENSAJE", como "HTTP/1.1 200 OK". Los códigos se agrupan por familias, de la siguiente manera:

  • 1xx: Informacional, continuar.
  • 2xx: Ok
  • 3xx: Ok, pero ... ej. Redirect
  • 4xx: Requerimiento con errores ej.: Not Found
  • 5.5xx: Respuesta con errores ej.: Server Error

Las aplicaciones deben entender al menos el primer dígito de la respuesta. Pueden no entender el resto, y eso da mucha flexibilidad al protocolo (ej.: un programa de ajedrez entre un cliente y un servidor: 285 jugada aceptada, 482 jugada ilegal, 196 estoy pensando, 387 jaque mate)

Conección persistente

Pipelining, negociación de conección persistente. Además HTTP/1.1 incluye un protocolo de caching y un modelo de expiración para ese caching, que indica si la expiración debe ser explícita, implícita, etc.

CGI es un protocolo mucho más simple. Describe la forma en que un cliente y un programa corriendo en un servidor web se entienden. Es ortogonal a HTTP, puesto que sólo delimita la interacción entre el servidor web y el programa.

La comunicación utiliza:

  1. Variables de ambiente
  2. Entrada estándar del programa
  3. Salida estándar del programa
Variables de ambiente

Las siguientes variables de ambiente siempre están presentes:

  1. SERVER_SOFTWARE "Apache/1.3.14 (Unix)"
  2. SERVER_NAME "www.example.com"
  3. GATEWAY_INTERFACE "CGI/1.1"

Dependiendo del requerimiento, estarán presentes también:

  1. SERVER_PROTOCOL "HTTP/1.1"
  2. SERVER_PORT "80"
  3. REQUEST_METHOD "GET"
  4. SCRIPT_NAME

Si se usa comunicación vía PATHS (ej.: algo.cgi/dir1/dir2/recurso):

  1. PATH_INFO "dir1/dir2/recurso"
  2. PATH_TRANSLATED "/home/user/www/dir1/dir2/recurso"

Si se usa método GET:

  1. QUERY_STRING "a=1&b=2"

Si se usa método POST:

  1. CONTENT_TYPE "text/plain"
  2. CONTENT_LENGTH número_de_bytes

Para identificar al usuario remoto:

  1. REMOTE_HOST (IP si RemoteHostLookups Off)
  2. REMOTE_ADDR
  3. REMOTE_IDENT (rara vez el cliente tiene ident encendido)

Para autentificación:

  1. AUTH_TYPE (ej.: basic)
  2. REMOTE_USER (usuario autentificado por el servidor)
Entrada estándar

Se usa si el método es POST. En tal caso se lee la entrada estándar. No se puede re-leer.

Salida estándar

Debe comenzar con "Content-type: text/html" y una línea en blanco si la configuración del servidor es esa. Normalmente si un script escribe a su salida de error el servidor asume que es un error, pero esto no forma parte del estándar CGI, sino que está motivado por razones de seguridad.

Alojamiento Web

ChaTo = Carlos Castillo, Ph.D.  :::  Acerca de este Sitio ChaTo = Carlos Castillo, Ph.D. ::: Acerca de este Sitio