Teoría sobre o servizo web

De MediaWiki
Ir a la navegación Ir a la búsqueda

WWW e HTTP

HTTP (Hypertext Transfer Protocol) foi creado en 1990 no CERN como un medio para compartir datos científicos a nivel internacional de xeito rápido e económico; é un protocolo de transferencia de hipertexto que segue o modelo cliente/servidor e establece as normas para ó intercambio da información contida nas páxinas web.

O seu método máis común de intercambio de informácion e a World Wide Web (WWW), pola que se transfiren páxinas web os nosos ordenadores ou dispositivos móbiles.

A World Wide Web é un sistema de documentos enlazados entre sí de forma transparente para o usuario, e accesibles a través de internet.

Para facer posible ese funcionamento existen unhas aplicación específicas chamadas navegadores; e nelas os enlaces son visibles porque o punteiro do rato cambia de forma (habitualmente dunha frecha a unha man con un dedo extendido) o pasar por encima, ou por estar remarcadas noutra cor.

Foi Berners-Lee quen uníu o hipertexto e internet, e quen plantexou a WWW en 1990 como un prototipo co primeiro navegador e o primeiro servidor; o crecemento exponencial no seu uso é por todos coñecido

Enderezos URL (Uniform Resource Locator)

Os Localizadores Uniformes de Recursos, URL (Uniform Resource Locator) están formados por unha secuencia de caracteres (normalmente en ASCII) de acordo a un formato estándar, que se usa para nomear recursos en internet por e para a súa localización de forma única.

Estos recursos poden ser páxinas web, documentos, imáxenes, vídeos, sonidos, programas, etc.

Algúns exemplos serían:

//servidor/impresora
//192.168.0.1/leeme.txt
http://edu.xunta.gal
http://alex:123456@www.udc.es:80/alex/index.html;lg=es?l=34;c=es#info

