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).

MOI INTERESANTE. Tes na web do MDN un resumo de HTTP, e guías máis detalladas

Formato das mensaxes

Funcionamento

Unha vez establecida a conexión de TCP do cliente co porto do servidor no que funciona o protocolo HTTP (normalmente o 80) ou HTTPS (normalmente o 443), o funcionamento do protocolo HTTP é o seguinte:

  1. O cliente envía unha petición ó servidor que consta de
  2. Liña inicial. Nela inclúese o método (os máis habituales son GET e POST), o URL e a versión do protocolo utilizada
    Cabeceras (headers). Unha cabecera é unha liña de texto que contén a asociación dunha clave (nome da cabecera) cun valor ou cunha lista de valores. Nas cabeceras hai información relevante para o funcionamento do protocolo HTTP
    Corpo (body). A súa forma depende do método (non existe para o método GET)
  3. O servidor recibe a petición e envía unha resposta (HTTP Response) que consta tamén de
  4. Liña inicial. Inclúe un código de resposta
    Cabeceras. Cun formato análogo ás de petición, proporcionan información relevante para o protocolo HTTP acerca da resposta
    Corpo. É unha secuencia de bytes que conteñen o recurso solicitado na petición (de non producirse ningún erro)

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://

O funcionamento do protocolo HTTPS cando se teclea un enderezo no navegador:

  1. O usuario teclea un enderezo web en no navegador https://www.sede.fnmt.gob.es/.
  2. Tradúcese o dominio DNS ó enderezo IP correspondente.
  3. Búscase no servidor web a IP da páxina solicitada polo porto TCP 443.
  4. Antes de transferir a información ó navegador do cliente, negóciase mediante TLS; consiste no envío do certificado ó cliente, e o cliente debe aceptar este certificado. Unha vez aceptado, usarase un canal cifrado coa información.
  5. Por último realizase a petición HTTP e envíaselle a resposta ó cliente.

Navegadores

Algúns dos navegadores máis usados

Son os clientes cos que podemos acceder os recursos web. Podedes ver:

Os máis coñecidos na actualidade son:

Algúns outros tamén relevantes:

  • Vivaldi, navegador rápido e privado con algunhas funcións únicas
  • Brave, navegador web seguro, rápido y privado con Adblocker

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

Algo habitual será a posibilidade de extender a súa funcionalidade mediante complementos, plugins ou extensións

Google Chrome e a súa personalización

Por ser dos que ten maior cuota de mercado, anailzaremos algunhas opcións de personalización de Google Chrome. u

O navegador Chrome lanzouse no 2008 e desbancou a Firefox e Internet Explorer (con Microsof intentando retomar posicións co máis recente Edge).

Coas seguintes cadeas introducidas na barra de enderezos de Chrome podemos operar o visualizar información interna.

Cadea Operación ou visualización
chrome://tracing Rastrexa a actividade realizada no Chrome.
chrome://net-internals Visualiza e captura información dos parámetros e transmisión da rede (eventos, conexións TCPm solicitudes URL e DNS, ...).
chrome://settings Abre a ventana de configuración do navegador.
chrome://history Visualiza o historial de URL visitadas.
chrome://password-manager-internals Visualiza e xestiona os contrasinais almacenados.
Podes indagar sobre máis cadeas e formas de personalizar. 

Unha das opcións máis interesantes é o administrador de tarefas do propio Chrome ubicado en

Más / Más herramientas / Administrador de tareas 

Así pódese comprobar qué página consume máis recursos ou qué plugins se están executando; e finalizar aqueles procesos que se desexen.

Configuración dos certificados

Outra das opcións interesantes que ten o navegador é a instalación de certificado digital (ficheiro que acredite e autentique ó usuario, proporcionado por unha entidade certificadora coma o FNMT ou organismo gubernamental). Dependendo do estándar, os máis comúns son .cert, .crt, .pfx, .crl, .sst y .stl. Normalmente, virán acompañados cun contrasinal que se usará na instalación do certificado.

Os pasos da instalación son:

  1. En Chrome, abrir Más / Configuración.
  2. Desprazar a pantalla ata Configuración avanzada e seleccionar Gestionar certifcados.
  3. Na lapela Personal seleccionar Importar / Siguiente.
  4. Seleccionar o archivo que se quere importar en Nombre de archivo
  5. Indicar o contrasinal
  6. Importarase o certificado na ubicación correspondente dependendo do tipo de certificado (tamén se pode indicar de xeito manual).

O usuario poderá identificarse para operar de una manera autenticada sendo particularmente útil para trámites coa adminsitración electrónica.

Saberías cómo obter un certificado da FNMT? Que pasos precisas seguir? Cáles son os requisitos técnicos? Qué medidas de seguridade son convintes?
Sabes como funciona o novo DNI-e? Qué é a tecnoloxía NFC e para que pode resultar interesante no novo DNI?

Servidores web

Porcentaxe de uso dos servidores web no ano 2022

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áis 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
PISTA. Tamén é posible ver peticións http con Firefox Network Monitor, Chrome Developer Tools ou coa web Rex Swain's HTTP Viewer.

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 polos alumnos do:

  • Ciclo Medio Sistemas Microinformáticos e Redes do curso académico 20/21
  • Ciclo Superior Despregue de Aplicacións Web do curso académico 20/21