Resumen Teoría
Transcripción
Resumen Teoría
COMUNICACIONES DIGITALES – TCP/IP : Modelo TCP/IP Introducción Arpanet era una red de investigación patrocinada por el Departamento de Defensa de EE.UU. (DoD) que se expandió a Universidades e instalaciones del gobierno. Los requerimientos que se le hicieron apuntaban a que sobreviviera a la pérdida de Hardware de subred, sin interrupción de las conversaciones existentes; que pudieran conectarse entre sí múltiples redes de manera inconsútil; que tuviera una arquitectura flexible pues se usaría tanto para transferir archivos hasta discursos en tiempo real. Paralelamente el DoD era pionero en redes de satélites y radio. Se observan problemas para interactuar. Surge la necesidad de una nueva arquitectura que sumada a los requerimientos conducen a una red de conmutación de paquetes basada en una capa de interred carente de conexiones. En este contexto aparece TCP/IP en 1974. El Modelo Es una suite de protocolos que toma el nombre de sus dos protocolos más importantes: - Protocolo de Control de Transmisión(TCP) Protocolo de Internet (IP) Está modelado en capas: Pila de Protocolos TCP/IP Capa de Interred Permite que los nodos inyecten paquetes en toda la red y los haga viajar de forma independiente de su destino, sin importar el orden (las capas superiores se encargan de este problema). Define un formato de paquete y protocolo oficial llamado IP (Protocolo de Internet). Es importante considerar el ruteo y evitar la congestión. Se corresponde con la capa de Red del Modelo OSI. Comunicaciones Digitales 1 TCP/IP Capa de Transporte Permite que las entidades pares en los nodos de origen y destino lleven a cabo una conversación. Se definen dos protocolos de extremo a extremo: - Protocolo de Datos del Usuario (UDP) - Protocolo de Control de Transferencia (TCP) Capa de Aplicación TCP/IP no tiene capa de sesión ni presentación. Contiene los protocolos de alto nivel: - TELNET - FTP - SMTP - DNS - NNTP - HTTP Capa del Nodo a la Red No se dice mucho de lo que aquí sucede, fuera de indicar que el nodo se ha de conectar a la red haciendo uso de algún protocolo de nodo que pueda enviar por ella paquetes de IP. La siguiente figura muestra los protocolos e interfaces según corresponda de las diferentes capas: Modelo de Arquitectura detallado El modelo no distingue con claridad los conceptos de servicios, interfaz y protocolo. La capa del Nodo a la Red en realidad no es una capa en el sentido normal. Es una interfaz (entre la red y las capas de Enlace de Datos). No distingue entre la capa Física y la de Enlace de Datos. Muchos de sus protocolos fueron creados conforme surgía la necesidad. En síntesis el modelo es casi inexistente, pero los protocolos se usan mucho. Modelo Cliente/Servidor TCP es un protocolo donde no hay una relación maestro/esclavo. Las aplicaciones, sin embargo, utilizan el modelo cliente/servidor para las comunicaciones. Un servidor Comunicaciones Digitales 2 TCP/IP es una aplicación que ofrece un servicio a los usuarios de Internet; un cliente es quien requiere el servicio. Los usuarios usualmente invocan la parte cliente de la aplicación, los cuales construyen un requerimiento para un servicio particular y se lo envía a la parte servidor usando TCP/IP como vehículo de transporte. El servidor es un programa que recibe un requerimiento, realiza el servicio y envía de vuelta los resultados en una respuesta. Un servidor puede usualmente atender múltiples requerimientos al mismo tiempo. Algunos servidores esperan los requests en puertos bien conocidos. Los clientes usan puertos arbitrarios. La figura muestra el modelo: Modelo Cliente/Servidor Bridges, Routers y Gateways Los bridges interconectan segmentos de LAN a nivel de capa de interface y dirigen los frames entre ellas. Se puede decir que es transparente a IP. Es decir, cuando un host envía un datagrama IP a otro host sobre una red conectada por un bridge, éste envía el datagrama directamente al host y el datagrama "cruza" al bridge sin que el host IP que envía se entere. Los routers interconectan redes a nivel de la capa de interred y rutean paquetes entre ellas. El router debe conocer la estructura de direccionamiento asociada con los protocolos de red; él soporta y toma decisiones sobre si, o como, dirigir los paquetes. Los routers son capaces de seleccionar el mejor camino de transmisión o el tamaño de paquete optimo. La función básica de ruteo es implementada en la capa IP, por lo que cualquier host o estación de trabajo que corre TCP/IP sobre mas de una interfaz podría en teoría, tal como hoy ocurre con la mayoría de las implementaciones, llevar a cabo esta función. Sin embargo, los routers dedicados proveen una función de ruteo mucho más sofisticada que las mínimas funciones implementadas por IP. Es visible a IP, o sea, cuando un host envía un datagrama IP a otro host a una red conectada por un router, él envía el datagrama al router y no directamente al host apuntado. El termino gateway es ahora normalmente usado para conexiones a nivel de capas superiores a la capa de interred. Un gateway usualmente soporta dirección de mapeo de una red a otra, y puede también proveer transformación de los datos entre los entornos para soportar Comunicaciones Digitales 3 TCP/IP conectividad de las aplicaciones. Los gateways típicamente limitan la interconectividad de dos redes a un subconjunto de protocolos de aplicación soportados sobre cada uno. Un gateway es opaco a IP, es decir, un host no puede enviar un datagrama IP a través de un gateway, él solamente puede enviarlo a un gateway. La información de los protocolos de alto nivel transportado por los datagramas es entonces pasada por el gateway usando cualquier arquitectura de red que es usada por el otro lado del gateway. Relacionado a los conceptos de router y gateway esta el de firewalls, el cual es usado para restringir el acceso desde Internet a una red o a un grupo de redes controladas por una organización por razones de seguridad. : Internet Protocol (IP) IP es un protocolo estándar con número STD 5. Este estándar también incluye ICMP (Internet Control Message Protocol) y a IGMP (Internet Group Management Protocol). IP es el protocolo que oculta la capa física inferior mediante la creación de una visión virtual de red. Es un protocolo de entrega de paquetes No Confiable, Best-Effort y No Orientado a la Conexión. Best-Effort implica que los paquetes enviados por IP pueden perderse, desordenarse o aún duplicarse, pero IP no manejará estas situaciones; es menester de protocolos de capas superiores hacerlo. Una de las razones para usar un protocolo No Orientado a la Conexión fue minimizar su dependencia en centros de cómputo específicos que utilizaban redes jerárquicas Orientadas a la Conexión. Direccionamiento IP Las direcciones IP se representan por valores binarios sin signo de 32 bits, usualmente expresados en un formato decimal con puntos (por ejemplo, 170.210.80.40). La forma numérica es usada por el software. El mapeo entre este formato y uno más simple de leer como uncoma.edu.ar se lleva a cabo por el Domain Name System o DNS (Sistema de Nombres de Dominio). La Dirección IP Para poder identificar un host en Internet, cada uno de ellos debe poseer una dirección única. Cuando un host está vinculado a más de una red, se denomina Multi-homed, y posee una dirección IP por cada interfaz de red. La dirección IP esta compuesta por dos números: IP address = <network number> <host number> El número de red está administrado por el Internet Network Information Centre (InterNIC) y es único en toda la Internet. El número de host, en cambio, es competencia del administrador de la red en cuestión. Comunicaciones Digitales 4 TCP/IP Los primeros bits de la dirección IP determinan cómo debe separarse el resto de la dirección en su parte de red y su parte de host. Esta separación define cinco clases de direcciones IP a saber: Clases de direcciones IP asignadas - Clase A. Utiliza 7 bits para red y 24 para host. Esto permite direccionar 27-2 (126) redes con 224-2 (16777214) host cada una. - Clase B. Utiliza 14 bits para red y 16 para host. Esto permite direccionar 214-2 (16382) redes con 216-2 (65534) host cada una. - Clase C. Utiliza 21 bits para red y 8 para host. Esto permite direccionar 221-2 (2097150) redes con 28-2 (254) host cada una. - Clase D. Reservada para multicasting. - Clase E. Reservada para uso futuro. Es claro que las direcciones Clase A serán asignadas a redes con una gran cantidad de hosts, mientras que las direcciones Clase C serán convenientes para redes con una pequeña cantidad de hosts. Direcciones IP Especiales Todos los bits 0. Significa este/a (host/red). Cuando un host quiera comunicarse en una red, pero no conozca la dirección de ésta, puede enviar paquetes con <network address>=0. Otros hosts de la red interpretarán esta dirección como esta red y enviarán una respuesta con la dirección de red correspondiente, la cual será almacenada por el host para uso futuro. Todos los bits 1. Significa todos/as (hosts/redes). Usada para Broadcasting. Comunicaciones Digitales 5 TCP/IP Loopback. La dirección Clase A 127.0.0.0 se define como la red loopback. Direcciones de esta red se asignan a interfaces que procesan datos dentro del sistema y nunca acceden a la capa física. Subredes IP Debido al crecimiento explosivo de Internet, el principio de asignación de direcciones IP se hizo demasiado inflexible para permitir cambios simples en las configuraciones de redes locales. Estos cambios pueden ocurrir porque: - Se instala una nueva red física en un lugar, Aumenta el número de host requiriendo particionar la red existente en dos o más redes separadas, Aumenta la distancia requiriendo que una red se divida en redes menores conectadas por Gateways. Para evitar el pedido de direcciones de red IP adicionales en estos casos, se introduce el concepto de Subred. La asignación de subredes se hace localmente, por lo que la red completa todavía parece ser una única red IP para el mundo exterior. La parte de la dirección IP correspondiente al número de host se divide nuevamente en un número de subred y un número de host. Luego: IP address = <network number> <subnet number> <host number> Las subredes son implementadas de manera que son transparentes para redes remotas. La división mencionada se hace utilizando una máscara de subred, la cual es un número de 32 bits. Los bits en cero de la máscara de subred corresponden a posiciones de bits asignadas al número de host, y los unos (“1”) corresponden a posiciones de bits asignadas al número de subred. Las posiciones de bits correspondientes al número de red se hacen uno pero no se utilizan. Esto se aclarará con la presentación de un ejemplo más adelante. Tipos de asignación de subredes (subnetting) Asignación Estática: significa que todas las subredes en una red tendrán la misma máscara de subred. Asignación de Longitud Variable: las subredes pueden utilizar máscaras distintas de acuerdo a las necesidades individuales de cada subred, permitiendo un uso más eficiente de las direcciones de red. Ejemplo Proponemos la siguiente dirección IP clase A: Comunicaciones Digitales 6 TCP/IP 00001001 9 9.67.38.1 01000011 67 00100110 38 00000001 1 11111111 255 11000000 192 Dirección clase A, donde 9 67.38.1 Dirección de Red Dirección de Host Hacemos ahora la siguiente partición: La máscara de red correspondiente será: 11111111 255 11111111 255 Está división nos da: 218-2 = 262142 subredes 26-2 = 62 hosts (Recordemos las restricciones impuestas sobre las direcciones con todos los bits 1 o 0.) Aplicando la máscara a la dirección clase A de nuestro ejemplo se tiene: 00001001 01000011 00100110 00000001 11111111 11111111 11111111 11000000 ========================================= 00001001 01000011 00100110 00 - - - - - Red Subred = 9.67.38.1 (dirección clase A) = 255.255.255.192 (máscara) AND lógico = 9.67.38 (dir. subred base) Esto deja una dirección de host: -------- -------- Comunicaciones Digitales -------- - - 000001 Host 7 = 1 (dirección de host) TCP/IP Ruteo IP Una función importante de la capa IP es el Ruteo IP. Éste provee el mecanismo básico para que los routers interconecten las diferentes redes. Esto significa que un host puede funcionar simultáneamente como host y como router. Un router básico contiene información acerca de cuatro tipos de direcciones: - Hosts que están conectados directamente a una de las redes físicas a las cuales está conectado el router, Hosts o redes para las cuales se han dado direcciones específicas al router, Hosts o redes para las cuales el router ha recibido mensajes ICMP de redirección, Una dirección por defecto para cualquier otro caso. Existen dos tipos de ruteo: directo e indirecto. Ruteo Directo Si el host destino está unido a la red física a la cual se halla conectado también el host fuente, puede enviarse un datagrama IP directamente encapsulándolo en un frame de la capa física. Ruteo Indirecto Ocurre cuando el host destino y el host fuente no están conectados a la misma red. La única forma de alcanzar el destino es vía una o más gateways. (En la terminología IP, Gateway y Router se usan indistintamente para referirse a sistemas que realizan las tareas de ruteo.) La dirección de estas Gateways se denomina ruta indirecta en el contexto del algoritmo de ruteo IP. La dirección de la primer gateway es la única información que necesita el host fuente. Tablas de Ruteo IP La determinación de las rutas disponibles se deriva de una lista de interfaces locales disponibles para IP y son construidas automáticamente en la iniciación. Cada host almacena un conjunto de mapas entre: - Direcciones IP de redes Ruta(s) a la(s) próxima(s) Gateways(s) Éstas se almacenan en las tablas IP. Pueden encontrarse tres tipos de mapeos en estas tablas: - Rutas directas: para redes localmente vinculadas, Rutas indirectas: para redes alcanzables vía una o más Gateways, Ruta por Defecto: contiene la ruta a usar en caso de no encontrar el destino de la red IP en los mapeos anteriores. Presentamos ahora un ejemplo de configuración de tablas de ruteo. Comunicaciones Digitales 8 TCP/IP Topología de red La tabla de ruteo para el host D podría ser: La tabla de ruteo para el host F podría ser: El Algoritmo de Ruteo IP usa un algoritmo único para rutear datagramas IP. La forma general del Algoritmo se ilustra en la siguiente figura: Comunicaciones Digitales 9 TCP/IP Sin embargo, el algoritmo completo debe ser capaz de identificar subredes. Éste se muestra en el siguiente diagrama de flujo. Éste es un proceso iterativo, que es aplicado por cada host que maneja un datagrama, excepto los hosts a los cuales finalmente se les entrega el datagrama. Métodos de Entrega La mayoría de los datagramas IP se refieren a un único receptor, llamadas conexiones Unicast. Además, existen tres tipos de direcciones IP que son utilizadas para enviar datagramas IP a más de un receptor: Broadcasting. Las direcciones de Broadcast sólo son válidas como direcciones destino. Existen varias clases de Broadcast: Limitado, Orientado a Red, Orientado a Subred y Orientado a Todas las Subredes. Multicasting. La desventaja principal del Broadcasting es su falta de selectividad. El Multicasting evita el overhead usando grupos de direcciones IP. Comunicaciones Digitales 10 TCP/IP Anycasting. A menudo, diferentes hosts ofrecen el mismo servicio IP. El usuario es atendido en caso de Anycasting por el primer host que responda. Modos de Entrega de Paquetes IP Datagrama IP La unidad de transferencia de un paquete de datos en TCP/IP se denomina Datagrama IP. Está formado por una Cabecera (Header) que contiene información para IP y datos que son únicamente relevantes para protocolos de capas superiores. Formato del Datagrama IP La cabecera del datagrama IP tiene una longitud mínima de 20 bytes. Comunicaciones Digitales 11 TCP/IP Formato de un Datagrama IP Donde: VERS. Versión de protocolo IP (4, 5 o 6). HLEN. Longitud de la cabecera en múltiplos de 32 bits, sin incluir el campo de datos. Service Type. Indica la calidad de servicio requerida por el datagrama IP. Total Length. Longitud total del datagrama, cabecera y datos, especificada en bytes. Identification. Número único asignado por el remitente para colaborar en el reensamblaje de datagramas fragmentados. Los fragmentos de datagramas tendrán todos el mismo ID. Flags. Banderas de control para permitir o no la fragmentación del datagrama e indicar si se trata del último fragmento o no. Fragment Offset. Usado en la fragmentación de datagramas. Time to Live. Especifica el tiempo, en segundos, que se le permite viajar a un datagrama. Cada router por el cual pase el datagrama decrementará este valor hasta que éste se haga nulo y el datagrama sea descartado. Comunicaciones Digitales 12 TCP/IP Protocol Number. Indica el número de protocolo de mayor nivel al cual IP debe entregar el datagrama. Algunos valores importantes son: 0 1 2 3 4 5 6 8 9 17 41 50 51 89 Reserved Internet Control Message Protocol (ICMP) Internet Group Management Protocol (IGMP) Gateway-to-Gateway Protocol (GGP) IP (IP encapsulation) Stream Transmission Control Protocol (TCP) Exterior Gateway Protocol (EGP) Private Interior Routing Protocol User Datagram Protocol (UDP) IP Version 6 (IPv6) Encap Security Payload for IPv6 (ESP) Authentication Header for IPv6 (AH) Open Shortest Path First Header Checksum. Suma de Verificación de la cabecera únicamente; no incluye los datos. Source IP Address. Dirección IP de 32 bit del host que envía el datagrama. Destination IP Address. Dirección IP de 32 bit del host destino. Options. Campo de longitud variable para aplicaciones variadas. Padding. Usado junto con el caso anterior. Data. Información a ser entregada a un protocolo de nivel superior, especificado en el campo Protocol. : Internet Control Message Protocol (ICMP) ICMP es un protocolo estándar con número STD 5. Este estándar también incluye IP (Internet Protocol) y a IGMP (Internet Group Management Protocol). Cuando un router o un host destino deben informar sobre errores en el procesamiento de datagramas, usan el Protocolo de Mensajes de Control de Internet (ICMP). Algunas de las características de ICMP son: - ICMP utiliza IP como si éste fuera un protocolo de nivel superior, es decir, los mensajes ICMP se encapsulan usando el protocolo IP. Sin embargo, ICMP es una parte integral de IP y debe implementarse en todos los módulos IP. ICMP se usa para reportar errores, y no para hace más confiable a IP. La confiabilidad debe lograrse a través de protocolos de nivel superior. Los mensajes ICMP nunca se envían como respuesta a datagramas que no tengan como destinatario a un único host. Los mensajes ICMP nunca se envían como respuesta a datagramas que no tengan como remitente a más de un host. Comunicaciones Digitales 13 TCP/IP Mensajes ICMP Son enviados en datagramas IP. El header tendrá siempre el número de protocolo 1, indicando ICMP y tipo de servicio igual a cero (rutina). El campo de Datos contendrá el verdadero mensaje ICMP en el formato que muestra la figura. Formato Mensaje ICMP Donde: Type. Especifica el tipo de mensaje: 0 Echo reply 3 Destination unreachable 4 Source quench 5 Redirect 8 Echo 9 Router advertisement 10 Router solicitation 11 Time exceeded 12 Parameter problem 13 Time Stamp request 14 Time Stamp reply 15 Information request (obsolete) 16 Information reply (obsolete) 17 Address mask request 18 Address mask reply 30 Traceroute 31 Datagram conversion error 32 Mobile host redirect 33 IPv6 Where-Are-You 34 IPv6 I-Am-Here 35 Mobile registration request 36 Mobile registration reply 37 Domain name request 38 Domain name reply 39 SKIP 40 Photuris Code. Contiene el código de error correspondiente al datagrama reportado por este mensaje ICMP. Su interpretación depende del tipo de mensaje. Checksum. Contiene el complemento a unos de la suma en complemento a uno del mensaje ICMP, comenzando por el campo ICMP Type. Comunicaciones Digitales 14 TCP/IP Data. Contiene información sobre este mensaje ICMP. Típicamente contiene parte del mensaje IP original para el cual se generó este mensaje ICMP. Aplicaciones ICMP Ping Ping es la más simple de todas las aplicaciones basadas en TCP/IP: envía uno o más datagramas al host destino especificado solicitando respuesta y mide el tiempo de tránsito. Se utiliza para verificar una instalación TCP/IP verificando si un host es alcanzable o no. Ping utiliza los mensajes ICMP Echo y Echo Reply. Dado que se requiere ICMP en todas las aplicaciones TCP/IP, los hosts no necesitan un servidor adicional para responder al “ping”. Traceroute El programa Traceroute se basa en UDP e ICMP. Envía un datagrama IP con un TTL (Time To Live) de 1 al Host destino. El primer Router en ver al datagrama decrementa el TTL a 0 y retorna un mensaje ICMP Time Exceeded, a la vez que descarta el datagrama. De esta manera se identifica el primer Router en el camino al Host. El proceso es repetido sucesivamente con valores de TTL cada vez mayores con el fin de identificar la serie de Routers que se encuentran en el camino al Host destino. En realidad, Traceroute envía datagramas UDP al Host destino que referencian un número de puerto que está fuera del rango usado normalmente. Esto posibilita al programa determinar cuándo se llegó al Host destino, esto es, cuando se recibe un mensaje ICMP Port Unreachable. He aquí un ejemplo de la ejecución del programa Traceroute: C:\>tracert www.yahoo.com Tracing route to www.yahoo.akadnsnet.com [216.32.74.55] over a maximum of 30 hops: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 4 975 2138 914 * * * * * * * 1510 * * * * * * 3072 * * * * * 1489 ms ms ms ms ms ms ms ms 2 3 940 616 405 744 1115 2155 * * * 1610 * * 1533 * * 1383 * * 1383 * * * * * ms ms ms ms ms ms ms ms ms ms ms ms 1 3 * 1476 585 973 * * * 1363 1695 * * 1469 * * * * 1735 * 1767 * * * * 1547 ms ms ms ms ms ms ms ms ms ms ms 170.210.83.161 r1.uncoma.edu.ar [170.210.80.1] lp-uncoma-64.riu.edu.ar [170.210.0.93] riusur-lp-128.riu.edu.ar [170.210.0.9] ciba-riu-ciba.telintar.net.ar [200.10.128.57] border-atm6-0-1-uos.telintar.net.ar [200.10.128.6] border9-serial4-1-2-0.Bloomington.cw.net [204.70.216.77] xcore1-fddi0.Bloomington.cw.net [204.70.143.121] Request timed out. corerouter1.SanFrancisco.cw.net [204.70.9.131] cwusa-mciworldcom.SanFrancisco.cw.net [166.63.128.10] bbr01-g6-0.sntc01.exodus.net [216.33.147.35] bbr01-p2-0.sntc02.exodus.net [209.185.249.110] bbr02-p3-0.elsg01.exodus.net [209.185.249.218] bbr01-p6-0.dlls01.exodus.net [209.1.169.73] Request timed out. Request timed out. 209.185.9.42 216.33.96.162 216.33.98.19 216.35.210.126 Request timed out. Request timed out. Request timed out. Request timed out. www6.dcx.yahoo.com [216.32.74.55] Trace complete. Comunicaciones Digitales 15 TCP/IP : Address Resolution Protocol (ARP) El protocolo ARP es un protocolo de red específico y estándar. Es responsable de convertir una dirección de más alto nivel (direcciones IP) en direcciones de red físicas. En una red física, cada host es conocido por su dirección física de hardware. Los protocolos de capas superiores a la física direccionan hosts de manera simbólica (direcciones IP en este caso). Cuando uno de estos protocolos quiere enviar un datagrama a una dirección IP w.x.y.z, el driver del dispositivo no entiende esta dirección. Por lo tanto, se lo provee con un módulo ARP, el cual traducirá la dirección IP a la dirección física del host destino. Se utiliza una tabla de búsqueda, a veces denominada cache ARP, para realizar esta tarea. Cuando la dirección no puede encontrarse en la cache ARP, se envía un broadcast a la red con un formato especial denominado ARP Request. Si una de las máquinas en la red reconoce la dirección como propia la dirección IP pedida, envía una respuesta ARP (ARP Reply) al host que solicitó la información. La respuesta contiene la dirección de hardware del host y cierta información acerca de la ruta en caso de que el paquete haya atravesado bridges en su camino. Toda esta información es almacenada en la cache ARP y utilizada por el driver local para enviar datagramas a la red. : Puertos y Sockets A un proceso de aplicación se le asigna un numero identificador de proceso (Process ID) el cual es probable que sea diferente cada vez que el proceso se inicie. Los ID de Proceso difieren entre los sistemas operativos, por lo que no son uniformes. Un servidor de procesos puede tener múltiples conexiones a múltiples clientes a la vez, en consecuencia los identificadores de conexión simple podrían no ser únicos. Los conceptos de sockets y puertos proveen una forma uniforme y unívoca de identificar las conexiones a los programas y los host que participan en ellos, sin considerar los números de identificación (ID) de los procesos. Puertos Es un numero de 16 bits. Puerto es el nombre en TCP de un TSAP (Punto de Acceso al Servicio de Transporte). Los números de puerto por debajo de 1023 se llaman puertos bien conocidos y se reservan para servicios estándar .Los que están entre 1023 y 65535 son puertos efímeros. La confusión del uso de un mismo puerto debido a dos aplicaciones diferentes que tienen el mismo numero de puerto se evita escribiendo estas aplicaciones que requieren un puerto disponible de TCP/IP. Como este puerto es asignado dinámicamente, puede diferir de una invocación de una aplicación a la siguiente. Comunicaciones Digitales 16 TCP/IP Sockets La interfaz socket es una de las varias Interfaces de Programación de la Aplicación (API). Está diseñado para ser una interface de programación de comunicación genérica. La interfaz socket se diferencia por los servicios que son provistos a las aplicaciones: sockets de flujo (orientada a la conexión), sockets de datagramas (sin conexión) y el servicio de los sockets raw (acceso directo a los protocolos de capas inferiores). Cuando un socket se crea, no tiene información detallada de como será utilizado. En particular no contiene información sobre el número de puerto, de protocolo o sobre la dirección IP ni de la maquina local ni de la remota. Por lo que antes que una aplicación lo use debe especificarla. : Protocolo de Datos del Usuario (UDP) Es un protocolo estándar con STD 6 , descripto en la RFC 768 con Estado Recomendado. Es básicamente una interfaz de aplicación a IP. Es sin conexión y No Confiable. Sirve como multiplexor/demultiplexor para enviar y recibir datagramas, usando puertos para dirigir los datagramas como muestra la figura: No realiza control ni recupero de error, por lo que agrega poco overhead. Usado para consultas de petición y respuesta del tipo cliente/servidor y donde se prioriza la entrega rápida. Necesita identificar un puerto que es más específico que la dirección IP, dado que los datagramas normalmente están dirigidos a ciertos procesos y no al sistema completo. Formato del Datagrama UDP Cada datagrama UDP es enviado en un único datagrama IP. Como este último puede ser fragmentado, la implementación que lo recibe deberá re-ensamblarlo antes de pasarlo a la capa UDP. A todas las implementaciones se les requiere que acepten datagramas de 576 bytes, aunque muchas son capaces de aceptar datagramas mayores (no está garantizado). Comunicaciones Digitales 17 TCP/IP Formato del Datagrama UDP - Puerto de Origen : indica el puerto del proceso que envía. - Puerto de Destino: especifica el puerto del proceso destino sobre el host destino. - Longitud: es la longitud (en bytes) de este datagrama incluyendo la cabecera. - Checksum: es la suma (complemento a 1) de una pseudo-cabecera IP, la cabecera UDP y los datos. Es opcional: sino se utiliza se rellena con ceros. Pseudo-Cabecera IP (UDP) Las aplicaciones estándar que incluyen UDP son: - TFTP DNS RPC SNMP LDAP (Protocolo de Transferencia de Archivos Trivial) (Sistema de Nombre de Dominios) (Procedimiento de Llamada Remota) (Protocolo de Manejo de Red Simple) (Protocolo de Acceso al directorio Liviana) : Transmission Control Protocol (TCP) TCP es un protocolo estándar con número STD 7. Su estado es recomendado, pero en la práctica toda implementación TCP/IP que no se use exclusivamente para ruteo incluirá TCP. TCP provee más facilidades que UDP: corrección de errores, control de flujo y confiabilidad. TCP es un protocolo Orientado a la Conexión, a diferencia de UDP que no lo es. La figura muestra dos procesos que se comunican entre sí mediante una conexión TCP llevada por datagramas IP. Comunicaciones Digitales 18 TCP/IP Host A Host B Concepto TCP Como se dijo antes, TCP tiene como objetivo primario proveer un servicio de conexión o circuito lógico confiable entre pares de procesos. No asume confiabilidad de protocolos de capas inferiores por lo que debe garantizarlo por sí mismo. TCP puede caracterizarse por las siguientes facilidades que provee a las aplicaciones que hacen uso de él: Stream Data Transfer (Transferencia de Datos Continua). Desde el punto de vista de las aplicaciones, TCP transfiere datos en forma continua a través de la red. La aplicación no debe preocuparse por fragmentar la información en bloques básicos o datagramas. TCP realiza este trabajo agrupando bytes en segmentos TCP, los cuales son pasados a IP para que éste los transmita a su destino. Además, TCP decide cómo ha de segmentar la información y la manda a su propia conveniencia. Confiabilidad. TCP asigna un número de secuencia a cada byte transmitido y espera un reconocimiento positivo (ACK) por parte del TCP receptor. Si el ACK no es transmitido dentro de un lapso de tiempo específico, los datos son retransmitidos. Dado que un segmento TCP está integrado por un conjunto de bytes TCP, sólo se envía al host destino el número de secuencia del primer byte en el segmento. El TCP receptor utiliza estos números de secuencia para acomodar los segmentos que arrivan fuera de orden y eliminar los duplicados. Control de Flujo. El TCP receptor, al enviar un ACK al transmisor, también le envía el número de bytes que es capaz de recibir a partir del último segmento recibido sin causar overflow de los buffers internos. Esto es enviado en el ACK indicando el máximo número de secuencia que puede recibirse sin inconvenientes. Este mecanismo se denomina Mecanismo de Ventana. Multiplexado. Se logra a través del uso de puertos, tal como se hace en UDP. Comunicaciones Digitales 19 TCP/IP Conexiones Lógicas. Los mecanismos de control de flujo y confiabilidad anteriores requieren que TCP inicialice y mantenga cierta información de estado del envío de datos. Esta información, junto con los números de secuencia, sockets y tamaño de las ventanas, constituye una conexión lógica. Cada conexión se distingue unívocamente por el par de sockets usados por los procesos transmisor y receptor. Full Dúplex. TCP provee transmisión simultánea de datos en ambos sentidos. Formato del Segmento TCP El segmento TCP se muestra en la siguiente figura. Formato Segmento TCP Donde: Source Port. Número de puerto en 16 bits, usado por el receptor para responder. Destination Port. Número de puerto en 16 bits del destinatario. Secuence Number. Número de Secuencia del primer byte de datos en el segmento. Acknowledgement Number. Si el bit de control ACK está en 1, este campo contiene el próximo número de secuencia que el receptor espera recibir. Data Offset. Número de palabras de 32 bits en la cabecera TCP. Indica dónde comienzan los datos. Reserved. Reservados para uso futuro. URG. Indica que el campo Urgent Field debe considerarse en este segmento. ACK. Indica que el campo Acknowledgement debe considerarse en este segmento. PSH. Función Push. Comunicaciones Digitales 20 TCP/IP RST. Resetea la conexión. SYN. Sincroniza los números de secuencia. FIN. No más datos del transmisor. Window. Usado en segmentos ACK. Especifica el número de bytes de datos, comenzando con aquel indicado en el campo Acknowledgement Number, que el receptor está dispuesto a recibir. Checksum. El complemento a unos de la suma en complemento a unos de todas las palabras de 16 bits del pseudo-header, el header TCP y los datos TCP. El pseudoheader tiene el siguiente formato: Pseudo-Header TCP Urgent Pointer. Apunta al primer octeto de datos que sigue a los datos urgentes. Sólo tiene significancia cuando el bit de control URG está seteado. Options. Selección de alguna de las opciones implementadas en el protocolo TCP. Padding. Relleno de bytes con ceros para que el Header TCP tenga una longitud total múltiplo de 32 bits. Establecimiento de una Conexión TCP Antes de que sea posible la transmisión de Datos, debe establecerse una conexión entre dos procesos. Uno de los procesos, usualmente el servidor, establece una llamada pasiva OPEN; ésta permanece dormida hasta que otro proceso trate de conectarse con ella con una llamada OPEN activa. En una red se intercambian tres segmentos TCP: Establecimiento de una Conexión TCP Comunicaciones Digitales 21 TCP/IP El proceso completo se conoce como Handshake de Tres Vías. El cierre de la conexión se hace de manera implícita enviando un segmento TCP con el bit FIN activado (no enviar más datos). Dado que la conexión es full-duplex (existen dos flujos de datos independientes, uno en cada dirección), el segmento FIN sólo cierra la conexión de un único lado. El otro proceso envía los datos restantes y concluye con un segmento con el bit FIN en uno. La conexión es borrada (la información de estado en ambos lados) una vez que el flujo de datos en ambas direcciones ha finalizado. Algoritmos de Control de Congestión TCP La congestión se da cuando la carga ofrecida a la red es mayor a la que puede manejar. La idea es no inyectar un paquete nuevo hasta que salga uno viejo (que se entregue). TCP manipula dinámicamente el tamaño de la ventana, adaptando la tasa de envío de datos del transmisor a la capacidad de la red y tratar de evitar situaciones de congestión potenciales. El primer paso es detectar la congestión: la mayoría de las finalizaciones de temporizaciones (timeouts) se deben a congestiones. Se aceptan dos problemas potenciales (que se solucionan por separado): - Capacidad de la red Capacidad del receptor Arranque lento Cada transmisor mantiene dos ventanas: la que ha otorgado el receptor y la ventana de congestionamiento (cwnd); cada una refleja la cantidad de bytes que puede enviar el transmisor. La efectiva será la menor de las dos. Al establecerse la conexión, el transmisor asigna a la cwnd el tamaño de segmento máximo usado por la conexión; entonces envía un segmento máximo. Si se recibe el reconocimiento antes del timeout , el transmisor agrega el equivalente en bytes de un segmento a la cwnd, y así sucesivamente. Cada ráfaga reconocida aumenta la ventana al doble. La ventana sigue creciendo exponencialmente hasta que ocurra un timeout o se alcance el tamaño de la ventana del receptor. Este algoritmo se llama de arranque lento. Comunicaciones Digitales 22 TCP/IP Funcionamiento del Arranque Lento TCP Algoritmo de Evasión de Congestión Además de las ventanas de congestión y la del receptor utiliza un tercer parámetro un umbral (inicialmente de 64k). Al ocurrir un timeout, se establece el umbral en la mitad de la cwnd actual, y cwnd se restablece a un segmento. Luego se usa el arranque lento para ver lo que puede manejar la red, excepto que el crecimiento exponencial llega hasta el umbral. A partir de ahí, las transmisiones exitosas aumentan linealmente la cwnd (en un segmento máximo por ráfaga). Arranque Lento y Evasión de Congestión en Funcionamiento Algoritmo de Retransmisión Rápida y Recupero Rápido A TCP se le requiere generar un ACK inmediato (ACK duplicado) cuando un segmento fuera de orden es recibido y le dice, además, qué numero de secuencia espera. No conoce si el ACK duplicado se debe a una perdida de paquete o a un reordenamiento de segmentos. Si hay un re-ordenamiento, esperará uno dos ACK duplicados antes de que se procese el re-ordenamiento, lo cual genera un nuevo ACK. Si tres o más son recibidos es un fuerte indicativo de que se perdió un paquete. Luego retransmitimos el paquete perdido sin esperar que el tiempo de retransmisión espire. Este es el algoritmo de Retransmisión Rápida (ver figura). Comunicaciones Digitales 23 TCP/IP Luego se implementa el algoritmo de Evasión de Congestión, no Arranque Lento, estando en presencia del algoritmo de Recupero Rápido. Retransmisión Rápida TCP en Funcionamiento Estos algoritmos se implementan juntos como sigue: 1- Cuando se recibe un tercer ACK duplicado, se inicializa el umbral a la mitad de la menor entre la actual cwnd y la del receptor. Retransmite el segmento perdido. Pone cwnd al umbral mas 3 veces el tamaño del segmento. 2- Cada vez que un ACK duplicado arriba , incrementa cwnd al tamaño del segmento y transmite un paquete (si es permitido por el nuevo valor de cwnd). 3- Cuando un nuevo ACK arriba tal que reconoce un nuevo dato, pone cwnd al umbral (valor puesto en el paso 1). Éste debería ser el ACK de la retransmisión del paso 1, un tiempo de ida y vuelta después de la retransmisión. Adicionalmente, este ACK debería reconocer todos los segmentos intermedios enviados entre el paquete perdido y la recepción del tercer ACK duplicado. Este paso es el Control de Congestión. Comunicaciones Digitales 24 TCP/IP : Protocolos de Aplicación Los protocolos de alto nivel se denominan Protocolos de Aplicación y se comunican con aplicaciones en otros hosts, siendo la interface visible para el usuario de la suite de protocolos TCP/IP. La mayoría de ellos se basa en el modelo de interacción Cliente/Servidor y utilizan UDP o TCP como mecanismo de transporte. A continuación presentamos dos de estos protocolos que son ampliamente utilizados en Internet. Servicio de Nombres Dominio de (DNS) La red sólo entiende direcciones binarias y los programas usan cadenas ASCII. Es por esto que debe haber un mecanismo que traduzca las cadenas ASCII en direcciones de red. La esencia del DNS es la invención de un esquema de nombres jerárquico basado en dominios y una base de datos distribuida para implementar este esquema de nombres. Se usa principalmente para relacionar las direcciones de host y destinos de correo electrónico con las direcciones IP, pero también con otros fines. Se define en los RFC 1034 y 1035. Para relacionar un nombre con una dirección de IP, un programa de aplicación llama a un procedimiento de biblioteca llamado resolvedor, pasándole el nombre como parámetro. El resolvedor envía un paquete UDP a un servidor DNS local, que entonces busca el nombre y devuelve la dirección IP al resolvedor, quien lo devuelve al solicitante. El espacio de nombres del DNS Conceptualmente, Internet se divide en varios cientos de dominios de nivel superior, cada uno de los cuales abarca muchos hosts. Cada dominio se subdivide en subdominios y éstos a su vez se dividen nuevamente, etc. Pueden representarse como un árbol. Las hojas representan los dominios que no tienen subdominios. Un dominio de hoja puede tener muchos o un host. Espacio Jerárquico de Nombres de Dominios Los dominios de nivel superior pueden ser: genérico y de país (ISO 3166). Comunicaciones Digitales 25 TCP/IP Cada dominio se nombra por la trayectoria hacia arriba desde las hojas a la raíz. Los componentes se separan por puntos. No se distinguen mayúsculas de minúsculas. Cada dominio controla el modo de asignación de los dominios que están debajo de él. Para crear un dominio nuevo, se requiere el permiso del dominio en el que se incluirá. Los nombres reflejan los limites organizacionales, no las redes físicas. Registros de recurso Cada dominio, puede tener un grupo de registros de recursos asociados a él. En un host individual, el mas común es su dirección IP. Cuando un resolvedor da un nombre de dominio al DNS, lo que recibe son los registros de recursos asociados a ese nombre. Un registro consta de: Nombre_dominio Tiempo_de_Vida Tipo Clase Valor Nombre_dominio: indica el dominio al que pertenece. Es la llave primaria de búsqueda, Tiempo_de_Vida: indica la estabilidad del registro (en segundos) Tipo: indica el tipo de registro de que se trata. Los mas importantes se listan a continuación Comunicaciones Digitales 26 TCP/IP Clase: Indica la clase, que para Internet es IN. Valor: puede ser un número, un nombre de dominio o una cadena ASCII. Servidores de nombres El espacio de nombres DNS se divide en zonas no traslapantes. Normalmente cada zona tendrá un servidor de nombres primario, que obtiene su información desde un archivo en su disco, y uno o mas nombres de servidores secundarios que obtienen su información del servidor de nombres primario. Cuando un resolvedor tiene una consulta, la pasa a uno de los servidores de nombres locales. Si el dominio que busca cae bajo la jurisdicción del servidor de nombres, devuelve los registros de recursos autorizados. Un registro autorizado es uno que viene de la autoridad que administra el registro, y por lo tanto, es siempre correcto. Estos registros contrastan con los registros en cache, que podrían no estar actualizados. Por otro lado, si el dominio es remoto y no hay información disponible localmente sobre el dominio solicitado, el servidor envía un mensaje de consulta para el dominio solicitado al servidor de nombres de nivel superior. Considérese la situación siguiente mostrada en la figura, donde el resolvedor de flits.cs.vu.nl quiere saber la dirección IP del host linda.cs.yale.edu en el paso 1, envía una consulta al servidor local. Servidor de nombres VU CV Originador 1 flits.cs.vu..nl 2 cs.vu..nl 8 Servidor de nombres edu 3 edu-server.net 7 Servidor de nombres Yale 4 yale.edu 6 Servidor de nombres Yale CS cs.yale.edu 5 Supongamos que el servidor local nunca había sido consultado por un nombre y no sabe nada sobre el; puede preguntar a otros servidores cercanos, pero si ninguno de ellos sabe nada, enviará un paquete UDP al servidor de edu indicado en su base de datos, edu-servetr.net. Es improbable que este servidor conozca la dirección linda.cs.yale.edu y probablemente tampoco sobre la de cs.yale.edu pero debe conocer a todos sus hijos, por lo que reenvía la solicitud a cs.yale.edu (paso 4), que debe tener los registros de recursos autorizados. Puesto que cada solicitud es de un cliente a un servidor, el registro de recursos solicitado regresa a través de los pasos 5 a 8. Una vez que estos registros regresan al servidor cs.yale.edu, son ingresados en cache ahí, para el caso de que se necesite después. Sin embargo, esta información no es autorizada, puesto que los cambios hechos en cs.yale.edu no se propagaran a todos los cache del mundo que puedan saber sobre ella. Por esto, las entradas de cache no deben vivir demasiado tiempo. Esta es la razón de que se incluya en los registros el tiempo_de _vida; indica a los servidores de nombres remotos el tiempo durante el cual deben mantener en cache los registros. El método de consulta descripto se conoce como consulta recurrente. Existe uno alternativo, en el cuándo una consulta no es satisfecha localmente, falla la consulta, pero se devuelve el nombre del siguiente servidor a intentar a lo largo de la línea. Comunicaciones Digitales 27 TCP/IP Cuando un cliente DNS no recibe una respuesta antes de terminar su temporizador, normalmente intentara otro servidor la siguiente vez. Y lo que se supone es que el servidor esta inactivo. Protocolo de Transferencia de Archivo (FTP) FTP es un protocolo estándar con STD 9. Estado recomendado (RFC 959). Copiar archivos de una maquina a otra es una operación muy usada. La transferencia entre cliente y servidor puede ser en ambas direcciones. Para acceder a archivos remotos, el usuario debe identificarse o identificar al servidor. En este punto el responsable de la autenticación del cliente antes de permitir la transferencia de los archivos. FTP usa TCP como protocolo de transporte para proveer conexiones confiables extremo a extremo. Son usadas dos conexiones: la primera es para entrar (login) y aceptar el protocolo TELNET y la segunda es para manejar la transferencia de datos. El usuario que inicia la conexión asume la función de cliente, y la de servidor por el host remoto. Sobre ambos lados del enlace la aplicación FTP se construye con un protocolo interpretador(PI), un proceso de transferencia de datos (DTP), y una interfaz al usuario. Principio FTP La interfaz al usuario se comunica con el protocolo interpretador, el cual se encarga del la conexión de control. Este protocolo interpretador tiene que comunicar la información necesaria a su propio sistema de archivos. Sobre el lado opuesto del enlace, el protocolo interpretador, además de su función de responder al protocolo TELNET tiene que iniciar la conexión de datos. Durante la transferencia de archivos, el manejo de datos es realizado por los DTP. Después de que un requerimiento del usuario es completado, el PI del servidor tiene que cerrar la conexión de control. Las operaciones FTP Cuando se usa FTP, el usuario realizara algunas o todas las siguientes operaciones: - Conectarse al host remoto - Seleccionar un directorio - Listar los archivos disponibles para la transferencia - Definir el modo de transferencia - Copiar archivos a o desde el host remoto - Desconectarse del host remoto Comunicaciones Digitales 28 TCP/IP : Referencias - TCP/IP Tutorial and Technical Overview - IBM Comunicaciones Digitales 29 TCP/IP