Teoría sobre o servizo web
Sumario
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:
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:
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.
HTTP | HTTPS | |
---|---|---|
Transmision | Sin cifrar | Cifrada |
Certificado | No | Si |
Número de puerto | 80 | 443 |
URL | http:// | https:// |
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:
- Safari, desenvolto por Apple para os seus dispositivos Mac e Iphone
- Mozilla Firefox, software libre moi centrado na privacidade
- Google Chrome, desenvolvido por Google, é o máis utlizado na actualidade
- MIcrosoft Edge, desenvolvido por Microsft para substituir o obsoleto Internet Explorer
Algunhas diferencias que poden decantar o seu uso a favor dun ou outro son:
- o rendemento e o uso da memoria
- o soporte que se fai as funcionalidades de HTML5
- o soporte as tecnoloxías javascript
- o soporte que se fai a outros estándares
- a variedade e calidade dos plugins que permiten ampliar as súas funcionalidades
- as posibilidades de accesibilidade
- a compatibilidade coas aplicacións web que se poidan estar utilizando na túa empresa
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:
- Cómo funcionan estes programas? Qué funcionalidade práctica lles atopas? Atopas algunha diferencia entre ambos?
- Saberías explicar os campos dunha petición e resposta HTTP con algún destes programas?
Dous consellos:
- Se non queres instalar no teu equipo, podes usar máquinas virtuais
- 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
- Coñeces lynx? Que é? Qué utilidade lle podes atopar?
- Instala e accede co mesmo a unha web. Amosa unha captura
Tarefa 3 Apache JMeter
- Que é JMeter?
- 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:
- Cal ten máis cuota de mercado?
- Cal se utiliza máis frecuentemente para páxinas web con moito tráfico?
- Cal é máis rápido?
- Cal consume menos recursos?
- Cal é máis sinxelo de configurar?
- Cal ten máis posibilidades de ampliar a súa funcionalidade mediante módulos?
- 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:
Referencias
- Teoría do CIFP de aprendizaxes virtuais e dixitalizados
- https://fp.josedomingo.org/serviciosgs/u03/enlaces.html
- Servicios en red. Editorial Mc Graw Hill
- Servicios en red. Editorial Editex
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