Os elementos máis habituales son:

  • Scheme: protocolo co que se negocia a transmisión ou comunicación. Os máis famosos e universales son http (para páxinas web), mailto (para correo), e ftp. Usa os separadores barra-barra (//) ou dos puntos-barra-barra (://) se é un protocolo.
  • Userinfo: pode levar o nome de usuario so ou co seu contrasinal. O userinfo precede o separador arroba (@) e utiliza os dous puntos(:) entre usuario e contrasinal.
  • Host: pode ser unha FQDN (www.udc.es), un nome de dominio (udc.es), unha IPv4 (192.168.0.1) ou unha IPv6 ([FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]).
  • Port: porto de comunicación do protocolo. Pode ser oficial, oficioso ou reconfigurado polo administrador do servidor. Vai precedido polo separador dous puntos (:).
  • Path: dentro da computadora, é a ruta onde se aloxa o recurso ou documento (permite direccionamiento relativo con directorio raíz e pode usar punto-punto-barra para a carpeta pai [../]). O separador de directorios é a barra (/). Os arquivos teñen un nome e soen ter unha extensión (separados por un punto [.]). Tamen poden levar parámetros separados por punto e coma (;).
  • Query: consultas. Son unha ou varias variables, precedidas da interrogación (?) e con un valor precedido por un símbolo igual (=).
  • Fragment: o fragmento referencia unha zona no documento, un marcador ou uhna posición. Vai precedido da almohadilla (#).

Máis exemplos onde poder localizar algúns dos elementos:

ftp://usuario:contrasinal@www.dominio.com
https://www.google.com/search?sxsrf=ALeKk02BIhLoS691zVZTRGdAq3h6V54lqw%3A1605147843062&ei=w5
https://wiki.cifprodolfoucha.es/index.php?title=Teor%C3%ADa_sobre_o_servizo_web#WWW_e_HTTP

Máis información:

Protocolo HTTP

O Protocolo de Transferencia de Hipertexto, HTTP (HyperText Transfer Protocol) é o utlizado maiormente para as transaccións da web (entre servidores HTTP e clientes HTTP ou navegadores). Usa por defecto o porto 80. Foi desarrollado polo W3C e a IETF. Como este servizo de cliente/servidor non tiña "memoria", inventáronse sistemas para almacenar as variables de sesión (como as cookies).

Formato das mensaxes

Peticións

Nas transaccións HTTP, o cliente envía o servidor unha mensaxe (petición), que conten unha cabecera e opcionalmente algún dato. O encabezado conten a liña de petición (request); os seus elementos son:

  • método (GET en la petición)
  • URL relativa (/index.html no exemplo)
  • versión do protocolo HTTP (1.1 no exemplo)
 EXEMPLO
GET /index.html HTTP/1.1
Host: www.google.com
Accept-Language: en
User-Agent: IE 7

Os métodos máis usados nas peticións son GET,POST e HEAD:

  • GET: pide a representación do recurso especificado (o contenido do archivo correspondiente ó recurso). Sempre que pulsamos con rato nun enlace dunha páxina web a calquera recurso ou que escribimos unha dirección URL na barra de direccións do navegador, éste envía cando menos unha mensaxe de petición co método GET.
  • POST: presenta os datos que se procesarán ó recurso especificado (por exemplo un formulario, form, de HTML). Os datos incluense no corpo da petición. Esto pode dar lugar á creación dun novo recurso, á actualización de recursos existentes ou a ambos (páginas web dinámicas, consultas a bases de datos,etc.).
  • HEAD: solicita ó servidor que envíe solamente os encabezados correspondentes á petición do recurso que se indique. O servidor respondería coa mesma liña de resposta e os mesmos encabezados que para unha petición GET pero non enviaría o contido do recurso. Utilizado por exemplo polos navegadores para saber se unha páxina web que ten almacenada na caché foi actualizada no servidor.

Outros métodos: OPTIONS, CONNECT, PUT, DELETE, TRACE

Despois da liña de petición veñen varias cabeceras (headers), que conteñen parámetros de petición, despois van dous puntos (:) e, por último, o valor desa petición. Exemplos de parámetros son:

Encabezados de peticións HTTP
Encabezado Significado
Host Equipo ó que se envía a petición
User-Agent Nome e versión do cliente (navegador) e do sistema operativo
Accept Tipo de contenido que acepta o navegador
Accept-Language Idiomas que espera o navegador nas páxinas recibidas
Accept-Encoding Sistema de codificación que espera el navegador para el recurso a recibir
Accept-Charset Xogo ou conxunto de caracteres que espera recibir o navegador
Referer URL desde onde se orixinou a petición (URL da páxina que contiña o enlace)
Cookie Contido da cookie almacenada no equipo cliente e relativa o sitio web ó que se fai a petición.

Respostas

A resposta do servidor HTTP sole conter un encabezado e un corpo:

HTTP/1.1 200 OK
Date: Fri, 31 Dec 2009 23:59:59 GMT
Content-Length: 1221
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: "3f80f-1b6-3e1cb03b"
Content-Type: text/html; charset=UTF-8
<html>
<body> (Contido da páxina web)... </body>
</html>

Os encabezados máis comúns son os da seguinte táboa:


Encabezados de respostas HTTP
Encabezado Significado
Date Fecha e hora na que comezou o envío do recurso solicitado
Server Nome do software servidor
Content-Length Tamaño en bytes do corpo da mensaxe
Content-Language Código do idioma no que está escrito o recurso que se envía no corpo da mensaxe.
Content-Encoding Sistema de codificación que se utiliza en la representación del recurso dentro del cuerpo del mensaje.
Connection Serve para indicar se o servidor manten a conexión TCP para as seguientes transaccions HTTP desde o cliente. Co valor keep-alive manten a conexión e co valor close a pecha, e se o cliente ten que enviar unha nova petición terá que solicitar previamente unha nova conexión TCP

A liña principal, ou liña de respuesta, contén a versión de HTTP soportada polo servidor e un código e mensaje de «erro» ou estado. Despois aparecen os parámetros de resposta. No exemplo podemos ver:

Content-Length: 1221 //Lonxitude do corpo en bytes.
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux) //Tipo de servidor.
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT //Fecha e hora de última modificación do ficheiro ou recurso requerido.
Content-Type: text/html; charset=UTF-8 //Tipo de contido aceptado e o código aceptado.

Códigos de estado

Os códigos de estado (status code) son números de tres cifras que indican a resposta do servidor a unha determinada petición. Os principais son:

  • 1XX Mensaxes informativas:
    • 100 Continuar (continuar coa petición).
  • 2XX Operacións exitosas:
    • 200 OK (todo correcto).
    • 206 Contenido Parcial (Partial Content).
  • 3XX Redirección:
    • 301 Mudado Permanentemente (Moved Permanently).
    • 307 Redirección Temporal (Temporary Redirect).
  • 4XX Error por parte do cliente:
    • 401 No autorizado (Unauthorized).
    • 403 Prohibido (Forbidden).
    • 404 No Encontrado (Not Found), pode ser que non se escribira ben a URL, con tildes,... Este erro é coñecido por ser do máis común.
    • 408 Tiempo de Espera Agotado (Request Timeout).
  • 5XX Error por parte do servidor:
    • 500 Error Interno (Internal Server Error).
    • 503 Servicio No Disponible (Service Unavailable).

Cookies

As cookies (RFC 2109) ou «galletiñas» son ficheiros que o navegador do cliente graba en disco duro a petición do servidor. Estos arquivos almacenan datos que normalmente utiliza o servidor. Utilizanse para:

  • Gardar os nomes de usuario e contrasinais (poden ser útiles para «cestas da compra», blogs e outras páxinas que necesitan manter datos entre sesións).
  • Recopilar hábitos de navegación dos usuarios con usos publicitarios.

Cando o servidor envía unha resposta inclue o parámetro Set-Cookie: name=value e a partires dese íntre, o navegador do cliente engade o parámetro Cookie: name=value a todas as peticiones dese servidor

Nos navegadores podense activar, desactivar ou preguntar cada vez polo uso das cookies antes de que se vaia a enviar algunha.

Protocolo HTTPS

O Protocolo Seguro de Transferencia de HiperTexto, HTTPS (HyperText Transfer Protocol Secure), é un protocolo similar a HTTP pero que ofrece máis seguridade cun Protocolo de Capa de Conexión Segura, SSL (Secure Sockets Layer) ou con Seguridade da Capa de Transporte, TLS (Transport Layer Security).

Utiliza o porto 443 e empregase para a transferencia de contrasinais, pagos con tarxeta, etc.

As URL das páxinas comezan por https:// e a súa especificación sobre TLS está no RFC 2818.

O servicio HTTPS traballa cunha chave de sesión que se negocia nun handshake («apretón de manos»).

A seguinte taboa resume as diferenzas máis significativas desde a perspectiva do usuario.

Diferenzas
HTTP HTTPS
Transmision Sin cifrar Cifrada
Certificado No Si
Número de puerto 80 443
URL http:// https://

Navegadores

Son os clientes cos que podemos acceder os recursos web. Podedes ver nesta gráfica a súa evolución en termos de cuota de mercado e eiquí unha lista dos navegadores e as súas capacidades.

Os máis coñecidos na actualidade son:

Algunhas diferencias que poden decantar o seu uso a favor dun ou outro son:

Servidores web

Un servidor web ou servidor HTTP é un programa que procesa unha aplicación do lado do servidor, realizando conexiones bidireccionales ou unidireccionales e síncronas o asíncronas co cliente e xenerando unha resposta nunha aplicación (normalmente o navegador) do lado do cliente, xeralmente usando os protocolos HTTP e HTTPS para estas comunicacións.

As aplicaciones web son aquelas que os usuarios poden utilizar accedendo a un servidor web ou a un servidor de aplicacións desde o seu navegador.

Algún dos servidores web más coñecidos é utilizados son:

Tarefa 1 Zap proxy e Fiddler

Instala Zap proxy ou fiddler e captura peticións e respostas http.

Explica:

  1. Cómo funcionan estes programas? Qué funcionalidade práctica lles atopas? Atopas algunha diferencia entre ambos?
  2. Saberías explicar os campos dunha petición e resposta HTTP con algún destes programas?

Dous consellos:

  1. Se non queres instalar no teu equipo, podes usar máquinas virtuais
  2. Podes instalar so dous, pero en cada momento utiliza só un... porque os dous fan cousas similres e poderán "chocar" no seu funcionamento

Tarefa 2 Lynx

  1. Coñeces lynx? Que é? Qué utilidade lle podes atopar?
  2. Instala e accede co mesmo a unha web. Amosa unha captura

Tarefa 3 Apache JMeter

  1. Que é JMeter?
  2. Para que pode ser útil no campo dos servidores web e servidores de aplicacións?

Pistas:

Tarefa 4 Apache HTTP vs nginx

Analiza os dous servidores web máis comunmente utilizados, e fai unha breve descripción de ambos.

Responde as seguintes cuestións:

  1. Cal ten máis cuota de mercado?
  2. Cal se utiliza máis frecuentemente para páxinas web con moito tráfico?
  3. Cal é máis rápido?
  4. Cal consume menos recursos?
  5. Cal é máis sinxelo de configurar?
  6. Cal ten máis posibilidades de ampliar a súa funcionalidade mediante módulos?
  7. Cal é máis seguro?

Cres que é posible combinar ambos para aproveitar as súas virtudes e disminuir as cuestións que poidan ter un impacto negativo? Cómo?

Pistas:

  1. Apache vs Nnginx 2019
  2. Consideracións prácticas
  3. Combinando Apache 2 e ngingx

Referencias

Creditos

Aportacións feitas por:

  • Os alumnos do Ciclo Medio Sistemas Microinformáticos e Redes do Grupo B do curco académico 2020/2021
  • Os alumnos do Ciclo Superior Despregue de Aplicacións Web do curso académico 2020/2021