Kitabı oku: «Instalación y configuración del software de servidor web. IFCT0509», sayfa 2
Por lo tanto, el protocolo IP añade información de encaminamiento al datagrama para que este sea capaz de seguir una ruta que alcance su destino a través de la red.
ICMP
ICMP es un protocolo de la capa de Internet pero tiene la particularidad de que depende directamente del protocolo IP, por lo tanto se podría ver como un peldaño por encima en la jerarquía de protocolos. ICMP se desarrolló principalmente para monitorizar el estado de la red y, por lo tanto, para enviar mensajes de control de flujo, detección de destinos inalcanzables, redireccionamiento de rutas, etc. Pero también, se puede usar como herramienta para probar la conectividad de una red.
Capa de red
La capa de red es la que se encuentra conectada de forma directa al medio físico de transmisión. Esta capa se encarga de transformar el datagrama que suministra la capa IP en una trama de bits. Además, es la capa que añade la información necesaria para traducir la dirección IP de la máquina en la dirección física, (MAC), necesaria para dirigir el mensaje a la interfaz de red de la máquina destino.
Esta capa está compuesta de los protocolos que se encargan de establecer las características físicas para que el mensaje se transmita por el medio físico. Ejemplos: ETHERNET, FDDI, etc.
ARP
Cuando un datagrama llega a la red que contiene el equipo de destino, necesita saber identificar cuál es la máquina del extremo de la comunicación. El protocolo ARP se encarga de obtener la dirección MAC a partir de la dirección IP del datagrama mediante una consulta a todas las máquinas conectadas a la red. Una vez conseguida la MAC, el datagrama es enviado a la red y la interfaz de red correspondiente se hará cargo del datagrama.
Actividades
5. Busque información sobre la relación que existe entre el modelo OSI y el conjunto de protocolos TCP/IP. Realice un resumen o una tabla comparativa.
Configurando TCP/IP
Para el uso del protocolo TCP/IP es necesario la configuración del software específico que permita al equipo informático acceder a los mecanismos que posibilitan una comunicación a través de la red.
Los pasos a seguir son independientes del tipo de conexión que se realice:
1 Configurar el equipo físico: instalación de la tarjeta de red.
2 Instalación del software de red: este tipo de software es proporcionado por el sistema operativo.
3 Configurar el equipo para utilizar TCP/IP: el administrador de red establece los parámetros necesarios en la configuración del software de red.
4 Instalar programas específicos para acceder a servicios de red: estos programas establecen la comunicación adecuada según el tipo de servicio que se desea usar. Ejemplos: FTP, correo, sesión remota, etc.
Existen ciertos programas o comandos que son utilizados para configurar el software de red del equipo, así como para realizar operaciones de mantenimiento sobre la red para resolver los errores que se puedan producir. Entre todas las utilidades, se nombran las siguientes, por ser las más genéricas y utilizadas en la práctica.
Ping
Ping es una utilidad de diagnóstico que comprueba el estado de la comunicación de una máquina con uno o varios equipos remotos de una red TCP/IP.
Ping trabaja a nivel de capa de red. El programa usa el envío de paquetes ICMP para comprobar la comunicación. En muchas ocasiones, se suele usar para medir la latencia de la red entre dos puntos remotos.
Para equipos Windows, se ejecuta el programa sobre la línea de comandos de la siguiente forma:
Ping [direccion IP o nombre de la máquina con la que conectarse]
Resultado de ejecución del comando Ping en el símbolo de sistema desde Windows
El programa devuelve los tiempos que tarda en responder el equipo destino a los sucesivos envíos de paquetes ICMP.
Para equipos Linux, se ejecuta el programa sobre un terminal de la siguiente forma:
Resultado de ejecución del comando Ping en un terminal de una distribución Linux
Tracert y Traceroute
Tracert y Traceroute son dos programas que permiten seguir la pista de los paquetes que llegan desde otro equipo de la red. Muestra datos sobre latencias y estimación de distancias de las máquinas involucradas en la transmisión. Tracert es la herramienta de Windows, mientras que Traceroute es la propia de Linux.
La diferencia entre ambas herramientas radica en que Tracert envía paquetes ICMP para capturar la información de los nodos intermedios, mientras que Traceroute envía segmentos UDP con puertos destino aleatorios. Se envían tres paquetes que son monitorizados.
Resultado de ejecución del comando Tracert en el símbolo de sistema desde Windows
Resultado de ejecución del comando Traceroute en un terminal de una distribución Linux
La primera columna indica el número de salto, a continuación viene el nombre o dirección IP de la máquina por la que pasa y los tres tiempos siguientes indican el tiempo de respuesta para los paquetes enviados (un asterisco significa que no se obtuvo respuesta).
Netstat
Netstat es una herramienta que proporciona un listado con las conexiones activas en un equipo, tanto entrantes como salientes.
Resultado de ejecución del comando Netstat en el símbolo de sistema desde Windows
Resultado de ejecución del comando Netstat en un terminal de una distribución Linux
La primera columna indica el protocolo usado para la conexión, después se indican las direcciones y puertos usados en los dos extremos de la conexión. La última columna muestra el estado en el que se encuentra la conexión. El estado de una conexión puede ser alguno de los siguientes:
1 ESTABLISHED. El socket tiene una conexión establecida.
2 SYN_SENT. El socket está intentando iniciar una conexión.
3 SYN_RECV. Una petición de conexión fue recibida por la red.
4 FIN_WAIT1. El socket está cerrado, y la conexión está finalizándose.
5 FIN_WAIT2. La conexión está cerrada, y el socket está esperando que finalice la conexión remota.
6 TIME_WAIT. El socket está esperando después de cerrarse a que concluyan los paquetes que siguen en la red.
7 CLOSED. El socket no está siendo usado.
8 CLOSE_WAIT. La conexión remota ha finalizado, y se espera que se cierre el socket.
9 LAST_ACK. La conexión remota ha finalizado, y se espera que se cierre el socket. Esperando el acknowledgement.
10 LISTEN. El socket está esperando posibles conexiones entrantes.
11 CLOSING. Ambos sockets han finalizado pero aún no fueron enviados todos los datos.
12 UNKNOWN. El estado del socket no se conoce.
13 DELETE_TCB. Se está eliminando el búfer del control de transmisión (TCB) para la conexión TCP.
Ipconfig e Ifconfig
Ipconfig muestra información sobre el tipo de adaptador de red, así como la dirección IP, máscara de subred y puerta de enlace usados por el adaptador en las comunicaciones y otros muchos datos.
Resultado de ejecución del comando Ipconfig en el símbolo de sistema desde Windows
Resultado de ejecución del comando Ifconfig en un terminal de una distribución Linux
Aplicación práctica
1. Utilice Netstat para ver las conexiones existentes en su ordenador y anote las cinco primeras en la tabla.
Protocolo | IP Origen:Puerto | IP Destino:Puerto | Estado |
2. Con el siguiente resultado Netstat, un ingeniero de red nuevo sospecha que su equipo host ha sufrido un ataque exterior a los puertos 1070 y 1071. ¿Cómo respondería?
C:\> netstat -n Conexiones activas Protocolo TCP TCP C:\> | Dirección Local 127.0.0.1:1070 127.0.0.1:1070 | Dirección extranjera 127.0.0.1:1071 127.0.0.1:1070 | Estado ESTABLISHED ESTABLISHED |
3. Investigue cuál es la configuración de su equipo y rellene la tabla adjunta.
Dirección IP | |
Máscara de red | |
Puerta de enlace | |
Dirección MAC | |
DNS | |
Tipo de Adaptador |
SOLUCIÓN
1 Para rellenar la tabla con las conexiones entrantes y salientes se ejecutará el siguiente comando sobre la línea de comandos, si el equipo tiene el sistema operativo Windows, o bien desde una terminal si lo hace con el sistema operativo Linux: netstat
2 No ha sufrido ningún ataque exterior. De entrada, las conexiones establecidas son del mismo equipo, por lo que se entiende que se ha establecido una comunicación entre dos aplicaciones del mismo equipo.
3 Para rellenar la tabla con su configuración de red debe ejecutar los siguientes comandos:Para Windows: Ejecutar ipconfig sobre la línea de comandos de la siguiente forma: ipconfig /allPara Linux: Ejecutar ifconfig
4. Estructura Cliente/Servidor
Antes de explicar en qué consiste este modelo, es necesario presentar una serie de conceptos básicos para situarse en una perspectiva:
1 Sistema distribuido: la definición de sistema distribuido es algo compleja, ya que depende de qué aspecto se resalte dentro del sistema. Sin embargo, una buena definición podría ser: “sistema cuyos componentes hardware y software, conectados en red, establecen una comunicación y se coordinan para un fin concreto y además ofrecen una visión de sistema único”. Los objetivos que debe cumplir un sistema distribuido son:Facilitar el acceso de los usuarios a ciertos recursos remotos.Proporcionar transparencia de distribución.Soportar interconexión con otros sistemas.Proporcionar escalabilidad al sistema.
2 Arquitectura centralizada: es el modelo que siguen los sistemas distribuidos en los que los nodos solo pueden comunicarse a través de un nodo central.
3 Arquitectura descentralizada: es el modelo que siguen los sistemas distribuidos con una estructura en forma de árbol, donde existen nodos que actúan como nodos intermedios, que actúan a su vez como nodos centrales en un entorno local.
4 Arquitectura distribuida: se trata del modelo que siguen los sistemas distribuidos en el que todos los nodos pueden actuar como emisores y receptores a la vez.
El modelo cliente/servidor es un sistema distribuido que es evolución de un tipo de arquitectura centralizada, aunque sin llegar a serlo del todo. En este modelo, los nodos son procesos, entendidos como aplicaciones independientes.
Existen dos tipos de procesos: los clientes (front-end), que se encargan de solicitar peticiones de conexión para obtener información, y los servidores (back-end), que tratan esas peticiones, obtienen la información y la envían a los procesos clientes.
Las características básicas de una arquitectura cliente/servidor se pueden resumir en la siguiente lista:
1 El proceso cliente proporciona la interacción con el usuario y el resto del sistema, mientras que el servidor gestiona los recursos compartidos.
2 El proceso cliente y servidor tienen diferentes requisitos en cuanto a velocidad de cómputo, memoria, capacidad y la velocidad de disco, etc.
3 Los procesos clientes y servidor pueden ejecutarse en el mismo nodo.
4 Un servidor puede dar soporte a múltiples clientes.
5 Los clientes realizan peticiones y, por lo tanto, son agentes activos, mientras que los servidores actúan como pasivos en la comunicación.
6 La relación entre los clientes y los servidores se limita a la comunicación del mensaje.
7 La plataforma de hardware y el sistema operativo que dan soporte a los procesos pueden ser distintos.
8 Es un sistema escalable tanto horizontal (a nivel de clientes) como vertical (a nivel de servidores).
En función del servicio:
1 Servidores de archivos: NFS, SAMBA, etc.
2 Servidores de base de datos: el mensaje son peticiones SQL, Oracle, SQL Server.
3 Servidores de transacciones: el mensaje es la transacción (Conjunto de peticiones SQL), OLP, etc.
4 Servidores web: el mensaje son las peticiones HTTP.
La evolución del modelo cliente/servidor ha provocado que aparezca un tercer protagonista en este tipo de arquitecturas: el middleware. Se trata de un módulo o capa intermedia entre los clientes y los servidores. Esta capa proporciona una interfaz común que pueden usar los clientes para hacer las peticiones de servicio a los servidores, haciendo transparente la comunicación entre los nodos del sistema.
Definición
Middleware
Su definición más formal sería: conjunto de servicios y funciones reutilizables, expandibles, que permiten a muchas aplicaciones interactuar en un ambiente interconectado, ocultando la heterogeneidad y proporcionando un modelo de programación conveniente para los desarrolladores de aplicaciones.
Es un software que se basa en la reusabilidad y en los estándares para resolver problemas y tareas comunes que se encuentran en el ámbito del desarrollo de software.
Ejemplos: ODBC/JDBC, HTTP y SLL, CORBA, DCOM, JAVA RMI, etc.
5. Resumen
El tiempo ha colocado a TCP/IP en el puesto que le corresponde dentro de la computación de las comunicaciones. Basado en un buen modelo descriptivo, este le ha otorgado una longevidad poco usual en el mundo informático. Sin lugar a dudas, los conceptos que subyacen en el conjunto de estos protocolos son la pieza más importante para comprender correctamente cómo funciona Internet al nivel de detalle necesario por el administrador de servidores. Al mismo tiempo, establecen las reglas para definir nuevos servicios de acceso para los usuarios de internet y para los modelos de negocio que están por llegar.
La arquitectura cliente/servidor ofrece un nivel más abstracto sobre el funcionamiento de modelos de comunicación avanzados y a la misma vez da las claves para entenderlos. En la informática actual, este modelo es muy importante porque resuelve una gran cantidad de problemas muy comunes dentro del ámbito de la computación y lo hace de forma elegante.
Ejercicios de repaso y autoevaluación
1. Si tuviera que montar un servidor sobre un sistema operativo Linux, ¿qué distribución de Linux escogería y de qué dependería esa elección?
2. Durante mucho tiempo se estuvo investigando en descripciones conceptuales de comunicación entre elementos de una red, con el fin de elaborar un modelo de referencia que fuera lo suficientemente genérico para usarlo como base en la creación de protocolos reales de comunicación para cualquier tipo de red. ¿Cuál fue el resultado de ese esfuerzo?
1 Modelo TCP.
2 Modelo OSI.
3 Modelo ISO.
4 Modelo Genérico.
3. ¿Cuál es el nivel que se encarga de la “Determinación de ruta”?
1 Nivel de Sesión.
2 Nivel Físico.
3 Nivel de Equipo.
4 Nivel de Red.
4. Existen dos mecanismos de funcionamiento interno en la capa de Red. ¿Cuáles son?
1 Datagramas y circuitos virtuales.
2 Datagramas y reserva de recursos.
3 Trama y paquete.
4 Todas las respuestas anteriores son incorrectas.
5. Complete los siguientes enunciados:
ARPA decide investigar y desarrollar un conjunto de protocolos que resuelva estos inconvenientes, y es entonces cuando surge ___________.
TCP (Transmission Control Protocol) es el protocolo de transporte más usado por las aplicaciones. Se utiliza para proporcionar una comunicación libre de ___________.
__________ es un protocolo no orientado a la conexión, lo que significa que no hace falta un diálogo entre el origen y el destino previo al envío del mensaje.
6. ¿Qué tipos de direccionamiento IP existen?
7. ¿Qué es un socket?
8. ¿Qué es un puerto?
9. ¿Cuál es la principal diferencia entre UDP y TCP?
1 UDP es orientado a la conexión y TCP no lo es.
2 TCP es orientado a la conexión y UDP no lo es.
3 TCP pertenece a la capa de transporte y UDP a la de red.
4 Todas las respuestas anteriores son incorrectas.
10. Señale si las siguientes afirmaciones son verdades o falsas:
IP es el protocolo que se encarga del enrutamiento de los datagramas entre dos redes que no se encuentran en la misma ubicación geográfica.
1 Verdadero
2 Falso
ICMP es un protocolo de la capa de Internet pero tiene la particularidad de que no depende directamente del protocolo IP.
1 Verdadero
2 Falso
Ping es una utilidad para conectar varios equipos en red.
1 Verdadero
2 Falso
Tracert envía paquetes ICMP para capturar la información de los nodos intermedios.
1 Verdadero
2 Falso
11. ¿Qué es la arquitectura distribuida?
1 Modelo que siguen los sistemas distribuidos en el que todos los nodos pueden actuar como emisores pero no como receptores a la vez.
2 Modelo que siguen los sistemas no distribuidos en el que todos los nodos pueden actuar como emisores y receptores a la vez.
3 Modelo que siguen los sistemas distribuidos en el que todos los nodos pueden actuar como emisores y receptores a la vez.
12. Señale si las siguientes afirmaciones son verdaderas o falsas:
Un servidor puede dar soporte a múltiples clientes.
1 Verdadero
2 Falso
Los procesos clientes y servidor pueden ejecutarse en el mismo nodo.
1 Verdadero
2 Falso
El proceso servidor proporciona la interacción con el usuario y el resto del sistema, mientras que el cliente gestiona los recursos compartidos.
1 Verdadero
2 Falso
La relación entre los clientes y los servidores se limita a la comunicación del mensaje.
1 Verdadero
2 Falso
13. ¿Qué es el modelo cliente/servidor?
14. ¿Cuál es el tercer protagonista que aparece en la evolución de una arquitectura cliente/servidor?
15. ¿Qué objetivos debe cumplir un sistema distribuido?
Capítulo 2
Manejo del Protocolo HTTP
1. Introducción
La idea de una red de redes ha sido quizás la más fructífera en 50 años y ha colocado los cimientos de lo que hoy se conoce como era de la información. ¿Cómo puede ocurrir esto si solo se está hablando de máquinas? La idea fundamental es el diálogo entre ellas. Existen muchos modelos de comunicación pero sobre todos ellos triunfa el más simple: un modelo de pregunta y respuesta. En este modelo se basa HTTP.
El usuario, que apenas percibe el uso de los mecanismos que sostienen la World Wide Web, ha comprendido sin embargo los aspectos menos abstractos, que se encuentran más alejados del mundo tecnológico y más cercanos al mundo real. El simple hecho de poder realizar compras por Internet, compartir cartas, historias y fotos en familia; es un impulso a la sociedad y puede verse, para muchos, como una nueva forma de vivir.
Sin embargo, aquel que profundice un poco más y que se haga las preguntas correctas se dará cuenta de que, más que de una nueva forma de vivir, se trata de una nueva forma de pensar.
2. Funcionamiento y estructura
HTTP es un protocolo de la capa de aplicación del conjunto de protocolos TCP/IP. Es el protocolo que se usa cuando se navega por Internet. Esta desarrollado para ser usado en una arquitectura cliente/servidor. En una comunicación donde se utiliza HTTP existen dos sistemas que actúan como agentes principales: un cliente (agente de usuario), que es el que se encarga de solicitar o realizar una petición, y el servidor, que se encarga de recibir la petición y resolverla enviando el resultado al cliente.
El objetivo de HTTP es que el cliente sea capaz de solicitar una página web al servidor, independientemente de la representación interna que pueda tener dicha página.
La versión actual de HTTP es la 1.1 y, mientras no se especifique lo contrario, se utilizará a partir de ahora para describir el protocolo. Esta versión es compatible hacia atrás con las anteriores 0.9 y 1.0.
Entre las características de HTTP están:
1 HTTP está construido sobre el protocolo TCP de la capa de transporte, por lo que las comunicaciones son orientadas a la conexión. Es decir, en cada petición se produce el establecimiento de una conexión, comunicación entre cliente y servidor y, finalmente, liberación de la conexión.
2 Es un protocolo sin estado, lo que quiere decir que las peticiones realizadas al servidor son tratadas de forma independiente y sin relación entre ellas.
3 Admite la transferencia de objetos multimedia (MIME) codificándolos en cadenas de caracteres.
4 Existen siete operaciones (request methods) que puede solicitar el cliente, pero solo dos de su implementación por parte del servidor es necesaria HTTP: HEAD y GET.
5 Se usa la codificación US-ASCII de 7 bits para componer los mensajes que se usan para las comunicaciones HTTP.
6 Las peticiones se realizan, en general, sobre recursos URI (Uniform Resource Identifier).
Importante
URI (Uniform Resource Identifier) es una cadena de caracteres que identifica inequívocamente un recurso. El nombre de una página web es un tipo de URI.
Secuencia de pasos de una comunicación HTTP cuando un usuario solicita una página web:
1 Un usuario escribe una dirección URL (Uniform Resource Locator) en su navegador, o bien, hace clic sobre un enlace en una dirección web. El navegador descodifica la URL. Identifica el protocolo que se va a usar, la dirección DNS o IP del servidor, el puerto y el recurso requerido al servidor.
2 El navegador realiza una conexión TCP/IP con el servidor a través del puerto descodificado.
3 El navegador envía la petición HTTP (comando GET, POST, HEAD, etc.) sobre el recurso.
4 El servidor procesa la petición y devuelve el resultado enviando un código de estado y el recurso solicitado si procede.
5 Una vez ha recibido el cliente la respuesta, este cierra la conexión TCP con el servidor. Si en la petición se solicita una conexión HTTP Keep Alive, entonces no se cierra la conexión al recibir la respuesta hasta que no se llega al final del tiempo.
Actividades
1. Explique qué ocurre desde que escribe una dirección web en el navegador hasta que esta se muestra en la pantalla del ordenador.
El mensaje de una petición HTTP 1.1 tiene la siguiente estructura:
Una primera línea que indica el comando de la petición, una URL indicando el recurso sobre el que recae la acción y la versión del protocolo que se usa, separados por uno o varios espacios en blanco (sp), y acabada en un carácter de retorno de carro (cr) y salto de línea (lf).
La siguientes líneas se denominan líneas de cabecera y contienen pares de campos y valores que son usados por el cliente y el servidor para referirse a parámetros que condicionan el uso del protocolo. Existen tres tipos: generales (se aplican tanto a las peticiones como a las respuestas), de petición (permiten pasar información desde el cliente al servidor) y de entidad (definen información adicional sobre el contenido). Las líneas de cabecera acaban con una línea que contiene un retorno de carro (cr) y un salto de línea (lf).
Las siguientes líneas (si las hubiera) contienen el cuerpo de la entidad, que es una información opcional y depende del tipo de comando que se transmita.
El mensaje de una respuesta HTTP tiene la siguiente estructura:
La primera línea está compuesta de la versión de protocolo que se va a usar, después el código de estado y una frase con una descripción textual que explica el resultado de la petición. Todo ello, separado por uno o varios espacios en blanco (sp) y finalizado por un retorno de carro (cr) y un salto de línea (lf).
A continuación, se encuentran las líneas de cabecera, que también pueden ser de tres tipos: generales, de respuesta (información adicional que proporciona el servidor al cliente) y de entidad. Como en el caso de las peticiones, las líneas de cabecera acaban con una línea que contiene un retorno de carro (cr) y un salto de línea (lf).
Por último, se encuentra el cuerpo de entidad, que por regla general será el recurso que se solicita en la respuesta.
El cuerpo de entidad enviado con una petición o respuesta se encuentra en un formato y codificación definido por los campos de las cabeceras (si los hubiera). Además, el tipo de datos que viaja en el cuerpo de entidad es determinado también por las cabeceras de mensaje. Por lo tanto, es obvio que cualquier mensaje que contenga un cuerpo de entidad debería incluir un campo de cabecera, denominado “Content-Type”, definiendo el tipo de datos.
Actividades
2. Explique cuáles son las partes que deben aparecer siempre en un mensaje de petición HTTP y cuáles en un mensaje de respuesta HTTP y por qué.