Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Prctica 2
Introduccin a las redes IP. Encaminamiento IP, Algoritmo de encaminamiento, TCP, UDP
Laboratorio de Telemtica
1.6 Encaminamiento IP
1.6.1 Introduccin
La funcin ms importante de la capa IP es el encaminamiento de datagramas extremo a extremo a travs de la red virtual. Por tanto esta funcin proporciona los mecanismos necesarios para interconectar distintas redes fsicas. La formacin de la red virtual que conecta mltiples redes se consigue por medio de unos hosts especiales denominados "routers". Es importante distinguir entre un hub, un puente, un router y una pasarela.
El hub interconecta segmentos de LAN a nivel de interfaz de red y enva tramas entre ellos. El hub sirve como prolongacin del cable fsico que conecta las mquinas de la LAN y su nica funcin es difundir la seal que llega por un cierto puerto (entrada) al resto de puertos. Los hubs pueden ser pasivos (si no amplifican las seales recibidas por sus puertos) o activos (si las amplifican). El conmutador (switch) es un dispositivo parecido al hub pero en el que se realiza conmutacin entre sus diferentes puertos, es decir, conmuta los paquetes observando sus direcciones fsicas origen/destino. Un puente (bridge) interconecta segmentos de LAN a nivel de interfaz de red y enva tramas entre ellos. Un puente realiza la funcin de retransmisin MAC (Medium Access Control) y es independiente de cualquier capa superior (incluyendo LLC). Proporciona, si se necesita, conversin de protocolos a nivel MAC. Un puente es transparente para IP. Es decir, cuando un host enva un datagrama a otro host en una red con el que se conecta a travs de un puente, enva el datagrama al host y el datagrama cruza el puente sin que el emisor se d cuenta. El puente es capaz de aprender las direcciones hardware de las mquinas que tiene en cada puerto y aislar el trfico y las colisiones de cada tramo LAN. Un router interconecta redes fsicas diferentes a nivel de la capa de red y encamina paquetes entre ellas. El router debe comprender la estructura de direccionamiento asociada con los protocolos que soporta (IP en nuestro caso) y debe elegir las mejores rutas de transmisin as como tamaos ptimos para los datagramas realizando fragmentacin si lo considera oportuno. La pasarela (gateway) interconecta redes a niveles superiores que los puentes y los routers. Una pasarela suele soportar el mapeado de direcciones de una red a otra, as como la transformacin de datos entre distintos entornos para conseguir conectividad entre los extremos de la comunicacin. Las pasarelas tpicamente proporcionan conectividad de dos redes para un subconjunto de protocolos de aplicacin soportados en cada una de ellas. Una pasarela es opaca para IP. Es decir, un host no puede enviar un datagrama IP a travs de una pasarela: slo puede enviarlo a la pasarela. La pasarela se ocupa de transmitirlo a la otra red con la informacin de los protocolos de alto nivel que vaya en l. Estrechamente ligado al concepto de pasarela, est el de cortafuegos (firewall), que se usa para restringir la circulacin de datagramas entre redes por motivos de seguridad.
Laboratorio de Telemtica
Figura 1.10: Entrega directa e indirecta El host origen averigua si debe realizar entrega directa o no, es decir, si el host destino est conectado o no directamente a su red fsica mediante el prefijo de red. El host origen extrae el nmero de red de la direccin IP del destino y la compara con el nmero de red de su propia direccin IP. Si ambas se corresponden significa que se puede utilizar entrega directa, sino se ha de utilizar entrega indirecta.
Laboratorio de Telemtica
Laboratorio de Telemtica
3. Los datagramas que viajen de A a B pueden seguir rutas diferentes a los datagramas que viajen de B a A. La figura 1.11 muestra 4 redes interconectados a travs de 2 routers y la tabla de rutas del router R1. Es importante entender que a excepcin de la disminucin del campo TTL el software de encaminamiento no modifica la cabecera del datagrama original. En particular, las direcciones IP origen y destino permanecen inalteradas durante toda la ruta5. Por lo que respecta a los datagramas entrantes: Cuando un datagrama llega a un host el driver del dispositivo de red lo entrega al software IP para su procesamiento. El software IP determina si el datagrama es para el propio host en cuyo caso lo pasa al software del protocolo de nivel alto apropiado. El datagrama se descarta si no es para el propio host. En el caso de los routers, estos deben encaminar el datagrama si no va dirigido hacia ellos. Decidir si una mquina es o no la destinataria de un datagrama no es una tarea tan trivial como a simple vista pueda parecer. En primer lugar pueden haber muchos interfaces de red cada uno de ellos con su correspondiente direccin IP, se debe comprobar la correspondiente identificacin de subred (si la red est dividida) y adems se deben reconocer los mensajes de broadcast y los de multicast.
Laboratorio de Telemtica
2 Nivel de Transporte: los protocolos TCP (Transmission Control Protocol) y UDP (User Datagram Protocol)
2.1 Introduccin
Dos de los protocolos de transporte estandarizados en la torre TCP/IP son TCP (Transmission Control Protocol) y UDP (User Datagram Protocol). Previamente a describir TCP y UDP, veremos una clasificacin de los protocolos en cuanto a cmo establecen la conexin y a su fiabilidad. Un protocolo puede clasificarse en funcin de cmo realiza la conexin en: Orientado a conexin. En este caso, para realizar un intercambio de informacin entre dos entidades se pueden distinguir las siguientes fases: 1. Establecimiento de la conexin 2. Intercambio de informacin 3. Cierre de la conexin Una de las caractersticas de un servicio orientado a conexin es que una vez establecida la conexin, los mensajes llegan al receptor en el mismo orden en que fueron enviados por el emisor. Un ejemplo de este procedimiento es la comunicacin a travs del telfono: 1. Establecimiento de la conexin: La persona llamante, inicia el establecimiento de la conexin descolgando el telfono y marcando el nmero del abonado llamado. El abonado llamado descuelga el telfono y la conexin ya est realizada. 2. Intercambio de informacin: Ambos abonados, llamante y llamado, conversan a travs del telfono. 3. Cierre de la conexin: Los abonados cuelgan el telfono dando por finalizada la llamada. No orientado a conexin. En este caso, el intercambio de informacin no necesita de las fases de establecimiento y cierre de la conexin. La entidad transmisora enva el mensaje sin que la receptora sepa que va a recibir ese mensaje. Un ejemplo de un servicio no orientado a conexin es el sistema postal. En este caso, el remitente enva una carta al destinatario. El destinatario sabe que el remitente le envi una carta en el momento en que la recibe. Otro parmetro que se utiliza para clasificar un protocolo es la fiabilidad del protocolo en cuanto a la entrega de la informacin. Se dice que un protocolo es fiable cuando implementa los mecanismos necesarios para que la informacin que transporta llegue al otro extremo libre de errores. Se dice que un protocolo es no fiable si no nos asegura la entrega de los mensajes al extremo receptor. Como ejemplo, Internet Protocol (IP) es un protocolo no orientado a conexin y no fiable. Es no orientado a conexin porque un datagrama IP se entrega a la red sin un establecimiento previo de la conexin y es no fiable porque no incorpora ningn mecanismo que nos informe de si el datagrama ha sido entregado al extremo receptor con xito o si no ha podido ser entregado. Dado que IP es un protocolo no orientado a conexin, no fiable, los protocolos que estn por encima de IP (Nivel de Transporte) se van a tener que enfrentar con las siguientes situaciones de error: 1. Prdida de una trama 2. Llegada de una trama fuera de orden 3. Duplicacin de una trama 4. Modificacin de los datos de la trama
DOCENTE : Ing. RICARDO RAMIREZ, Esp. En Diseo y Construccin de Soluciones Telemticas
Laboratorio de Telemtica
TCP (Transmission Control Protocol) es un protocolo orientado a conexin y fiable. Esto nos indica que TCP va a tener que resolver las cuatro posibles situaciones de error que hemos visto para proporcionar un servicio orientado a conexin y fiable, a sus propios usuarios (por usuarios se entiende aquellos protocolos o aplicaciones que utilicen TCP como protocolo de transporte). UDP (User Datagram Protocol) es un protocolo no orientado a conexin y no fiable. Si una aplicacin desea un servicio fiable, o bien utiliza TCP o si utiliza UDP deber ser la aplicacin quien implemente los mecanismos de fiabilidad. Obsrvese que el uso de TCP o UDP depender de varios aspectos. Entre ellos, y adems de la fiabilidad, la eficiencia: Supongamos que vamos a realizar una conferencia telefnica durante la que estaremos hablando 10 minutos. El tiempo invertido en marcar el telfono del abonado llamado y que ste descuelgue es de 30 segundos y el tiempo de "liberar la llamada" (despedirse y colgar el telfono) de 5 segundos. El tiempo total invertido para completar toda la llamada ser de 10*60+30+5=635 segundos y el tiempo invertido en el intercambio de informacin son 600 segundos. La eficiencia obtenida es de 600/635, 94.5%. Si el tiempo invertido en el intercambio de informacin hubiese sido de 5 segundos (decir solo una palabra) la eficiencia hubiera bajado al 12.5%. Un protocolo orientado a conexin (como TCP) utiliza un cierto tiempo en establecer y liberar la conexin. La fiabilidad de un protocolo puede ser un factor determinante, pero no siempre. Cuando se transmite voz, es ms importante que las muestras de voz estn disponibles en los instantes requeridos en el receptor, que el hecho de que haya alguna muestra errnea, perdida o duplicada. Por esta razn, la mayora de sistemas de transmisin multimedia sobre IP utilizan el protocolo UDP. Un ejemplo de protocolo no orientado a conexin y no fiable es el sistema postal de correos. En este sistema el remitente escribe una carta que posteriormente encapsula (introduce) en un sobre con la direccin del destinatario. Dicho sobre se entrega al servicio postal de correos, cuya misin es hacer llegar el sobre a la direccin del destinatario. El destinatario, a priori, no sabe que el remitente ha entregado el sobre al servicio postal de correos. Si durante el trasporte del sobre, ste se pierde, ni el destinatario, ni el remitente sern informados de este hecho (no fiable). Si el remitente desea enviar otra carta al mismo destinatario, debera introducirla de nuevo en un sobre con la direccin pertinente y entregarlo al servicio postal de correos. Si el transporte de este segundo sobre se realiza de forma ms rpida que el primero (por ejemplo por avin), es posible que los sobres (y las cartas) lleguen desordenados (problema inherente a un servicio no orientado a conexin). Una de las caractersticas de un servicio no orientado a conexin es que las unidades de datos (los sobres) se manejan de forma independiente aunque la informacin transportada (las cartas) formen parte de una misma comunicacin. Por esta razn, cada sobre debe llevar la direccin del destinatario. Obsrvese que en el ejemplo de la llamada telefnica (servicio orientado a conexin), la direccin (nmero de telfono del abonado receptor) slo se proporciona en el establecimiento de la conexin. No es difcil notar, que a pesar de tener un servicio no orientado a conexin y no fiable, nosotros (el escritor de cartas) puede utilizar mecanismos para obtener, finalmente, un servicio fiable. Estos mecanismos seran: 1. Para solucionar el problema de la fiabilidad, el remitente de la carta incluye una postdata pidiendo al destinatario una confirmacin antes de 14 das. El remitente est suponiendo que en el peor de los casos, el servicio postal de correos no tardar ms de 7 das en entregar la carta al remitente y 7 das ms en recibir la
DOCENTE : Ing. RICARDO RAMIREZ, Esp. En Diseo y Construccin de Soluciones Telemticas
Laboratorio de Telemtica
confirmacin. Si en 14 das no ha recibido confirmacin puede suponer que la carta que envo o la confirmacin se ha perdido. En este caso vuelve a enviar la carta. 2. Para solucionar el problema de ordenamiento, las cartas se numeran de forma consecutiva. De esta forma el remitente sabe leerlas de forma ordenada o bien detectar qu carta se ha perdido. Finalmente, el siguiente ejemplo, muestra un servicio no orientado a conexin y fiable. Este caso es el de las empresas de transporte de paquetes (estilo packet express). Se deja como ejercicio al lector determinar porque es un servicio no orientado a conexin y fiable.
Laboratorio de Telemtica
Figura 2.2: Arquitectura cliente servidor Un ejemplo del funcionamiento es la conexin desde un navegador a un servidor de WEB. El servidor de WEB debe estar esperando que algn navegador se conecte a l con el fin de proporcionar una pgina HTML. Desde el punto de vista del usuario, primero arranca el navegador, luego se realiza la conexin y cuando el usuario se ha cansado de navegar, cierra el navegador, mientras que el servidor de WEB contina esperando otras conexiones. La Figura 4.2 muestra el flujograma que describe este comportamiento. De esta arquitectura se deduce que un cliente debe conocer la IP y el puerto del servidor. Siguiendo con el ejemplo del navegador, si el usuario introduce la URL http://www.unizar.es, el navegador se conectar al puerto 80. Esto es debido a que hay una serie de puertos conocidos con el nombre de well known ports en los que se aconseja qu tipo de servicio deben proporcionar. As el puerto 21 es para el servidor de ftp, 23 es para el servidor de telnet, el 25 para el servidor de SMTP (servicio de correo electrnico), el 80 para el servidor de http, etc. Esto no significa que todos los servidores WEB escuchen en el puerto 80, ya que es potestad del administrador del sistema decidir qu puerto utilizar su servidor WEB. Sin embargo, la mayora de clientes tienen establecido un puerto por defecto para el servidor (como en el caso del navegador y el puerto 80), de forma que si se cambia el puerto de un servicio bien definido, slo se lograr confundir al cliente (tanto el cliente software como al usuario que est utilizando ese cliente). A modo de ejemplo, si se desea utilizar un navegador para conectarnos a un puerto diferente del de defecto (por ejemplo el 8080), la forma de introducir la URL es http://nombre_servidor:8080. Si el servidor de WEB de la UZ estuviese en el puerto 8080, la URL sera http://www.unizar.es:8080.
Laboratorio de Telemtica
Figura 2.3: Datagrama UDP paquete UDP) si quiere evitar que el nivel IP fragmente el paquete UDP porque se ha excedido el MTU (Maximum Transmission Unit) del medio fsico. Por ejemplo, si el medio fsico es una Ethernet con tramas Ethernet II, el campo de datos de la trama Ethernet tiene una longitud mxima de 1500 bytes. En este caso, la longitud mxima del datagrama IP encapsulado en una trama Ethernet sera de 1500 bytes. Si utilizamos UDP como protocolo de transporte, la cantidad de bytes de usuario (campo data del datagrama UDP) ser como mximo 1500-20-8=1472 bytes (a 1500 se le resta la cabecera IP, usualmente 20 bytes, y la cabecera UDP, 8 bytes). El checksum incluye tanto la cabecera UDP como el campo de datos, (recordemos que el checksum de la cabecera de IP solo incluye la cabecera IP y no los datos del datagrama IP). En UDP el clculo del checksum es opcional. Si el emisor no realiza el clculo del checksum, enva este campo con ceros. Si el emisor realiza el clculo del checksum y obtiene un valor 0, enva todo unos (65535) que es equivalente en aritmtica de complemento a uno. Si el emisor calcula el checksum y el receptor detecta un checksum errneo, el datagrama UDP se descarta silenciosamente (esta condicin de error no se indica ni al emisor ni a los protocolos de nivel superior del receptor).
TCP es un protocolo orientado a conexin, fiable. Especficamente, se dice que TCP proporciona un servicio de transporte de un flujo de bytes, orientado a conexin, fiable. El concepto de transporte de un flujo de bytes, indica que la aplicacin entrega a TCP los bytes que desea transmitir y que TCP no interpretar esos bytes, nicamente los har llegar a la aplicacin receptora en el orden en que se los entregaron. En otras palabras, si una aplicacin entrega 20 bytes a TCP, seguido de una entrega de 30 bytes, seguido de una entrega de 60 bytes, la aplicacin receptora no sabe cuntas entregas se hicieron al TCP, sino que puede ocurrir que al leer los bytes recibidos, lo haga en cinco lecturas de 22 bytes. TCP proporciona fiabilidad utilizando los siguientes mecanismos: Los datos de la aplicacin son fragmentados en lo que TCP considera que es el mejor tamao para ser transmitidos. Cuando TCP enva un segmento, inicia un temporizador, esperando que el otro extremo reconozca la recepcin correcta del segmento enviado. Si el 10
Laboratorio de Telemtica
reconocimiento no ha sido recibido cuando el temporizador ya ha expirado, el extremo transmisor vuelve a enviar el mismo segmento. Cuando TCP recibe un segmento de datos, enva un reconocimiento al extremo que lo ha enviado. TCP incluye un checksum de la cabecera y los datos cuyo propsito es detectar cualquier modificacin de los datos en trnsito. Si el checksum recibido es incorrecto, el segmento TCP se descarta silenciosamente y no se reconoce. Se espera que el temporizador del TCP del extremo opuesto expire y se lo vuelva a enviar. Este reconocimiento se denomina ACK (acknowledge). Dado que los segmentos TCP viajan encapsulados en datagramas IP, y dado que los datagramas IP pueden llegar desordenados, los segmentos TCP pueden llegar desordenados. El TCP del extremo receptor reordena, si es necesario, los segmentos recibidos y entrega, a la aplicacin, los datos en el orden correcto. Dado que los datagramas IP pueden llegar duplicados, TCP debe descartar los segmentos TCP duplicados. TCP tambin proporciona control de flujo. Los extremos TCP tienen una cantidad finita de espacio de almacenamiento. El extremo TCP receptor indica al extremo TCP emisor cunto espacio de almacenamiento tiene para los datos recibidos. De esta forma se previene que un ordenador cuyo ritmo de generacin de datos es alto pueda superar la capacidad de recibir y procesar datos del ordenador receptor.
El sistema que utiliza TCP para proporcionar fiabilidad se engloba en los llamados protocolos de ventana deslizante.
11
Laboratorio de Telemtica
Figura 2.4: Stop&Wait Supongamos que modificamos el algoritmo de manera que el emisor pueda tener como mximo F tramas no reconocidas. El emisor podr enviar como mximo F tramas sin recibir reconocimiento de ellas. F se denomina el tamao de la ventana y en cuanto reciba el reconocimiento de la primera trama (ACK(1)), podr enviar una nueva trama, y as sucesivamente. Este es el caso representado en la Figura 4.5, para un tamao de ventana F=6.
Figura 2.5: Ventana deslizante El hecho de utilizar ventana deslizante implica que las tramas de informacin deben ir numeradas para que los reconocimientos indiquen mediante este nmero qu trama ha sido recibida correcta o incorrectamente. Es importante destacar que en un sistema de ventana deslizante, no es necesario enviar una trama de reconocimiento por cada trama de datos. Se puede reconocer con una sola trama de reconocimiento varias tramas de datos teniendo en cuenta que si se han enviado 3 tramas de datos y se reconoce la trama 3, entonces, de forma automtica, quedan reconocidas la 1 y la 2. Es habitual que en una comunicacin
DOCENTE : Ing. RICARDO RAMIREZ, Esp. En Diseo y Construccin de Soluciones Telemticas
12
Laboratorio de Telemtica
entre dos ordenadores, cada uno de ellos acte simultneamente de emisor y receptor, ya que la informacin suele fluir tanto en un sentido como en el otro. Para aumentar la eficiencia, el paquete de informacin incluye un campo utilizado para reconocimiento, evitndose el tener que enviar tramas de reconocimiento y de informacin diferentes cuando ambas tramas viajan en el mismo sentido. A esta tcnica se le conoce con el nombre de piggybacking.
Figura 2.6: Segmento TCP Los primeros 32 bits indican los puertos origen y destino. Los siguientes 32 bits son el nmero de secuencia. El nmero de secuencia identifica el byte del flujo de datos que est siendo enviado y que ocupa la primera posicin en el campo de datos del segmento. El primer byte de un flujo en un segmento TCP no lleva el nmero 1 como nmero de secuencia, sino que se elige un nmero aleatorio (Inital Sequence Number) en cada conexin realizada y este nmero representa el nmero de secuencia del primer byte a transmitir durante esa conexin. Si el ISN de una conexin es el 1415531521, el primer byte estara identificado por este mismo nmero y el segundo sera 1415531521 + 1, y as sucesivamente. De esta forma si un segmento TCP llega a una conexin equivocada (cosa
DOCENTE : Ing. RICARDO RAMIREZ, Esp. En Diseo y Construccin de Soluciones Telemticas
13
Laboratorio de Telemtica
bastante inverosmil), los nmeros de secuencia de ambas conexiones no podran a llegar a confundirse nunca, ya que ambas conexiones utilizaron un ISN muy diferente y los datos que llegaron a la conexin equivocada nunca sern pasados a la aplicacin equivocada (el TCP generara un error al recibir un nmero de secuencia no esperado). El campo del nmero de reconocimiento (acknowledge number) se utiliza para almacenar el nmero del siguiente byte que se espera recibir. Este campo slo se decodifica si el flag ACK est activado. Si se recibi un paquete de datos con el nmero de secuencia 1415531521 y con 100 bytes de datos (desde el 1415531521 hasta el 1415531620), el segmento TCP de respuesta llevara activado el flag ACK y el nmero de reconocimiento sera el 1415531621, puesto que espera recibir el siguiente al 1415531620. El campo hdr len (Header Length) indica la longitud de la cabecera que puede llevar opciones haciendo que la longitud de la cabecera vare. A continuacin vienen 6 bits reservados (no se utilizan) y 6 bits que actan de flags: urg: Urgent Pointer vlido ack: Nmero de reconocimiento vlido psh: Segmento con datos de usuario. Pasarlos a la aplicacin tan pronto como sea posible. rst: Reinicio de la conexin syn: Inicio de conexin fin: Final de conexin
El campo window size es de 16 bits e indica el tamao de ventana en bytes. Los 16 bits siguientes se utilizan para el checksum y los siguientes 16 bits para indicar un urgent pointer. Existen varias opciones en TCP, y la ms utilizada es el MSS (Maximum Segment Size). Cada extremo de una conexin indica al otro cul es el tamao mximo de segmento que desea recibir. Este valor se especifica dentro del campo de opciones al inicio de la conexin.
14