los protocolos de la red Internet
Transcripción
los protocolos de la red Internet
TCP/IP: los protocolos de la red Internet TCP/IP: los protocolos de la red Internet José M. Barceló Ordinas Jordi Íñigo Griera José M. Barceló Ordinas Jordi Íñigo Griera P03/75064/00977 P03/75064/00977 FUOC • P03/75064/00977 2 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 2 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 Índice Índice Introducción............................................................................................... 5 Introducción............................................................................................... 5 Objetivos ...................................................................................................... 7 Objetivos ...................................................................................................... 7 1. Estructura de protocolos en Internet ............................................. 9 1. Estructura de protocolos en Internet ............................................. 9 1.1. Protocolos de Internet ....................................................................... 10 1.1. Protocolos de Internet ....................................................................... 10 1.2. Encapsulamiento ............................................................................... 11 1.2. Encapsulamiento ............................................................................... 11 2. Redes de acceso a Internet ................................................................. 13 2. Redes de acceso a Internet ................................................................. 13 2.1. Acceso telefónico: el PPP ................................................................... 13 2.1. Acceso telefónico: el PPP ................................................................... 13 2.1.1. Compresión de las cabeceras ................................................. 15 2.1.1. Compresión de las cabeceras ................................................. 15 2.1.2. MTU........................................................................................ 15 2.1.2. MTU........................................................................................ 15 2.2. Acceso ADSL ...................................................................................... 16 2.2. Acceso ADSL ...................................................................................... 16 2.3. Acceso LAN: el protocolo Ethernet.................................................... 18 2.3. Acceso LAN: el protocolo Ethernet.................................................... 18 2.3.1. Formato de la trama Ethernet ................................................ 18 2.3.1. Formato de la trama Ethernet ................................................ 18 2.3.2. Direcciones LAN..................................................................... 21 2.3.2. Direcciones LAN..................................................................... 21 3. El IP (Internet protocol) ...................................................................... 23 3. El IP (Internet protocol) ...................................................................... 23 3.1. Direcciones IP .................................................................................... 23 3.1. Direcciones IP .................................................................................... 23 3.1.1. Máscaras de red ...................................................................... 25 3.1.1. Máscaras de red ...................................................................... 25 3.1.2. Direcciones de propósito especial .......................................... 25 3.1.2. Direcciones de propósito especial .......................................... 25 3.2. El formato del paquete IP .................................................................. 26 3.2. El formato del paquete IP .................................................................. 26 3.2.1. Fragmentación ....................................................................... 30 3.2.1. Fragmentación ....................................................................... 30 3.3. Direccionamiento y direccionadores................................................. 31 3.3. Direccionamiento y direccionadores................................................. 31 3.3.1. La tabla de direccionamiento................................................. 32 3.3.1. La tabla de direccionamiento................................................. 32 4. El ARP (address resolution protocol) ............................................... 35 4. El ARP (address resolution protocol) ............................................... 35 5. El ICMP (Internet control message protocol) .................................. 38 5. El ICMP (Internet control message protocol) .................................. 38 5.1. Mensajes ICMP .................................................................................. 38 5.1. Mensajes ICMP .................................................................................. 38 5.2. El programa ping .............................................................................. 39 5.2. El programa ping .............................................................................. 39 5.3. El programa traceroute.................................................................. 41 5.3. El programa traceroute.................................................................. 41 5.4. Mensaje de redireccionamiento ........................................................ 43 5.4. Mensaje de redireccionamiento ........................................................ 43 6. Protocolos del nivel de transporte .................................................. 45 6. Protocolos del nivel de transporte .................................................. 45 7. El UDP (user datagram protocol)...................................................... 48 7. El UDP (user datagram protocol)...................................................... 48 8. El TCP (transmission control protocol) ........................................... 50 8. El TCP (transmission control protocol) ........................................... 50 8.1. El TCP proporciona fiabilidad ........................................................... 50 8.1. El TCP proporciona fiabilidad ........................................................... 50 8.2. Formato del segmento TCP ............................................................... 51 8.2. Formato del segmento TCP ............................................................... 51 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 8.3. Establecimiento de la conexión ........................................................ 56 8.3. Establecimiento de la conexión ........................................................ 56 8.4. Terminación de la conexión.............................................................. 58 8.4. Terminación de la conexión.............................................................. 58 8.5. Diagrama de estados del TCP ............................................................ 61 8.5. Diagrama de estados del TCP ............................................................ 61 8.6. Transferencia de la información........................................................ 62 8.6. Transferencia de la información........................................................ 62 8.6.1. Transmisión de datos interactivos ......................................... 63 8.6.1. Transmisión de datos interactivos ......................................... 63 8.6.2. Transmisión de datos de gran volumen. Control de flujo 8.6.2. Transmisión de datos de gran volumen. Control de flujo por ventana deslizante ........................................................... 64 por ventana deslizante ........................................................... 64 8.6.3. Temporizadores y retransmisiones ........................................ 69 8.6.3. Temporizadores y retransmisiones ........................................ 69 Resumen....................................................................................................... 75 Resumen....................................................................................................... 75 Ejercicios de autoevaluación .................................................................. 77 Ejercicios de autoevaluación .................................................................. 77 Solucionario................................................................................................ 78 Solucionario................................................................................................ 78 Glosario ........................................................................................................ 80 Glosario ........................................................................................................ 80 Bibliografía................................................................................................. 81 Bibliografía................................................................................................. 81 Anexos .......................................................................................................... 82 Anexos .......................................................................................................... 82 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 5 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 5 Introducción Introducción Lo que se conoce como red Internet es un conjunto heterogéneo de redes in- Lo que se conoce como red Internet es un conjunto heterogéneo de redes in- terconectadas. Precisamente, es la capacidad de homogeneizar lo que de he- terconectadas. Precisamente, es la capacidad de homogeneizar lo que de he- cho es heterogéneo, lo que ha catapultado la red Internet a su estatus actual. cho es heterogéneo, lo que ha catapultado la red Internet a su estatus actual. Los protocolos que distinguen la red Internet como una unidad son el IP* y el TCP**. De hecho, estos últimos son sólo dos de entre la media docena de protocolos que se necesitan para hacer funcionar la red Internet; sin embargo, son * IP es la sigla de Internet protocol. ** TCP es la sigla de transmission control protocol. Los protocolos que distinguen la red Internet como una unidad son el IP* y el TCP**. De hecho, estos últimos son sólo dos de entre la media docena de protocolos que se necesitan para hacer funcionar la red Internet; sin embargo, son los más importantes. Por este motivo, a todos en conjunto se les llama nor- los más importantes. Por este motivo, a todos en conjunto se les llama nor- malmente pila (stack) TCP/IP (en inglés TCP/IP protocol suite). malmente pila (stack) TCP/IP (en inglés TCP/IP protocol suite). Evolución histórica de la red Internet La red ARPANET* de Estados Unidos es la precursora de la red Internet actual. Desde 1969, ARPANET financió la interconexión de nodos de conmutación de paquetes por medio de líneas punto a punto dedicadas. Durante la primera década de funcionamiento permitió a un ingente conjunto de investigadores desarrollar y perfeccionar las técnicas para la gestión y el uso de las redes de conmutación de paquetes. Hacia el año 1979, la pila TCP/IP se empieza a perfilar como el conjunto de protocolos de futuro de la red y, al final de 1982 todos los nodos de ARPANET ya habían adoptado el TCP/IP. Rápidamente, ARPANET deviene el nudo de interconexión principal de otras redes de datos, sobre todo de los académicos. Los ordenadores militares, que también habían formado parte de la red inicial y de su desarrollo, se dividen y forman una red propia (la MILNET). A mediados de los años ochenta, el éxito del TCP/IP queda demostrado por el hecho de que la nueva red de conmutación de paquetes para la investigación del NSF* de Estados Unidos financia la NSFNET. Con el tiempo, todas las redes académicas, en primer lugar las de Estados Unidos, después las de Europa y más tarde las del resto del mundo se acabarán conectando a esta red. La red de redes, Internet, empezó su crecimiento vertiginoso –casi explosivo– hacia el año 1986. A principios de los años noventa, las principales universidades ya formaban parte de Internet y, cuando el boom de Internet se preveía que se frenaría porque la mayoría de las universidades ya se habían conectado a la misma, las empresas empezaron a ver el potencial de la red, en primer lugar como medio de interconexión y, un poco más tarde, como herramienta de marketing (en 1993 aparece el HTTP*, el protocolo del WWW**). TCP/IP: los protocolos de la red Internet * IP es la sigla de Internet protocol. ** TCP es la sigla de transmission control protocol. Evolución histórica de la red Internet * ARPANET es el acrónimo de advanced research projects agency network. * NSF es la sigla de National Science Foundation. * HTTP es la sigla de hyper-text transfer protocol. ** WWW es la sigla de world wide web. La red ARPANET* de Estados Unidos es la precursora de la red Internet actual. Desde 1969, ARPANET financió la interconexión de nodos de conmutación de paquetes por medio de líneas punto a punto dedicadas. Durante la primera década de funcionamiento permitió a un ingente conjunto de investigadores desarrollar y perfeccionar las técnicas para la gestión y el uso de las redes de conmutación de paquetes. Hacia el año 1979, la pila TCP/IP se empieza a perfilar como el conjunto de protocolos de futuro de la red y, al final de 1982 todos los nodos de ARPANET ya habían adoptado el TCP/IP. Rápidamente, ARPANET deviene el nudo de interconexión principal de otras redes de datos, sobre todo de los académicos. Los ordenadores militares, que también habían formado parte de la red inicial y de su desarrollo, se dividen y forman una red propia (la MILNET). A mediados de los años ochenta, el éxito del TCP/IP queda demostrado por el hecho de que la nueva red de conmutación de paquetes para la investigación del NSF* de Estados Unidos financia la NSFNET. Con el tiempo, todas las redes académicas, en primer lugar las de Estados Unidos, después las de Europa y más tarde las del resto del mundo se acabarán conectando a esta red. La red de redes, Internet, empezó su crecimiento vertiginoso –casi explosivo– hacia el año 1986. A principios de los años noventa, las principales universidades ya formaban parte de Internet y, cuando el boom de Internet se preveía que se frenaría porque la mayoría de las universidades ya se habían conectado a la misma, las empresas empezaron a ver el potencial de la red, en primer lugar como medio de interconexión y, un poco más tarde, como herramienta de marketing (en 1993 aparece el HTTP*, el protocolo del WWW**). El crecimiento actual de Internet se mantiene imparable y empiezan a surgir los primeros problemas. La red Internet sufre ciertas limitaciones en su especificación actual que pueden hacer que este crecimiento deba detenerse en un futuro no demasiado lejano si no se realizan cambios importantes. En particular, el protocolo IP en la versión actual, la 4 (IPv4) limita el número de estaciones que se pueden conectar a Internet a 2 32 (unos 4.000 millones de estaciones). Si bien el número de estaciones actual (en 1998) es de unos 40 millones, la manera de asignar las direcciones de Internet hace que haya muchas direcciones que, en la práctica, son inutilizables. En la actualidad, se considera que la única solución a largo plazo será la actualización de todos los componentes de la red en la versión nueva, la 6 (IPv6 o IPng, IP next generation). El crecimiento actual de Internet se mantiene imparable y empiezan a surgir los primeros problemas. La red Internet sufre ciertas limitaciones en su especificación actual que pueden hacer que este crecimiento deba detenerse en un futuro no demasiado lejano si no se realizan cambios importantes. En particular, el protocolo IP en la versión actual, la 4 (IPv4) limita el número de estaciones que se pueden conectar a Internet a 2 32 (unos 4.000 millones de estaciones). Si bien el número de estaciones actual (en 1998) es de unos 40 millones, la manera de asignar las direcciones de Internet hace que haya muchas direcciones que, en la práctica, son inutilizables. En la actualidad, se considera que la única solución a largo plazo será la actualización de todos los componentes de la red en la versión nueva, la 6 (IPv6 o IPng, IP next generation). The next generation The next generation Las versiones 1, 2, 3 y 5 del IP no se han utilizado nunca. Internet, desde su inicio como ARPANET, ha adoptado la versión 4. En la actualidad, se habla de la versión nueva como la versión next generation (en honor a la serie de televisión Star Trek: the next generation) en lugar de llamarla “versión 5”, que sería lo normal si no fuera porque un documento de la IAB (Internet Architecture Board) confundió a todo el mundo diciendo que la nueva versión sería la 7. Las versiones 1, 2, 3 y 5 del IP no se han utilizado nunca. Internet, desde su inicio como ARPANET, ha adoptado la versión 4. En la actualidad, se habla de la versión nueva como la versión next generation (en honor a la serie de televisión Star Trek: the next generation) en lugar de llamarla “versión 5”, que sería lo normal si no fuera porque un documento de la IAB (Internet Architecture Board) confundió a todo el mundo diciendo que la nueva versión sería la 7. Sea como sea, los cuatro primeros bits de todos los paquetes que circulan por Internet son 0100, es decir, 4, para indicar la versión IP que los define. Los nuevos paquetes deberán empezar por cuatro bits diferentes, que obviamente no pueden ser next generation. Estos cuatro bits iniciales serán 0110, es decir, 6. Sea como sea, los cuatro primeros bits de todos los paquetes que circulan por Internet son 0100, es decir, 4, para indicar la versión IP que los define. Los nuevos paquetes deberán empezar por cuatro bits diferentes, que obviamente no pueden ser next generation. Estos cuatro bits iniciales serán 0110, es decir, 6. * ARPANET es el acrónimo de advanced research projects agency network. * NSF es la sigla de National Science Foundation. * HTTP es la sigla de hyper-text transfer protocol. ** WWW es la sigla de world wide web. FUOC • P03/75064/00977 6 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 6 Hoy día, el protocolo TCP/IP se utiliza incluso en redes homogéneas como las Hoy día, el protocolo TCP/IP se utiliza incluso en redes homogéneas como las que podemos encontrar, por ejemplo, en una empresa privada. La disponibi- que podemos encontrar, por ejemplo, en una empresa privada. La disponibi- lidad de muchas aplicaciones que funcionan sobre TCP/IP hace que estos pro- lidad de muchas aplicaciones que funcionan sobre TCP/IP hace que estos pro- tocolos se utilicen como conexión entre sistemas locales. Para identificar estos tocolos se utilicen como conexión entre sistemas locales. Para identificar estos casos, ha tenido éxito el nombre intranet. En general, hablaremos simplemen- casos, ha tenido éxito el nombre intranet. En general, hablaremos simplemen- te de redes TCP/IP cuando no queramos especificar si tenemos conexión a In- te de redes TCP/IP cuando no queramos especificar si tenemos conexión a In- ternet o no. ternet o no. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 7 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 7 Objetivos Objetivos En este módulo didáctico, encontraréis los recursos necesarios para lograr los En este módulo didáctico, encontraréis los recursos necesarios para lograr los objetivos siguientes: objetivos siguientes: 1. Aprender el funcionamiento de las redes de acceso a Internet (acceso LAN 1. Aprender el funcionamiento de las redes de acceso a Internet (acceso LAN y acceso por red telefónica). y acceso por red telefónica). 2. Entender los fundamentos del funcionamiento de los protocolos de direccio- 2. Entender los fundamentos del funcionamiento de los protocolos de direccio- namiento (IP, ARP e ICMP): la asignación y el mapeado de direcciones y el namiento (IP, ARP e ICMP): la asignación y el mapeado de direcciones y el control de congestión. control de congestión. 3. Saber en qué principios se basan los protocolos de control de la transmisión punto a punto (TCP y UDP). 4. Conocer algunas utilidades de uso común que permiten investigar empíricamente las interioridades de la red. 3. Saber en qué principios se basan los protocolos de control de la transmisión punto a punto (TCP y UDP). 4. Conocer algunas utilidades de uso común que permiten investigar empíricamente las interioridades de la red. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 8 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 8 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 9 TCP/IP: los protocolos de la red Internet 1. Estructura de protocolos en Internet El modelo Internet gira en torno a los protocolos TCP/IP. De hecho, podríamos considerar que el modelo de la red Internet consta sólo de cuatro partes o niveles; es decir, todo lo que por debajo del IP, el IP, el TCP y todo lo que hay por encima del TCP: 1) Nivel de red: por norma general, está formado por una red LAN, o WAN (de conexión punto a punto) homogénea. Todos los equipos conectados a Internet implementan dicho nivel. Todo lo que se encuentra por debajo del IP FUOC • P03/75064/00977 9 1. Estructura de protocolos en Internet Lectura complementaria Para estudiar con más detalle los protocolos de Internet, consultad los apartados 1.4, 1.10 y 29.3 de la obra siguiente: D.E. Comer (1995). “Principles, Protocols and Architecture”. Internetworking with TCP/IP (vol. I). Hertfordshire: Prentice Hall. El modelo Internet gira en torno a los protocolos TCP/IP. De hecho, podríamos considerar que el modelo de la red Internet consta sólo de cuatro partes o niveles; es decir, todo lo que por debajo del IP, el IP, el TCP y todo lo que hay por encima del TCP: 1) Nivel de red: por norma general, está formado por una red LAN, o WAN (de conexión punto a punto) homogénea. Todos los equipos conectados a Internet implementan dicho nivel. Todo lo que se encuentra por debajo del IP constituye el nivel de red física o, simplemente, nivel de red. constituye el nivel de red física o, simplemente, nivel de red. 2) Nivel IP o nivel Internet (nivel de Internetworking): confiere unidad a 2) Nivel IP o nivel Internet (nivel de Internetworking): confiere unidad a todos los miembros de la red y, por consiguiente, es el que permite que todos todos los miembros de la red y, por consiguiente, es el que permite que todos se puedan interconectar, con independencia de si se conectan a la misma por se puedan interconectar, con independencia de si se conectan a la misma por medio de línea telefónica, ISDN o una LAN Ethernet. El direccionamiento y la medio de línea telefónica, ISDN o una LAN Ethernet. El direccionamiento y la asignación de direcciones constituyen sus principales funciones. Todos los asignación de direcciones constituyen sus principales funciones. Todos los equipos conectados a Internet implementan este nivel. equipos conectados a Internet implementan este nivel. 3) Nivel TCP o nivel de transporte: confiere fiabilidad a la red. El control de flujo y de errores se lleva a cabo principalmente dentro de este nivel, que TCP/IP: los protocolos de la red Internet Ved los direccionadores, o nodos de conmutación, en el subapartado 3.3 de este módulo didáctico. 3) Nivel TCP o nivel de transporte: confiere fiabilidad a la red. El control de flujo y de errores se lleva a cabo principalmente dentro de este nivel, que sólo es implementado por los equipos usuarios de la red Internet o por los sólo es implementado por los equipos usuarios de la red Internet o por los terminales de Internet. Los equipos de conmutación (direccionadores o terminales de Internet. Los equipos de conmutación (direccionadores o routers) no lo necesitan. routers) no lo necesitan. 4) Nivel de aplicación: engloba todo lo que hay por encima del TCP; es el 4) Nivel de aplicación: engloba todo lo que hay por encima del TCP; es el nivel que corresponde a las aplicaciones que utilizan Internet: clientes y servi- nivel que corresponde a las aplicaciones que utilizan Internet: clientes y servi- dores de WWW, correo electrónico, FTP, etc. se encuentran dentro de este ni- dores de WWW, correo electrónico, FTP, etc. se encuentran dentro de este ni- vel, que sólo es implementado por los equipos usuarios de la red Internet o los vel, que sólo es implementado por los equipos usuarios de la red Internet o los terminales de Internet. Los equipos de conmutación no lo utilizan. terminales de Internet. Los equipos de conmutación no lo utilizan. Lectura complementaria Para estudiar con más detalle los protocolos de Internet, consultad los apartados 1.4, 1.10 y 29.3 de la obra siguiente: D.E. Comer (1995). “Principles, Protocols and Architecture”. Internetworking with TCP/IP (vol. I). Hertfordshire: Prentice Hall. Ved los direccionadores, o nodos de conmutación, en el subapartado 3.3 de este módulo didáctico. FUOC • P03/75064/00977 10 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 10 Sólo los equipos terminales implementan todos los niveles; los equipos inter- Sólo los equipos terminales implementan todos los niveles; los equipos inter- medios únicamente implementan el nivel de red y el nivel IP: medios únicamente implementan el nivel de red y el nivel IP: Ya hemos visto los conceptos básicos del nivel de red en el módulo anterior; Ya hemos visto los conceptos básicos del nivel de red en el módulo anterior; sin embargo, ahora ampliaremos algunos de los mismos (sobre todo los que sin embargo, ahora ampliaremos algunos de los mismos (sobre todo los que están relacionados con la asignación de direcciones). Del nivel de aplicación están relacionados con la asignación de direcciones). Del nivel de aplicación hablaremos ampliamente en otros módulos de esta asignatura. En este módu- hablaremos ampliamente en otros módulos de esta asignatura. En este módu- lo, veremos la parte central del modelo Internet, estudiaremos en primer lugar lo, veremos la parte central del modelo Internet, estudiaremos en primer lugar el IP y después el TCP. el IP y después el TCP. 1.1. Protocolos de Internet 1.1. Protocolos de Internet En cada uno de los niveles de la red expuestos encontramos protocolos dife- En cada uno de los niveles de la red expuestos encontramos protocolos dife- rentes. La situación relativa de cada protocolo en los diferentes niveles se rentes. La situación relativa de cada protocolo en los diferentes niveles se muestra en la figura siguiente: muestra en la figura siguiente: TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 11 TCP/IP: los protocolos de la red Internet Hay que tener en cuenta que el concepto nivel no existe en Internet. Este concepto se utiliza en otros modelos de red, como la OSI. No obstante, como es un concepto útil, en este módulo lo utilizaremos para plantear el estudio de FUOC • P03/75064/00977 11 Hay que tener en cuenta que el concepto nivel no existe en Internet. Este conConsultad el modelo OSI en el apartado 3 del módulo didáctico “Conceptos básicos de las redes de comunicaciones” de esta asignatura. cepto se utiliza en otros modelos de red, como la OSI. No obstante, como es un concepto útil, en este módulo lo utilizaremos para plantear el estudio de los diferentes protocolos de la manera siguiente: los diferentes protocolos de la manera siguiente: a) En primer lugar, estudiaremos ciertos aspectos básicos del nivel de red (en a) En primer lugar, estudiaremos ciertos aspectos básicos del nivel de red (en el caso particular de las LAN Ethernet, así como en los accesos por línea punto el caso particular de las LAN Ethernet, así como en los accesos por línea punto a punto con el protocolo PPP o con ADSL). a punto con el protocolo PPP o con ADSL). b) Después, nos centraremos en el IP y los protocolos que colaboran con el b) Después, nos centraremos en el IP y los protocolos que colaboran con el mismo: ARP e ICMP. mismo: ARP e ICMP. c) Por último, analizaremos los protocolos TCP y UDP. c) Por último, analizaremos los protocolos TCP y UDP. 1.2. Encapsulamiento 1.2. Encapsulamiento Será preciso saber, por ejemplo, qué implicaciones tiene el hecho de que un Será preciso saber, por ejemplo, qué implicaciones tiene el hecho de que un protocolo como el TCP, como se ve en la figura del subapartado anterior, vaya protocolo como el TCP, como se ve en la figura del subapartado anterior, vaya sobre otro protocolo, el IP, y que este último vaya, a su vez, sobre Ethernet. sobre otro protocolo, el IP, y que este último vaya, a su vez, sobre Ethernet. Cada uno de estos protocolos funciona con unas estructuras fundamentales Cada uno de estos protocolos funciona con unas estructuras fundamentales que genéricamente se conocen como PDU*. Sin embargo, en cada nivel se utilizan nombres diferentes para denominar lo que, de hecho, tiene funciones * PDU es la sigla de protocol data units. que genéricamente se conocen como PDU*. Sin embargo, en cada nivel se utilizan nombres diferentes para denominar lo que, de hecho, tiene funciones equivalentes: equivalentes: • Las PDU Ethernet o PPP se denominan tramas. • Las PDU Ethernet o PPP se denominan tramas. • Las PDU del nivel de interconexión (IP o ARP) se suelen denominar paquetes*. • En el nivel de transporte, se habla de segmentos en TCP, y de datagramas en * Sin embargo, por lo general las PDU ICMP se denominan mensajes, seguramente porque viajan en paquetes IP. UDP. • Las PDU del nivel de interconexión (IP o ARP) se suelen denominar paquetes*. • En el nivel de transporte, se habla de segmentos en TCP, y de datagramas en Consultad el modelo OSI en el apartado 3 del módulo didáctico “Conceptos básicos de las redes de comunicaciones” de esta asignatura. * PDU es la sigla de protocol data units. * Sin embargo, por lo general las PDU ICMP se denominan mensajes, seguramente porque viajan en paquetes IP. UDP. • En niveles superiores que utilizan UDP, por norma general se utiliza la pala- • En niveles superiores que utilizan UDP, por norma general se utiliza la pala- bra PDU (SNMP-PDU, por ejemplo). En el caso del TCP, el servicio que pro- bra PDU (SNMP-PDU, por ejemplo). En el caso del TCP, el servicio que pro- porciona a las aplicaciones es el flujo de bytes sin estructura (byte stream). Por porciona a las aplicaciones es el flujo de bytes sin estructura (byte stream). Por tanto, el concepto PDU deja de tener sentido en el nivel superior a TCP. tanto, el concepto PDU deja de tener sentido en el nivel superior a TCP. Todavía no hemos respondido, sin embargo, a la pregunta inicial. El resultado de Todavía no hemos respondido, sin embargo, a la pregunta inicial. El resultado de los diferentes encapsulamientos en cada nivel es que, cuando el nivel superior de- los diferentes encapsulamientos en cada nivel es que, cuando el nivel superior de- cide transmitir cierta información, se provoca una cascada de PDU que va descen- cide transmitir cierta información, se provoca una cascada de PDU que va descen- diendo hasta el nivel inferior, que finalmente es el que transmite físicamente los diendo hasta el nivel inferior, que finalmente es el que transmite físicamente los bits que resultan del mismo. bits que resultan del mismo. Longitud de la trama necesaria para transmitir un byte de información Veamos, a modo de ejemplo, la emulación de terminal que efectúa el programa Telnet y el protocolo que lleva el mismo nombre. Imaginemos que pulsamos una tecla sobre la ventana del programa telnet. Esta acción llega en forma de un byte único al nivel TCP. Este nivel encapsula dicho byte en un segmento TCP, que tendrá una cabecera de 20 bytes y un TCP/IP: los protocolos de la red Internet Longitud de la trama necesaria para transmitir un byte de información Telnet está disponible en todos los sitemas operativos habituales. Veamos, a modo de ejemplo, la emulación de terminal que efectúa el programa Telnet y el protocolo que lleva el mismo nombre. Imaginemos que pulsamos una tecla sobre la ventana del programa telnet. Esta acción llega en forma de un byte único al nivel TCP. Este nivel encapsula dicho byte en un segmento TCP, que tendrá una cabecera de 20 bytes y un Telnet está disponible en todos los sitemas operativos habituales. FUOC • P03/75064/00977 12 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 12 contenido que será el byte correspondiente a la tecla pulsada. Estos 21 bytes se transportarán dentro de un paquete IP que, generalmente, formará un paquete con 20 bytes de cabecera más el contenido ya mencionado de 21 bytes. Este paquete de 41 bytes irá, a su vez, dentro de una trama que lo transportará por su soporte físico de transmisión. Si el soporte de transmisión es una línea telefónica con un módem y utilizamos PPP, el resultado puede ser que le añadamos 8 bytes más. contenido que será el byte correspondiente a la tecla pulsada. Estos 21 bytes se transportarán dentro de un paquete IP que, generalmente, formará un paquete con 20 bytes de cabecera más el contenido ya mencionado de 21 bytes. Este paquete de 41 bytes irá, a su vez, dentro de una trama que lo transportará por su soporte físico de transmisión. Si el soporte de transmisión es una línea telefónica con un módem y utilizamos PPP, el resultado puede ser que le añadamos 8 bytes más. De todo ello resulta una trama de 49 bytes (8 + 20 + 20 + 1) de longitud para transmitir uno solo. La figura siguiente muestra esta estructura en: De todo ello resulta una trama de 49 bytes (8 + 20 + 20 + 1) de longitud para transmitir uno solo. La figura siguiente muestra esta estructura en: Un ejemplo esclarecedor del gráfico es el de las típicas muñecas rusas. TCP/IP: los protocolos de la red Internet Un ejemplo esclarecedor del gráfico es el de las típicas muñecas rusas. FUOC • P03/75064/00977 13 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 13 2. Redes de acceso a Internet 2. Redes de acceso a Internet Las redes de acceso a Internet más habituales son la red telefónica (por mó- Las redes de acceso a Internet más habituales son la red telefónica (por mó- dem) que se utiliza, sobre todo, en el ámbito doméstico, el ADSL* que, aunque utiliza la infraestructura de acceso de la red telefónica, no se puede decir que * ADSL es la sigla de línea de abonado digital asimètrica (asymetric digital subscriber line). vaya sobre la línea telefónica, y la Ethernet. 1) En accesos por medio de la red telefónica y, en general, en accesos por medio de redes conmutadas (incluyendo el acceso por la RDSI), se suele utilizar tualidad se han dejado prácticamente de lado en favor del PPP, que tiene más flexibilidad (permite gestionar automáticamente ciertos parámetros IP y mul- utiliza la infraestructura de acceso de la red telefónica, no se puede decir que * PPP es la sigla de point-to-point protocol. 1) En accesos por medio de la red telefónica y, en general, en accesos por medio de redes conmutadas (incluyendo el acceso por la RDSI), se suele utilizar * SLIP es la sigla de serial line Internet protocol. ** CSLIP es la sigla de compressed SLIP. Si bien durante mucho tiempo se han utilizado el SLIP* y el CSLIP**, en la actualidad se han dejado prácticamente de lado en favor del PPP, que tiene más flexibilidad (permite gestionar automáticamente ciertos parámetros IP y multiplexar, dentro de la misma conexión, diferentes protocolos de interco- nexión, aparte del IP) y es más fiable (dispone de CRC en cada trama). nexión, aparte del IP) y es más fiable (dispone de CRC en cada trama). 2) En LAN, el protocolo que se utiliza en más del 90% de los casos es la Ethernet. 2) En LAN, el protocolo que se utiliza en más del 90% de los casos es la Ethernet. Nosotros nos centraremos sólo en los detalles de las direcciones de dicho proto- Nosotros nos centraremos sólo en los detalles de las direcciones de dicho proto- colo, puesto que es lo único que afecta a la manera de funcionar del IP. colo, puesto que es lo único que afecta a la manera de funcionar del IP. Casi todos los protocolos de LAN que componen el 10% restante (IEEE802.3 Casi todos los protocolos de LAN que componen el 10% restante (IEEE802.3 CSMA/CD, IEEE802.5 Token Ring, etc.) utilizan una estructura de direcciones CSMA/CD, IEEE802.5 Token Ring, etc.) utilizan una estructura de direcciones puesto que la asignación de direcciones se hace globalmente para todas las * IEEE es la sigla de Institute of Electric and Electronic Engineers. idéntica a la de Ethernet. De hecho, podríamos hablar de compatibilidad, puesto que la asignación de direcciones se hace globalmente para todas las LAN mencionadas y la gestiona el IEEE*. LAN mencionadas y la gestiona el IEEE*. 2.1. Acceso telefónico: el PPP 2.1. Acceso telefónico: el PPP El PPP es fundamentalmente un protocolo derivado del HDLC* para conexiones balanceadas (HDLC-ABM**). El formato de la trama PPP se representa en la figura siguiente: * PPP es la sigla de point-to-point protocol. el protocolo PPP*. tiplexar, dentro de la misma conexión, diferentes protocolos de interco- idéntica a la de Ethernet. De hecho, podríamos hablar de compatibilidad, * ADSL es la sigla de línea de abonado digital asimètrica (asymetric digital subscriber line). vaya sobre la línea telefónica, y la Ethernet. el protocolo PPP*. Si bien durante mucho tiempo se han utilizado el SLIP* y el CSLIP**, en la ac- dem) que se utiliza, sobre todo, en el ámbito doméstico, el ADSL* que, aunque TCP/IP: los protocolos de la red Internet * HDLC es la sigla de high-level data link protocol. ** HDLC-ABM es la sigla de HDLCasynchronous balanced mode. El PPP es fundamentalmente un protocolo derivado del HDLC* para conexiones balanceadas (HDLC-ABM**). El formato de la trama PPP se representa en la figura siguiente: * SLIP es la sigla de serial line Internet protocol. ** CSLIP es la sigla de compressed SLIP. * IEEE es la sigla de Institute of Electric and Electronic Engineers. * HDLC es la sigla de high-level data link protocol. ** HDLC-ABM es la sigla de HDLCasynchronous balanced mode. FUOC • P03/75064/00977 14 Los campos Indicador (flag), Dirección y Control están fijados en los valores de la figura anterior. El campo Dirección tiene el valor 11111111, que es el de difusión o broadcast en la mayoría de los protocolos (por ejemplo, en todos los HDLC). Ello significa que este campo (como el de control) no se utiliza. Su utilización en el PPP sólo se puede justificar por el posible uso de tarjetas HDLC genéricas para conexiones PPP. Como cualquier protocolo HDLC, debe aplicar el mecanismo de transparencia de inserción de ceros (bit stuffing). El PPP especifica una variante orientada a carácter (los protocolos de la familia HDLC están orientados a bit), que es la que más se utiliza en enlaces por medio de módem (un contraejemplo serían las conexiones mediante la RDSI). Lo importante es lo que transportan las tramas PPP. El mismo estándar define la multiplexación de diferentes protocolos, que se distinguirán por medio del campo Tipo. Los que nos interesan son los siguientes: • LCP*: es el protocolo encargado de realizar el test del enlace, el control de la conexión y la gestión del enlace. TCP/IP: los protocolos de la red Internet Como el campo de control... ... está fijado (siempre vale 3), el PPP no distingue los diferentes tipos de tramas. Todas son de información, no hay confirmaciones ni tramas de establecimiento de enlace (es un protocolo no orientado a conexión). Lectura complementaria Si se utiliza el PPP sobre un enlace orientado a carácter, el mecanismo de transparencia es diferente del que hemos explicado. Podéis consultarlo en la obra siguiente: W.R. Stevens (1994). TCP/IP Illustrated (vol. 1: “The Protocols”). Wilmington: Addison-Wesley. * LCP es la sigla de link control protocol. FUOC • P03/75064/00977 14 Los campos Indicador (flag), Dirección y Control están fijados en los valores de la figura anterior. El campo Dirección tiene el valor 11111111, que es el de difusión o broadcast en la mayoría de los protocolos (por ejemplo, en todos los HDLC). Ello significa que este campo (como el de control) no se utiliza. Su utilización en el PPP sólo se puede justificar por el posible uso de tarjetas HDLC genéricas para conexiones PPP. Como cualquier protocolo HDLC, debe aplicar el mecanismo de transparencia de inserción de ceros (bit stuffing). El PPP especifica una variante orientada a carácter (los protocolos de la familia HDLC están orientados a bit), que es la que más se utiliza en enlaces por medio de módem (un contraejemplo serían las conexiones mediante la RDSI). Lo importante es lo que transportan las tramas PPP. El mismo estándar define la multiplexación de diferentes protocolos, que se distinguirán por medio del campo Tipo. Los que nos interesan son los siguientes: • LCP*: es el protocolo encargado de realizar el test del enlace, el control de la conexión y la gestión del enlace. • Protocolos de red: son tramas que encapsulan paquetes de nivel superior, • Protocolos de red: son tramas que encapsulan paquetes de nivel superior, como puede ser IP. Pero también pueden transportar NETBEUI, AppleTalk, como puede ser IP. Pero también pueden transportar NETBEUI, AppleTalk, Decnet, etc. Decnet, etc. • NCP*: es el protocolo que se utiliza para tareas de gestión de los protocolos de red que transporta el enlace. En el caso del IP, permite que uno de los * NCP es la sigla de network control protocol. • NCP*: es el protocolo que se utiliza para tareas de gestión de los protocolos de red que transporta el enlace. En el caso del IP, permite que uno de los terminales asigne la dirección de Internet al otro y configure los diferentes terminales asigne la dirección de Internet al otro y configure los diferentes parámetros de la red (direccionador, máscara, etc.) parámetros de la red (direccionador, máscara, etc.) TCP/IP: los protocolos de la red Internet Como el campo de control... ... está fijado (siempre vale 3), el PPP no distingue los diferentes tipos de tramas. Todas son de información, no hay confirmaciones ni tramas de establecimiento de enlace (es un protocolo no orientado a conexión). Lectura complementaria Si se utiliza el PPP sobre un enlace orientado a carácter, el mecanismo de transparencia es diferente del que hemos explicado. Podéis consultarlo en la obra siguiente: W.R. Stevens (1994). TCP/IP Illustrated (vol. 1: “The Protocols”). Wilmington: Addison-Wesley. * LCP es la sigla de link control protocol. * NCP es la sigla de network control protocol. 15 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 2.1.1. Compresión de las cabeceras Como ya hemos visto, la pirámide de PDU provoca ineficiencias en la transmisión, sobre todo en protocolos como Telnet, que con frecuencia envían blo- 15 FUOC • P03/75064/00977 2.1.1. Compresión de las cabeceras Consultad la pirámide PDU en el subapartado 1.3 de este módulo didáctico. Como ya hemos visto, la pirámide de PDU provoca ineficiencias en la transmisión, sobre todo en protocolos como Telnet, que con frecuencia envían blo- ques muy cortos de información. Asimismo, el PPP se ha utilizado en enlaces ques muy cortos de información. Asimismo, el PPP se ha utilizado en enlaces telefónicos que funcionan a velocidades máximas teóricas de entre 9.600 bps telefónicos que funcionan a velocidades máximas teóricas de entre 9.600 bps (módems norma V.32) y 33.600 bps (módems norma V.34). Ello hace que di- (módems norma V.32) y 33.600 bps (módems norma V.34). Ello hace que di- cha ineficiencia sea todavía más grave. cha ineficiencia sea todavía más grave. Velocidades de transmisión de datos con Telnet Velocidades de transmisión de datos con Telnet Si se utiliza Telnet, para enviar un carácter (de 1 byte) debemos enviar 8 + 20 + 20 + 1 = = 49 bytes. Con un módem de 9.600 bps, si utilizáramos mensajes de 8 bits de longitud más 1 bit de arranque y 1 bit de parada, podríamos transmitir: Si se utiliza Telnet, para enviar un carácter (de 1 byte) debemos enviar 8 + 20 + 20 + 1 = = 49 bytes. Con un módem de 9.600 bps, si utilizáramos mensajes de 8 bits de longitud más 1 bit de arranque y 1 bit de parada, podríamos transmitir: 9.600 / (1 + 8 + 1) = 960 caracteres/segundo. 9.600 / (1 + 8 + 1) = 960 caracteres/segundo. Con las limitaciones impuestas por las cabeceras, sólo podremos transmitir: 9.600 / (1 + 8 + 1) · (1 / 49) = 19,5 caracteres/segundo. De hecho, nadie es capaz de mecanografiar tan rápido. Sin embargo, no debemos perder de vista que el enlace puede ser compartido por otras conexiones (transferencia de ficheros, consulta de la web, etc.). De hecho, nadie es capaz de mecanografiar tan rápido. Sin embargo, no debemos perder de vista que el enlace puede ser compartido por otras conexiones (transferencia de ficheros, consulta de la web, etc.). La compresión de cabeceras Van Jacobson mejora considerablemente este La compresión de cabeceras Van Jacobson mejora considerablemente este problema. Este tipo de compresión se basa en el hecho de que en un acceso a problema. Este tipo de compresión se basa en el hecho de que en un acceso a Internet con PPP, en general no habrá demasiadas conexiones TCP simultá- Internet con PPP, en general no habrá demasiadas conexiones TCP simultá- neas. La compresión Van Jacobson permite mantener una tabla de hasta dieci- neas. La compresión Van Jacobson permite mantener una tabla de hasta dieci- séis conexiones simultáneas TCP/IP, a las que asignará dieciséis identificadores séis conexiones simultáneas TCP/IP, a las que asignará dieciséis identificadores diferentes. Como la mayoría de los campos de las dos cabeceras TCP/IP no va- diferentes. Como la mayoría de los campos de las dos cabeceras TCP/IP no va- rían durante el transcurso de una misma conexión, basta con tener entre 3 y rían durante el transcurso de una misma conexión, basta con tener entre 3 y 5 bytes de cabecera para cada paquete (combinando PPP y TCP/IP) para mante- 5 bytes de cabecera para cada paquete (combinando PPP y TCP/IP) para mante- ner un funcionamiento correcto de la conexión. La ganancia en eficiencia de ner un funcionamiento correcto de la conexión. La ganancia en eficiencia de la transmisión es suficientemente importante. la transmisión es suficientemente importante. Para saber con exactitud qué ganancia se consigue, precisamos saber qué lon- Para saber con exactitud qué ganancia se consigue, precisamos saber qué lon- gitud pueden tener las tramas PPP. gitud pueden tener las tramas PPP. Por medio del LCP también pueden obtenerse otras mejoras como, por ejem- Por medio del LCP también pueden obtenerse otras mejoras como, por ejem- plo, la eliminación de los campos de control y de dirección. plo, la eliminación de los campos de control y de dirección. 2.1.2. MTU 2.1.2. MTU que llamaremos MTU*, está determinada por diferentes factores según el caso. Consultad la pirámide PDU en el subapartado 1.3 de este módulo didáctico. Con las limitaciones impuestas por las cabeceras, sólo podremos transmitir: 9.600 / (1 + 8 + 1) · (1 / 49) = 19,5 caracteres/segundo. Muchos protocolos poseen una longitud máxima de transmisión. Esta última, TCP/IP: los protocolos de la red Internet * MTU es la sigla de maximum transfer unit. Muchos protocolos poseen una longitud máxima de transmisión. Esta última, que llamaremos MTU*, está determinada por diferentes factores según el caso. En el PPP (que es lo que ahora nos interesa), encontramos un protocolo deri- En el PPP (que es lo que ahora nos interesa), encontramos un protocolo deri- vado del HDLC. Este último no impone ningún límite en la MTU de las tra- vado del HDLC. Este último no impone ningún límite en la MTU de las tra- mas; en teoría, podríamos hacerlas tan largas como la probabilidad de error mas; en teoría, podríamos hacerlas tan largas como la probabilidad de error nos permita (la probabilidad de error en uno de los bits de la trama no debería nos permita (la probabilidad de error en uno de los bits de la trama no debería ser demasiado alta). ser demasiado alta). * MTU es la sigla de maximum transfer unit. FUOC • P03/75064/00977 16 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 16 Sin embargo, existe un factor que limitará la MTU más que los límites impues- Sin embargo, existe un factor que limitará la MTU más que los límites impues- tos por los protocolos: el confort de la conexión. Se ha demostrado que, en tos por los protocolos: el confort de la conexión. Se ha demostrado que, en conexiones en tiempo real (como una conexión Telnet), el usuario debe reci- conexiones en tiempo real (como una conexión Telnet), el usuario debe reci- bir una reacción a sus acciones en una décima de segundo como máximo. Re- bir una reacción a sus acciones en una décima de segundo como máximo. Re- trasos superiores provocan cansancio y dan la sensación de que “la máquina trasos superiores provocan cansancio y dan la sensación de que “la máquina va lenta”, que todos hemos experimentado alguna vez. va lenta”, que todos hemos experimentado alguna vez. Si pensamos que dentro de la misma conexión podemos tener multiplexadas Si pensamos que dentro de la misma conexión podemos tener multiplexadas otras de transferencia (como FTP o web), nos encontraremos que los paquetes otras de transferencia (como FTP o web), nos encontraremos que los paquetes de las aplicaciones en tiempo real, que suelen ser cortos, deben esperarse de- de las aplicaciones en tiempo real, que suelen ser cortos, deben esperarse de- trás de los paquetes de longitud máxima que se utilizan en las aplicaciones que trás de los paquetes de longitud máxima que se utilizan en las aplicaciones que tienen una tasa de transmisión elevada (supondremos que los paquetes de la tienen una tasa de transmisión elevada (supondremos que los paquetes de la aplicación en tiempo real tienen preferencia sobre otros que previamente es- aplicación en tiempo real tienen preferencia sobre otros que previamente es- tuvieran en la cola de salida). tuvieran en la cola de salida). La única manera de hacer que una aplicación estándar de transferencia utilice La única manera de hacer que una aplicación estándar de transferencia utilice paquetes más pequeños es reducir la MTU de la conexión. En el caso del PPP, paquetes más pequeños es reducir la MTU de la conexión. En el caso del PPP, si tomamos como referencia un módem de 33.600 bps, tenemos que un pa- si tomamos como referencia un módem de 33.600 bps, tenemos que un pa- quete de una décima de segundo de duración tendría los bytes siguientes: quete de una décima de segundo de duración tendría los bytes siguientes: 33.600 bps · (0,1 s) · (1 byte / 8 bits) = 420 bytes. 33.600 bps · (0,1 s) · (1 byte / 8 bits) = 420 bytes. En conexiones PPP tendremos, pues, la MTU entre 250 y 500 bytes. Con módems En conexiones PPP tendremos, pues, la MTU entre 250 y 500 bytes. Con módems que dispongan de compresión, los valores que obtendremos pueden aumentar. que dispongan de compresión, los valores que obtendremos pueden aumentar. Módems para línea telefónica Módems para línea telefónica Las velocidades de transmisión de los módems estándar son 9.600 bps (V.32), 14.400 bps (V.32bis) y 33.600 bps (V.34). Las velocidades de transmisión de los módems estándar son 9.600 bps (V.32), 14.400 bps (V.32bis) y 33.600 bps (V.34). En general, los módems disponen de dispositivos electrónicos para comprimir y descomprimir datos. Los estándares V.42bis y MNP9 realizan compresiones de hasta 1:4, con lo que pueden lograr velocidades de transmisión efectiva de hasta 134.400 bps (V.34 + V.42bis) en situaciones favorables. En general, los módems disponen de dispositivos electrónicos para comprimir y descomprimir datos. Los estándares V.42bis y MNP9 realizan compresiones de hasta 1:4, con lo que pueden lograr velocidades de transmisión efectiva de hasta 134.400 bps (V.34 + V.42bis) en situaciones favorables. Hay módems (los que siguen el estándar V.90) que pueden lograr velocidades de hasta 56 kbps. En realidad, no son módems en el sentido estricto, puesto que necesitan que en el otro extremo de la línea haya un codec conectado a una línea digital. Hay módems (los que siguen el estándar V.90) que pueden lograr velocidades de hasta 56 kbps. En realidad, no son módems en el sentido estricto, puesto que necesitan que en el otro extremo de la línea haya un codec conectado a una línea digital. 2.2. Acceso ADSL 2.2. Acceso ADSL Si bien el acceso a Internet por módem por medio de PPP ha sido la manera ha- Si bien el acceso a Internet por módem por medio de PPP ha sido la manera ha- bitual de conexión por parte de los usuarios domésticos y las pequeñas empresas bitual de conexión por parte de los usuarios domésticos y las pequeñas empresas durante la primera “década Internet”, parece que ello cambiará y en la segunda durante la primera “década Internet”, parece que ello cambiará y en la segunda “década Internet” se adoptarán sistemas que faciliten la conexión permanente. “década Internet” se adoptarán sistemas que faciliten la conexión permanente. La conexión por módem ocupa la línea de teléfono del abonado y, lo que todavía es peor, establece una llamada durante un tiempo indefinido. La conexión por módem ocupa la línea de teléfono del abonado y, lo que todavía es peor, establece una llamada durante un tiempo indefinido. El ADSL representa una solución a este problema, puesto que, por un lado El ADSL representa una solución a este problema, puesto que, por un lado (aunque utiliza el cableado de la línea telefónica, el bucle de abonado), la línea (aunque utiliza el cableado de la línea telefónica, el bucle de abonado), la línea telefónica queda libre para llamadas mientras se está conectado a Internet y, telefónica queda libre para llamadas mientras se está conectado a Internet y, TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 17 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 17 por otro, la conexión no consume recursos de la red telefónica, puesto que, por otro, la conexión no consume recursos de la red telefónica, puesto que, cuando la señal llega a la centralita, se extrae del bucle de abonado y pasa a la cuando la señal llega a la centralita, se extrae del bucle de abonado y pasa a la red IP de la operadora. red IP de la operadora. En general, el direccionador que hay en el domicilio del usuario ofrece una co- En general, el direccionador que hay en el domicilio del usuario ofrece una co- nexión Ethernet equivalente a un concentrador, lo que permite que el abona- nexión Ethernet equivalente a un concentrador, lo que permite que el abona- do conecte más de un ordenador por medio de la línea ADSL. do conecte más de un ordenador por medio de la línea ADSL. Para permitir que la línea telefónica conviva con la conexión a Internet Para permitir que la línea telefónica conviva con la conexión a Internet permanente, se realiza una división del espectro: la parte baja continúa permanente, se realiza una división del espectro: la parte baja continúa ocupada por el canal de voz (hasta 4 kHz) y, a partir de aquí, se sitúa el es- ocupada por el canal de voz (hasta 4 kHz) y, a partir de aquí, se sitúa el es- pectro de la codificación ADSL (con la limitación propia del par de hilos). pectro de la codificación ADSL (con la limitación propia del par de hilos). El sistema es bidireccional: reserva el espectro bajo para la salida a la red, y El sistema es bidireccional: reserva el espectro bajo para la salida a la red, y el resto, para la entrada: el resto, para la entrada: Algunas operadoras,... TCP/IP: los protocolos de la red Internet Algunas operadoras,... ... para aprovechar mejor líneas malas, utilizan una variante del estándar que permite la transmisión bidireccional con los dos canales en la misma banda. ... para aprovechar mejor líneas malas, utilizan una variante del estándar que permite la transmisión bidireccional con los dos canales en la misma banda. Esta solución, aunque necesita DCE más caros, permite aprovechar líneas con peores condiciones y/u obtener velocidades más altas. Esta solución, aunque necesita DCE más caros, permite aprovechar líneas con peores condiciones y/u obtener velocidades más altas. Generalmente, no se puede llegar a los 1,1 MHz que indica la figura, puesto que Generalmente, no se puede llegar a los 1,1 MHz que indica la figura, puesto que la calidad del par de hilos es muy variable (clima, longitud, edad, etc.), por lo la calidad del par de hilos es muy variable (clima, longitud, edad, etc.), por lo que se utiliza una codificación adaptativa: los dos sentidos del canal se dividen que se utiliza una codificación adaptativa: los dos sentidos del canal se dividen en subbandas de 4 kHz independientes (DMT, discrete multitone) que se codifi- en subbandas de 4 kHz independientes (DMT, discrete multitone) que se codifi- can (en realidad, se modulan) con procedimientos casi idénticos a los utiliza- can (en realidad, se modulan) con procedimientos casi idénticos a los utiliza- dos por los módems tradicionales. Con ello, se consiguen treinta y dos canales dos por los módems tradicionales. Con ello, se consiguen treinta y dos canales de salida y hasta doscientos cintuenta y seis de entrada, con una capacidad de de salida y hasta doscientos cintuenta y seis de entrada, con una capacidad de 60 kbps cada uno de los mismos –modulados en QAM (quadrature amplitude mo- 60 kbps cada uno de los mismos –modulados en QAM (quadrature amplitude mo- dulation), como los módems telefónicos– que, acumulados, proporcionan un dulation), como los módems telefónicos– que, acumulados, proporcionan un máximo de 1,92 Mbps de entrada y 15,36 Mbps de salida. máximo de 1,92 Mbps de entrada y 15,36 Mbps de salida. FUOC • P03/75064/00977 18 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 18 No obstante, las mejores conexiones no consiguen aprovechar correctamente No obstante, las mejores conexiones no consiguen aprovechar correctamente los canales superiores y se considera que el límite máximo de salida es de 8 Mbps. los canales superiores y se considera que el límite máximo de salida es de 8 Mbps. Asimismo, las operadoras no suelen ofrecer conexiones tan rápidas, lo que Asimismo, las operadoras no suelen ofrecer conexiones tan rápidas, lo que hace que no se pueda lograr el límite teórico. hace que no se pueda lograr el límite teórico. Los protocolos utilizados dentro del ADSL dependen de la operadora y no es- Los protocolos utilizados dentro del ADSL dependen de la operadora y no es- tán definidos por el estándar. Entre los posibles protocolos para el ADSL, tene- tán definidos por el estándar. Entre los posibles protocolos para el ADSL, tene- mos el ATM y el mismo PPP. mos el ATM y el mismo PPP. 2.3. Acceso LAN: el protocolo Ethernet 2.3. Acceso LAN: el protocolo Ethernet Seguramente, la simplicidad de este protocolo de red, y no sus prestaciones Seguramente, la simplicidad de este protocolo de red, y no sus prestaciones teóricas, ha hecho que sea el más utilizado en redes de área local prácticamen- teóricas, ha hecho que sea el más utilizado en redes de área local prácticamen- te desde que DEC, Intel y Xerox establecieron un estándar (de facto) para LAN te desde que DEC, Intel y Xerox establecieron un estándar (de facto) para LAN con control de acceso al medio CSMA/CD, basándose en una arquitectura si- con control de acceso al medio CSMA/CD, basándose en una arquitectura si- milar desarrollada los años setenta por Xerox. milar desarrollada los años setenta por Xerox. Hay un principio que se cumple en todas las redes de área local: lo que Hay un principio que se cumple en todas las redes de área local: lo que una estación transmite es recibido por todas las demás. Una estación sabe una estación transmite es recibido por todas las demás. Una estación sabe cuando una trama le va destinada porque lee todas las que le llegan y com- cuando una trama le va destinada porque lee todas las que le llegan y com- prueba la dirección de destino. Tiene que rechazar todas las tramas con prueba la dirección de destino. Tiene que rechazar todas las tramas con direcciones que no sean la suya. Sin embargo, también hay excepcio- direcciones que no sean la suya. Sin embargo, también hay excepcio- nes, y en algunos casos las estaciones también deben capturar tramas di- nes, y en algunos casos las estaciones también deben capturar tramas di- rigidas a direcciones especiales (como las multicast y las broadcast). rigidas a direcciones especiales (como las multicast y las broadcast). Configuración de la tarjeta de red en modo promiscuo Configuración de la tarjeta de red en modo promiscuo Uno de los casos en el que una estación no rechaza las tramas con direcciones diferentes de la suya es cuando la estación configura la tarjeta de red en modo promiscuo. En este modo, la tarjeta inhabilita su capacidad de filtrado y lee todas las tramas que pasan por la red. Equipos que, generalmente, funcionan en este modo son los puentes (bridges, sistemas destinados a la interconexión de LAN), los analizadores de tráfico (o analizadores de red) o los conmutadores (switches). No obstante, casi todas las tarjetas se pueden configurar en modo promiscuo, lo que con frecuencia es aprovechado por los ladrones de información (hackers) para leer y copiar información interesante que viaje por la LAN (principalmente contraseñas). Uno de los casos en el que una estación no rechaza las tramas con direcciones diferentes de la suya es cuando la estación configura la tarjeta de red en modo promiscuo. En este modo, la tarjeta inhabilita su capacidad de filtrado y lee todas las tramas que pasan por la red. Equipos que, generalmente, funcionan en este modo son los puentes (bridges, sistemas destinados a la interconexión de LAN), los analizadores de tráfico (o analizadores de red) o los conmutadores (switches). No obstante, casi todas las tarjetas se pueden configurar en modo promiscuo, lo que con frecuencia es aprovechado por los ladrones de información (hackers) para leer y copiar información interesante que viaje por la LAN (principalmente contraseñas). 2.3.1. Formato de la trama Ethernet 2.3.1. Formato de la trama Ethernet La manera de conocer las principales características de la trama Ethernet es ver La manera de conocer las principales características de la trama Ethernet es ver los diferentes campos que la forman, que son los siguientes: los diferentes campos que la forman, que son los siguientes: TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 19 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 19 a) Preámbulo: está formado por 64 bits, alternativamente 0 y 1. Los dos últimos a) Preámbulo: está formado por 64 bits, alternativamente 0 y 1. Los dos últimos son 11. Ello genera una señal cuadrada que permite a los terminales sincronizar son 11. Ello genera una señal cuadrada que permite a los terminales sincronizar adecuadamente los relojes de sincronismo de bit. Los dos últimos bits señalan adecuadamente los relojes de sincronismo de bit. Los dos últimos bits señalan dónde empieza la trama (sincronismo de trama). Su forma es idéntica en todas las dónde empieza la trama (sincronismo de trama). Su forma es idéntica en todas las tramas. Nosotros obviaremos su presencia en el resto de la explicación, puesto tramas. Nosotros obviaremos su presencia en el resto de la explicación, puesto que sólo son una señal para marcar el inicio de la trama. que sólo son una señal para marcar el inicio de la trama. b) Dirección de origen: lleva la dirección física o dirección MAC del transmi- b) Dirección de origen: lleva la dirección física o dirección MAC del transmi- sor de la trama. Son 48 bits diferentes para cualquier terminal de la red Ethernet. sor de la trama. Son 48 bits diferentes para cualquier terminal de la red Ethernet. c) Dirección de destino: lleva la dirección MAC del destinatario especificada c) Dirección de destino: lleva la dirección MAC del destinatario especificada de la misma manera (en el mismo formato) que la dirección de origen. En este de la misma manera (en el mismo formato) que la dirección de origen. En este caso, sin embargo, tenemos tres tipos de direcciones posibles: unicast, multicast caso, sin embargo, tenemos tres tipos de direcciones posibles: unicast, multicast y broadcast. y broadcast. d) Tipo: indica el tipo de contenido del campo de datos que lleva la trama*. Permite multiplexar diferentes protocolos dentro de una misma LAN. Xerox * Las tramas que transportan paquetes IP llevan un 0x0800. d) Tipo: indica el tipo de contenido del campo de datos que lleva la trama*. Permite multiplexar diferentes protocolos dentro de una misma LAN. Xerox actualiza regularmente la lista de protocolos registrados (Xerox Public Ethernet actualiza regularmente la lista de protocolos registrados (Xerox Public Ethernet Packet Type). Más adelante veremos las variedades de protocolos de Ethernet Packet Type). Más adelante veremos las variedades de protocolos de Ethernet para conocer las variantes de Ethernet semicompatibles y saber cómo afecta su para conocer las variantes de Ethernet semicompatibles y saber cómo afecta su coexistencia a la manera como Ethernet ha tenido que definir el campo Tipo. coexistencia a la manera como Ethernet ha tenido que definir el campo Tipo. Actividad Actividad • Consultad la lista de los protocolos registrados para haceros una idea de la cantidad de protocolos de red (los superiores a Ethernet) que hay. • Consultad la lista de los protocolos registrados para haceros una idea de la cantidad de protocolos de red (los superiores a Ethernet) que hay. e) Datos: se refiere al formato del campo de datos. Las restricciones sobre el e) Datos: se refiere al formato del campo de datos. Las restricciones sobre el tipo de datos que puede transportar Ethernet son las siguientes: tipo de datos que puede transportar Ethernet son las siguientes: • La longitud de los datos debe ser múltiple de 8 bits; es decir, Ethernet trans- • La longitud de los datos debe ser múltiple de 8 bits; es decir, Ethernet trans- porta la información en bytes. Ello no es ningún impedimento, puesto que porta la información en bytes. Ello no es ningún impedimento, puesto que los bits los envían sistemas que, por norma general, trabajan con bytes o los bits los envían sistemas que, por norma general, trabajan con bytes o múltiplos de bytes. múltiplos de bytes. • Del mismo modo que PPP, Ethernet tiene limitada la longitud máxima de • Del mismo modo que PPP, Ethernet tiene limitada la longitud máxima de información transportable por la trama (MTU). En este caso, la MTU es de información transportable por la trama (MTU). En este caso, la MTU es de 1.500 bytes. Esta limitación tiene como objetivo evitar que una estación 1.500 bytes. Esta limitación tiene como objetivo evitar que una estación monopolice la LAN. monopolice la LAN. • El campo de datos debe tener como mínimo 46 bytes de longitud*. Ello se debe al hecho de que es preciso que la trama mínima Ethernet tenga * Para Gigabit Ethernet, este mínimo es de 512 bytes. • El campo de datos debe tener como mínimo 46 bytes de longitud*. Ello se debe al hecho de que es preciso que la trama mínima Ethernet tenga 64 bytes (512 bits). Se considera que las tramas inferiores son resultado de 64 bytes (512 bits). Se considera que las tramas inferiores son resultado de colisiones y son obviadas por los receptores. colisiones y son obviadas por los receptores. Este problema no se plantea en la variante de Ethernet IEEE802.3, puesto que Este problema no se plantea en la variante de Ethernet IEEE802.3, puesto que este protocolo dispone de un campo de longitud y otro de relleno (padding) este protocolo dispone de un campo de longitud y otro de relleno (padding) TCP/IP: los protocolos de la red Internet * Las tramas que transportan paquetes IP llevan un 0x0800. * Para Gigabit Ethernet, este mínimo es de 512 bytes. FUOC • P03/75064/00977 20 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 20 que permiten transmitir datos de hasta 1 byte de longitud, aunque la longitud que permiten transmitir datos de hasta 1 byte de longitud, aunque la longitud que físicamente se transmite continúa siendo de 64 bytes. que físicamente se transmite continúa siendo de 64 bytes. Actividad Actividad • Imaginad qué sucedería si una estación quisiera enviar un fichero de 1 GB por la LAN dentro de una sola trama. • Imaginad qué sucedería si una estación quisiera enviar un fichero de 1 GB por la LAN dentro de una sola trama. f) CRC: es un código de redundancia cíclica de 32 bits (CRC-32) para la de- f) CRC: es un código de redundancia cíclica de 32 bits (CRC-32) para la de- tección de errores. Abarca toda la trama a excepción del preámbulo. Las tra- tección de errores. Abarca toda la trama a excepción del preámbulo. Las tra- mas que no poseen un CRC correcto se ignoran (como las tramas de menos de mas que no poseen un CRC correcto se ignoran (como las tramas de menos de 64 bytes y las que no son múltiples de 8 bits). 64 bytes y las que no son múltiples de 8 bits). Tipos de medios físicos en Ethernet Tipos de medios físicos en Ethernet Ethernet se ha ido adaptando a las necesidades del tiempo ampliando los subestándares de nivel físico. A continuación, mostramos una lista de los estándares más utilizados: Ethernet se ha ido adaptando a las necesidades del tiempo ampliando los subestándares de nivel físico. A continuación, mostramos una lista de los estándares más utilizados: • 10Base2: alcance de 185 m, ó 925 m con repetidores, pero con coaxial delgado, flexible y barato (por ello, durante muchos años esta red se ha denominado Cheapernet). aunque hoy día se tiende gradualmente a dejarlo de lado en favor de 10BaseT –que es mucho más fiable–, millones de terminales en todo el mundo están conectados con Ethernet-10Base2. Se utiliza sobre todo en topologías en bus. • 10Base2: alcance de 185 m, ó 925 m con repetidores, pero con coaxial delgado, flexible y barato (por ello, durante muchos años esta red se ha denominado Cheapernet). aunque hoy día se tiende gradualmente a dejarlo de lado en favor de 10BaseT –que es mucho más fiable–, millones de terminales en todo el mundo están conectados con Ethernet-10Base2. Se utiliza sobre todo en topologías en bus. • 10BaseT: conexión en estrella de las estaciones a un nudo central (concentrador o hub) por medio de par trenzado; la distancia máxima de la estación al concentrador es de 100 m. La distancia máxima entre estaciones se consigue encadenando cuatro concentradores, y es de 500 m. • 10BaseT: conexión en estrella de las estaciones a un nudo central (concentrador o hub) por medio de par trenzado; la distancia máxima de la estación al concentrador es de 100 m. La distancia máxima entre estaciones se consigue encadenando cuatro concentradores, y es de 500 m. Representa una mejora importante respecto a los estándares anteriores, puesto que se centralizan en un solo punto la gestión y la monitorización del estado de toda la LAN. Asimismo, con las topologías en bus, el mal funcionamiento de una estación podía comportar el bloqueo de toda la red. Con 10BaseT, una mala conexión de un terminal es detectada por el concentrador, que simplemente la desconecta e indica que el enlace a la estación está cortado o inactivo (con una luz roja, por ejemplo). Representa una mejora importante respecto a los estándares anteriores, puesto que se centralizan en un solo punto la gestión y la monitorización del estado de toda la LAN. Asimismo, con las topologías en bus, el mal funcionamiento de una estación podía comportar el bloqueo de toda la red. Con 10BaseT, una mala conexión de un terminal es detectada por el concentrador, que simplemente la desconecta e indica que el enlace a la estación está cortado o inactivo (con una luz roja, por ejemplo). • 10BaseF: similar a 10BaseT; sin embargo, en lugar de par trenzado, utiliza fibra óptica (generalmente, multimodo), con que se consigue un alcance mucho mayor (hasta 2 km). • 10BaseF: similar a 10BaseT; sin embargo, en lugar de par trenzado, utiliza fibra óptica (generalmente, multimodo), con que se consigue un alcance mucho mayor (hasta 2 km). • 100BaseT y 100BaseF: similares a 10BaseT y 10BaseF, respectivamente; sin embargo, funcionan a 100 Mbps. A causa del protocolo de control de acceso al medio CSMA/CD, el alcance se reduce mucho (100 m entre estación y concentrador, sin posibilidad de encadenar concentradores). • 100BaseT y 100BaseF: similares a 10BaseT y 10BaseF, respectivamente; sin embargo, funcionan a 100 Mbps. A causa del protocolo de control de acceso al medio CSMA/CD, el alcance se reduce mucho (100 m entre estación y concentrador, sin posibilidad de encadenar concentradores). • Gigabit Ethernet: Las variantes más comunes son 1000BaseT, sobre cableado de cobre categoría 5 (equivalente al necesario para 100BaseT) y 1000BaseSX, sobre fibra. Tiene el mismo alcance que 100BaseT, 100 m. • Gigabit Ethernet: Las variantes más comunes son 1000BaseT, sobre cableado de cobre categoría 5 (equivalente al necesario para 100BaseT) y 1000BaseSX, sobre fibra. Tiene el mismo alcance que 100BaseT, 100 m. • 10 Gigabit Ethernet: actualización de Ethernet para el siglo XXI. • 10 Gigabit Ethernet: actualización de Ethernet para el siglo XXI. Variantes del protocolo Ethernet Variantes del protocolo Ethernet Desde mediados de los años ochenta Ethernet ha convivido con una variante similar denominada IEEE802.3 o ISO8802.3. Son estándares establecidos por organizaciones reconocidas (el IEEE y la ISO) dedicadas a la normalización (estándar de jure). Durante un tiempo se pensó que el IEEE802.3 acabaría sustituyendo a la Ethernet original (también denominada Ethernet-DIX, en honor a DEC, Intel y Xerox), que no podía transmitir tramas arbitrariamente pequeñas. Los protocolos que trabajan sobre Ethernet-DIX conocen esta limitación y llenan la trama hasta ocupar los 46 bytes de información. Desde mediados de los años ochenta Ethernet ha convivido con una variante similar denominada IEEE802.3 o ISO8802.3. Son estándares establecidos por organizaciones reconocidas (el IEEE y la ISO) dedicadas a la normalización (estándar de jure). Durante un tiempo se pensó que el IEEE802.3 acabaría sustituyendo a la Ethernet original (también denominada Ethernet-DIX, en honor a DEC, Intel y Xerox), que no podía transmitir tramas arbitrariamente pequeñas. Los protocolos que trabajan sobre Ethernet-DIX conocen esta limitación y llenan la trama hasta ocupar los 46 bytes de información. El IEEE802.3 introduce un campo de longitud (en la misma posición en que Ethernet tiene el campo de tipo) que permite saber cuántos bytes útiles contiene el campo de datos. Si la longitud no llega a los 46 bytes mínimos, se llena con bytes (indefinidos) hasta llegar al mínimo. El receptor sólo debe leer el campo de longitud para extraer la información válida del mismo. El concepto de tipo de Ethernet (es decir, la coexistencia de diferentes El IEEE802.3 introduce un campo de longitud (en la misma posición en que Ethernet tiene el campo de tipo) que permite saber cuántos bytes útiles contiene el campo de datos. Si la longitud no llega a los 46 bytes mínimos, se llena con bytes (indefinidos) hasta llegar al mínimo. El receptor sólo debe leer el campo de longitud para extraer la información válida del mismo. El concepto de tipo de Ethernet (es decir, la coexistencia de diferentes TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 21 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 21 protocolos por encima de Ethernet/IEEE802.3) se delega a un protocolo asociado: el IEEE802.2, protocolo de enlace que se puede utilizar en el IEEE802.3 y en otros protocolos de LAN y que posee unas funciones similares a las del HDLC. protocolos por encima de Ethernet/IEEE802.3) se delega a un protocolo asociado: el IEEE802.2, protocolo de enlace que se puede utilizar en el IEEE802.3 y en otros protocolos de LAN y que posee unas funciones similares a las del HDLC. Como en el nivel físico ambos estándares son totalmente compatibles, podríamos preguntarnos si pueden coexistir tramas Ethernet-DIX e IEEE802.3 dentro de una misma LAN. La respuesta es que sí y que no al mismo tiempo. Como en el nivel físico ambos estándares son totalmente compatibles, podríamos preguntarnos si pueden coexistir tramas Ethernet-DIX e IEEE802.3 dentro de una misma LAN. La respuesta es que sí y que no al mismo tiempo. Fijaos en que todos los campos de la trama Ethernet y de la 802.3 son del mismo formato y significan lo mismo, a excepción del campo de tipo (Ethernet) y de longitud (802.3). Podríamos distinguirlos siempre que vigiláramos que ningún tipo Ethernet fuera equivalente a una longitud válida de 802.3. Los tipos con valores inferiores a 1.500 (0x5DC en hexadecimal) pueden confundirse con longitudes válidas. Fijaos en que todos los campos de la trama Ethernet y de la 802.3 son del mismo formato y significan lo mismo, a excepción del campo de tipo (Ethernet) y de longitud (802.3). Podríamos distinguirlos siempre que vigiláramos que ningún tipo Ethernet fuera equivalente a una longitud válida de 802.3. Los tipos con valores inferiores a 1.500 (0x5DC en hexadecimal) pueden confundirse con longitudes válidas. Ello, obviamente, no podía tenerse en cuenta en la Ethernet-DIX original, puesto que es anterior al IEEE802.3. Por ello, apareció una adenda a la norma Ethernet-DIX, conocida como Ethernet-DIX-II, que elimina los identificadores de protocolos por debajo de 0x0600 (1.536 en decimal). Hoy día con frecuencia dentro de una misma LAN encontramos tramas Ethernet-DIX-II y tramas IEEE802.3. Ello, obviamente, no podía tenerse en cuenta en la Ethernet-DIX original, puesto que es anterior al IEEE802.3. Por ello, apareció una adenda a la norma Ethernet-DIX, conocida como Ethernet-DIX-II, que elimina los identificadores de protocolos por debajo de 0x0600 (1.536 en decimal). Hoy día con frecuencia dentro de una misma LAN encontramos tramas Ethernet-DIX-II y tramas IEEE802.3. El IP puede ir sobre cualquiera de los dos estándares, aunque casi nadie elige la posibilidad de encapsularlo sobre el IEEE802.3. El par de protocolos IEEE802.3 + 802.2 se utiliza en algunos de los sistemas operativos de red aparecidos en los años ochenta como, por ejemplo, el IPX de Novell y el NETBEUI de Microsoft. El IP puede ir sobre cualquiera de los dos estándares, aunque casi nadie elige la posibilidad de encapsularlo sobre el IEEE802.3. El par de protocolos IEEE802.3 + 802.2 se utiliza en algunos de los sistemas operativos de red aparecidos en los años ochenta como, por ejemplo, el IPX de Novell y el NETBEUI de Microsoft. 2.3.2. Direcciones LAN 2.3.2. Direcciones LAN Las direcciones LAN están divididas en diferentes campos, como puede obser- Las direcciones LAN están divididas en diferentes campos, como puede obser- varse en la figura siguiente: varse en la figura siguiente: TCP/IP: los protocolos de la red Internet 22 FUOC • P03/75064/00977 La mitad menos significativa de la dirección (los bits del 2 al 23), asignada por el IEEE a cada fabricante de manera fija, es el OUI*. Este último, cuando fabrica las tarjetas, programa (en ROM) la dirección completa, que está formada por TCP/IP: los protocolos de la red Internet * OUI es la sigla de organizational unique identifier. ** OUA es la sigla de organizational unique address. 22 FUOC • P03/75064/00977 La mitad menos significativa de la dirección (los bits del 2 al 23), asignada por el IEEE a cada fabricante de manera fija, es el OUI*. Este último, cuando fabrica las tarjetas, programa (en ROM) la dirección completa, que está formada por el OUI más una parte variable que el mismo fabricante asigna individualmente el OUI más una parte variable que el mismo fabricante asigna individualmente para cada tarjeta: la OUA**. para cada tarjeta: la OUA**. Existen dos bits del OUI que siempre son cero cuando se trata de la dirección Existen dos bits del OUI que siempre son cero cuando se trata de la dirección de origen: el bit multicast (M) y el bit local (L). Este último no se utiliza casi de origen: el bit multicast (M) y el bit local (L). Este último no se utiliza casi nunca y, por tanto, lo consideraremos siempre cero. nunca y, por tanto, lo consideraremos siempre cero. Tanto la dirección de destino como la de origen de la trama tienen el mismo formato, con la única diferencia de que la dirección de destino también puede ser de tipo multicast (bit M = 1). En este caso, el número que lleva no se refiere a una estación en particular, sino que se dirige a un grupo de estaciones. Cada una de las cuales conoce el grupo o grupos a los que está adscrita. Por norma general, cada uno de los grupos se refiere a grupos de estaciones que comparten una misma aplicación o un mismo protocolo. En el IP, el único grupo multicast Ethernet relevante es el broadcast. Tramas Ethernet multicast No es del todo cierto que el único grupo multicast Ethernet relevante sea el broadcast. La red Internet dispone del protocolo IGMP (Internet group multicast protocol), que también trabaja sobre tramas Ethernet multicast. Tanto la dirección de destino como la de origen de la trama tienen el mismo formato, con la única diferencia de que la dirección de destino también puede ser de tipo multicast (bit M = 1). En este caso, el número que lleva no se refiere a una estación en particular, sino que se dirige a un grupo de estaciones. Cada una de las cuales conoce el grupo o grupos a los que está adscrita. Por norma general, cada uno de los grupos se refiere a grupos de estaciones que comparten una misma aplicación o un mismo protocolo. En el IP, el único grupo multicast Ethernet relevante es el broadcast. Representación de una dirección Ethernet Representación de una dirección Ethernet Sobre papel, las direcciones LAN se escriben en hexadecimal, separando los bytes con dos puntos y escribiendo primero el byte menos significativo, por ejemplo: Sobre papel, las direcciones LAN se escriben en hexadecimal, separando los bytes con dos puntos y escribiendo primero el byte menos significativo, por ejemplo: 08:00:00:10:97:00 08:00:00:10:97:00 El primer byte (que es el menos significativo) es siempre divisible por cuatro en direcciones no multicast que tienen los bits M y L a 0. El primer byte (que es el menos significativo) es siempre divisible por cuatro en direcciones no multicast que tienen los bits M y L a 0. El grupo broadcast es especial, en el sentido de que, por defecto, todas las esta- El grupo broadcast es especial, en el sentido de que, por defecto, todas las esta- ciones le pertenecen; por tanto, es una manera de difundir información simul- ciones le pertenecen; por tanto, es una manera de difundir información simul- táneamente a todas las estaciones. El concepto de broadcast no es exclusivo de táneamente a todas las estaciones. El concepto de broadcast no es exclusivo de Ethernet, sino que es común a muchos otros protocolos de LAN y WAN (tam- Ethernet, sino que es común a muchos otros protocolos de LAN y WAN (tam- bién en el IP). Poner todos los bits de la dirección a 1 constituye la manera más bién en el IP). Poner todos los bits de la dirección a 1 constituye la manera más habitual de representar la dirección broadcast, y es la que utilizan las LAN habitual de representar la dirección broadcast, y es la que utilizan las LAN (FF:FF:FF:FF:FF:FF). (FF:FF:FF:FF:FF:FF). TCP/IP: los protocolos de la red Internet * OUI es la sigla de organizational unique identifier. ** OUA es la sigla de organizational unique address. Tramas Ethernet multicast No es del todo cierto que el único grupo multicast Ethernet relevante sea el broadcast. La red Internet dispone del protocolo IGMP (Internet group multicast protocol), que también trabaja sobre tramas Ethernet multicast. 23 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 3. El IP (Internet protocol) IP y TCP son un par de protocolos bien compenetrados. El IP es un proto- 23 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 3. El IP (Internet protocol) Véase el protocolo TCP en el apartado 8 de este módulo didáctico. IP y TCP son un par de protocolos bien compenetrados. El IP es un proto- colo de interconexión de red orientado a datagrama. Por tanto, no dispone colo de interconexión de red orientado a datagrama. Por tanto, no dispone del concepto de circuito virtual, de manera que no es capaz de recuperar del concepto de circuito virtual, de manera que no es capaz de recuperar tramas perdidas, ni de garantizar que las tramas se entregarán en el orden tramas perdidas, ni de garantizar que las tramas se entregarán en el orden correcto –puesto que los paquetes pueden seguir caminos diferentes y, por correcto –puesto que los paquetes pueden seguir caminos diferentes y, por tanto, sufrir retrasos diferentes–, ni que el ritmo de recepción sea el ade- tanto, sufrir retrasos diferentes–, ni que el ritmo de recepción sea el ade- cuado para que el receptor procese convenientemente los datos. cuado para que el receptor procese convenientemente los datos. El IP es del tipo best effort (podríamos traducirlo como ‘con la mejor intención’, o El IP es del tipo best effort (podríamos traducirlo como ‘con la mejor intención’, o ‘quien hace lo que puede no está obligado a más’). Evidentemente, cuando utili- ‘quien hace lo que puede no está obligado a más’). Evidentemente, cuando utili- zamos una red, no siempre podemos conformarnos con conseguir que la infor- zamos una red, no siempre podemos conformarnos con conseguir que la infor- mación llegue si la red puede. Aquí interviene el TCP, que es responsable de mación llegue si la red puede. Aquí interviene el TCP, que es responsable de conseguir que la información llegue en las condiciones de fiabilidad deseadas. conseguir que la información llegue en las condiciones de fiabilidad deseadas. Diferentes filosofías de los protocolos de Internet Diferentes filosofías de los protocolos de Internet Hemos visto protocolos con una filosofía similar a la del best effort: los protocolos de red LAN, como Ethernet, etc. Hay detractores acérrimos, así como defensores incondicionales de esta filosofía, y seguramente ambos grupos tienen una parte de razón. La red X.25 es un ejemplo casi opuesto a esta filosofía que proporciona a sus usuarios unos niveles de fiabilidad y flexibilidad razonablemente elevados, gracias a la utilización de la conmutación de paquetes con circuitos virtuales. Hemos visto protocolos con una filosofía similar a la del best effort: los protocolos de red LAN, como Ethernet, etc. Hay detractores acérrimos, así como defensores incondicionales de esta filosofía, y seguramente ambos grupos tienen una parte de razón. La red X.25 es un ejemplo casi opuesto a esta filosofía que proporciona a sus usuarios unos niveles de fiabilidad y flexibilidad razonablemente elevados, gracias a la utilización de la conmutación de paquetes con circuitos virtuales. De hecho, la historia da la razón a los defensores de la filosofía best effort, puesto que el X.25 actualmente se considera una tecnología casi obsoleta, mientras que el IP está de moda. Las razones deben buscarse, como siempre, en el coste. La filosofía IP permite implementar redes con un coste mínimo: pensad que el TCP sólo precisa implementarse en los terminales de la red, y no en los nodos de conmutación. Por tanto, los nodos de conmutación IP son mucho más simples que los de X.25. De hecho, la historia da la razón a los defensores de la filosofía best effort, puesto que el X.25 actualmente se considera una tecnología casi obsoleta, mientras que el IP está de moda. Las razones deben buscarse, como siempre, en el coste. La filosofía IP permite implementar redes con un coste mínimo: pensad que el TCP sólo precisa implementarse en los terminales de la red, y no en los nodos de conmutación. Por tanto, los nodos de conmutación IP son mucho más simples que los de X.25. 3.1. Direcciones IP Véase el protocolo TCP en el apartado 8 de este módulo didáctico. 3.1. Direcciones IP Antes de entrar en el estudio del protocolo en sí, destacaremos un punto importante, tanto del IP como de la red Internet: las direcciones. Las direcciones IP son únicas para cada máquina. Para ser precisos, cada dirección es única para cada una de las interfaces de red IP de cada máquina. Si una máquina dispone de más de una interfaz de red, necesitará una dirección IP para cada una. Las direcciones IP tienen una longitud Direcciones Ethernet contra direcciones IP Curiosamente, las direcciones IP son más cortas que las Ethernet. Este error puede ser el talón de Aquiles de Internet a principios de este siglo a causa del límite que impone al número de estaciones que se pueden conectar a la misma. de 32 bits (4 bytes). Antes de entrar en el estudio del protocolo en sí, destacaremos un punto importante, tanto del IP como de la red Internet: las direcciones. Las direcciones IP son únicas para cada máquina. Para ser precisos, cada dirección es única para cada una de las interfaces de red IP de cada máquina. Si una máquina dispone de más de una interfaz de red, necesitará una dirección IP para cada una. Las direcciones IP tienen una longitud Direcciones Ethernet contra direcciones IP Curiosamente, las direcciones IP son más cortas que las Ethernet. Este error puede ser el talón de Aquiles de Internet a principios de este siglo a causa del límite que impone al número de estaciones que se pueden conectar a la misma. de 32 bits (4 bytes). Para representar una dirección, se suele escribir los 4 bytes en decimal y separados por puntos. Por ejemplo: 147.83.153.100 Para completar esta información, podéis consultar el anexo 4 de este módulo didáctico. Para representar una dirección, se suele escribir los 4 bytes en decimal y separados por puntos. Por ejemplo: 147.83.153.100 Para completar esta información, podéis consultar el anexo 4 de este módulo didáctico. FUOC • P03/75064/00977 24 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 24 Para conseguir que no haya ninguna dirección igual, Internet dispone de una Para conseguir que no haya ninguna dirección igual, Internet dispone de una organización denominada Internet Network Information Center o InterNIC que se organización denominada Internet Network Information Center o InterNIC que se dedica a esta tarea. En la actualidad, esta entidad delega la responsabilidad de dedica a esta tarea. En la actualidad, esta entidad delega la responsabilidad de la asignación de direcciones a entidades regionales. Las direcciones se asignan la asignación de direcciones a entidades regionales. Las direcciones se asignan por grupos o redes, no individualmente. por grupos o redes, no individualmente. Los tipos de redes que tienen cabida en Internet se distinguen por la cantidad Los tipos de redes que tienen cabida en Internet se distinguen por la cantidad de estaciones que pueden soportar, y son los siguientes: de estaciones que pueden soportar, y son los siguientes: 1) Las redes de clase A reservan el primer byte como identificador de red y los tres restantes como identificadores de estación. El primer bit del primer byte vale 0, por tanto, en Internet sólo puede haber 128 redes de clase A (con 24 2 estaciones cada una como máximo). Hace mucho tiempo que ya no queda ninguna para asignar. 2) Las redes de clase B tienen 16 bits para cada campo; los dos primeros bytes El primer byte El primer byte lo es en el sentido de que es el primero que se envía a la red. Como este último es considerado el byte de mayor peso, se dice que el protocolo TCP/IP tiene ordenación big endian. 1) Las redes de clase A reservan el primer byte como identificador de red y los tres restantes como identificadores de estación. El primer bit del primer byte vale 0, por tanto, en Internet sólo puede haber 128 redes de clase A (con 24 2 estaciones cada una como máximo). Hace mucho tiempo que ya no queda ninguna para asignar. 2) Las redes de clase B tienen 16 bits para cada campo; los dos primeros bytes del identificador de red valen 1 0, por tanto, hay 16.384 (214) redes de, como del identificador de red valen 1 0, por tanto, hay 16.384 (214) redes de, como mucho, 65.536 estaciones. De clase B no queda ninguna para asignar. mucho, 65.536 estaciones. De clase B no queda ninguna para asignar. 3) Por último, las redes de clase C reservan 24 bits para el identificador de red (con 3) Por último, las redes de clase C reservan 24 bits para el identificador de red (con los tres primeros bits 1 1 0) y los 8 restantes son para el identificador de estación. los tres primeros bits 1 1 0) y los 8 restantes son para el identificador de estación. Una vez que se conoce una dirección, es fácil saber si corresponde a una red Una vez que se conoce una dirección, es fácil saber si corresponde a una red de clase A, B o C, si sabemos que las codificaciones se hacen como en la figura de clase A, B o C, si sabemos que las codificaciones se hacen como en la figura siguiente: siguiente: El número real de redes El primer byte lo es en el sentido de que es el primero que se envía a la red. Como este último es considerado el byte de mayor peso, se dice que el protocolo TCP/IP tiene ordenación big endian. En realidad, hay menos redes y menos estaciones de las que aquí hemos calculado, dado que algunas direcciones están reservadas para usos especiales, como iremos viendo. La dirección comentada con anterioridad (147.83.153.100) es de clase B. Asi- La dirección comentada con anterioridad (147.83.153.100) es de clase B. Asi- mismo, fijaos en que en la figura anterior no hay ninguna dirección que em- mismo, fijaos en que en la figura anterior no hay ninguna dirección que em- piece por tres unos. Estas direcciones (llamadas clase D y clase E) son de piece por tres unos. Estas direcciones (llamadas clase D y clase E) son de propósito especial y no se asignan a máquinas concretas. propósito especial y no se asignan a máquinas concretas. El espacio de direcciones se está agotando a marchas forzadas y, si bien existen técnicas relacionadas con la seguridad que ayudan a mitigar este problema (consultad el anexo 4) el hecho de utilizar el concepto de "clase" ha agravado el problema: algunas corporaciones que han reservado una red clase A o B y sólo han aprovechado una pequeña parte de la misma, han dejado sin un buen trozo del espacio de direcciones al resto de Internet. Hoy día, en lugar de proporcionar redes clase C (de las otras ya no quedan) lo que se hace es dar grupos mayores (técnicamente, se podrían dar más pequeñas, pero no se hace) limitados por máscaras intermedias entre la clase B y la C. Por ejemplo, si alguien quiere una red de un millar de direcciones necesita cuatro redes de clase C. En lugar de proporcionarle estas cuatro redes independientes, se le da una máscara de 22 bits: quedan 10 para direcciones de terminal, lo que permite 1.024 terminales. El primer byte El número real de redes En realidad, hay menos redes y menos estaciones de las que aquí hemos calculado, dado que algunas direcciones están reservadas para usos especiales, como iremos viendo. Classless Inter-Domain Routing (CIDR) TCP/IP: los protocolos de la red Internet Classless Inter-Domain Routing (CIDR) Para completar esta información, podéi consultar el anexo 2 de este módulo didáctico. El espacio de direcciones se está agotando a marchas forzadas y, si bien existen técnicas relacionadas con la seguridad que ayudan a mitigar este problema (consultad el anexo 4) el hecho de utilizar el concepto de "clase" ha agravado el problema: algunas corporaciones que han reservado una red clase A o B y sólo han aprovechado una pequeña parte de la misma, han dejado sin un buen trozo del espacio de direcciones al resto de Internet. Hoy día, en lugar de proporcionar redes clase C (de las otras ya no quedan) lo que se hace es dar grupos mayores (técnicamente, se podrían dar más pequeñas, pero no se hace) limitados por máscaras intermedias entre la clase B y la C. Por ejemplo, si alguien quiere una red de un millar de direcciones necesita cuatro redes de clase C. En lugar de proporcionarle estas cuatro redes independientes, se le da una máscara de 22 bits: quedan 10 para direcciones de terminal, lo que permite 1.024 terminales. Para completar esta información, podéi consultar el anexo 2 de este módulo didáctico. 25 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 25 FUOC • P03/75064/00977 3.1.1. Máscaras de red 3.1.1. Máscaras de red Cuando un administrador de sistemas recibe el encargo de gestionar un con- Cuando un administrador de sistemas recibe el encargo de gestionar un con- junto de direcciones, es posible que necesite configurar internamente diferen- junto de direcciones, es posible que necesite configurar internamente diferen- tes LAN con este conjunto. Por ello, el mecanismo para distinguir distintas redes tes LAN con este conjunto. Por ello, el mecanismo para distinguir distintas redes (LAN) entre sí no se puede basar exclusivamente en los bits identificadores de cla- (LAN) entre sí no se puede basar exclusivamente en los bits identificadores de cla- se que hemos comentado con anterioridad. se que hemos comentado con anterioridad. La máscara de red constituye el mecanismo que nos permitirá conseguir La máscara de red constituye el mecanismo que nos permitirá conseguir más flexibilidad. Por medio de una máscara de 32 bits, definiremos los más flexibilidad. Por medio de una máscara de 32 bits, definiremos los bits que identifican la red (bits en 1) y los que identifican la estación bits que identifican la red (bits en 1) y los que identifican la estación (bits en 0). Por norma general, los bits 1 y los 0 son consecutivos, pero (bits en 0). Por norma general, los bits 1 y los 0 son consecutivos, pero no necesariamente. no necesariamente. A continuación, definimos de nuevo el concepto identificador de red, A continuación, definimos de nuevo el concepto identificador de red, adaptándolo a la máscara: el identificador de red es la porción de di- adaptándolo a la máscara: el identificador de red es la porción de di- rección IP que encaja con los bits 1 de la máscara. rección IP que encaja con los bits 1 de la máscara. El concepto máscara es capital para la comprensión del funcionamiento de las El concepto máscara es capital para la comprensión del funcionamiento de las redes IP, permite a una estación decidir si el destino al que debe transmitir un redes IP, permite a una estación decidir si el destino al que debe transmitir un paquete se encuentra dentro de la misma red de área local que este último o paquete se encuentra dentro de la misma red de área local que este último o si, por el contrario, se encuentra en una LAN remota y, por tanto, debe delegar si, por el contrario, se encuentra en una LAN remota y, por tanto, debe delegar su transmisión a algún equipo de su misma LAN (el direccionador) para que su transmisión a algún equipo de su misma LAN (el direccionador) para que se encargue de hacer llegar el paquete a su destino. se encargue de hacer llegar el paquete a su destino. Todas las estaciones de una misma red de área local deben utilizar el mismo iden- Todas las estaciones de una misma red de área local deben utilizar el mismo iden- tificador de red y es preciso que todas las estaciones posean la misma máscara. tificador de red y es preciso que todas las estaciones posean la misma máscara. Direcciones de estaciones conectadas a la misma red Direcciones de estaciones conectadas a la misma red Si tenemos dos estaciones con las direcciones 147.83.153.100 y 147.83.153.200, podemos deducir que están interconectadas directamente (por una LAN) si la máscara de su red es 255.255.255.0, así como deduciríamos que no están conectadas con la misma LAN si la máscara fuese, por ejemplo, 255.255.255.128. Si tenemos dos estaciones con las direcciones 147.83.153.100 y 147.83.153.200, podemos deducir que están interconectadas directamente (por una LAN) si la máscara de su red es 255.255.255.0, así como deduciríamos que no están conectadas con la misma LAN si la máscara fuese, por ejemplo, 255.255.255.128. Notación alternativa de la máscara Notación alternativa de la máscara Una notación alternativa es proporcionar el número de bits 1 de la máscara. Así pues, la máscara 255.255.255.0 es una máscara de 24 bits y la 255.255.255.128 es una máscara de 25 bits. Una notación alternativa es proporcionar el número de bits 1 de la máscara. Así pues, la máscara 255.255.255.0 es una máscara de 24 bits y la 255.255.255.128 es una máscara de 25 bits. En ocasiones, podemos ver una dirección con el añadido de la máscara; por ejemplo: En ocasiones, podemos ver una dirección con el añadido de la máscara; por ejemplo: 147.83.153.100/24. Sin embargo, esta notación sólo es útil para máscaras con 1 consecutivos. 147.83.153.100/24. Sin embargo, esta notación sólo es útil para máscaras con 1 consecutivos. 3.1.2. Direcciones de propósito especial 3.1.2. Direcciones de propósito especial Existen diferentes direcciones especiales. Nosotros expondremos a continua- Existen diferentes direcciones especiales. Nosotros expondremos a continua- ción sólo las más importantes: ción sólo las más importantes: • Dirección de red: las direcciones de red se expresan con la dirección que • Dirección de red: las direcciones de red se expresan con la dirección que tendría cualquier estación suya y con todos los bits del identificador de tendría cualquier estación suya y con todos los bits del identificador de TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 26 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 26 estación a cero. Por ejemplo, la red en que se encuentra la estación estación a cero. Por ejemplo, la red en que se encuentra la estación 147.83.153.100/24 es la 147.83.153.0/24 y la red en que se encuentra la 147.83.153.100/24 es la 147.83.153.0/24 y la red en que se encuentra la estación 147.83.153.200/25 es la 147.83.153.128/25. estación 147.83.153.200/25 es la 147.83.153.128/25. • Dirección 127.0.0.1 (loopback): dirección no válida para los paquetes IP. • Dirección 127.0.0.1 (loopback): dirección no válida para los paquetes IP. El software de red la utiliza para transmitir paquetes a la máquina local (de El software de red la utiliza para transmitir paquetes a la máquina local (de hecho, los paquetes no son enviados, sino que son entregados al destino hecho, los paquetes no son enviados, sino que son entregados al destino por el mismo sistema operativo). En realidad, los tres bytes del identifica- por el mismo sistema operativo). En realidad, los tres bytes del identifica- dor de estación son irrelevantes*. Esta dirección sólo tiene interés a la hora de programar aplicaciones; los sistemas de red no verán nunca que ningún * Así, la dirección 127.0.3.87 es equivalente a la 127.0.0.1. paquete viaje por la red con esta dirección como origen o destino. dor de estación son irrelevantes*. Esta dirección sólo tiene interés a la hora de programar aplicaciones; los sistemas de red no verán nunca que ningún • Dirección 255.255.255.255 (broadcast): sólo es válida como dirección de destino de un paquete. Se utiliza para transmitir paquetes a todas las de destino de un paquete. Se utiliza para transmitir paquetes a todas las estaciones localizadas dentro de la misma LAN que la máquina de origen. estaciones localizadas dentro de la misma LAN que la máquina de origen. Existe una versión equivalente, que es el broadcast dirigido. En este segun- Existe una versión equivalente, que es el broadcast dirigido. En este segun- do caso, el paquete es recibido por todas las máquinas de una LAN espe- do caso, el paquete es recibido por todas las máquinas de una LAN espe- cificada por el identificador de red. El identificador de estación debe ser cificada por el identificador de red. El identificador de estación debe ser todo 1. todo 1. Broadcast local y remoto Broadcast local y remoto 3.2. El formato del paquete IP * Así, la dirección 127.0.3.87 es equivalente a la 127.0.0.1. paquete viaje por la red con esta dirección como origen o destino. • Dirección 255.255.255.255 (broadcast): sólo es válida como dirección Para enviar un broadcast a la red 147.83.153.0 con la máscara 255.255.255.0 (o 147.83.153.0/24) podemos utilizar la dirección 255.255.255.255 si estamos dentro de la red 147.83.153.0, o bien la 147.83.153.255 si estamos en una estación remota. El primer caso, lo llamaremos broadcast local, y el segundo, broadcast remoto. TCP/IP: los protocolos de la red Internet Consultad otras direcciones de propósito especial en el anexo 2 de este módulo. Para enviar un broadcast a la red 147.83.153.0 con la máscara 255.255.255.0 (o 147.83.153.0/24) podemos utilizar la dirección 255.255.255.255 si estamos dentro de la red 147.83.153.0, o bien la 147.83.153.255 si estamos en una estación remota. El primer caso, lo llamaremos broadcast local, y el segundo, broadcast remoto. 3.2. El formato del paquete IP Consultad otras direcciones de propósito especial en el anexo 2 de este módulo. 27 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 27 A continuación describiremos los campos que componen el paquete IP: A continuación describiremos los campos que componen el paquete IP: • Versión: siempre vale cuatro (0100), para los paquetes de la versión actual (IPv4). • Versión: siempre vale cuatro (0100), para los paquetes de la versión actual (IPv4). • Longitud de la cabecera: da la longitud de la cabecera en palabras de 32 bits • Longitud de la cabecera: da la longitud de la cabecera en palabras de 32 bits (4 bytes). Por tanto, el número de bytes de la cabecera tiene que ser múlti- (4 bytes). Por tanto, el número de bytes de la cabecera tiene que ser múlti- plo de 4. Asimismo, limita la longitud de la cabecera a 60 bytes (15 · 4), puesto plo de 4. Asimismo, limita la longitud de la cabecera a 60 bytes (15 · 4), puesto que 15 es el máximo que se puede expresar con cuatro dígitos binarios. Si que 15 es el máximo que se puede expresar con cuatro dígitos binarios. Si no hay campo de opciones, la cabecera tiene 20 bytes; por tanto, el campo no hay campo de opciones, la cabecera tiene 20 bytes; por tanto, el campo en este caso valdría 5 (5 · 4 bytes = 20 bytes). en este caso valdría 5 (5 · 4 bytes = 20 bytes). • Tipo de servicio: este campo se encuentra dividido en varios subcampos. Permite pedir un trato especial para el paquete y raramente se implementa. Tipo de servicio • Tipo de servicio: este campo se encuentra dividido en varios subcampos. Permite pedir un trato especial para el paquete y raramente se implementa. El campo Tipo de servicio permite definir dos variables: • El nivel de prioridad (del 1 al 8). • El tipo de calidad aplicable al contenido (retraso bajo, velocidad alta, fiabilidad alta, coste bajo, etc.). • Longitud total del paquete: da la longitud total del paquete (cabecera in- cluida) en bytes. Como este campo es de 16 bits, un paquete IP no puede cluida) en bytes. Como este campo es de 16 bits, un paquete IP no puede tener más de 65.535 bytes (2 − 1). Tipo de servicio El campo Tipo de servicio permite definir dos variables: • El nivel de prioridad (del 1 al 8). • El tipo de calidad aplicable al contenido (retraso bajo, velocidad alta, fiabilidad alta, coste bajo, etc.). • Longitud total del paquete: da la longitud total del paquete (cabecera in16 TCP/IP: los protocolos de la red Internet tener más de 65.535 bytes (216 − 1). 28 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet • Identificación del paquete: contiene un identificador que es diferente gestionar la fragmentación de paquetes. para cada paquete que genera la estación. Consultad la fragmentación en el subapartado 3.2.1 de este módulo didáctico. • Indicadores (flags) y posición de este fragmento: estos campos permiten gestionar la fragmentación de paquetes. • Tiempo de vida o TTL (Time To Live): indica el número máximo de direc- • Tiempo de vida o TTL (Time To Live): indica el número máximo de direc- cionadores que puede cruzar el paquete. Se utiliza para evitar que un pa- cionadores que puede cruzar el paquete. Se utiliza para evitar que un pa- quete pueda quedar dando vueltas indefinidamente dentro de la red en caso quete pueda quedar dando vueltas indefinidamente dentro de la red en caso de que haya algún problema al entregarlo. Cada direccionador disminuye el de que haya algún problema al entregarlo. Cada direccionador disminuye el campo en uno; cuando uno de ellos detecta un paquete con TTL = 1, lo eli- campo en uno; cuando uno de ellos detecta un paquete con TTL = 1, lo eli- mina y envía a quien lo ha emitido un mensaje de error por medio de un mina y envía a quien lo ha emitido un mensaje de error por medio de un mensaje ICMP. mensaje ICMP. • Protocolo: identifica el tipo de protocolo que transporta el paquete. Los valores más comunes de los diferentes tipos de protocolos son los siguientes: TCP/IP: los protocolos de la red Internet • Identificación del paquete: contiene un identificador que es diferente para cada paquete que genera la estación. • Indicadores (flags) y posición de este fragmento: estos campos permiten 28 FUOC • P03/75064/00977 • Protocolo: identifica el tipo de protocolo que transporta el paquete. Los valores más comunes de los diferentes tipos de protocolos son los siguientes: TCP 6 TCP 6 UDP 17 UDP 17 ICMP 1 ICMP 1 Consultad la fragmentación en el subapartado 3.2.1 de este módulo didáctico. FUOC • P03/75064/00977 29 TCP/IP: los protocolos de la red Internet • Checksum: realiza el control de errores en la cabecera. El campo de datos no queda protegido por ningún checksum; es responsabilidad de los usuarios del FUOC • P03/75064/00977 29 TCP/IP: los protocolos de la red Internet • Checksum: realiza el control de errores en la cabecera. El campo de datos no Consultad una implementación en lenguaje C del algoritmo checksum en el anexo 3 de este módulo didáctico. queda protegido por ningún checksum; es responsabilidad de los usuarios del IP (TCP, UDP, etc.) el control de los posibles errores en su contenido. IP (TCP, UDP, etc.) el control de los posibles errores en su contenido. Algoritmo de cálculo del checksum Algoritmo de cálculo del checksum El checksum (o comprobación por adición) es básicamente la suma aritmética de los bytes de la cabecera agrupados de dos en dos (si el resultado necesita más de 16 bits, se suman los bits sobrantes al mismo resultado). El checksum (o comprobación por adición) es básicamente la suma aritmética de los bytes de la cabecera agrupados de dos en dos (si el resultado necesita más de 16 bits, se suman los bits sobrantes al mismo resultado). Este algoritmo, si bien es fácil y rápido de calcular, no se caracteriza por poseer unas grandes cualidades para la detección de errores. Ello, sumado al hecho de que el contenido del IP no tiene checksum y a otros factores (tales como que muchos sistemas no calculan el checksum de los paquetes UDP), demuestra que en el mundo de Internet no existe un interés especial por la detección de errores. Con frecuencia, éste ha sido un argumento en el que se han basado los detractores del protocolo IP para atacarlo. Este algoritmo, si bien es fácil y rápido de calcular, no se caracteriza por poseer unas grandes cualidades para la detección de errores. Ello, sumado al hecho de que el contenido del IP no tiene checksum y a otros factores (tales como que muchos sistemas no calculan el checksum de los paquetes UDP), demuestra que en el mundo de Internet no existe un interés especial por la detección de errores. Con frecuencia, éste ha sido un argumento en el que se han basado los detractores del protocolo IP para atacarlo. La detección de errores dentro del campo de información es responsabilidad de quien entra la información. Los usuarios más habituales del IP son los protocolos TCP, UDP e ICMP, y todos protegen la información con un campo adicional de checksum. La detección de errores dentro del campo de información es responsabilidad de quien entra la información. Los usuarios más habituales del IP son los protocolos TCP, UDP e ICMP, y todos protegen la información con un campo adicional de checksum. Actividad Actividad • Buscad errores posibles que pasarían inadvertidos al algoritmo checksum. • Buscad errores posibles que pasarían inadvertidos al algoritmo checksum. • Dirección de origen IP: identifica la máquina que ha generado el paquete. • Dirección de origen IP: identifica la máquina que ha generado el paquete. • Dirección de destino IP: identifica la máquina a la que va destinado el paquete. • Dirección de destino IP: identifica la máquina a la que va destinado el paquete. Consultad una implementación en lenguaje C del algoritmo checksum en el anexo 3 de este módulo didáctico. FUOC • P03/75064/00977 30 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 30 • Opciones: existen diferentes servicios asignados a este campo, pero por lo ge- • Opciones: existen diferentes servicios asignados a este campo, pero por lo ge- neral no se utilizan. Comentarems algunos de los mismos cuando hablemos neral no se utilizan. Comentarems algunos de los mismos cuando hablemos del ICMP. Sea como sea, la longitud total está limitada a 40 bytes (15 · 4 − 20). del ICMP. Sea como sea, la longitud total está limitada a 40 bytes (15 · 4 − 20). 3.2.1. Fragmentación 3.2.1. Fragmentación Los paquetes IP van siempre insertados en tramas de nivel de enlace o MAC. Los paquetes IP van siempre insertados en tramas de nivel de enlace o MAC. Unos ejemplos que ya hemos visto son los protocolos PPP y Ethernet. Unos ejemplos que ya hemos visto son los protocolos PPP y Ethernet. Una estación, cuando transmite un paquete IP, conoce la MTU de su interfaz Una estación, cuando transmite un paquete IP, conoce la MTU de su interfaz de red, y está restringida a transmitir paquetes IP que se puedan transmitir por de red, y está restringida a transmitir paquetes IP que se puedan transmitir por su interfaz a la red. Si el paquete pasa por un direccionador conectado a una red con una MTU inferior al tamaño del paquete, es preciso fragmentarlo. Los fragmentos resultantes de la operación son paquetes como cualquier otro, pero que poseen las características siguientes: Ejemplo En una Ethernet, el paquete máximo que puede transmitir una estación es de 1.500 bytes. su interfaz a la red. Si el paquete pasa por un direccionador conectado a una red con una MTU inferior al tamaño del paquete, es preciso fragmentarlo. Los fragmentos resultantes de la operación son paquetes como cualquier otro, pero que poseen las características siguientes: 1) Todos los fragmentos que provienen de un paquete fragmentado tienen el 1) Todos los fragmentos que provienen de un paquete fragmentado tienen el mismo identificador de paquete en las respectivas cabeceras IP. mismo identificador de paquete en las respectivas cabeceras IP. 2) Todos los fragmentos indican con el campo Posición de este fragmento a 2) Todos los fragmentos indican con el campo Posición de este fragmento a qué byte corresponde el primer byte de datos del fragmento dentro del paque- qué byte corresponde el primer byte de datos del fragmento dentro del paque- te original. El primer fragmento tiene un cero en este campo. te original. El primer fragmento tiene un cero en este campo. 3) El bit + del campo Indicadores es 1 en todos los fragmentos a excepción del 3) El bit + del campo Indicadores es 1 en todos los fragmentos a excepción del último, que, por ello se suele denominar hay más. último, que, por ello se suele denominar hay más. El resto de los campos de la cabecera se copia íntegramente del paquete origi- El resto de los campos de la cabecera se copia íntegramente del paquete origi- nal a los fragmentos que resultan de la fragmentación, excepto el indicador de nal a los fragmentos que resultan de la fragmentación, excepto el indicador de longitud del paquete y el checksum, que se deben calcular de nuevo. longitud del paquete y el checksum, que se deben calcular de nuevo. TCP/IP: los protocolos de la red Internet Ejemplo En una Ethernet, el paquete máximo que puede transmitir una estación es de 1.500 bytes. FUOC • P03/75064/00977 31 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 31 En principio, podríamos suponer que, cuando los fragmentos vuelven a una En principio, podríamos suponer que, cuando los fragmentos vuelven a una red con una MTU suficiente, el direccionador que los recibe los reunifica. Sin red con una MTU suficiente, el direccionador que los recibe los reunifica. Sin embargo, no se hace así, en primer lugar porque la ley no escrita de Internet embargo, no se hace así, en primer lugar porque la ley no escrita de Internet según la cual el direccionador debe llevar a cabo el mínimo trabajo necesario según la cual el direccionador debe llevar a cabo el mínimo trabajo necesario no se cumpliría. En segundo lugar (y más importante), porque nadie garantiza no se cumpliría. En segundo lugar (y más importante), porque nadie garantiza que todos los fragmentos sigan el mismo camino. La única estación capaz de que todos los fragmentos sigan el mismo camino. La única estación capaz de recomponer los fragmentos es la de destino. recomponer los fragmentos es la de destino. La estación de destino, cuando recibe un fragmento, reserva suficiente memoria La estación de destino, cuando recibe un fragmento, reserva suficiente memoria para alojar el mayor paquete IP posible (65.535 bytes), puesto que no tiene ma- para alojar el mayor paquete IP posible (65.535 bytes), puesto que no tiene ma- nera de saber cuál es el tamaño del paquete original. A partir de aquí, pone en nera de saber cuál es el tamaño del paquete original. A partir de aquí, pone en marcha un temporizador* y empieza a recolectar los fragmentos según su identificador. Cuando se han recibido todos los fragmentos, se entrega el paquete a la aplicación (protocolo) correspondiente. En caso de que el temporizador salte, * Este temporizador permite detectar la pérdida de un fragmento por el camino y, por tanto, la pérdida de la memoria reservada. marcha un temporizador* y empieza a recolectar los fragmentos según su identificador. Cuando se han recibido todos los fragmentos, se entrega el paquete a la aplicación (protocolo) correspondiente. En caso de que el temporizador salte, se descartan todos los fragmentos llegados hasta aquel momento. El nivel supe- se descartan todos los fragmentos llegados hasta aquel momento. El nivel supe- rior (TCP) es el responsable de pedir una retransmisión cuando convenga, pues- rior (TCP) es el responsable de pedir una retransmisión cuando convenga, pues- to que el IP no dispone de ningún mecanismo para pedirla. to que el IP no dispone de ningún mecanismo para pedirla. Paquetes no fragmentables Paquetes no fragmentables Dentro del campo Indicadores hay dos bits más que no hemos comentado: uno no se utiliza y el otro, el DF (Don’t Fragment), especifica que el paquete no debe fragmentarse. Si fuera preciso fragmentarlo, el paquete sería descartado y se enviaría un mensaje ICMP indicando el error a la estación originadora del paquete. Usualmente, se activa el bit DF sólo cuando la fragmentación no es deseable como, por ejemplo, cuando enviamos paquetes a estaciones con la pila TCP/IP implementada en ROM, puesto que entonces se implementa sólo una mínima parte de la funcionalidad de TCP/IP. Dentro del campo Indicadores hay dos bits más que no hemos comentado: uno no se utiliza y el otro, el DF (Don’t Fragment), especifica que el paquete no debe fragmentarse. Si fuera preciso fragmentarlo, el paquete sería descartado y se enviaría un mensaje ICMP indicando el error a la estación originadora del paquete. Usualmente, se activa el bit DF sólo cuando la fragmentación no es deseable como, por ejemplo, cuando enviamos paquetes a estaciones con la pila TCP/IP implementada en ROM, puesto que entonces se implementa sólo una mínima parte de la funcionalidad de TCP/IP. 3.3. Direccionamiento y direccionadores 3.3. Direccionamiento y direccionadores Las atribuciones principales de los direccionadores son interconectar dos o más Las atribuciones principales de los direccionadores son interconectar dos o más subredes IP y encargarse de direccionar el tráfico destinado a estaciones remotas. subredes IP y encargarse de direccionar el tráfico destinado a estaciones remotas. Cada direccionador de la red Internet debe ser capaz de decidir (en una fracción de Cada direccionador de la red Internet debe ser capaz de decidir (en una fracción de segundo) a dónde debe dirigir un paquete basándose exclusivamente en la direc- segundo) a dónde debe dirigir un paquete basándose exclusivamente en la direc- ción de destino, y en el conocimiento que tiene de la red y de su posición (la del ción de destino, y en el conocimiento que tiene de la red y de su posición (la del direccionador) dentro de Internet. De hecho, cada direccionador no decide la ruta direccionador) dentro de Internet. De hecho, cada direccionador no decide la ruta entera del paquete, sino sólo el trozo de ruta en que participa: el salto (hop) siguien- entera del paquete, sino sólo el trozo de ruta en que participa: el salto (hop) siguien- te. Entre el origen y el destino tenemos un número variable de saltos, y en cada uno te. Entre el origen y el destino tenemos un número variable de saltos, y en cada uno de ellos participan un par de direccionadores (el emisor y el receptor del paquete) a de ellos participan un par de direccionadores (el emisor y el receptor del paquete) a excepción del primero y el último, en que participan las estaciones emisora y trans- excepción del primero y el último, en que participan las estaciones emisora y trans- misora, respectivamente. Las conexiones entre direccionadores, o bien entre direc- misora, respectivamente. Las conexiones entre direccionadores, o bien entre direc- cionador y estación terminal, las componen LAN o enlaces punto a punto. cionador y estación terminal, las componen LAN o enlaces punto a punto. Transporte de un paquete IP a través de tres subredes Transporte de un paquete IP a través de tres subredes TCP/IP: los protocolos de la red Internet * Este temporizador permite detectar la pérdida de un fragmento por el camino y, por tanto, la pérdida de la memoria reservada. 32 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 32 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet En la figura anterior, podemos ver un paquete IP que cruza tres redes de área En la figura anterior, podemos ver un paquete IP que cruza tres redes de área local. En cada una el paquete va encapsulado dentro de una trama de un tipo local. En cada una el paquete va encapsulado dentro de una trama de un tipo adecuado a la subred que cruza (en el dibujo podrían ser tres LAN Ethernet). adecuado a la subred que cruza (en el dibujo podrían ser tres LAN Ethernet). Las direcciones de origen y de destino del nivel LAN en cada tramo son dife- Las direcciones de origen y de destino del nivel LAN en cada tramo son dife- rentes. En cambio, la dirección de origen y la de destino de cada paquete IP no rentes. En cambio, la dirección de origen y la de destino de cada paquete IP no varían. La situación plantea dos problemas y, para resolverlos, es preciso efec- varían. La situación plantea dos problemas y, para resolverlos, es preciso efec- tuar los pasos siguientes: tuar los pasos siguientes: • Averiguar cuál es la correspondencia entre direcciones IP y MAC (sólo en los casos en que el enlace entre los direccionadores sea una LAN). Ello nos Consultad el protocolo ARP en el apartado 4 de este módulo didáctico. • Averiguar cuál es la correspondencia entre direcciones IP y MAC (sólo en los casos en que el enlace entre los direccionadores sea una LAN). Ello nos permitirá enviar los paquetes IP a un direccionador a pesar de que el paque- permitirá enviar los paquetes IP a un direccionador a pesar de que el paque- te IP no tenga su dirección. El mapeado IP-MAC se efectúa de manera au- te IP no tenga su dirección. El mapeado IP-MAC se efectúa de manera au- tomática por medio del protocolo ARP. tomática por medio del protocolo ARP. • Decidir en cada momento cuál es el direccionador siguiente (el salto siguiente). • Decidir en cada momento cuál es el direccionador siguiente (el salto siguiente). 3.3.1. La tabla de direccionamiento 3.3.1. La tabla de direccionamiento El direccionamiento se lleva a cabo a partir de tablas de direccionamiento El direccionamiento se lleva a cabo a partir de tablas de direccionamiento que disponen de información limitada, pero suficiente para permitir la inter- que disponen de información limitada, pero suficiente para permitir la inter- conexión de todas las subredes que componen Internet. Cada equipo conec- conexión de todas las subredes que componen Internet. Cada equipo conec- tado a una red IP necesita una tabla de direccionamiento. tado a una red IP necesita una tabla de direccionamiento. Tablas de direccionamiento Tablas de direccionamiento Estas tablas se introducen dentro del direccionador por medio de un terminal que se conecta al mismo directamente (consola). Asimismo, existen protocolos que permiten que las tablas se actualicen automáticamente cuando se detectan cambios de topología. Los más utilizados son el RIP (routing information protocol) y el OSPF (open shortest path first). Estas tablas se introducen dentro del direccionador por medio de un terminal que se conecta al mismo directamente (consola). Asimismo, existen protocolos que permiten que las tablas se actualicen automáticamente cuando se detectan cambios de topología. Los más utilizados son el RIP (routing information protocol) y el OSPF (open shortest path first). El direccionador decide la ruta de los paquetes consultando su tabla de direccio- El direccionador decide la ruta de los paquetes consultando su tabla de direccio- namiento. Las estaciones terminales también necesitan una tabla de direcciona- namiento. Las estaciones terminales también necesitan una tabla de direcciona- miento, aunque sólo sea para poder descubrir si se están comunicando con una miento, aunque sólo sea para poder descubrir si se están comunicando con una estación local de la LAN (y, por consiguiente, se pueden comunicar directamen- estación local de la LAN (y, por consiguiente, se pueden comunicar directamen- te con la misma) o si el paquete IP debe ir a una estación remota (conectada a te con la misma) o si el paquete IP debe ir a una estación remota (conectada a otra LAN) y, por tanto, deben dejarlo en manos del direccionador. otra LAN) y, por tanto, deben dejarlo en manos del direccionador. Tabla de direccionamiento de una estación con una única interfaz Tabla de direccionamiento de una estación con una única interfaz Empezamos estudiando la tabla de direccionamiento de una estación conec- Empezamos estudiando la tabla de direccionamiento de una estación conec- tada a una LAN (dirección 147.83.153.103/24) con una única tarjeta Ethernet. tada a una LAN (dirección 147.83.153.103/24) con una única tarjeta Ethernet. Por norma general, una tabla de direccionamiento dispone también de infor- Por norma general, una tabla de direccionamiento dispone también de infor- mación sobre las “cualidades” de cada una de las rutas descritas, que no apa- mación sobre las “cualidades” de cada una de las rutas descritas, que no apa- recen en el ejemplo: recen en el ejemplo: Tabla de direccionamiento de la estación Dirección Máscara Direccionador Tabla de direccionamiento de la estación Interfaz Dirección Máscara Direccionador Interfaz 1 147.83.153.103 255.255.255.255 127.0.0.1 Loopback 1 147.83.153.103 255.255.255.255 127.0.0.1 Loopback 2 127.0.0.0 255.0.0.0 127.0.0.1 Loopback 2 127.0.0.0 255.0.0.0 127.0.0.1 Loopback Consultad el protocolo ARP en el apartado 4 de este módulo didáctico. 33 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet Tabla de direccionamiento de la estación Dirección Máscara Direccionador 33 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet Tabla de direccionamiento de la estación Interfaz Dirección Máscara Direccionador Interfaz 3 147.83.153.0 255.255.255.0 147.83.153.103 ether0 3 147.83.153.0 255.255.255.0 147.83.153.103 ether0 4 255.255.255.255 255.255.255.255 147.83.153.103 ether0 4 255.255.255.255 255.255.255.255 147.83.153.103 ether0 5 0.0.0.0 0.0.0.0 147.83.153.5 ether0 5 0.0.0.0 0.0.0.0 147.83.153.5 ether0 Ésta es una tabla típica que podemos encontrar en una estación conectada a Ésta es una tabla típica que podemos encontrar en una estación conectada a Internet. Las filas de la tabla o reglas se consultan no en el orden en que el co- Internet. Las filas de la tabla o reglas se consultan no en el orden en que el co- mando route nos las presenta, sino en orden de máscara decreciente (en pri- mando route nos las presenta, sino en orden de máscara decreciente (en pri- mer lugar, las entradas con 32 bits, etc.). De las entradas que forman la tabla mer lugar, las entradas con 32 bits, etc.). De las entradas que forman la tabla es preciso señalar lo siguiente: es preciso señalar lo siguiente: • La primera entrada y la segunda permiten transmitir paquetes IP a las direcciones 147.83.153.103 y a todas las direcciones que empiecen por 127 (fijaos en la máscara de las dos entradas). En ambos casos los paquetes se envían a la interfaz virtual loopback (la interfaz con que se conoce el ordenador local desde el mismo ordenador local). Ninguno de los paquetes que se direccione con alguna de estas dos reglas saldrá a la red: será cortocircuitado directamente por el sistema operativo y se entregará al proceso de destino sin que nunca llegue a ninguna tarjeta de comunicaciones. • La tercera entrada será adoptada por todos los paquetes destinados a la red local. El campo Direccionador es el mismo que la dirección local, lo que Interfaz Una interfaz es una tarjeta de conexión física a la red. Ejemplos de interfaz serían una tarjeta Ethernet (por ejemplo, la Ether0) o un puerto serie. En el ejemplo vemos una interfaz loopback, que es un caso especial, como veremos en el texto. Para saber qué interfaces hay disponibles en un sistema, en UNIX o en Windows NT sólo es necesario invocar el comando $ ifconfig, y en Windows 95 C:> winipcfg. significa que no se delegará su transmisión a ningún direccionador. • La primera entrada y la segunda permiten transmitir paquetes IP a las direcciones 147.83.153.103 y a todas las direcciones que empiecen por 127 (fijaos en la máscara de las dos entradas). En ambos casos los paquetes se envían a la interfaz virtual loopback (la interfaz con que se conoce el ordenador local desde el mismo ordenador local). Ninguno de los paquetes que se direccione con alguna de estas dos reglas saldrá a la red: será cortocircuitado directamente por el sistema operativo y se entregará al proceso de destino sin que nunca llegue a ninguna tarjeta de comunicaciones. • La tercera entrada será adoptada por todos los paquetes destinados a la red local. El campo Direccionador es el mismo que la dirección local, lo que • La cuarta entrada tiene una importancia relativa. Nos indica que los broadcasts IP se restringirán a la red local. broadcasts IP se restringirán a la red local. • La quinta entrada (0.0.0.0/0) permite a la estación comunicarse con esta- • La quinta entrada (0.0.0.0/0) permite a la estación comunicarse con esta- ciones remotas. Notad que la máscara no tiene ningún bit en 1. Ésta es la ciones remotas. Notad que la máscara no tiene ningún bit en 1. Ésta es la ruta por defecto. El direccionador establecido para acceder a estaciones re- ruta por defecto. El direccionador establecido para acceder a estaciones re- motas queda identificado en la tabla con la dirección 147.83.153.5. motas queda identificado en la tabla con la dirección 147.83.153.5. Toda esta información se calcula a partir de tres datos que se introducen en la Toda esta información se calcula a partir de tres datos que se introducen en la configuración de red: configuración de red: 2) La máscara de la LAN local (en el ejemplo: 255.255.255.0). 3) La dirección del direccionador (en el ejemplo: 147.83.153.5). En casos más complejos (más de una interfaz de acceso a Internet, más de un direccionador en la red local, etc.), la información deberá modificarse con el comando route. Asimismo, existen otros mecanismos que no requieren la intervención humana y que permiten descubrir direccionadores que no se han configurado previamente por medio del protocolo ICMP. Una interfaz es una tarjeta de conexión física a la red. Ejemplos de interfaz serían una tarjeta Ethernet (por ejemplo, la Ether0) o un puerto serie. En el ejemplo vemos una interfaz loopback, que es un caso especial, como veremos en el texto. Para saber qué interfaces hay disponibles en un sistema, en UNIX o en Windows NT sólo es necesario invocar el comando $ ifconfig, y en Windows 95 C:> winipcfg. significa que no se delegará su transmisión a ningún direccionador. • La cuarta entrada tiene una importancia relativa. Nos indica que los 1) La dirección local (en el ejemplo: 147.83.153.103). Interfaz El comando route En una estación podemos consultar y modificar la tabla de direccionamiento utilizando el comando route. Para visualizarla en UNIX, podemos hacer $ route, y en MSWindows C:> route print Para añadir o suprimir entradas podemos utilizar el comando route con los parámetros add o del. 1) La dirección local (en el ejemplo: 147.83.153.103). 2) La máscara de la LAN local (en el ejemplo: 255.255.255.0). 3) La dirección del direccionador (en el ejemplo: 147.83.153.5). En casos más complejos (más de una interfaz de acceso a Internet, más de un direccionador en la red local, etc.), la información deberá modificarse con el comando route. Asimismo, existen otros mecanismos que no requieren la intervención humana y que permiten descubrir direccionadores que no se han configurado previamente por medio del protocolo ICMP. El comando route En una estación podemos consultar y modificar la tabla de direccionamiento utilizando el comando route. Para visualizarla en UNIX, podemos hacer $ route, y en MSWindows C:> route print Para añadir o suprimir entradas podemos utilizar el comando route con los parámetros add o del. 34 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 34 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet Actividad Actividad • Observad la tabla de direccionamiento de vuestro ordenador por medio del comando route. Consultad la ayuda disponible en el sistema operativo (en UNIX haced man route, y en MSWindows, route/?). • Observad la tabla de direccionamiento de vuestro ordenador por medio del comando route. Consultad la ayuda disponible en el sistema operativo (en UNIX haced man route, y en MSWindows, route/?). En un direccionador, las tablas de direccionamiento tienen más entradas que En un direccionador, las tablas de direccionamiento tienen más entradas que las de una estación; sin embargo, el funcionamiento es el mismo que hemos las de una estación; sin embargo, el funcionamiento es el mismo que hemos visto en el caso anterior. Observad una que conecta la red 147.83.153.0/24 con visto en el caso anterior. Observad una que conecta la red 147.83.153.0/24 con el exterior por medio de la red 147.83.30.0/24: el exterior por medio de la red 147.83.30.0/24: Tabla de direccionamiento de la estación Dirección Máscara Direccionador Tabla de direccionamiento de la estación Interfaz Dirección Máscara Direccionador Interfaz 1 147.83.153.5 255.255.255.255 127.0.0.1 Loopback 1 147.83.153.5 255.255.255.255 127.0.0.1 Loopback 2 147.83.30.2 255.255.255.255 127.0.0.1 Loopback 2 147.83.30.2 255.255.255.255 127.0.0.1 Loopback 3 127.0.0.0 255.0.0.0 127.0.0.1 Loopback 3 127.0.0.0 255.0.0.0 127.0.0.1 Loopback 4 147.83.153.0 255.255.255.0 147.83.153.5 ether1 4 147.83.153.0 255.255.255.0 147.83.153.5 ether1 5 147.83.30.0 255.255.255.0 147.83.30.2 ether0 5 147.83.30.0 255.255.255.0 147.83.30.2 ether0 6 255.255.255.255 255.255.255.255 147.83.153.5 ether1 6 255.255.255.255 255.255.255.255 147.83.153.5 ether1 7 0.0.0.0 0.0.0.0 147.83.30.1 ether0 7 0.0.0.0 0.0.0.0 147.83.30.1 ether0 Prácticamente no observamos nada nuevo. Simplemente se han duplicado Prácticamente no observamos nada nuevo. Simplemente se han duplicado las entradas específicas de interfaz. El direccionador también tiene una en- las entradas específicas de interfaz. El direccionador también tiene una en- trada por defecto. En este caso, todo el tráfico no destinado a las dos redes a trada por defecto. En este caso, todo el tráfico no destinado a las dos redes a que está directamente conectado se direcciona hacia otro direccionador situado que está directamente conectado se direcciona hacia otro direccionador situado en la red 147.83.30.0 (el 147.83.30.1). en la red 147.83.30.0 (el 147.83.30.1). Actividad • Pensad si todos los direccionadores de Internet poseen una ruta por defecto y razonadlo. Imaginad qué sucede cuando enviamos un paquete a una estación de una red inexistente (por ejemplo, a la estación 10.0.1.1). Actividad Véase la manera de representar las direcciones de redes inexistentes en el anexo 2 de este módulo didáctico. • Pensad si todos los direccionadores de Internet poseen una ruta por defecto y razonadlo. Imaginad qué sucede cuando enviamos un paquete a una estación de una red inexistente (por ejemplo, a la estación 10.0.1.1). Véase la manera de representar las direcciones de redes inexistentes en el anexo 2 de este módulo didáctico. 35 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 35 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 4. El ARP (address resolution protocol) 4. El ARP (address resolution protocol) El ARP es el encargado de llevar a cabo la resolución automática del mapeado El ARP es el encargado de llevar a cabo la resolución automática del mapeado entre direcciones MAC. entre direcciones MAC. Cuando efectuamos la transmisión de un paquete entre dos estaciones locales Cuando efectuamos la transmisión de un paquete entre dos estaciones locales de una misma LAN, lo hacemos indicando a la aplicación correspondiente de una misma LAN, lo hacemos indicando a la aplicación correspondiente sólo la dirección IP. Por ejemplo, si desde 147.83.153.103 queremos conectar- sólo la dirección IP. Por ejemplo, si desde 147.83.153.103 queremos conectar- nos a 147.83.153.100, haremos lo siguiente: nos a 147.83.153.100, haremos lo siguiente: $ telnet 147.83.153.100 $ telnet 147.83.153.100 El sistema identifica la dirección física de destino de las tramas a las que deben El sistema identifica la dirección física de destino de las tramas a las que deben ir los paquetes IP que genera la aplicación telnet por medio de una tabla que ir los paquetes IP que genera la aplicación telnet por medio de una tabla que mapea las direcciones de un nivel (IP) con las del otro (MAC). Dicha tabla se mapea las direcciones de un nivel (IP) con las del otro (MAC). Dicha tabla se denomina caché ARP. Veamos un ejemplo de la misma: denomina caché ARP. Veamos un ejemplo de la misma: Tabla caché ARP Dirección IP Tabla caché ARP Dirección MAC Interfaz Dirección IP Dirección MAC Interfaz 1 147.83.153.103 08:00:00:10:97:00 ether() 1 147.83.153.103 08:00:00:10:97:00 ether() 2 147.83.153.5 00:0c:aa:00:0f:e0 ether() 2 147.83.153.5 00:0c:aa:00:0f:e0 ether() Mediante la única interfaz del sistema, se conoce el mapeado MAC-IP de la Mediante la única interfaz del sistema, se conoce el mapeado MAC-IP de la misma tarjeta de red (entrada 1) y el de otra máquina (entrada 2). Si bien esta misma tarjeta de red (entrada 1) y el de otra máquina (entrada 2). Si bien esta tabla puede modificarse manualmente (con el comando arp), lo más normal tabla puede modificarse manualmente (con el comando arp), lo más normal es que dichas entradas aparezcan automáticamente, por obra del ARP. es que dichas entradas aparezcan automáticamente, por obra del ARP. El ARP entra en funcionamiento en el momento en que el nivel necesita trans- El ARP entra en funcionamiento en el momento en que el nivel necesita trans- mitir un paquete IP destinado a una dirección IP de la que se desconoce el ma- mitir un paquete IP destinado a una dirección IP de la que se desconoce el ma- peado MAC. En el ejemplo de conexión anterior (Telnet), y utilizando asimismo peado MAC. En el ejemplo de conexión anterior (Telnet), y utilizando asimismo la caché ARP que hemos mostrado, antes de que el protocolo Telnet envíe un la caché ARP que hemos mostrado, antes de que el protocolo Telnet envíe un solo paquete, el sistema necesita averiguar la dirección MAC. Dentro de la caché solo paquete, el sistema necesita averiguar la dirección MAC. Dentro de la caché ARP, no hay esta entrada; por tanto, es preciso actualizarla. ARP, no hay esta entrada; por tanto, es preciso actualizarla. Actualización de la caché ARP Actualización de la caché ARP El ARP y la caché ARP se pueden considerar como un servicio único que, desde el punto de vista del IP, presenta un servicio: devolver una dirección MAC a partir de una dirección IP. El subsistema buscará dentro de la caché y devolverá el contenido que encuentre en la misma. En caso de que se precise un valor que no se encuentre en esta última, se pondrá en marcha el proceso de búsqueda de la información por medio del protocolo ARP, para actualizar la caché y atender la petición. El ARP y la caché ARP se pueden considerar como un servicio único que, desde el punto de vista del IP, presenta un servicio: devolver una dirección MAC a partir de una dirección IP. El subsistema buscará dentro de la caché y devolverá el contenido que encuentre en la misma. En caso de que se precise un valor que no se encuentre en esta última, se pondrá en marcha el proceso de búsqueda de la información por medio del protocolo ARP, para actualizar la caché y atender la petición. FUOC • P03/75064/00977 36 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 36 El ARP se basa en dos únicos paquetes que van encapsulados directamente so- El ARP se basa en dos únicos paquetes que van encapsulados directamente so- bre tramas Ethernet (tipo Ethernet: 0x0806): bre tramas Ethernet (tipo Ethernet: 0x0806): • La petición ARP: transporta la dirección IP de la que se quiere conocer la • La petición ARP: transporta la dirección IP de la que se quiere conocer la dirección MAC. Como precisamente no se conoce su dirección MAC, la dirección MAC. Como precisamente no se conoce su dirección MAC, la trama debe llevar como dirección de destino la dirección broadcast trama debe llevar como dirección de destino la dirección broadcast (FF:FF:FF:FF:FF:FF). Todas las estaciones locales de la LAN procesan estas (FF:FF:FF:FF:FF:FF). Todas las estaciones locales de la LAN procesan estas tramas; sin embargo, sólo la poseedora de la dirección IP pedida debe con- tramas; sin embargo, sólo la poseedora de la dirección IP pedida debe con- testar. Para minimizar los accesos a la LAN, el receptor de la petición ARP testar. Para minimizar los accesos a la LAN, el receptor de la petición ARP también actualiza su caché (si es necesario) con el mapeado @IP - @MAC también actualiza su caché (si es necesario) con el mapeado @IP - @MAC del originador de la petición. del originador de la petición. • La respuesta ARP: comunica la dirección MAC a quien la ha pedido (es el • La respuesta ARP: comunica la dirección MAC a quien la ha pedido (es el paquete respuesta de la anterior). De hecho, el formato es casi irrelevante, paquete respuesta de la anterior). De hecho, el formato es casi irrelevante, puesto que lo único interesante es la trama MAC y, en particular, su direc- puesto que lo único interesante es la trama MAC y, en particular, su direc- ción de origen. ción de origen. La tabla ARP se denomina caché porque, de hecho, actúa como una memoria auxiliar que evita la consulta de la información a la LAN mientras se tenga una copia local de la misma. Puede parecer que la consulta ARP no debería ser demasiado frecuente, puesto que al cabo de cierto tiempo toda la información se encontraría dentro de la caché. Conviene saber, sin embargo, que las entradas caducan al cabo de un periodo de tiempo relativamente breve (entre uno y unos cuantos minutos, según el sistema). Actividad • Imaginad qué podría suceder si las entradas de la caché ARP no caducaran. Os puede servir de ayuda pensar en la reconfiguración de direcciones. Algunos usos alternativos de interés del ARP son los siguientes: Lecturas complementarias No mostraremos el formato de los paquetes ARP, dado que no aportan mucha más información. Podéis encontrar el formato del paquete y los usos alternativos del ARP en las obras siguientes: D.E. Comer (1995). Internetworking with TCP/IP (vol. 1: “Principles, Protocols and Architecture”). Hertfordshire: Prentice Hall. W.R. Stevens (1994). TCP/IP Illustrated (vol. 1: “The Protocols”). Wilmington: Addison-Wesley. La tabla ARP se denomina caché porque, de hecho, actúa como una memoria auxiliar que evita la consulta de la información a la LAN mientras se tenga una copia local de la misma. Puede parecer que la consulta ARP no debería ser demasiado frecuente, puesto que al cabo de cierto tiempo toda la información se encontraría dentro de la caché. Conviene saber, sin embargo, que las entradas caducan al cabo de un periodo de tiempo relativamente breve (entre uno y unos cuantos minutos, según el sistema). Actividad • Imaginad qué podría suceder si las entradas de la caché ARP no caducaran. Os puede servir de ayuda pensar en la reconfiguración de direcciones. Algunos usos alternativos de interés del ARP son los siguientes: • ARP innecesario (gratuitous-ARP): se utiliza cuando una estación arranca • ARP innecesario (gratuitous-ARP): se utiliza cuando una estación arranca para saber si hay alguna otra estación que está utilizando su misma direc- para saber si hay alguna otra estación que está utilizando su misma direc- ción IP. Por medio de una petición ARP, puede preguntar quién tiene su di- ción IP. Por medio de una petición ARP, puede preguntar quién tiene su di- rección IP (un conflicto de este tipo podría dejar las dos estaciones “fuera rección IP (un conflicto de este tipo podría dejar las dos estaciones “fuera de combate”). de combate”). • ARP subsidiario (proxy-ARP): se utiliza en situaciones en las que un direc- • ARP subsidiario (proxy-ARP): se utiliza en situaciones en las que un direc- cionador divide una subred sin que las estaciones ni el direccionador que cionador divide una subred sin que las estaciones ni el direccionador que los conecta a Internet modifiquen su máscara. Esta técnica, a pesar de no los conecta a Internet modifiquen su máscara. Esta técnica, a pesar de no ser demasiado ortodoxa, se aplica con frecuencia cuando el direccionador ser demasiado ortodoxa, se aplica con frecuencia cuando el direccionador de una red privada se conecta a Internet por medio de una red ajena (un de una red privada se conecta a Internet por medio de una red ajena (un proveedor de Internet, por ejemplo). proveedor de Internet, por ejemplo). Actividades Actividades • En el apartado 3.3 hemos dejado una pregunta sin contestar: ¿cómo puede una estación enviar un paquete a una estación remota (por ejemplo, seguiendo la ruta por defecto del direccionador) si el paquete no puede llevar la dirección MAC de la estación de destino? • En el apartado 3.3 hemos dejado una pregunta sin contestar: ¿cómo puede una estación enviar un paquete a una estación remota (por ejemplo, seguiendo la ruta por defecto del direccionador) si el paquete no puede llevar la dirección MAC de la estación de destino? TCP/IP: los protocolos de la red Internet Lecturas complementarias No mostraremos el formato de los paquetes ARP, dado que no aportan mucha más información. Podéis encontrar el formato del paquete y los usos alternativos del ARP en las obras siguientes: D.E. Comer (1995). Internetworking with TCP/IP (vol. 1: “Principles, Protocols and Architecture”). Hertfordshire: Prentice Hall. W.R. Stevens (1994). TCP/IP Illustrated (vol. 1: “The Protocols”). Wilmington: Addison-Wesley. FUOC • P03/75064/00977 37 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 37 Elaborad una lista de los paquetes que viajan por la red y pensad cuáles son las entradas de la caché ARP que intervienen en la misma. Elaborad una lista de los paquetes que viajan por la red y pensad cuáles son las entradas de la caché ARP que intervienen en la misma. • Consultad la caché ARP de algún sistema que tengáis al alcance (UNIX o MS) por medio de arp -a. Comprobad qué opciones tiene disponibles. • Consultad la caché ARP de algún sistema que tengáis al alcance (UNIX o MS) por medio de arp -a. Comprobad qué opciones tiene disponibles. TCP/IP: los protocolos de la red Internet 38 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 5. El ICMP (Internet control message protocol) 38 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 5. El ICMP (Internet control message protocol) La cuestión de si el ICMP es un protocolo, o si más bien es una herra- La cuestión de si el ICMP es un protocolo, o si más bien es una herra- mienta que utiliza el protocolo IP para notificar errores genera mucha mienta que utiliza el protocolo IP para notificar errores genera mucha polémica. Lo cierto es que el ICMP constituye el mecanismo básico para polémica. Lo cierto es que el ICMP constituye el mecanismo básico para la gestión de las diferentes incidencias que pueden ocurrir en una red IP. la gestión de las diferentes incidencias que pueden ocurrir en una red IP. 5.1. Mensajes ICMP 5.1. Mensajes ICMP Los mensajes ICMP viajan dentro de paquetes IP (al contrario de lo que suce- Los mensajes ICMP viajan dentro de paquetes IP (al contrario de lo que suce- día con los paquetes ARP), en el campo de datos con el campo Protocolo igual día con los paquetes ARP), en el campo de datos con el campo Protocolo igual a 1. El formato del mensaje presentado en la figura siguiente nos facilitará el a 1. El formato del mensaje presentado en la figura siguiente nos facilitará el estudio de los diferentes usos del paquete ICMP: estudio de los diferentes usos del paquete ICMP: El campo Protocolo de la cabecera es igual a 1. El campo Protocolo de la cabecera es igual a 1. Existen trece tipos de mensajes ICMP en uso en la actualidad, y alrededor de Existen trece tipos de mensajes ICMP en uso en la actualidad, y alrededor de una treintena de subtipos identificados con el campo Código. una treintena de subtipos identificados con el campo Código. Tipo Código 0 0 8 0 Descripción Clase Tipo Código Respuesta de eco (echo reply) Petición 0 0 Respuesta de eco (echo reply) Petición Petición de eco (echo request) Petición 8 0 Petición de eco (echo request) Petición Destino inalcanzable (unreachable destination) Descripción Clase Destino inalcanzable (unreachable destination) Los diferentes códigos permiten definir si lo que no se puede alcanzar es la subred (0, 6, 9, 11), la estación (1, 7, 10, 12), el protocolo (2), o el puerto (3) y los motivos Error 3 0-15 Petición de control de flujo (source quench) Error 4 0 3 0-15 4 0 5 0-3 Redireccionamiento Error 5 9 0 Publicación de rutas Petición 9 Los diferentes códigos permiten definir si lo que no se puede alcanzar es la subred (0, 6, 9, 11), la estación (1, 7, 10, 12), el protocolo (2), o el puerto (3) y los motivos Error Petición de control de flujo (source quench) Error 0-3 Redireccionamiento Error 0 Publicación de rutas Petición 39 FUOC • P03/75064/00977 Tipo Código 10 0 11 0-1 12 0-1 13 0 14 Descripción TCP/IP: los protocolos de la red Internet 39 FUOC • P03/75064/00977 Clase Tipo Código Petición 10 0 El tiempo de vida ha expirado (time exceeded) Error 11 0-1 El tiempo de vida ha expirado (time exceeded) Error Cabecera IP incorrecta Error 12 0-1 Cabecera IP incorrecta Error Petición de hora Petición 13 0 Petición de hora Petición 0 Respuesta de hora (en milisegundos desde la medianoche) Petición 14 0 Respuesta de hora (en milisegundos desde la medianoche) Petición 17 0 Petición de la máscara de la subred Petición 17 0 Petición de la máscara de la subred Petición 18 0 Respuesta de la máscara de la subred Petición 18 0 Respuesta de la máscara de la subred Petición Petición de rutas Descripción TCP/IP: los protocolos de la red Internet Petición de rutas Clase Petición La última columna nos permite distinguir mensajes ICMP de notificación de La última columna nos permite distinguir mensajes ICMP de notificación de error de mensajes que son parte de una petición (la petición o la respuesta). error de mensajes que son parte de una petición (la petición o la respuesta). Esta distinción es importante, puesto que los mensajes de error ICMP no pue- Esta distinción es importante, puesto que los mensajes de error ICMP no pue- den generar otros mensajes de error ICMP. En particular, no se generan men- den generar otros mensajes de error ICMP. En particular, no se generan men- sajes de error en respuesta a los paquetes o mensajes siguientes: sajes de error en respuesta a los paquetes o mensajes siguientes: • Los mensajes de error ICMP. • Los mensajes de error ICMP. • Un paquete IP destinado a una dirección broadcast (sea un broadcast IP o un • Un paquete IP destinado a una dirección broadcast (sea un broadcast IP o un broadcast MAC). broadcast MAC). • Un fragmento que no sea el primero. • Un fragmento que no sea el primero. • Una dirección de origen que no identifique una única estación. Por ejem- • Una dirección de origen que no identifique una única estación. Por ejem- plo, la dirección de origen válida 0.0.0.0 o la dirección de origen no válida plo, la dirección de origen válida 0.0.0.0 o la dirección de origen no válida 255.255.255.255. 255.255.255.255. Fijaos en que en cualquiera de estas situaciones podrían provocarse respuestas Fijaos en que en cualquiera de estas situaciones podrían provocarse respuestas en cascada que podrían afectar gravemente a la red. en cascada que podrían afectar gravemente a la red. Parches Parches Desgraciadamente, no todas las implementaciones TCP/IP han tenido en cuenta las excepciones existentes en la generación de mensajes de error, y algunos usuarios desaprensivos han explotado estos problemas para bloquear sistemas y redes remotas. Asimismo, de vez en cuando se descubren nuevas excepciones que pueden afectar a nuestros sistemas. Desgraciadamente, no todas las implementaciones TCP/IP han tenido en cuenta las excepciones existentes en la generación de mensajes de error, y algunos usuarios desaprensivos han explotado estos problemas para bloquear sistemas y redes remotas. Asimismo, de vez en cuando se descubren nuevas excepciones que pueden afectar a nuestros sistemas. Los fabricantes de sistemas operativos publican regularmente parches (patch) que permiten solucionar los problemas (las vulnerabilidades) que se han descubierto desde la fecha de publicación de la última versión. Los fabricantes de sistemas operativos publican regularmente parches (patch) que permiten solucionar los problemas (las vulnerabilidades) que se han descubierto desde la fecha de publicación de la última versión. 5.2. El programa ping 5.2. El programa ping El programa ping permite descubrir si una estación se encuentra activa o no, El programa ping permite descubrir si una estación se encuentra activa o no, simplemente efectuando lo siguiente: simplemente efectuando lo siguiente: $ ping <direccion_IP_destino> $ ping <direccion_IP_destino> La instrucción ping envía un mensaje ICMP del tipo 8 (petición de eco) con La instrucción ping envía un mensaje ICMP del tipo 8 (petición de eco) con el destino indicado. El receptor de la petición debe responder con una respues- el destino indicado. El receptor de la petición debe responder con una respues- FUOC • P03/75064/00977 40 ta de eco (ICMP tipo 0), y, cuando el ping la recibe, indica en pantalla que la estación remota está activa*. Mensaje ICMP de petición de eco TCP/IP: los protocolos de la red Internet * Evidentemente, la instrucción debería llamarse ping-pong. FUOC • P03/75064/00977 ta de eco (ICMP tipo 0), y, cuando el ping la recibe, indica en pantalla que la estación remota está activa*. Mensaje ICMP de petición de eco Mensaje ICMP de respuesta de eco 40 En sistemas multitarea puede haber más de una petición en curso. Para saber a cuál de las instrucciones ping debe entregarse la respuesta, cada ping asigna cuál de las instrucciones ping debe entregarse la respuesta, cada ping asigna el identificador del proceso ping a los mensajes generados. El campo Identifi- el identificador del proceso ping a los mensajes generados. El campo Identifi- cador de secuencia permite al ping enviar diferentes paquetes e identificar sus cador de secuencia permite al ping enviar diferentes paquetes e identificar sus mite añadir una cadena arbitraria de bytes a la petición de eco (ping –s en UNIX * En diferentes versiones de UNIX los parámetros pueden cambiar. En caso de duda, hacemos man ping. y ping –t en MSWindows). La respuesta debe llevar una copia de dichos bytes. respuestas (ping –t en MSWindows y ping en UNIX*). El campo de datos permite añadir una cadena arbitraria de bytes a la petición de eco (ping –s en UNIX Actividad • Practicad el uso de la instrucción ping. Comprobad qué retrasos máximos se dan en Internet. Hacedlo a diferentes horas del día. • Practicad el uso de la instrucción ping. Comprobad qué retrasos máximos se dan en Internet. Hacedlo a diferentes horas del día. Con el ping tenemos otras opciones disponibles. En particular, la opción de Con el ping tenemos otras opciones disponibles. En particular, la opción de no de los campos del mensaje ICMP, sino que se encuentra dentro de la misma * En diferentes versiones de UNIX los parámetros pueden cambiar. En caso de duda, hacemos man ping. y ping –t en MSWindows). La respuesta debe llevar una copia de dichos bytes. Actividad memorización de rutas (record route o RR)*. Esta opción no se refleja en ningu- * Evidentemente, la instrucción debería llamarse ping-pong. Mensaje ICMP de respuesta de eco En sistemas multitarea puede haber más de una petición en curso. Para saber a respuestas (ping –t en MSWindows y ping en UNIX*). El campo de datos per- TCP/IP: los protocolos de la red Internet * La sintaxis de la opción RR en UNIX es ping –R y en MSWindows, ping –r. memorización de rutas (record route o RR)*. Esta opción no se refleja en ninguno de los campos del mensaje ICMP, sino que se encuentra dentro de la misma cabecera IP, en el campo de opciones. cabecera IP, en el campo de opciones. Las diferentes opciones que se encuentran disponibles en la cabecera se iden- Las diferentes opciones que se encuentran disponibles en la cabecera se iden- tifican por medio del primer byte del campo de opciones de la cabecera IP: tifican por medio del primer byte del campo de opciones de la cabecera IP: * La sintaxis de la opción RR en UNIX es ping –R y en MSWindows, ping –r. FUOC • P03/75064/00977 41 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 41 Si el originador quiere activar la opción RR, el primer byte debe ser 7. En todas Si el originador quiere activar la opción RR, el primer byte debe ser 7. En todas las opciones el primer byte indica el tipo, y el segundo, la longitud en bytes de las opciones el primer byte indica el tipo, y el segundo, la longitud en bytes de la opción. En este caso siempre se pide el máximo posible, que es 39 bytes, pues- la opción. En este caso siempre se pide el máximo posible, que es 39 bytes, pues- to que el campo siguiente tiene un byte (puntero), al que sigue una cadena to que el campo siguiente tiene un byte (puntero), al que sigue una cadena de campos de 4 bytes (que son las direcciones IP encontradas). El campo de campos de 4 bytes (que son las direcciones IP encontradas). El campo Puntero se inicializa a 4, y dentro de los 4 bytes siguientes se guarda la direc- Puntero se inicializa a 4, y dentro de los 4 bytes siguientes se guarda la direc- ción de la estación en que ejecutamos el ping. ción de la estación en que ejecutamos el ping. Cada direccionador debe mirar dentro de los paquetes IP (ICMP o no) para ver si tienen la opción RR activada. Si un direccionador encuentra un paquete Consultad los detalles de la cabecera de los mensajes IP en el subapartado 3.2 de este módulo didáctico. Cada direccionador debe mirar dentro de los paquetes IP (ICMP o no) para ver si tienen la opción RR activada. Si un direccionador encuentra un paquete con esta opción activada, modifica la posición apuntada por el puntero con con esta opción activada, modifica la posición apuntada por el puntero con su dirección (por norma general, la dirección de salida del direccionador) e su dirección (por norma general, la dirección de salida del direccionador) e incrementa el valor del puntero en cuatro unidades. Cuando vuelve el men- incrementa el valor del puntero en cuatro unidades. Cuando vuelve el men- saje de respuesta de eco, se ha añadido una lista con todos los saltos que ha saje de respuesta de eco, se ha añadido una lista con todos los saltos que ha tenido que realizar el paquete (tanto de ida, como de vuelta). tenido que realizar el paquete (tanto de ida, como de vuelta). El campo de opciones tiene limitaciones de tamaño: sólo dispone de 36 bytes El campo de opciones tiene limitaciones de tamaño: sólo dispone de 36 bytes (39 - 3) para guardar direcciones IP. Como cada dirección ocupa 4 bytes, sólo hay (39 - 3) para guardar direcciones IP. Como cada dirección ocupa 4 bytes, sólo hay espacio para nueve direcciones IP. Si a ello le añadimos que no todos los direccio- espacio para nueve direcciones IP. Si a ello le añadimos que no todos los direccio- nadores comprueban si hay opciones dentro de los paquetes IP, o no actualizan nadores comprueban si hay opciones dentro de los paquetes IP, o no actualizan la opción RR, hace poco útil este tipo de ping en el mundo real. la opción RR, hace poco útil este tipo de ping en el mundo real. Actividad Actividad • Comprobad la ruta a diferentes destinos por medio de un ping con la opción de memorización de rutas. Valorad si la comprobación de esta opción está muy extendida. • Comprobad la ruta a diferentes destinos por medio de un ping con la opción de memorización de rutas. Valorad si la comprobación de esta opción está muy extendida. 5.3. El programa traceroute El programa traceroute permite encontrar las rutas entre un origen y un destino sin ninguna de las limitaciones del ping -R (ping -r en MSWindows). Uti- TCP/IP: los protocolos de la red Internet Consultad los detalles de la cabecera de los mensajes IP en el subapartado 3.2 de este módulo didáctico. 5.3. El programa traceroute En MSWindows traceroute recibe el nombre de tracert. El programa traceroute permite encontrar las rutas entre un origen y un destino sin ninguna de las limitaciones del ping -R (ping -r en MSWindows). Uti- liza un mecanismo bastante ingenioso basado en mensajes genéricos ICMP (y liza un mecanismo bastante ingenioso basado en mensajes genéricos ICMP (y no los específicos petición de eco y respuesta de eco del ping). no los específicos petición de eco y respuesta de eco del ping). El funcionamiento se basa en la explotación de dos mensajes ICMP: El funcionamiento se basa en la explotación de dos mensajes ICMP: 1) Tiempo de vida agotado (time-exceeded): cuando un direccionador recibe 1) Tiempo de vida agotado (time-exceeded): cuando un direccionador recibe un paquete, aparte de las tareas primordiales de direccionamiento, debe redu- un paquete, aparte de las tareas primordiales de direccionamiento, debe redu- cir en una unidad el valor del campo TTL de la cabecera IP. cir en una unidad el valor del campo TTL de la cabecera IP. En caso de que el valor (después de la reducción) sea cero, el paquete debe eli- En caso de que el valor (después de la reducción) sea cero, el paquete debe eli- minarse. Sin embargo, esta eliminación no es silenciosa, sino que el direcciona- minarse. Sin embargo, esta eliminación no es silenciosa, sino que el direcciona- dor responsable envía una notificación de la misma al originador del paquete dor responsable envía una notificación de la misma al originador del paquete por medio de un mensaje ICMP tipo 11 y código 0 (tiempo de vida agotado). por medio de un mensaje ICMP tipo 11 y código 0 (tiempo de vida agotado). Este paquete ICMP contiene la cabecera del paquete IP que se ha eliminado y Este paquete ICMP contiene la cabecera del paquete IP que se ha eliminado y los primeros 8 bytes de su contenido (seguramente la cabecera UDP o los pri- los primeros 8 bytes de su contenido (seguramente la cabecera UDP o los pri- meros bytes de la cabecera TCP). meros bytes de la cabecera TCP). En MSWindows traceroute recibe el nombre de tracert. FUOC • P03/75064/00977 42 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 42 2) Puerto inalcanzable (unreachable-port): cuando una estación recibe un da- 2) Puerto inalcanzable (unreachable-port): cuando una estación recibe un da- tagrama UDP o un segmento TCP destinado a un puerto que la máquina no tagrama UDP o un segmento TCP destinado a un puerto que la máquina no escucha, responde con un mensaje de error de puerto inalcanzable (tipo 3 con escucha, responde con un mensaje de error de puerto inalcanzable (tipo 3 con código 3). código 3). El programa traceroute simplemente debe enviar paquetes al destino con TTL secuencialmente ascendentes: el paquete (con independencia del tipo que sea) que tenga el TTL = 1 será rechazado por el primer direccionador, el que tenga TTL = 2 lo será por el segundo, y así consecutivamente. Cada uno de los direccionadores devolverá un mensaje ICMP “tiempo de vida agotado”, una pista del todo suficiente para que el originador averigüe el camino que han seguido todos los paquetes. Implementaciones de los traceroute Las implementaciones de UNIX probadas utilizan un datagrama UDP destinado a un puerto elevado (para minimizar la probabilidad de que exista un servicio usando el puerto). El tracert de Windows utiliza precisamente mensajes ICMP echo-request. El programa traceroute simplemente debe enviar paquetes al destino con TTL secuencialmente ascendentes: el paquete (con independencia del tipo que sea) que tenga el TTL = 1 será rechazado por el primer direccionador, el que tenga TTL = 2 lo será por el segundo, y así consecutivamente. Cada uno de los direccionadores devolverá un mensaje ICMP “tiempo de vida agotado”, una pista del todo suficiente para que el originador averigüe el camino que han seguido todos los paquetes. Cuando el mensaje llega al destino, debe devolver algún mensaje para sa- Cuando el mensaje llega al destino, debe devolver algún mensaje para sa- ber que la secuencia ha finalizado. Por norma general, el mensaje será ber que la secuencia ha finalizado. Por norma general, el mensaje será “puerto inalcanzable” si el mensaje enviado era un datagrama UDP a un “puerto inalcanzable” si el mensaje enviado era un datagrama UDP a un puerto no usado, o bien una respuesta de eco si lo que se ha enviado son puerto no usado, o bien una respuesta de eco si lo que se ha enviado son paquetes ICMP de petición de eco. paquetes ICMP de petición de eco. TCP/IP: los protocolos de la red Internet Implementaciones de los traceroute Las implementaciones de UNIX probadas utilizan un datagrama UDP destinado a un puerto elevado (para minimizar la probabilidad de que exista un servicio usando el puerto). El tracert de Windows utiliza precisamente mensajes ICMP echo-request. FUOC • P03/75064/00977 43 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 43 Actividades Actividades • Utilizad el programa traceroute (tracert en MSWindows) para descubrir los caminos que siguen los paquetes hasta diferentes destinos. • Utilizad el programa traceroute (tracert en MSWindows) para descubrir los caminos que siguen los paquetes hasta diferentes destinos. • Observad cuántos saltos hay desde vuestra máquina hasta www.nasa.gov y calculad qué número de paquetes existe en la cola de salida de los diferentes direccionadores. Comprobad cuáles son las áreas más cargadas. Hacedlo a diferentes horas del día y fijaos en las distintas zonas horarias que cruza el traceroute. • Observad cuántos saltos hay desde vuestra máquina hasta www.nasa.gov y calculad qué número de paquetes existe en la cola de salida de los diferentes direccionadores. Comprobad cuáles son las áreas más cargadas. Hacedlo a diferentes horas del día y fijaos en las distintas zonas horarias que cruza el traceroute. • Probad qué sucede si nos conectamos a un puerto no servido. Por ejemplo, conectaos al puerto TCP 1234 (podéis hacerlo con Telnet localhost 1234). Tened en cuenta que la aplicación Telnet en Windows95 no admite el segundo argumento (probadlo en UNIX, o bien en Windows NT). Consultad aplicaciones alternativas a telnet en el anexo 1 de este módulo didáctico. • Probad qué sucede si nos conectamos a un puerto no servido. Por ejemplo, conectaos al puerto TCP 1234 (podéis hacerlo con Telnet localhost 1234). Tened en cuenta que la aplicación Telnet en Windows95 no admite el segundo argumento (probadlo en UNIX, o bien en Windows NT). 5.4. Mensaje de redireccionamiento 5.4. Mensaje de redireccionamiento Es normal que los sistemas se conecten a Internet sólo configurando su direc- Es normal que los sistemas se conecten a Internet sólo configurando su direc- ción IP, la máscara de la LAN y el direccionador que gestiona la comunicación ción IP, la máscara de la LAN y el direccionador que gestiona la comunicación remota. Cuando hay más de un direccionador en la LAN local, el que hemos remota. Cuando hay más de un direccionador en la LAN local, el que hemos configurado en la estación detecta que recibe paquetes que, en realidad, debe- configurado en la estación detecta que recibe paquetes que, en realidad, debe- rían ir a otro de los direccionadores de la misma LAN. rían ir a otro de los direccionadores de la misma LAN. A este efecto, los direccionadores disponen del mensaje ICMP de redirecciona- A este efecto, los direccionadores disponen del mensaje ICMP de redirecciona- miento (redirect), que actúa de la manera siguiente: miento (redirect), que actúa de la manera siguiente: 1) La estación envía un paquete al direccionador que tiene configurado (A). 1) La estación envía un paquete al direccionador que tiene configurado (A). El direccionador A descubre que la mejor ruta pasa por utilizar el direcciona- El direccionador A descubre que la mejor ruta pasa por utilizar el direcciona- dor B. dor B. 2) El direccionador A direcciona el paquete hacia el direccionador B. 2) El direccionador A direcciona el paquete hacia el direccionador B. 3) Notifica a la estación que modifique su tabla de direccionamiento. 3) Notifica a la estación que modifique su tabla de direccionamiento. Notad que, normalmente, el direccionador continúa direccionando los paque- Notad que, normalmente, el direccionador continúa direccionando los paque- tes (paso 2). Aunque la estación no hiciera caso del mensaje ICMP de redirec- tes (paso 2). Aunque la estación no hiciera caso del mensaje ICMP de redirec- cionamiento (paso 3), continuaría teniendo conectividad con el exterior; sin cionamiento (paso 3), continuaría teniendo conectividad con el exterior; sin embargo, si le hace caso, mejorará el rendimiento del sistema. embargo, si le hace caso, mejorará el rendimiento del sistema. TCP/IP: los protocolos de la red Internet Consultad aplicaciones alternativas a telnet en el anexo 1 de este módulo didáctico. FUOC • P03/75064/00977 44 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 44 Cuando una estación obedece a un ICMP de redireccionamiento, su tabla de Cuando una estación obedece a un ICMP de redireccionamiento, su tabla de direccionamiento queda convenientemente actualizada. El comando route direccionamiento queda convenientemente actualizada. El comando route puede proporcionarnos alguna pista de si este fenómeno tiene lugar. puede proporcionarnos alguna pista de si este fenómeno tiene lugar. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 45 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 45 6. Protocolos del nivel de transporte 6. Protocolos del nivel de transporte El objetivo principal del nivel de transporte es actuar de interfaz entre los El objetivo principal del nivel de transporte es actuar de interfaz entre los niveles orientados a la aplicación y los niveles orientados a la red de la jerar- niveles orientados a la aplicación y los niveles orientados a la red de la jerar- quía de protocolos (tanto OSI como TCP/IP). quía de protocolos (tanto OSI como TCP/IP). El nivel de transporte oculta a los niveles altos del sistema el tipo de tecnología (red) al que está conectado el terminal. La figura siguiente describe el posicionamiento del nivel de transporte respecto al resto de los niveles. Recordad Los terminales pueden estar conectados tanto a una red de área local (LAN) como a una red de gran alcance (WAN), e interconectados por medio del protocolo de Internet. El nivel de transporte oculta a los niveles altos del sistema el tipo de tecnología (red) al que está conectado el terminal. La figura siguiente describe el posicionamiento del nivel de transporte respecto al resto de los niveles. Para introducir los protocolos del nivel de transporte, nos centramos en la je- Para introducir los protocolos del nivel de transporte, nos centramos en la je- rarquía de protocolos TCP/IP. En esta última se definen dos protocolos de rarquía de protocolos TCP/IP. En esta última se definen dos protocolos de transporte: el UDP y el TCP. El UDP es no orientado a la conexión, mientras transporte: el UDP y el TCP. El UDP es no orientado a la conexión, mientras que el TCP es orientado a la conexión. que el TCP es orientado a la conexión. En el caso de la jerarquía TCP/IP, se definen dos direcciones que relacionan el En el caso de la jerarquía TCP/IP, se definen dos direcciones que relacionan el nivel de transporte con los niveles superior e inferior: nivel de transporte con los niveles superior e inferior: • La dirección IP, que ya conocemos, es la dirección que identifica un sub- • La dirección IP, que ya conocemos, es la dirección que identifica un sub- sistema dentro de una red. • El puerto identifica la aplicación que requiere la comunicación. Para identificar las diferentes aplicaciones, los protocolos TCP/IP marcan Para identificar las diferentes aplicaciones, los protocolos TCP/IP marcan cada paquete (o unidad de información) con un identificador de 16 bits lla- cada paquete (o unidad de información) con un identificador de 16 bits lla- mado puerto. mado puerto. sobre protocolos del nivel de transporte. Ello significa que un mismo protoco- Recordad Los terminales pueden estar conectados tanto a una red de área local (LAN) como a una red de gran alcance (WAN), e interconectados por medio del protocolo de Internet. sistema dentro de una red. • El puerto identifica la aplicación que requiere la comunicación. La verdadera utilidad de los puertos es que permiten multiplexar aplicaciones TCP/IP: los protocolos de la red Internet Más adelante, volveremos a hablar de este punto. La verdadera utilidad de los puertos es que permiten multiplexar aplicaciones sobre protocolos del nivel de transporte. Ello significa que un mismo protoco- Más adelante, volveremos a hablar de este punto. FUOC • P03/75064/00977 46 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 46 lo de transporte lleva información de diferentes aplicaciones y estas últimas lo de transporte lleva información de diferentes aplicaciones y estas últimas son identificadas por el puerto. son identificadas por el puerto. Una aplicación puede establecer una comunicación por medio de la jerarquía Una aplicación puede establecer una comunicación por medio de la jerarquía de protocolos TCP/IP. de protocolos TCP/IP. Los protocolos del nivel de aplicación pueden ser los siguientes: Los protocolos del nivel de aplicación pueden ser los siguientes: • • • • • • • • FTP (file transfer protocol) para la transferencia de ficheros. HTTP (hipertext transfer protocol) base del WWW. SMTP (simple mail transfer protocol) para el correo electrónico. SNMP (simple network management protocol) para la gestión de la red. FTP (file transfer protocol) para la transferencia de ficheros. HTTP (hipertext transfer protocol) base del WWW. SMTP (simple mail transfer protocol) para el correo electrónico. SNMP (simple network management protocol) para la gestión de la red. Si alguna aplicación que corre en un terminal quiere establecer una comuni- Si alguna aplicación que corre en un terminal quiere establecer una comuni- cación con un servidor o con otro terminal, debe utilizar un protocolo de cación con un servidor o con otro terminal, debe utilizar un protocolo de transporte: el TCP o el UDP. Como el destino puede encontrarse en una red transporte: el TCP o el UDP. Como el destino puede encontrarse en una red remota, los protocolos de transporte necesitan el protocolo Internet para po- remota, los protocolos de transporte necesitan el protocolo Internet para po- der llegar al terminal o servidor remoto. der llegar al terminal o servidor remoto. Por tanto, cuando se establece la comunicación, no sólo es esencial conocer el Por tanto, cuando se establece la comunicación, no sólo es esencial conocer el puerto que identifica la aplicación de destino, sino también la dirección IP que puerto que identifica la aplicación de destino, sino también la dirección IP que identifica el terminal o servidor dentro del conjunto de redes. identifica el terminal o servidor dentro del conjunto de redes. Como podéis observar en la figura anterior, las aplicaciones utilizan uno de los Como podéis observar en la figura anterior, las aplicaciones utilizan uno de los dos protocolos de transporte para comunicarse con equipos remotos. Para que dos protocolos de transporte para comunicarse con equipos remotos. Para que un protocolo de aplicación se pueda comunicar con otro del mismo nivel si- un protocolo de aplicación se pueda comunicar con otro del mismo nivel si- tuado en un terminal remoto, debe transmitirle un flujo de bytes que es en- tuado en un terminal remoto, debe transmitirle un flujo de bytes que es en- capsulado por los protocolos del nivel de transporte. capsulado por los protocolos del nivel de transporte. El conjunto de bytes que transmite el nivel de transporte TCP se conoce El conjunto de bytes que transmite el nivel de transporte TCP se conoce como segmento TCP, mientras que el conjunto de bytes que transmite como segmento TCP, mientras que el conjunto de bytes que transmite el protocolo de transporte UDP se llama datagrama UDP. el protocolo de transporte UDP se llama datagrama UDP. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 47 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 47 Dos aplicaciones se comunican siguiendo el modelo cliente/servidor. En una Dos aplicaciones se comunican siguiendo el modelo cliente/servidor. En una conexión es típico que una aplicación (el cliente) inicie una comunicación conexión es típico que una aplicación (el cliente) inicie una comunicación pidiendo una información a otra aplicación (el servidor). Pensemos en un or- pidiendo una información a otra aplicación (el servidor). Pensemos en un or- denador que esté conectado a una LAN y tenga asignada una dirección IP. denador que esté conectado a una LAN y tenga asignada una dirección IP. Supongamos que dicho ordenador actúa como servidor de correo electróni- Supongamos que dicho ordenador actúa como servidor de correo electróni- co, además de como servidor de nombres. Un cliente conectado a Internet que co, además de como servidor de nombres. Un cliente conectado a Internet que solicita resolver un nombre necesita conocer la dirección IP asignada a este or- solicita resolver un nombre necesita conocer la dirección IP asignada a este or- denador y el puerto que identifica la aplicación servidor que resuelve nombres. denador y el puerto que identifica la aplicación servidor que resuelve nombres. El cliente necesita conocer ambas direcciones puesto que el servidor estará co- El cliente necesita conocer ambas direcciones puesto que el servidor estará co- nectado a una red y, por tanto, tendrá una dirección IP que debe ser conocida nectado a una red y, por tanto, tendrá una dirección IP que debe ser conocida para que se pueda establecer una comunicación con esta máquina remota. para que se pueda establecer una comunicación con esta máquina remota. Dicha comunicación se consigue por medio del IP. Sin embargo, una vez Dicha comunicación se consigue por medio del IP. Sin embargo, una vez conseguida, el servidor debe ser capaz de identificar la aplicación con que de- conseguida, el servidor debe ser capaz de identificar la aplicación con que de- sea comunicarse el cliente entre las muchas que corren: servidor de nombres, sea comunicarse el cliente entre las muchas que corren: servidor de nombres, servidor de correo electrónico, etc. servidor de correo electrónico, etc. El cliente conoce la dirección IP de origen (la suya), la dirección IP de destino El cliente conoce la dirección IP de origen (la suya), la dirección IP de destino (la del servidor) y su puerto de origen (identifica la aplicación cliente). Sin em- (la del servidor) y su puerto de origen (identifica la aplicación cliente). Sin em- bargo, también debe conocer el número (puerto de destino) que identifica la bargo, también debe conocer el número (puerto de destino) que identifica la aplicación deseada en el servidor, y lo hace por medio de los llamados puertos aplicación deseada en el servidor, y lo hace por medio de los llamados puertos conocidos (well-known port). conocidos (well-known port). Un puerto conocido (well-known port) es un puerto (número) reservado que identifica una aplicación conocida. Los puertos conocidos son asignados por IANA (Internet Assigned Numbers Authority). Un puerto conocido (well-known port) es un puerto (número) reservado que identifica una aplicación conocida. Ejemplo Ejemplo Los valores de puertos conocidos para aplicaciones que utilizan el UDP son los siguientes: Los valores de puertos conocidos para aplicaciones que utilizan el UDP son los siguientes: • Puerto 7 para el servidor de eco. • Puerto 53 para el servidor de nombres (DNS*). • Puerto 69 para el protocolo de transferencia de ficheros trivial (TFTP**). • Puerto 7 para el servidor de eco. • Puerto 53 para el servidor de nombres (DNS*). • Puerto 69 para el protocolo de transferencia de ficheros trivial (TFTP**). Y algunos valores de puertos conocidos para aplicaciones que utilizan el TCP son los siguientes: * DNS es la sigla de domain name server. ** TFTP es la sigla de trivial file transfer protocol. Y algunos valores de puertos conocidos para aplicaciones que utilizan el TCP son los siguientes: • Puertos 20 y 21 para el protocolo de transferencia de ficheros, FTP de datos y de control respectivamente. • Puerto 23 para el Telnet Remote Login. • Puerto 80 para el HTTP. • Puertos 20 y 21 para el protocolo de transferencia de ficheros, FTP de datos y de control respectivamente. • Puerto 23 para el Telnet Remote Login. • Puerto 80 para el HTTP. Evidentemente, el servidor no necesita conocer a priori el puerto de origen, Evidentemente, el servidor no necesita conocer a priori el puerto de origen, puesto que se limita a responder a cualquier petición de cualquier cliente. Este puesto que se limita a responder a cualquier petición de cualquier cliente. Este último informa en la unidad de datos de protocolo (PDU) del nivel de trans- último informa en la unidad de datos de protocolo (PDU) del nivel de trans- porte (o bien un datagrama UDP, o bien un segmento TCP) de los puertos de porte (o bien un datagrama UDP, o bien un segmento TCP) de los puertos de origen y de destino, de manera que el servidor conocerá el puerto de origen origen y de destino, de manera que el servidor conocerá el puerto de origen una vez haya recibido una petición. una vez haya recibido una petición. TCP/IP: los protocolos de la red Internet Los puertos conocidos son asignados por IANA (Internet Assigned Numbers Authority). * DNS es la sigla de domain name server. ** TFTP es la sigla de trivial file transfer protocol. FUOC • P03/75064/00977 48 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 48 7. El UDP (user datagram protocol) 7. El UDP (user datagram protocol) El UDP es un protocolo no orientado a la conexión, de manera que no propor- El UDP es un protocolo no orientado a la conexión, de manera que no propor- ciona ningún tipo de control de errores ni de flujo, aunque utiliza mecanis- ciona ningún tipo de control de errores ni de flujo, aunque utiliza mecanis- mos de detección de errores. En caso de detectar un error, el UDP no entrega mos de detección de errores. En caso de detectar un error, el UDP no entrega el datagrama a la aplicación, sino que lo descarta. Conviene recordar que, por debajo, el UDP está utilizando el IP, que también es un protocolo no orientado a la conexión. Por tanto, se pensó en definir un protocolo del nivel de transporte que permitiera que la aplicación explotara este tipo de características y que fuera cuanto más simple y sencillo mejor. La simplicidad del UDP hace que sea ideal para aplicaciones que requieren pocos retrasos (por ejemplo, aplicaciones en tiempo real). El UDP también es No orientado a comunicación El UDP es un protocolo no orientado a la conexión. Ello significa que cada datagrama UDP existe con independencia del resto de los datagramas UDP. Consultad el TCP , un protocolo orientado a conexión y mucho más complejo que el UDP, en el apartado 8 de este módulo didáctico. el datagrama a la aplicación, sino que lo descarta. Conviene recordar que, por debajo, el UDP está utilizando el IP, que también es un protocolo no orientado a la conexión. Por tanto, se pensó en definir un protocolo del nivel de transporte que permitiera que la aplicación explotara este tipo de características y que fuera cuanto más simple y sencillo mejor. La simplicidad del UDP hace que sea ideal para aplicaciones que requieren pocos retrasos (por ejemplo, aplicaciones en tiempo real). El UDP también es ideal para los sistemas que no pueden implementar un sistema tan complejo ideal para los sistemas que no pueden implementar un sistema tan complejo como el TCP. como el TCP. La figura siguiente muestra la unidad de datos del protocolo UDP y su encap- La figura siguiente muestra la unidad de datos del protocolo UDP y su encap- sulamiento en un datagrama IP. Cada operación de salida de un datagrama sulamiento en un datagrama IP. Cada operación de salida de un datagrama UDP provoca la generación de un datagrama IP: UDP provoca la generación de un datagrama IP: Las características más importantes del UDP son las siguientes: Las características más importantes del UDP son las siguientes: • No garantiza la fiabilidad; es decir, no se tiene la seguridad de que cada da- • No garantiza la fiabilidad; es decir, no se tiene la seguridad de que cada da- tagrama UDP transmitido llegue a su destino; es un protocolo best-effort: el tagrama UDP transmitido llegue a su destino; es un protocolo best-effort: el UDP hace todo lo posible para transferir los datagramas de su aplicación, UDP hace todo lo posible para transferir los datagramas de su aplicación, pero no garantiza su entrega. pero no garantiza su entrega. TCP/IP: los protocolos de la red Internet No orientado a comunicación El UDP es un protocolo no orientado a la conexión. Ello significa que cada datagrama UDP existe con independencia del resto de los datagramas UDP. Consultad el TCP , un protocolo orientado a conexión y mucho más complejo que el UDP, en el apartado 8 de este módulo didáctico. FUOC • P03/75064/00977 49 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 49 • No preserva la secuencia de la información que le proporciona la aplicación. • No preserva la secuencia de la información que le proporciona la aplicación. Como está en modo datagrama y utiliza un protocolo por debajo como el IP, Como está en modo datagrama y utiliza un protocolo por debajo como el IP, que también está en modo datagrama, la aplicación puede recibir la infor- que también está en modo datagrama, la aplicación puede recibir la infor- mación desordenada. La aplicación debe estar preparada para que haya da- mación desordenada. La aplicación debe estar preparada para que haya da- tagramas que se pierdan, lleguen con retraso o se hayan desordenado. tagramas que se pierdan, lleguen con retraso o se hayan desordenado. El datagrama UDP consta de una cabecera y un cuerpo para encapsular los da- El datagrama UDP consta de una cabecera y un cuerpo para encapsular los da- tos. La cabecera consta de los elementos siguientes: tos. La cabecera consta de los elementos siguientes: • Los campos Puerto de origen y Puerto de destino, que identifican las aplica- • Los campos Puerto de origen y Puerto de destino, que identifican las aplica- ciones en los terminales de origen y de destino. Cada puerto tiene 16 bits. ciones en los terminales de origen y de destino. Cada puerto tiene 16 bits. • El campo Longitud indica la longitud, en octetos, del datagrama UDP incluyendo la cabecera UDP (es la diferencia de la longitud del datagrama IP menos la cabecera IP). Como la longitud máxima de un datagrama IP es de 65.535 bytes, con una cabecera estándar de 20 bytes, la longitud máxima de un datagrama UDP es de 65.515 bytes. • El campo Checksum (16 bits) es opcional y protege tanto la cabecera como los datos UDP (es preciso recordar que el checksum del datagrama IP sólo cubre la cabecera IP). Cuando el UDP recibe un datagrama y determina que hay errores, lo descarta y no lo entrega a ninguna aplicación. Medida de los buffers de las aplicaciones Hay muchas aplicaciones que limitan la medida de sus buffers de transmisión y recepción por debajo de la medida máxima de un datagrama UDP. Por ejemplo, es típico encontrar aplicaciones que proporcionan, por defecto, medidas máximas del datagrama UDP de 8.192 bytes. Este valor proviene de la cantidad de datos del usuario que el NFS (network file system) puede leer o escribir por defecto. • El campo Longitud indica la longitud, en octetos, del datagrama UDP incluyendo la cabecera UDP (es la diferencia de la longitud del datagrama IP menos la cabecera IP). Como la longitud máxima de un datagrama IP es de 65.535 bytes, con una cabecera estándar de 20 bytes, la longitud máxima de un datagrama UDP es de 65.515 bytes. • El campo Checksum (16 bits) es opcional y protege tanto la cabecera como los datos UDP (es preciso recordar que el checksum del datagrama IP sólo cubre la cabecera IP). Cuando el UDP recibe un datagrama y determina que hay errores, lo descarta y no lo entrega a ninguna aplicación. Cálculo del checksum en el UDP Cálculo del checksum en el UDP El cálculo del checksum en el UDP es muy parecido al cálculo del checksum en el IP (suma en complemento en unos de palabras de 16 bits), con la particularidad de que la longitud del datagrama UDP puede ser par o impar. En caso de que sea impar, se le añade un 0 al final del datagrama para calcular el checksum (este 0 no se transmite). Para calcular el checksum, el UDP utiliza una seudocabecera de 12 bytes con algunos de los campos IP. Esta última no se transmite; el UDP sólo la utiliza para calcular el checksum y le sirve para comprobar que la información que le proporciona el IP sea realmente para él. El cálculo del checksum en el UDP es muy parecido al cálculo del checksum en el IP (suma en complemento en unos de palabras de 16 bits), con la particularidad de que la longitud del datagrama UDP puede ser par o impar. En caso de que sea impar, se le añade un 0 al final del datagrama para calcular el checksum (este 0 no se transmite). Para calcular el checksum, el UDP utiliza una seudocabecera de 12 bytes con algunos de los campos IP. Esta última no se transmite; el UDP sólo la utiliza para calcular el checksum y le sirve para comprobar que la información que le proporciona el IP sea realmente para él. Como hemos visto, el UDP no proporciona una entrega de información segura Como hemos visto, el UDP no proporciona una entrega de información segura y fiable a la aplicación. Sin embargo, puede haber aplicaciones, por ejemplo, y fiable a la aplicación. Sin embargo, puede haber aplicaciones, por ejemplo, interesadas en transmitir información en modo multicast o broadcast (a un gru- interesadas en transmitir información en modo multicast o broadcast (a un gru- po de usuarios o a todos los usuarios de la red). En este caso, sí que tiene sen- po de usuarios o a todos los usuarios de la red). En este caso, sí que tiene sen- tido enviar la información a muchos receptores sin esperar una respuesta de tido enviar la información a muchos receptores sin esperar una respuesta de todos, de manera que es ideal disponer de un protocolo de transporte simple todos, de manera que es ideal disponer de un protocolo de transporte simple y sencillo no orientado a la conexión como el UDP. y sencillo no orientado a la conexión como el UDP. Por otro lado, alguien podría preguntarse qué ventaja presenta el UDP con res- Por otro lado, alguien podría preguntarse qué ventaja presenta el UDP con res- pecto al IP; es decir, por qué se utiliza el UDP si el IP también ofrece una co- pecto al IP; es decir, por qué se utiliza el UDP si el IP también ofrece una co- nexión en modo datagrama. La respuesta es que el UDP ofrece un servicio de nexión en modo datagrama. La respuesta es que el UDP ofrece un servicio de multiplexación a las aplicaciones que el IP no ofrece. multiplexación a las aplicaciones que el IP no ofrece. Ejemplo Ejemplo ¿Qué sucede si diferentes aplicaciones se quieren comunicar con otras aplicaciones en máquinas remotas sin utilizar un servicio fiable como el TCP? El IP identifica la estación remota, pero ¿cómo se pueden identificar las aplicaciones destino en esta última? La solución consiste en utilizar el UDP y las direcciones puerto para multiplexar la información. Con la dirección puerto es posible identificar cuál es la aplicación de destino en la estación remota. ¿Qué sucede si diferentes aplicaciones se quieren comunicar con otras aplicaciones en máquinas remotas sin utilizar un servicio fiable como el TCP? El IP identifica la estación remota, pero ¿cómo se pueden identificar las aplicaciones destino en esta última? La solución consiste en utilizar el UDP y las direcciones puerto para multiplexar la información. Con la dirección puerto es posible identificar cuál es la aplicación de destino en la estación remota. TCP/IP: los protocolos de la red Internet Medida de los buffers de las aplicaciones Hay muchas aplicaciones que limitan la medida de sus buffers de transmisión y recepción por debajo de la medida máxima de un datagrama UDP. Por ejemplo, es típico encontrar aplicaciones que proporcionan, por defecto, medidas máximas del datagrama UDP de 8.192 bytes. Este valor proviene de la cantidad de datos del usuario que el NFS (network file system) puede leer o escribir por defecto. FUOC • P03/75064/00977 50 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 50 8. El TCP (transmission control protocol) 8. El TCP (transmission control protocol) Como hemos podido observar, el UDP no garantiza la entrega de la informa- Como hemos podido observar, el UDP no garantiza la entrega de la informa- ción que le proporciona una aplicación. Tampoco reordena la información en ción que le proporciona una aplicación. Tampoco reordena la información en caso de que llegue en un orden diferente de aquél en que se ha transmitido. caso de que llegue en un orden diferente de aquél en que se ha transmitido. Existen aplicaciones que no pueden tolerar dichas limitaciones. Para superar- Existen aplicaciones que no pueden tolerar dichas limitaciones. Para superar- las, el nivel de transporte proporciona un protocolo llamado TCP. las, el nivel de transporte proporciona un protocolo llamado TCP. El TCP proporciona fiabilidad a la aplicación; es decir, garantiza la entrega El TCP proporciona fiabilidad a la aplicación; es decir, garantiza la entrega de toda la información en el mismo orden en que ha sido transmitida por de toda la información en el mismo orden en que ha sido transmitida por la aplicación de origen. Para conseguir esta fiabilidad, el TCP proporciona la aplicación de origen. Para conseguir esta fiabilidad, el TCP proporciona un servicio orientado a la conexión con un control de flujo y errores. un servicio orientado a la conexión con un control de flujo y errores. 8.1. El TCP proporciona fiabilidad 8.1. El TCP proporciona fiabilidad Para proporcionar un servicio fiable a la aplicación, el TCP se basa en los prin- Para proporcionar un servicio fiable a la aplicación, el TCP se basa en los prin- cipios siguientes: cipios siguientes: 1) Transmisión libre de error. El TCP debe entregar a la aplicación de destino 1) Transmisión libre de error. El TCP debe entregar a la aplicación de destino exactamente la misma información que le entregó la aplicación de origen. De exactamente la misma información que le entregó la aplicación de origen. De hecho, se trata de una entrega “casi libre” de errores, puesto que puede haber hecho, se trata de una entrega “casi libre” de errores, puesto que puede haber algunos que un mecanismo de detección de errores no pueda detectar. algunos que un mecanismo de detección de errores no pueda detectar. 2) Garantía de entrega de la información. El TCP garantiza que toda la in- 2) Garantía de entrega de la información. El TCP garantiza que toda la in- formación transmitida por la aplicación de origen se entregue a la aplicación formación transmitida por la aplicación de origen se entregue a la aplicación de destino. Si no es posible, el TCP debe avisar a la aplicación. de destino. Si no es posible, el TCP debe avisar a la aplicación. 3) Garantía de mantenimiento de la secuencia de transmisión. El TCP ga- 3) Garantía de mantenimiento de la secuencia de transmisión. El TCP ga- rantiza la entrega del flujo de información en el mismo orden en que le fue rantiza la entrega del flujo de información en el mismo orden en que le fue entregado por la aplicación de origen. entregado por la aplicación de origen. 4) Eliminación de duplicados. El TCP garantiza que sólo entregará una co- 4) Eliminación de duplicados. El TCP garantiza que sólo entregará una co- pia de la información transmitida a la aplicación de destino. En caso de que pia de la información transmitida a la aplicación de destino. En caso de que reciba copias a causa del funcionamiento de la red o de los protocolos que se reciba copias a causa del funcionamiento de la red o de los protocolos que se implementan por debajo del nivel de transporte, el TCP las eliminará. implementan por debajo del nivel de transporte, el TCP las eliminará. Las propiedades siguientes del TCP garantizan un servicio de entrega fiable de Las propiedades siguientes del TCP garantizan un servicio de entrega fiable de la información: la información: a) El TCP define flujos (stream oriented): la aplicación organiza los datos de in- a) El TCP define flujos (stream oriented): la aplicación organiza los datos de in- formación en flujos (streams) de bits estructurados en bytes. En consecuencia, formación en flujos (streams) de bits estructurados en bytes. En consecuencia, el receptor pasa a su aplicación el mismo flujo de bytes que la aplicación de el receptor pasa a su aplicación el mismo flujo de bytes que la aplicación de origen ha pasado al TCP. Por otro lado, la aplicación no tiene ningún modo origen ha pasado al TCP. Por otro lado, la aplicación no tiene ningún modo de indicar al TCP los límites en que quiere transferir la información: es el TCP de indicar al TCP los límites en que quiere transferir la información: es el TCP el que decide en cada momento cuántos bytes transfiere en un segmento. el que decide en cada momento cuántos bytes transfiere en un segmento. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 51 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 51 b) El TCP está orientado a la conexión: tiene una fase de establecimiento de b) El TCP está orientado a la conexión: tiene una fase de establecimiento de la conexión, una de transmisión de datos y una de desconexión. la conexión, una de transmisión de datos y una de desconexión. c) El TCP utiliza el concepto buffered transfer: cuando se transfiere informa- c) El TCP utiliza el concepto buffered transfer: cuando se transfiere informa- ción, el TCP divide los flujos de datos (bytes) que le pasa la aplicación en tro- ción, el TCP divide los flujos de datos (bytes) que le pasa la aplicación en tro- zos del tamaño que le convenga. El TCP decide el tamaño de los segmentos zos del tamaño que le convenga. El TCP decide el tamaño de los segmentos tanto si la aplicación genera un byte de información, como si genera flujos de tanto si la aplicación genera un byte de información, como si genera flujos de gran dimensión. En el primer caso, el TCP puede esperar que la memoria in- gran dimensión. En el primer caso, el TCP puede esperar que la memoria in- termedia esté más llena antes de transferir la información, o bien la puede termedia esté más llena antes de transferir la información, o bien la puede transferir de inmediato (mecanismo push). En caso de que los flujos sean muy transferir de inmediato (mecanismo push). En caso de que los flujos sean muy grandes, el TCP puede dividir la información en tamaños más pequeños antes grandes, el TCP puede dividir la información en tamaños más pequeños antes de transferirlos. de transferirlos. d)El TCP utiliza una conexión full duplex: la transferencia de información es d)El TCP utiliza una conexión full duplex: la transferencia de información es en ambos sentidos. La aplicación ve dos flujos independientes. En caso de que en ambos sentidos. La aplicación ve dos flujos independientes. En caso de que la aplicación cierre uno de los flujos, la conexión pasa a ser half duplex. Ello la aplicación cierre uno de los flujos, la conexión pasa a ser half duplex. Ello significa que uno de los extremos (el que no ha cerrado la conexión) puede significa que uno de los extremos (el que no ha cerrado la conexión) puede continuar enviando información por el canal, mientras que el otro extremo continuar enviando información por el canal, mientras que el otro extremo (el que ha cerrado la conexión) se limita a reconocer la información. No obs- (el que ha cerrado la conexión) se limita a reconocer la información. No obs- tante, no es normal encontrar este caso. Lo más habitual es que, si un extremo tante, no es normal encontrar este caso. Lo más habitual es que, si un extremo cierra la conexión, el otro también la cierre. cierra la conexión, el otro también la cierre. 8.2. Formato del segmento TCP 8.2. Formato del segmento TCP La unidad de información del protocolo TCP se llama segmento TCP y su for- La unidad de información del protocolo TCP se llama segmento TCP y su for- mato el siguiente: mato el siguiente: TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 52 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 52 El segmento TCP consta de una cabecera y un cuerpo para encapsular datos. El segmento TCP consta de una cabecera y un cuerpo para encapsular datos. La cabecera consta de los campos siguientes: La cabecera consta de los campos siguientes: a) El campo Puerto de origen identifica la aplicación en el terminal de origen. a) El campo Puerto de origen identifica la aplicación en el terminal de origen. b) El campo Puerto de destino identifica la aplicación en el terminal de b) El campo Puerto de destino identifica la aplicación en el terminal de destino. destino. c) El campo Número de secuencia identifica el primer byte del campo de c) El campo Número de secuencia identifica el primer byte del campo de datos. En el TCP no se numeran segmentos, sino bytes. Por tanto, el número datos. En el TCP no se numeran segmentos, sino bytes. Por tanto, el número de secuencia identifica el primer byte de los datos que envía el segmento: al de secuencia identifica el primer byte de los datos que envía el segmento: al principio de la conexión se asigna un número de secuencia inicial (ISN, del principio de la conexión se asigna un número de secuencia inicial (ISN, del inglés initial sequence number), a partir del cual el TCP numera los bytes con- inglés initial sequence number), a partir del cual el TCP numera los bytes con- secutivamente. secutivamente. d) El campo Número ACK. El TCP reconoce datos por medio de la técnica de d) El campo Número ACK. El TCP reconoce datos por medio de la técnica de piggybacking. Al activar un bit de la cabecera (el bit ACK), el TCP tiene en cuen- piggybacking. Al activar un bit de la cabecera (el bit ACK), el TCP tiene en cuen- ta el número de secuencia ACK que indica al otro extremo TCP el próximo ta el número de secuencia ACK que indica al otro extremo TCP el próximo TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 53 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 53 byte que está dispuesto a recibir. Dicho de otra manera, el número ACK menos byte que está dispuesto a recibir. Dicho de otra manera, el número ACK menos uno indica el último byte reconocido. uno indica el último byte reconocido. e) El campo Longitud de la cabecera indica la longitud de la cabecera, que e) El campo Longitud de la cabecera indica la longitud de la cabecera, que puede ser variable. La longitud típica es de 20 bytes; sin embargo, si el TCP uti- puede ser variable. La longitud típica es de 20 bytes; sin embargo, si el TCP uti- liza el campo de opciones, puede llegar a una longitud máxima de 60 bytes. liza el campo de opciones, puede llegar a una longitud máxima de 60 bytes. De este modo, el TCP sabe dónde empiezan los datos. De este modo, el TCP sabe dónde empiezan los datos. f) El campo Reservado, tal como su nombre indica, está reservado y se inicia- f) El campo Reservado, tal como su nombre indica, está reservado y se inicia- liza con ceros. liza con ceros. g) El campo Control está formado por seis indicadores independientes, cada g) El campo Control está formado por seis indicadores independientes, cada uno de los cuales señala una función específica del protocolo cuando está ac- uno de los cuales señala una función específica del protocolo cuando está ac- tivo (a 1): tivo (a 1): TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 54 TCP/IP: los protocolos de la red Internet • URG: indica que hay datos urgentes (y el campo Urgent pointer indica la FUOC • P03/75064/00977 54 • URG: indica que hay datos urgentes (y el campo Urgent pointer indica la cantidad de datos urgentes existentes en el segmento). cantidad de datos urgentes existentes en el segmento). • ACK: cuando este bit está activo, el campo Número ACK indica el byte si- • ACK: cuando este bit está activo, el campo Número ACK indica el byte si- guiente que espera recibir la conexión TCP. Si este bit no está activo, el guiente que espera recibir la conexión TCP. Si este bit no está activo, el campo Número ACK no tiene ningún significado para el TCP. campo Número ACK no tiene ningún significado para el TCP. • PSH: invoca la función push en el protocolo. Esta función dice al receptor que entregue a la aplicación todos los datos que tenga disponibles en la memoria intermedia de recepción sin esperar a completarlos con datos adicionales. De este modo, los datos no esperan en la memoria intermedia receptora hasta completar un segmento de dimensión máxima. Atención No debe confundirse con el indicador URG, que indica que la aplicación ha señalado una porción del segmento como urgente. • PSH: invoca la función push en el protocolo. Esta función dice al receptor que entregue a la aplicación todos los datos que tenga disponibles en la memoria intermedia de recepción sin esperar a completarlos con datos adicionales. De este modo, los datos no esperan en la memoria intermedia receptora hasta completar un segmento de dimensión máxima. • RST: realiza un reset de la conexión. • RST: realiza un reset de la conexión. • SYN: se utiliza para iniciar una conexión y también sirve para resincronizar • SYN: se utiliza para iniciar una conexión y también sirve para resincronizar los números de secuencia. TCP/IP: los protocolos de la red Internet los números de secuencia. • FIN: indica que el transmisor ha acabado la conexión. • FIN: indica que el transmisor ha acabado la conexión. h) El campo Ventana indica cuántos bytes componen la ventana de transmi- h) El campo Ventana indica cuántos bytes componen la ventana de transmi- sión del protocolo de control de flujo por ventana deslizante. A diferencia de los sión del protocolo de control de flujo por ventana deslizante. A diferencia de los protocolos del nivel de enlace, en que la ventana era constante y contaba tra- protocolos del nivel de enlace, en que la ventana era constante y contaba tra- mas, en el TCP la ventana es variable y cuenta bytes. Con cada segmento trans- mas, en el TCP la ventana es variable y cuenta bytes. Con cada segmento trans- mitido, un extremo TCP advierte al otro extremo de la cantidad de datos que mitido, un extremo TCP advierte al otro extremo de la cantidad de datos que está dispuesto a recibir en cada momento. De este modo, el extremo que recibe está dispuesto a recibir en cada momento. De este modo, el extremo que recibe un segmento actualiza el tamaño de su ventana de transmisión. un segmento actualiza el tamaño de su ventana de transmisión. i) El campo Checksum se utiliza para detectar errores. i) El campo Checksum se utiliza para detectar errores. Atención No debe confundirse con el indicador URG, que indica que la aplicación ha señalado una porción del segmento como urgente. FUOC • P03/75064/00977 55 j) El campo Urgent pointer tiene sentido cuando el bit de control URG está activo, indica que los datos que envía el origen son urgentes e identifica el último byte del campo de datos que también lo es. El receptor procesa estos datos lo más rápido posible. La aplicación es la que indica que estos últimos son urgentes y lo sabe porque el TCP se lo indica en la recepción. Agunas aplicaciones que utilizan el urgent pointer son, por ejemplo telnet, rlogin o ftp. En la librería de sockets, el tráfico urgente se denomina tráfico fuera de banda (out of band). TCP/IP: los protocolos de la red Internet Por ejemplo,... ... si el número de secuencia indica 1.000 y el urgent pointer indica 200, significa que los bytes del 1.000 al 1.200 se consideran urgentes. A partir del byte 1.201 los datos se vuelven a considerar normales. En el módulo “Aplicaciones Internet” de esta asignatura, podéis ver ejemplos de cómo se utilizan las aplicaciones telnet, rlogin y ftp. FUOC • P03/75064/00977 55 j) El campo Urgent pointer tiene sentido cuando el bit de control URG está activo, indica que los datos que envía el origen son urgentes e identifica el último byte del campo de datos que también lo es. El receptor procesa estos datos lo más rápido posible. La aplicación es la que indica que estos últimos son urgentes y lo sabe porque el TCP se lo indica en la recepción. Agunas aplicaciones que utilizan el urgent pointer son, por ejemplo telnet, rlogin o ftp. En la librería de sockets, el tráfico urgente se denomina tráfico fuera de banda (out of band). k) El campo Opciones TCP permite añadir campos a la cabecera para realizar k) El campo Opciones TCP permite añadir campos a la cabecera para realizar las operaciones siguientes: las operaciones siguientes: • Marcar el tiempo (timestamp) en que se transmitió el segmento y de este • Marcar el tiempo (timestamp) en que se transmitió el segmento y de este modo poder monitorizar los retrasos que experimentan los segmentos des- modo poder monitorizar los retrasos que experimentan los segmentos des- de el origen hasta el destino. de el origen hasta el destino. • Aumentar el tamaño de la ventana. • Indicar el tamaño máximo del segmento (MSS*) que el origen está preparado para recibir. Por tanto, el receptor no le puede transmitir segmentos TCP/IP: los protocolos de la red Internet Por ejemplo,... ... si el número de secuencia indica 1.000 y el urgent pointer indica 200, significa que los bytes del 1.000 al 1.200 se consideran urgentes. A partir del byte 1.201 los datos se vuelven a considerar normales. En el módulo “Aplicaciones Internet” de esta asignatura, podéis ver ejemplos de cómo se utilizan las aplicaciones telnet, rlogin y ftp. • Aumentar el tamaño de la ventana. * MSS es la sigla de maximum segment size. • Indicar el tamaño máximo del segmento (MSS*) que el origen está preparado para recibir. Por tanto, el receptor no le puede transmitir segmentos por encima de este valor. por encima de este valor. El tamaño máximo del segmento TCP transmitido se especifica durante el establecimiento de la conexión y define la máxima longitud de datos que enviará el TCP. El tamaño máximo del segmento TCP transmitido se especifica durante el establecimiento de la conexión y define la máxima longitud de datos que enviará el TCP. Actividad Actividad • ¿Cuál es el tamaño de un datagrama IP en función de MSS? • ¿Cuál es el tamaño de un datagrama IP en función de MSS? Solución Solución Si el tamaño de los datos TCP es MSS, será preciso añadirle 20 bytes de la cabecera TCP más 20 bytes de la cabecera IP (teniendo en cuenta las cabeceras básicas sin opciones). Ello significa que la longitud del datagrama IP será de MSS + 40 bytes (siempre asumiendo que tanto el TCP como el IP no utilizan sus campos de opciones). Si el tamaño de los datos TCP es MSS, será preciso añadirle 20 bytes de la cabecera TCP más 20 bytes de la cabecera IP (teniendo en cuenta las cabeceras básicas sin opciones). Ello significa que la longitud del datagrama IP será de MSS + 40 bytes (siempre asumiendo que tanto el TCP como el IP no utilizan sus campos de opciones). * MSS es la sigla de maximum segment size. FUOC • P03/75064/00977 56 TCP/IP: los protocolos de la red Internet Si no se especifica el tamaño máximo durante la transmisión del segmento SYN, se toman por defecto 536 bytes (el tamaño por defecto de un datagrama IP es de 576 bytes, menos los 40 bytes de las cabeceras IP y TCP). El hecho de elegir el MSS no es trivial. En general, cuanto mayor sea el MSS, FUOC • P03/75064/00977 56 Si no se especifica el tamaño máximo durante la transmisión del segmento SYN, se toman por defecto 536 bytes (el tamaño por defecto de un datagrama IP es de 576 bytes, menos los 40 bytes de las cabeceras IP y TCP). Consultad la MTU en el subapartado 2.1.2 de este módulo didáctico. El hecho de elegir el MSS no es trivial. En general, cuanto mayor sea el MSS, mejor, puesto que las cabeceras IP y TCP se amortizan más. Sin embargo, si la mejor, puesto que las cabeceras IP y TCP se amortizan más. Sin embargo, si la MTU es pequeña, será preciso fragmentar el datagrama IP (es decir, el segmen- MTU es pequeña, será preciso fragmentar el datagrama IP (es decir, el segmen- to TCP); por tanto, por norma general no interesa elegir MSS mayores que la to TCP); por tanto, por norma general no interesa elegir MSS mayores que la MTU. En este caso, existen diferentes posibilidades: MTU. En este caso, existen diferentes posibilidades: 1) Buscar la MTU local de la red a que está conectada la estación y, si hay MTU 1) Buscar la MTU local de la red a que está conectada la estación y, si hay MTU más pequeñas hasta el destino, habrá fragmentación. más pequeñas hasta el destino, habrá fragmentación. 2) Utilizar un mecanismo de búsqueda para averiguar cuál es la MTU menor 2) Utilizar un mecanismo de búsqueda para averiguar cuál es la MTU menor desde el origen hasta el destino* y utilizar como MSS esta última menos los 40 bytes de cabeceras IP y TCP. * Este mecanismo se llama, en inglés, MTU discovery path. desde el origen hasta el destino* y utilizar como MSS esta última menos los 40 bytes de cabeceras IP y TCP. 8.3. Establecimiento de la conexión 8.3. Establecimiento de la conexión Para establecer una conexión, el TCP utiliza el protocolo three-way handshake. Para establecer una conexión, el TCP utiliza el protocolo three-way handshake. Este último necesita tres segmentos TCP para poder establecer la conexión. Este último necesita tres segmentos TCP para poder establecer la conexión. Consideremos que el servidor está en un estado de escucha, llamado listen, y Consideremos que el servidor está en un estado de escucha, llamado listen, y que el cliente quiere establecer una conexión con el servidor. El TCP de la má- que el cliente quiere establecer una conexión con el servidor. El TCP de la má- quina cliente iniciará la petición de conexión TCP, que será contestada por el quina cliente iniciará la petición de conexión TCP, que será contestada por el TCP de la máquina servidor. TCP de la máquina servidor. Para que el cliente TCP pueda establecer una conexión TCP con el servidor, se siguen los pasos siguientes: 1) Petición de la conexión El TCP cliente envía un segmento de petición de conexión al servidor. Dicho segmento, que se conoce como segmento SYN porque tiene activado el bit SYN TCP/IP: los protocolos de la red Internet Segmento SYN Este segmento especifica más parámetros, tales como el puerto del servidor al que se quiere conectar el cliente, y suele especificar también la medida máxima del segmento (MSS) que el cliente transmitirá. Para que el cliente TCP pueda establecer una conexión TCP con el servidor, se siguen los pasos siguientes: 1) Petición de la conexión El TCP cliente envía un segmento de petición de conexión al servidor. Dicho segmento, que se conoce como segmento SYN porque tiene activado el bit SYN Consultad la MTU en el subapartado 2.1.2 de este módulo didáctico. * Este mecanismo se llama, en inglés, MTU discovery path. Segmento SYN Este segmento especifica más parámetros, tales como el puerto del servidor al que se quiere conectar el cliente, y suele especificar también la medida máxima del segmento (MSS) que el cliente transmitirá. FUOC • P03/75064/00977 57 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 57 en el campo Control de la cabecera del segmento TCP, especifica el número de en el campo Control de la cabecera del segmento TCP, especifica el número de secuencia inicial TCP del cliente (ISN). secuencia inicial TCP del cliente (ISN). El número de secuencia inicial se elige al azar. La razón es muy sencilla. Hay El número de secuencia inicial se elige al azar. La razón es muy sencilla. Hay paquetes que pueden sobrevivir en la red una vez se ha cerrado la conexión paquetes que pueden sobrevivir en la red una vez se ha cerrado la conexión TCP (incluso si ha sido a causa de una caída del sistema). Es preciso asegurarse TCP (incluso si ha sido a causa de una caída del sistema). Es preciso asegurarse de que una conexión nueva elige un número de secuencia inicial que no exis- de que una conexión nueva elige un número de secuencia inicial que no exis- ta. El TCP recomienda utilizar un número de secuencia inicial basado en una ta. El TCP recomienda utilizar un número de secuencia inicial basado en una variable que se incrementa una cantidad x cada y tiempo (por ejemplo, en variable que se incrementa una cantidad x cada y tiempo (por ejemplo, en 4.4BSD hay un contador que se incrementa cada 8 ms). 4.4BSD hay un contador que se incrementa cada 8 ms). Si el sistema cae, pasados unos segundos vuelve a estar en funcionamiento e Si el sistema cae, pasados unos segundos vuelve a estar en funcionamiento e inmediatamente se establece una conexión nueva utilizando el mismo puerto inmediatamente se establece una conexión nueva utilizando el mismo puerto y la misma dirección IP, se podría interpretar que los segmentos TCP que han y la misma dirección IP, se podría interpretar que los segmentos TCP que han quedado retrasados en la red y que ya existían con anterioridad a la caída de quedado retrasados en la red y que ya existían con anterioridad a la caída de la máquina, pertenecen a la conexión nueva, lo que provocaría la confusión y la máquina, pertenecen a la conexión nueva, lo que provocaría la confusión y el mal funcionamiento de dicha conexión. Ello sucedería incluso con inde- el mal funcionamiento de dicha conexión. Ello sucedería incluso con inde- pendencia del número de secuencia inicial elegido. pendencia del número de secuencia inicial elegido. Con el objetivo de protegerse de esta situación, se combinan dos técnicas: una Con el objetivo de protegerse de esta situación, se combinan dos técnicas: una consiste en elegir el número de secuencia inicial de manera aleatoria y la otra consiste en elegir el número de secuencia inicial de manera aleatoria y la otra es el denominado quiet time, que consiste en que el TCP no crea ninguna co- es el denominado quiet time, que consiste en que el TCP no crea ninguna co- nexión nueva después de un rebote de máquinas hasta que no transcurre un nexión nueva después de un rebote de máquinas hasta que no transcurre un tiempo determinado denominado MSL* o “tiempo máximo de vida de un segmento”. De este modo, se asegura de que no recibirá segmentos antiguos de otras conexiones. El MSL depende de la implementación; sin embargo, los valores normales son, aproximadamente, de 30 segundos, 1 minuto ó 2 minutos. No obstante, existen muchas implementaciones que no tienen en cuenta esta situación, puesto que consideran que un rebote de máquinas dura más tiempo que el MSL. * MSL es la sigla de maximum segment lifetime. tiempo determinado denominado MSL* o “tiempo máximo de vida de un segmento”. De este modo, se asegura de que no recibirá segmentos antiguos de otras conexiones. El MSL depende de la implementación; sin embargo, los valores normales son, aproximadamente, de 30 segundos, 1 minuto ó 2 minutos. No obstante, existen muchas implementaciones que no tienen en cuenta esta situación, puesto que consideran que un rebote de máquinas dura más tiempo que el MSL. 2) Confirmación de la conexión 2) Confirmación de la conexión El servidor responde a la petición de establecimiento de la conexión con un El servidor responde a la petición de establecimiento de la conexión con un segmento SYN que indica el número de secuencia inicial que utilizará. segmento SYN que indica el número de secuencia inicial que utilizará. Asimismo, este segmento contiene un reconocimiento (ACK) del segmento SYN Asimismo, este segmento contiene un reconocimiento (ACK) del segmento SYN del cliente que indica el ISN del cliente más 1 (el número de secuencia inicial del del cliente que indica el ISN del cliente más 1 (el número de secuencia inicial del cliente más 1). cliente más 1). Conviene recordar que el TCP numera los ACK con el número de secuencia del próximo byte que espera recibir (en este caso, el servidor espera que el próximo byte enviado por el cliente sea J + 1). En la figura anterior, sería el segmento SYN (K), ACK ( J + 1), donde K es el ISN elegido por el TCP servidor. Conviene recordar que el TCP numera los ACK con el número de secuencia del próximo byte que espera recibir (en este caso, el servidor espera que el próximo byte enviado por el cliente sea J + 1). En la figura anterior, sería el segmento SYN (K), ACK ( J + 1), donde K es el ISN elegido por el TCP servidor. 3) Reconocimiento de la conexión 3) Reconocimiento de la conexión El cliente reconoce el segmento SYN (K) del servidor con un reconocimiento que El cliente reconoce el segmento SYN (K) del servidor con un reconocimiento que contiene el ISN servidor más 1. En la figura anterior, sería el segmento ACK (K + 1). contiene el ISN servidor más 1. En la figura anterior, sería el segmento ACK (K + 1). TCP/IP: los protocolos de la red Internet * MSL es la sigla de maximum segment lifetime. 58 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 58 FUOC • P03/75064/00977 Se dice que quien envía el primer segmento SYN (en este caso, el cliente) efec- Se dice que quien envía el primer segmento SYN (en este caso, el cliente) efec- túa una apertura activa (active open), mientras que quien recibe el primer seg- túa una apertura activa (active open), mientras que quien recibe el primer seg- mento SYN y envía el próximo segmento SYN (en este caso, el servidor) lleva mento SYN y envía el próximo segmento SYN (en este caso, el servidor) lleva a cabo una apertura pasiva (passive open). a cabo una apertura pasiva (passive open). Puede darse el caso de que ambos extremos efectúen una apertura activa en el Puede darse el caso de que ambos extremos efectúen una apertura activa en el mismo momento. Esta situación se denomina apertura simultánea (simultaneous mismo momento. Esta situación se denomina apertura simultánea (simultaneous open). open). Ahora ya se ha establecido la conexión entre el cliente y el servidor. Ahora ya se ha establecido la conexión entre el cliente y el servidor. Monitorización del establecimiento de una conexión utilizando el programa tcpdump Utilizaremos el programa tcpdump para ver cómo funciona el protocolo de establecimiento de una conexión. Monitorización del establecimiento de una conexión utilizando el programa tcpdump En el anexo 1 de este módulo didáctico podéis encontrar una descripción del programa tcpdump. Asumimos que nos hemos conectado a una máquina llamada argos y hacemos un rlogin a la máquina helios. Utilizaremos el programa tcpdump para ver cómo funciona el protocolo de establecimiento de una conexión. argos % rlogin helios Las primeras líneas que obtenemos con el tcpdump son las siguientes: Las primeras líneas que obtenemos con el tcpdump son las siguientes: • 15:56:54.796091 argos.1023 > helios.login: S 3541904332: 3541904332 (0) win 31744 <mss 1460> • 15:56:54.796091 argos.1023 > helios.login: S 3541904332: 3541904332 (0) win 31744 <mss 1460> • 15:56:54.796091 helios.login > argos.1023: S 548133143: 548133143 (0) ack 33541904333 win 8760 <mss 1460> • 15:56:54.796091 helios.login > argos.1023: S 548133143: 548133143 (0) ack 33541904333 win 8760 <mss 1460> • 15:56:54.796091 argos.1023 > helios.login: . ack 548133144 win 31744 • 15:56:54.796091 argos.1023 > helios.login: . ack 548133144 win 31744 La interpretación de las líneas es la siguiente: La interpretación de las líneas es la siguiente: 1) argos, desde el puerto 1.023, envía a helios una petición de conexión por medio de un segmento SYN. El número de secuencia inicial (ISN) elegido por argos es el 3.541.904.332, y argos anuncia que puede recibir 31.744 bytes sin reconocerlos y que espera recibir segmentos con un tamaño máximo de 1.460 bytes. 1) argos, desde el puerto 1.023, envía a helios una petición de conexión por medio de un segmento SYN. El número de secuencia inicial (ISN) elegido por argos es el 3.541.904.332, y argos anuncia que puede recibir 31.744 bytes sin reconocerlos y que espera recibir segmentos con un tamaño máximo de 1.460 bytes. 2) helios responde con un segmento SYN eligiendo como ISN el número 548.133.143 y responde con un ACK con el byte siguiente que espera recibir de argos, el 3.541.904.333 (3.541.904.332 + 1). Anuncia que puede recibir 8.760 bytes y que espera recibir segmentos con un tamaño máximo de 1.460 bytes. 2) helios responde con un segmento SYN eligiendo como ISN el número 548.133.143 y responde con un ACK con el byte siguiente que espera recibir de argos, el 3.541.904.333 (3.541.904.332 + 1). Anuncia que puede recibir 8.760 bytes y que espera recibir segmentos con un tamaño máximo de 1.460 bytes. 3) argos reconoce el segmento SYN con un segmento en el que espera recibir el byte 548.133.144 (548.133.143 + 1). argos vuelve a advertir que está dispuesto a recibir hasta 31.744 bytes. 3) argos reconoce el segmento SYN con un segmento en el que espera recibir el byte 548.133.144 (548.133.143 + 1). argos vuelve a advertir que está dispuesto a recibir hasta 31.744 bytes. A continuación, empezaría el intercambio de información entre el cliente y el servidor (por ejempo peticiones de login, contraseña, prompt de la máquina, etc.). A continuación, empezaría el intercambio de información entre el cliente y el servidor (por ejempo peticiones de login, contraseña, prompt de la máquina, etc.). Actividad Actividad • Utilizad el programa tcpdump para ver el establecimiento de una conexión. Con esta finalidad, estableced una conexión con aplicaciones diferentes (telnet, ftp, rlogin, etc.) y monitorizad la conexión. Observad los segmentos de inicio de la conexión, el valor del número de secuencia inicial, el del número ACK inicial y el tamaño de la ventana. • Utilizad el programa tcpdump para ver el establecimiento de una conexión. Con esta finalidad, estableced una conexión con aplicaciones diferentes (telnet, ftp, rlogin, etc.) y monitorizad la conexión. Observad los segmentos de inicio de la conexión, el valor del número de secuencia inicial, el del número ACK inicial y el tamaño de la ventana. Recordad Cuando la transferencia de la información ha finalizado, el TCP dispone de un protocolo de terminación de la conexión para cerrarla. En el anexo 1 de este módulo didáctico podéis encontrar una descripción del programa tcpdump. Asumimos que nos hemos conectado a una máquina llamada argos y hacemos un rlogin a la máquina helios. argos % rlogin helios 8.4. Terminación de la conexión TCP/IP: los protocolos de la red Internet Un sistema orientado a la conexión efectúa una fase de establecimiento de la conexión, una fase de transferencia de la información y una fase de cierre de la conexión. Recordad 8.4. Terminación de la conexión Cuando la transferencia de la información ha finalizado, el TCP dispone de un protocolo de terminación de la conexión para cerrarla. Un sistema orientado a la conexión efectúa una fase de establecimiento de la conexión, una fase de transferencia de la información y una fase de cierre de la conexión. FUOC • P03/75064/00977 59 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 59 En una conexión TCP full duplex, en la que los datos fluyen en ambos sentidos, En una conexión TCP full duplex, en la que los datos fluyen en ambos sentidos, independientes el uno del otro, cualquier conexión debe cerrarse indepen- independientes el uno del otro, cualquier conexión debe cerrarse indepen- dientemente. dientemente. Es preciso tener en cuenta que tanto el cliente como el servidor pueden cerrar Es preciso tener en cuenta que tanto el cliente como el servidor pueden cerrar la conexión. Sin embargo, la situación normal es que la aplicación cliente ini- la conexión. Sin embargo, la situación normal es que la aplicación cliente ini- cie la petición de conexión y tenga, posiblemente, un usuario interactivo que cie la petición de conexión y tenga, posiblemente, un usuario interactivo que le pida su cierre por medio, por ejemplo, de una instrucción*. Por tanto, supongamos que es el cliente quien pide cerrar la conexión (si fuera el servidor, * En un telnet esta instrucción sería un logout, en un ftp sería haciendo un bye, etc. sería similar). Los pasos que se siguen son los siguientes: 1) El cliente envía un segmento TCP del tipo FIN con el número de secuencia correspondiente (J). Ello significa que a partir de este momento no habrá más datos que fluyan en este sentido (cliente → servidor). 2) El servidor envía una confirmación del cierre por medio de un ACK con el le pida su cierre por medio, por ejemplo, de una instrucción*. Por tanto, supongamos que es el cliente quien pide cerrar la conexión (si fuera el servidor, TCP/IP: los protocolos de la red Internet * En un telnet esta instrucción sería un logout, en un ftp sería haciendo un bye, etc. sería similar). Los pasos que se siguen son los siguientes: Un segmento FIN... ... se llama de este modo porque tiene activado el bit FIN en el campo Control de la cabecera del segmento TCP. 1) El cliente envía un segmento TCP del tipo FIN con el número de secuencia correspondiente (J). Ello significa que a partir de este momento no habrá más datos que fluyan en este sentido (cliente → servidor). 2) El servidor envía una confirmación del cierre por medio de un ACK con el número de secuencia recibido más 1 (J + 1). número de secuencia recibido más 1 (J + 1). El TCP servidor indica a su aplicación que el cliente cierra la conexión. La apli- El TCP servidor indica a su aplicación que el cliente cierra la conexión. La apli- cación servidor indica a su TCP que la cierre a continuación. cación servidor indica a su TCP que la cierre a continuación. 3) El servidor envía un segmento TCP del tipo FIN al cliente con el número 3) El servidor envía un segmento TCP del tipo FIN al cliente con el número de secuencia correspondiente (K). de secuencia correspondiente (K). 4) El TCP cliente responde automáticamente con un ACK (K + 1). 4) El TCP cliente responde automáticamente con un ACK (K + 1). Se dice que quien envía el primer segmento FIN (en este caso el cliente) lleva Se dice que quien envía el primer segmento FIN (en este caso el cliente) lleva a cabo un cierre activo (active close), mientras que quien lo recibe (en este caso a cabo un cierre activo (active close), mientras que quien lo recibe (en este caso el servidor) realiza un cierre pasivo (passive close). el servidor) realiza un cierre pasivo (passive close). Cabe destacar que la conexión que efectúa el cierre activo entra en un estado Cabe destacar que la conexión que efectúa el cierre activo entra en un estado denominado TIME_WAIT, de manera que deberá esperar un tiempo (por nor- denominado TIME_WAIT, de manera que deberá esperar un tiempo (por nor- Un segmento FIN... ... se llama de este modo porque tiene activado el bit FIN en el campo Control de la cabecera del segmento TCP. 60 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 60 FUOC • P03/75064/00977 ma general, una o dos veces el MSL) antes de utilizar de nuevo el mismo puer- ma general, una o dos veces el MSL) antes de utilizar de nuevo el mismo puer- to. Lo más habitual es que sea el cliente quien efectúe el cierre activo. Como to. Lo más habitual es que sea el cliente quien efectúe el cierre activo. Como los clientes suelen utilizar puertos locales efímeros, este tiempo de espera no los clientes suelen utilizar puertos locales efímeros, este tiempo de espera no les afecta. En cambio, si es el servidor quien efectúa el cierre activo, podemos les afecta. En cambio, si es el servidor quien efectúa el cierre activo, podemos encontrarnos con que no se pueda reinicializar durante 1 ó 2 minutos. Ello su- encontrarnos con que no se pueda reinicializar durante 1 ó 2 minutos. Ello su- cede porque el servidor utiliza puertos conocidos que no se pueden volver a cede porque el servidor utiliza puertos conocidos que no se pueden volver a reasignar hasta que no acabe el procedimiento quiet time y se salga del estado reasignar hasta que no acabe el procedimiento quiet time y se salga del estado TIME_WAIT. TIME_WAIT. Es posible que sólo cierre la conexión (salida de datos) uno de los extremos, mientras que el otro (recepción) se mantiene abierto. Esta situación se denomina half-close, pero hay pocas aplicaciones que se aprovechen de ella. Lo más normal es que ambas aplicaciones cierren sus canales de comunicaciones. Asimismo, puede darse el caso de que dos extremos efectúen un cierre activo. Esta situación se denomina cierre simultáneo (simultaneous close). Lectura complementaria Podéis encontrar una sección dedicada a este tema en el libro: W.R. Stevens (1998). TCP/IP Illustrated (vol. 1: “The Protocols”, cap. 19, pág. 252). Wilmington: AddisonWesley, 1994. Es posible que sólo cierre la conexión (salida de datos) uno de los extremos, mientras que el otro (recepción) se mantiene abierto. Esta situación se denomina half-close, pero hay pocas aplicaciones que se aprovechen de ella. Lo más normal es que ambas aplicaciones cierren sus canales de comunicaciones. Asimismo, puede darse el caso de que dos extremos efectúen un cierre activo. Esta situación se denomina cierre simultáneo (simultaneous close). Monitorización de la terminación de una conexión utilizando el programa tcpdump Monitorización de la terminación de una conexión utilizando el programa tcpdump Utilizaremos el programa tcpdump para ver cómo funciona el protocolo de terminación de la conexión. Asumimos que en el rlogin del ejemplo de establecimiento de la conexión helios hace un logout (pide el cierre de la conexión). Utilizaremos el programa tcpdump para ver cómo funciona el protocolo de terminación de la conexión. Asumimos que en el rlogin del ejemplo de establecimiento de la conexión helios hace un logout (pide el cierre de la conexión). helios % logout 15:57:01.616091 helios.login > argos.1023: F 1417: 1417 (0) ack 41 win 8760 15:57:01.616091 argos.1023 > helios.login: .ack 1418 win 31744 15:57:01.616091 argos.1023 > helios.login: .ack 1418 win 31744 15:57:01.616091 argos.1023 > helis.login: F 41:41 (0) ack 580 31744 15:57:01.616091 argos.1023 > helis.login: F 41:41 (0) ack 580 31744 15:57:01.616091 helios.login > argos.1023: .ack 42 win 8760 15:57:01.616091 helios.login > argos.1023: .ack 42 win 8760 2) argos envía un reconocimiento por medio de un segmento con ACK 1.418 (1.417 + 1) y advierte una ventana de 31.744 bytes. Podéis encontrar una sección dedicada a este tema en el libro: W.R. Stevens (1998). TCP/IP Illustrated (vol. 1: “The Protocols”, cap. 19, pág. 252). Wilmington: AddisonWesley, 1994. Las líneas que obtenemos con el tcpdump son las siguientes: 15:57:01.616091 helios.login > argos.1023: F 1417: 1417 (0) ack 41 win 8760 1) helios envía un segmento con el indicador F (FIN). El número de secuencia es el 1.417 y envía 0 bytes de datos. Espera recibir el byte 41 de argos y advierte una ventana de 8.760 bytes. Lectura complementaria helios % logout Las líneas que obtenemos con el tcpdump son las siguientes: La interpretación es la siguiente: TCP/IP: los protocolos de la red Internet Nota La notación de números de secuencia y números ACK se establece a partir del ISN; es decir, un número de secuencia 1.417 indica un número de secuencia ISN + 1.417. La interpretación es la siguiente: 1) helios envía un segmento con el indicador F (FIN). El número de secuencia es el 1.417 y envía 0 bytes de datos. Espera recibir el byte 41 de argos y advierte una ventana de 8.760 bytes. 2) argos envía un reconocimiento por medio de un segmento con ACK 1.418 (1.417 + 1) y advierte una ventana de 31.744 bytes. 3) Ahora le toca a argos cerrar su conexión TCP. Con esta finalidad, envía un segmento con el indicador F (FIN) a helios. El número de secuencia es el 41 (es el que esperará helios) y envía 0 bytes de datos. Advierte una ventana de 31.744 bytes. 3) Ahora le toca a argos cerrar su conexión TCP. Con esta finalidad, envía un segmento con el indicador F (FIN) a helios. El número de secuencia es el 41 (es el que esperará helios) y envía 0 bytes de datos. Advierte una ventana de 31.744 bytes. 4) helios recibe el segmento, lo reconoce con el ACK numerado como 42 (41 + 1) y advierte una ventana de 8.760 bytes. 4) helios recibe el segmento, lo reconoce con el ACK numerado como 42 (41 + 1) y advierte una ventana de 8.760 bytes. helios ha efectuado un cierre activo, mientras que argos ha efectuado un cierre pasivo. helios ha efectuado un cierre activo, mientras que argos ha efectuado un cierre pasivo. Actividad Actividad • Utilizad el programa tcpdump para ver el cierre de una conexión. Con esta finalidad, estableced una conexión con diferentes aplicaciones (telnet, rlogin, etc.) y supervisadla. • Utilizad el programa tcpdump para ver el cierre de una conexión. Con esta finalidad, estableced una conexión con diferentes aplicaciones (telnet, rlogin, etc.) y supervisadla. Nota La notación de números de secuencia y números ACK se establece a partir del ISN; es decir, un número de secuencia 1.417 indica un número de secuencia ISN + 1.417. FUOC • P03/75064/00977 61 TCP/IP: los protocolos de la red Internet 8.5. Diagrama de estados del TCP En el diagrama de estados del TCP se describen los diferentes estados por los que pasa una conexión desde su establecimiento hasta su terminación, incluyendo la etapa de transferencia de la información. Los nombres de los estados TCP son los mismos que se pueden consultar con la llamada al sistema netstat. FUOC • P03/75064/00977 61 TCP/IP: los protocolos de la red Internet 8.5. Diagrama de estados del TCP Lectura complementaria W.R. Stevens (1998). “The Protocols” TCP/IP Illustrated (vol. 1). Wilmington: Addison-Wesley, 1994. En el diagrama de estados del TCP se describen los diferentes estados por los que pasa una conexión desde su establecimiento hasta su terminación, incluyendo la etapa de transferencia de la información. Los nombres de los estados TCP son los mismos que se pueden consultar con la llamada al sistema netstat. El estado ESTABLISHED se corresponde con la transferencia de la información. El estado ESTABLISHED se corresponde con la transferencia de la información. El resto de los estados se corresponden con el establecimiento y la terminación El resto de los estados se corresponden con el establecimiento y la terminación de la conexión, teniendo en cuenta todas las maneras posibles de establecer y de la conexión, teniendo en cuenta todas las maneras posibles de establecer y cerrar una conexión en el TCP. Los símbolos SYN, RST, FIN y ACK se corres- cerrar una conexión en el TCP. Los símbolos SYN, RST, FIN y ACK se corres- ponden con los bits de indicación de la cabecera TCP. ponden con los bits de indicación de la cabecera TCP. Un ejemplo de cómo se interpreta este diagrama sería el protocolo de termina- Un ejemplo de cómo se interpreta este diagrama sería el protocolo de termina- ción de una conexión, en que ya vimos que el extremo TCP que pedía el cierre ción de una conexión, en que ya vimos que el extremo TCP que pedía el cierre efectuaba un cierre activo. Ello significa que pasaría del estado ESTABLISHED al efectuaba un cierre activo. Ello significa que pasaría del estado ESTABLISHED al estado FIN_WAIT_1 enviando un segmento FIN. estado FIN_WAIT_1 enviando un segmento FIN. Lectura complementaria W.R. Stevens (1998). “The Protocols” TCP/IP Illustrated (vol. 1). Wilmington: Addison-Wesley, 1994. FUOC • P03/75064/00977 62 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 62 Desde aquí puede pasar a uno de los tres estados que describen cómo se puede Desde aquí puede pasar a uno de los tres estados que describen cómo se puede realizar un cierre activo dependiendo de cómo se cierre la conexión: realizar un cierre activo dependiendo de cómo se cierre la conexión: • Con un cierre simultáneo (simultaneous close), pasa a CLOSING. • Con un cierre simultáneo (simultaneous close), pasa a CLOSING. • Con la recepción de un ACK, pasa a FIN_WAIT_2, donde espera recibir un FIN. • Con la recepción de un ACK, pasa a FIN_WAIT_2, donde espera recibir un FIN. • Con la recepción de un FIN y un ACK, pasa a TIME_WAIT, donde espera dos veces el MSL antes de liberar el puerto. Consultad el MSL en el subapartado 8.3 de este módulo didáctico. • Con la recepción de un FIN y un ACK, pasa a TIME_WAIT, donde espera dos veces el MSL antes de liberar el puerto. Ya hemos visto que el extremo TCP que recibe un FIN lleva a cabo un cierre Ya hemos visto que el extremo TCP que recibe un FIN lleva a cabo un cierre pasivo. Por tanto, pasa del estado ESTABLISHED al estado CLOSE_WAIT en- pasivo. Por tanto, pasa del estado ESTABLISHED al estado CLOSE_WAIT en- viando los indicadores ACK y FIN correspondientes para acabar la conexión. viando los indicadores ACK y FIN correspondientes para acabar la conexión. La fase de establecimiento también se puede seguir con facilidad por medio La fase de establecimiento también se puede seguir con facilidad por medio del diagrama de estados, teniendo en cuenta qué extremo efectúa el cierre ac- del diagrama de estados, teniendo en cuenta qué extremo efectúa el cierre ac- tivo y cuál lleva a cabo el cierre pasivo. tivo y cuál lleva a cabo el cierre pasivo. Actividad Actividad • Utilizad el programa netstat para ver el estado de las conexiones TCP que tengáis en este momento. Si no tenéis ninguna aplicación en la red, conectaos a algún servidor con la web, haced un ftp o un telnet a alguna máquina. • Utilizad el programa netstat para ver el estado de las conexiones TCP que tengáis en este momento. Si no tenéis ninguna aplicación en la red, conectaos a algún servidor con la web, haced un ftp o un telnet a alguna máquina. 8.6. Transferencia de la información 8.6. Transferencia de la información Una vez establecida la conexión, el TCP puede empezar la transferencia de seg- Una vez establecida la conexión, el TCP puede empezar la transferencia de seg- mentos TCP en ambos sentidos. Para tansmitir información de manera fiable, mentos TCP en ambos sentidos. Para tansmitir información de manera fiable, el TCP implementa protocolos de control de errores y de flujo. Los pasos que el TCP implementa protocolos de control de errores y de flujo. Los pasos que sigue el TCP para transferir la información son los siguientes: sigue el TCP para transferir la información son los siguientes: 1) Cuando el TCP envía datos, mantiene un temporizador (timeout) hasta 1) Cuando el TCP envía datos, mantiene un temporizador (timeout) hasta que recibe un reconocimiento (ACK) del receptor. Si el temporizador salta, el que recibe un reconocimiento (ACK) del receptor. Si el temporizador salta, el TCP retransmite los datos. TCP retransmite los datos. 2) Cuando el TCP recibe un segmento de datos, envía un reconocimiento. 2) Cuando el TCP recibe un segmento de datos, envía un reconocimiento. Este último se puede retornar retrasado (no de inmediato) si el TCP lo consi- Este último se puede retornar retrasado (no de inmediato) si el TCP lo consi- dera necesario. dera necesario. 3) Si un segmento recibido es incorrecto (el checksum lo indica), el TCP des- 3) Si un segmento recibido es incorrecto (el checksum lo indica), el TCP des- carta el segmento y no debería enviar la información. De hecho, como el TCP carta el segmento y no debería enviar la información. De hecho, como el TCP utiliza la técnica de piggybacking (aprovecha los segmentos de datos que viajan utiliza la técnica de piggybacking (aprovecha los segmentos de datos que viajan en sentido contrario), lo que hace es retornar un segmento con el mismo nú- en sentido contrario), lo que hace es retornar un segmento con el mismo nú- mero de ACK que había reconocido la última vez. El transmisor verá un ACK con un número repetido e interpretará que no le reconocen la información*. * Este número se denomina ACK duplicado. mero de ACK que había reconocido la última vez. El transmisor verá un ACK con un número repetido e interpretará que no le reconocen la información*. En caso de que no tuviera datos para enviar en sentido contrario, el TCP puede En caso de que no tuviera datos para enviar en sentido contrario, el TCP puede enviar un segmento que no contenga información (con un campo de datos de enviar un segmento que no contenga información (con un campo de datos de TCP/IP: los protocolos de la red Internet Consultad el MSL en el subapartado 8.3 de este módulo didáctico. * Este número se denomina ACK duplicado. FUOC • P03/75064/00977 63 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 63 cero bytes). Este segmento tendría el indicador ACK activado y reconocería los cero bytes). Este segmento tendría el indicador ACK activado y reconocería los bytes pertinentes en el campo Número de ACK. El número de secuencia no se bytes pertinentes en el campo Número de ACK. El número de secuencia no se habría incrementado, puesto que no envía datos. habría incrementado, puesto que no envía datos. 4) Si los segmentos llegan desordenados (por debajo hay el IP, que está no 4) Si los segmentos llegan desordenados (por debajo hay el IP, que está no orientado a la conexión), el TCP reordena los segmentos y pasa los datos orientado a la conexión), el TCP reordena los segmentos y pasa los datos (bytes) correctamente ordenados a la aplicación. Si recibe segmentos duplica- (bytes) correctamente ordenados a la aplicación. Si recibe segmentos duplica- dos, el TCP descarta las copias. dos, el TCP descarta las copias. 5) Como el TCP posee una memoria limitada, es necesario que efectúe un control 5) Como el TCP posee una memoria limitada, es necesario que efectúe un control de flujo. Con esta finalidad, cada extremo avisa de los datos que está dispuesto a de flujo. Con esta finalidad, cada extremo avisa de los datos que está dispuesto a recibir en cada momento utilizando el campo Ventana (se trata de un mecanismo recibir en cada momento utilizando el campo Ventana (se trata de un mecanismo de ventana deslizante basado en bytes que explicaremos más adelante). de ventana deslizante basado en bytes que explicaremos más adelante). El tipo de información que es preciso enviar puede dividirse en datos interactivos* y datos de gran volumen o bulk data**. La diferencia entre ellos radica en la cantidad de información que se transmite. Los datos interactivos transmiten pocos bytes de información (alrededor de 10), mientras que los datos de * Por ejemplo, los que transmiten aplicaciones tales como telnet o rlogin. ** Por ejemplo, los que transmiten aplicaciones como correo electrónico o ftp. El tipo de información que es preciso enviar puede dividirse en datos interactivos* y datos de gran volumen o bulk data**. La diferencia entre ellos radica en la cantidad de información que se transmite. Los datos interactivos transmiten pocos bytes de información (alrededor de 10), mientras que los datos de gran volumen transmiten gran cantidad de datos (ocupan la totalidad del ta- gran volumen transmiten gran cantidad de datos (ocupan la totalidad del ta- maño del segmento TCP). Conviene considerar que no es lo mismo cargar la maño del segmento TCP). Conviene considerar que no es lo mismo cargar la red con paquetes pequeños de información que con paquetes grandes. El TCP red con paquetes pequeños de información que con paquetes grandes. El TCP puede aplicar en cada caso técnicas diferentes de manera automática, para puede aplicar en cada caso técnicas diferentes de manera automática, para aprovechar la red al máximo. aprovechar la red al máximo. 8.6.1. Transmisión de datos interactivos 8.6.1. Transmisión de datos interactivos En este tipo de comunicación, es normal enviar pocos datos. En una aplica- En este tipo de comunicación, es normal enviar pocos datos. En una aplica- ción del tipo Telnet, por ejemplo, un usuario cliente podría ejecutar el coman- ción del tipo Telnet, por ejemplo, un usuario cliente podría ejecutar el coman- do de UNIX ls y obtener un listado de un directorio por parte del servidor. En do de UNIX ls y obtener un listado de un directorio por parte del servidor. En esta transferencia de información intervienen pocos bytes desde el origen esta transferencia de información intervienen pocos bytes desde el origen (cliente) hasta el destino (servidor) y se utilizan conjuntamente dos técnicas (cliente) hasta el destino (servidor) y se utilizan conjuntamente dos técnicas para obtener un mejor aprovechamiento de la red: para obtener un mejor aprovechamiento de la red: • Reconocimientos retrasados. • Reconocimientos retrasados. • Algoritmo de Nagle. • Algoritmo de Nagle. Reconocimientos retrasados Reconocimientos retrasados En este tipo de transferencia, es normal que el TCP no envíe los reconocimien- En este tipo de transferencia, es normal que el TCP no envíe los reconocimien- tos ACK inmediatamente después de recibir los datos, sino que esté un tiempo tos ACK inmediatamente después de recibir los datos, sino que esté un tiempo esperando a que haya datos para enviar en sentido contrario. De este modo, esperando a que haya datos para enviar en sentido contrario. De este modo, puede utilizar la técnica piggybacking y enviar el reconocimiento encapsulado puede utilizar la técnica piggybacking y enviar el reconocimiento encapsulado en los datos que retornan al cliente. en los datos que retornan al cliente. Es posible que el servidor se ahorre enviar un segmento que sólo reconoce, Es posible que el servidor se ahorre enviar un segmento que sólo reconoce, pero que no contiene datos. Es típico que el TCP espere (utiliza un temporiza- pero que no contiene datos. Es típico que el TCP espere (utiliza un temporiza- TCP/IP: los protocolos de la red Internet * Por ejemplo, los que transmiten aplicaciones tales como telnet o rlogin. ** Por ejemplo, los que transmiten aplicaciones como correo electrónico o ftp. FUOC • P03/75064/00977 64 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 64 dor) unos 200 ms por si hay datos para transmitir antes de enviar el ACK. Una dor) unos 200 ms por si hay datos para transmitir antes de enviar el ACK. Una vez ha transcurrido este tiempo, el TCP reconoce los datos recibidos hasta el vez ha transcurrido este tiempo, el TCP reconoce los datos recibidos hasta el momento con un segmento de datos, si dispone de datos para enviar en sen- momento con un segmento de datos, si dispone de datos para enviar en sen- tido contrario (piggybacking), o con un segmento sin datos (el número de se- tido contrario (piggybacking), o con un segmento sin datos (el número de se- cuencia no varía). En cualquiera de los dos casos, el indicador ACK estará cuencia no varía). En cualquiera de los dos casos, el indicador ACK estará activado y el número ACK reconocerá los datos pertinentes. activado y el número ACK reconocerá los datos pertinentes. El TCP retrasa los ACK hasta 200 ms para aprovechar mejor la técnica de El TCP retrasa los ACK hasta 200 ms para aprovechar mejor la técnica de piggybacking. piggybacking. Algoritmo de Nagle Algoritmo de Nagle En numerosas ocasiones un cliente tiene muy pocos datos para enviar (por En numerosas ocasiones un cliente tiene muy pocos datos para enviar (por ejemplo, sólo 1 byte). En este caso el TCP enviaría un segmento sólo con 1 byte ejemplo, sólo 1 byte). En este caso el TCP enviaría un segmento sólo con 1 byte de datos y con 20 bytes de cabecera TCP. El IP añadiría 20 bytes más de cabe- de datos y con 20 bytes de cabecera TCP. El IP añadiría 20 bytes más de cabe- cera, lo que proporciona un total de 40 bytes de control y 1 de datos. Si se cera, lo que proporciona un total de 40 bytes de control y 1 de datos. Si se transmiten muchos segmentos de este tipo, la eficiencia es muy baja. Una so- transmiten muchos segmentos de este tipo, la eficiencia es muy baja. Una so- lución a esta baja eficiencia de transmisión es aplicar el algoritmo de Nagle. lución a esta baja eficiencia de transmisión es aplicar el algoritmo de Nagle. Utilizando el algoritmo de Nagle, una conexión TCP sólo puede tener un segmen- Utilizando el algoritmo de Nagle, una conexión TCP sólo puede tener un segmen- to de tamaño pequeño (pocos bytes) sin que se haya reconocido; es decir, sólo to de tamaño pequeño (pocos bytes) sin que se haya reconocido; es decir, sólo puede haber un único segmento de tamaño pequeño viajando por la red (en vue- puede haber un único segmento de tamaño pequeño viajando por la red (en vue- lo). El resto de los segmentos de tamaño pequeño no se pueden transmitir hasta lo). El resto de los segmentos de tamaño pequeño no se pueden transmitir hasta que el ACK del segmento pequeño que esté viajando por la red haya llegado. que el ACK del segmento pequeño que esté viajando por la red haya llegado. Así, los segmentos que están esperando para ser transmitidos se almacenan Así, los segmentos que están esperando para ser transmitidos se almacenan hasta que se recibe el ACK del segmento en vuelo. Cuando este último llega, hasta que se recibe el ACK del segmento en vuelo. Cuando este último llega, la conexión TCP puede enviar un segmento que contenga todos los datos al- la conexión TCP puede enviar un segmento que contenga todos los datos al- macenados hasta este momento, formando un segmento mayor. macenados hasta este momento, formando un segmento mayor. El algoritmo de Nagle funciona cuando los retrasos en la red son grandes; es decir, El algoritmo de Nagle funciona cuando los retrasos en la red son grandes; es decir, si la conexión cruza una WAN. En caso de que la conexión sea local, en una LAN, si la conexión cruza una WAN. En caso de que la conexión sea local, en una LAN, es difícil que se aplique este algoritmo a causa de la alta velocidad de la red. es difícil que se aplique este algoritmo a causa de la alta velocidad de la red. En ocasiones, es interesante desinhibir el algoritmo de Nagle, puesto que la En ocasiones, es interesante desinhibir el algoritmo de Nagle, puesto que la aplicación no puede esperar. El movimiento del ratón en X Windows System aplicación no puede esperar. El movimiento del ratón en X Windows System provoca segmentos pequeños. Estos movimientos del ratón deben entregarse sin retrasos para que el usuario interactivo no lo note. Las librerías de sockets deben permitir, activando indicadores , desinhibir el algoritmo de Nagle*. 8.6.2. Transmisión de datos de gran volumen. Control de flujo por ventana deslizante * En la librería de sockets API, el indicador que desinhibe el algoritmo de Nagle es el TCP_NODELAY. provoca segmentos pequeños. Estos movimientos del ratón deben entregarse sin retrasos para que el usuario interactivo no lo note. Las librerías de sockets deben permitir, activando indicadores , desinhibir el algoritmo de Nagle*. 8.6.2. Transmisión de datos de gran volumen. Control de flujo por ventana deslizante En las comunicaciones en que se envía una ingente cantidad de datos de gran En las comunicaciones en que se envía una ingente cantidad de datos de gran volumen (correo electrónico, transferencias FTP, etc.), como las memorias in- volumen (correo electrónico, transferencias FTP, etc.), como las memorias in- termedias de recepción se pueden llenar, es necesario un protocolo de ventana termedias de recepción se pueden llenar, es necesario un protocolo de ventana deslizante (sliding window) para controlar el flujo de datos. deslizante (sliding window) para controlar el flujo de datos. TCP/IP: los protocolos de la red Internet * En la librería de sockets API, el indicador que desinhibe el algoritmo de Nagle es el TCP_NODELAY. FUOC • P03/75064/00977 65 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 65 El TCP efectúa un control de flujo por ventana deslizante, con la diferencia, El TCP efectúa un control de flujo por ventana deslizante, con la diferencia, respecto a los protocolos del nivel de enlace, de que en el TCP la ventana de respecto a los protocolos del nivel de enlace, de que en el TCP la ventana de transmisión es variable. transmisión es variable. La idea es que cada extremo TCP regula la cantidad de datos que el otro ex- La idea es que cada extremo TCP regula la cantidad de datos que el otro ex- tremo puede transmitir. Con esta finalidad, cada extremo TCP notifica al extremo tremo puede transmitir. Con esta finalidad, cada extremo TCP notifica al extremo opuento, cada vez que envía un segmento, la ventana que puede aceptar en opuento, cada vez que envía un segmento, la ventana que puede aceptar en este momento. El TCP par actualiza su ventana de transmisión de acuerdo este momento. El TCP par actualiza su ventana de transmisión de acuerdo con este valor. con este valor. Mientras que el TCP transmisor marca los bytes que ha transmitido con un nú- Mientras que el TCP transmisor marca los bytes que ha transmitido con un nú- mero de secuencia, el TCP receptor retoma los bytes que recibe y los reconoce mero de secuencia, el TCP receptor retoma los bytes que recibe y los reconoce (por norma general, por medio de la técnica de piggybacking) con un ACK. Los (por norma general, por medio de la técnica de piggybacking) con un ACK. Los reconocimientos ACK especifican siempre el número de secuencia del próxi- reconocimientos ACK especifican siempre el número de secuencia del próxi- mo octeto que el receptor espera recibir. mo octeto que el receptor espera recibir. Un reconocimiento reconoce posiciones de bytes en el flujo de datos Un reconocimiento reconoce posiciones de bytes en el flujo de datos hasta la última posición que ha recibido correctamente, sin tener en hasta la última posición que ha recibido correctamente, sin tener en cuenta el segmento al que pertenecen. cuenta el segmento al que pertenecen. El TCP sólo activa un temporizador de retransmisiones que reprograma cuan- El TCP sólo activa un temporizador de retransmisiones que reprograma cuan- do recibe un reconocimiento o cuando salta el temporizador. Más adelante ve- do recibe un reconocimiento o cuando salta el temporizador. Más adelante ve- remos cómo el TCP programa el temporizador de retransmisiones. La cabecera remos cómo el TCP programa el temporizador de retransmisiones. La cabecera del segmento TCP especifica tres parámetros esenciales en el funcionamiento del del segmento TCP especifica tres parámetros esenciales en el funcionamiento del protocolo de ventana deslizante: protocolo de ventana deslizante: • El número de secuencia, que indica a su conexión opuesta el primer byte • El número de secuencia, que indica a su conexión opuesta el primer byte de datos que contiene el segmento transmitido. de datos que contiene el segmento transmitido. • El número de reconocimiento (número ACK), que indica a su conexión • El número de reconocimiento (número ACK), que indica a su conexión opuesta el próximo byte que espera recibir y, por tanto, el último byte re- opuesta el próximo byte que espera recibir y, por tanto, el último byte re- cibido correctamente. Conviene recordar que el TCP es bidireccional y que cibido correctamente. Conviene recordar que el TCP es bidireccional y que un segmento TCP reconoce, por medio de piggybacking, los datos que recibe un segmento TCP reconoce, por medio de piggybacking, los datos que recibe con un ACK que debe estar numerado. con un ACK que debe estar numerado. • La ventana, que indica a su conexión opuesta el tamaño de la memoria in- • La ventana, que indica a su conexión opuesta el tamaño de la memoria in- termedia de recepción y, por tanto, el tamaño de la ventana que el trans- termedia de recepción y, por tanto, el tamaño de la ventana que el trans- misor debe utilizar. misor debe utilizar. Actividad Actividad • Asumimos que un extremo cliente TCP ha elegido el 28.325 como número de secuencia inicial (ISN), mientras que el extremo servidor TCP ha elegido como ISN el 12.555. ¿Qué indica un segmento cliente TCP con número de secuencia 29.201, número ACK 12.655 y ventana 1.024? • Asumimos que un extremo cliente TCP ha elegido el 28.325 como número de secuencia inicial (ISN), mientras que el extremo servidor TCP ha elegido como ISN el 12.555. ¿Qué indica un segmento cliente TCP con número de secuencia 29.201, número ACK 12.655 y ventana 1.024? TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 66 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 66 Solución Solución El número de secuencia indica que el cliente ya ha transmitido desde el byte 28.325 hasta el byte 29.200 (875 bytes en total) y que en este segmento transmitirá a partir del byte 29.201. El número ACK indicará al servidor que el cliente ha recibido correctamente hasta el byte 12.654 y que espera recibir a partir del 12.655. La ventana indica al servidor que el cliente sólo puede aceptar 1.024 bytes antes de confirmarlos. Por consiguiente, el servidor TCP actualizará su ventana de transmisión a 1.024. El número de secuencia indica que el cliente ya ha transmitido desde el byte 28.325 hasta el byte 29.200 (875 bytes en total) y que en este segmento transmitirá a partir del byte 29.201. El número ACK indicará al servidor que el cliente ha recibido correctamente hasta el byte 12.654 y que espera recibir a partir del 12.655. La ventana indica al servidor que el cliente sólo puede aceptar 1.024 bytes antes de confirmarlos. Por consiguiente, el servidor TCP actualizará su ventana de transmisión a 1.024. Con el objetivo de estudiar el mecanismo de ventana deslizante, analizaremos Con el objetivo de estudiar el mecanismo de ventana deslizante, analizaremos un caso sencillo. Asumiremos que ya se ha establecido la conexión y se han un caso sencillo. Asumiremos que ya se ha establecido la conexión y se han asignado los ISN para ambos extremos. asignado los ISN para ambos extremos. En la figura siguiente, podemos ver cómo funcionaría el protocolo de ven- En la figura siguiente, podemos ver cómo funcionaría el protocolo de ven- tana deslizante para el TCP transmisor. El TCP receptor le ha indicado que tana deslizante para el TCP transmisor. El TCP receptor le ha indicado que está dispuesto a recibir 7 bytes. Por tanto, la ventana de transmisión del está dispuesto a recibir 7 bytes. Por tanto, la ventana de transmisión del TCP transmisor es de 7 bytes. TCP transmisor es de 7 bytes. Podemos interpretar la ventana deslizante de la manera siguiente: Podemos interpretar la ventana deslizante de la manera siguiente: 1) El TCP ya ha enviado bytes hasta el número de secuencia 1.003. De estos 1) El TCP ya ha enviado bytes hasta el número de secuencia 1.003. De estos bytes, el TCP receptor le ha reconocido hasta el 999; faltan por reconocerle bytes, el TCP receptor le ha reconocido hasta el 999; faltan por reconocerle los bytes 1.000 a 1.003. los bytes 1.000 a 1.003. 2) Como la ventana de transmisión es de 7 bytes y ya ha transmitido 4, el TCP 2) Como la ventana de transmisión es de 7 bytes y ya ha transmitido 4, el TCP todavía puede transmitir 3 bytes antes de agotarla (bytes 1.004 a 1.006). todavía puede transmitir 3 bytes antes de agotarla (bytes 1.004 a 1.006). 3) El TCP sólo podrá transmitir del byte 1.007 en adelante en los casos si- 3) El TCP sólo podrá transmitir del byte 1.007 en adelante en los casos si- guientes: guientes: • Si el TCP receptor le reconoce los bytes a partir del 1.000, de manera que el • Si el TCP receptor le reconoce los bytes a partir del 1.000, de manera que el límite izquierdo de la ventana se moverá hacia la derecha. límite izquierdo de la ventana se moverá hacia la derecha. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 67 • Si el TCP receptor le advierte de una ventana superior a 7, de manera que el límite derecho de la ventana se moverá hacia la derecha. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 67 • Si el TCP receptor le advierte de una ventana superior a 7, de manera que el límite derecho de la ventana se moverá hacia la derecha. • Una combinación de las dos soluciones anteriores. • Una combinación de las dos soluciones anteriores. Como podéis observar, el TCP receptor puede advertir una nueva ventana de Como podéis observar, el TCP receptor puede advertir una nueva ventana de transmisión. Cada vez que reconozca datos, avisará de la nueva ventana que transmisión. Cada vez que reconozca datos, avisará de la nueva ventana que está dispuesta a recibir. El TCP transmisor actualizará esta última. está dispuesta a recibir. El TCP transmisor actualizará esta última. La ventana puede experimentar tres tipos de movimiento: La ventana puede experimentar tres tipos de movimiento: 1) La ventana se cierra al moverse el límite izquierdo hacia la derecha 1) La ventana se cierra al moverse el límite izquierdo hacia la derecha cuando los datos enviados son reconocidos. cuando los datos enviados son reconocidos. 2) La ventana se abre al moverse el límite derecho hacia la derecha y per- 2) La ventana se abre al moverse el límite derecho hacia la derecha y per- mite que el TCP envíe más datos. Esta apertura tiene lugar cuando el re- mite que el TCP envíe más datos. Esta apertura tiene lugar cuando el re- ceptor libera espacio de su memoria y puede advertir una nueva ventana. ceptor libera espacio de su memoria y puede advertir una nueva ventana. 3) La ventana se comprime cuando el límite derecho se mueve hacia 3) La ventana se comprime cuando el límite derecho se mueve hacia la izquierda. la izquierda. Algunos puntos que podemos resumir de la figura de la ventana deslizante son Algunos puntos que podemos resumir de la figura de la ventana deslizante son los siguientes: los siguientes: • Si el límite izquierdo alcanza el límite derecho, se dice que la ventana vale • Si el límite izquierdo alcanza el límite derecho, se dice que la ventana vale cero (zero window). Ello hace que el transmisor detenga el envío de datos. cero (zero window). Ello hace que el transmisor detenga el envío de datos. • Se recomienda que el TCP transmisor no comprima la ventana de transmisión. • Se recomienda que el TCP transmisor no comprima la ventana de transmisión. • Es preciso que distingamos el hecho de que la ventana se comprima (el lí- • Es preciso que distingamos el hecho de que la ventana se comprima (el lí- mite derecho se mueve hacia la izquierda) del hecho de que la ventana dis- mite derecho se mueve hacia la izquierda) del hecho de que la ventana dis- minuya de tamaño (se advierte una ventana más pequeña, pero el límite minuya de tamaño (se advierte una ventana más pequeña, pero el límite derecho no se mueve hacia la izquierda). derecho no se mueve hacia la izquierda). Diferencia entre compresión y disminución de tamaño de la ventana Diferencia entre compresión y disminución de tamaño de la ventana Supongamos una ventana de 7 bytes como en la figura de la ventana deslizante. El receptor reconoce los bytes 1.000 a 1.003 y advierte una ventana de 5 bytes. Como podéis deducir, el límite izquierdo vale ahora 1.004; el límite derecho, 1.008 (se ha movido hacia la derecha), y la nueva ventana, 5. En este caso, la ventana de recepción debe reducirse, pero no se ha comprimido. Supongamos una ventana de 7 bytes como en la figura de la ventana deslizante. El receptor reconoce los bytes 1.000 a 1.003 y advierte una ventana de 5 bytes. Como podéis deducir, el límite izquierdo vale ahora 1.004; el límite derecho, 1.008 (se ha movido hacia la derecha), y la nueva ventana, 5. En este caso, la ventana de recepción debe reducirse, pero no se ha comprimido. En cambio, si el receptor sólo reconoce 1 byte (el byte 1.000) y advierte una ventana de 1 byte, el transmisor se encontrará con un problema. Una ventana de 1 byte significa que sólo podía haber transmitido 1 (el 1.001), pero ya había transmitido 3, incluyendo el reconocido (del 1.000 al 1.003). Por tanto, el receptor debe asegurarse de advertir al menos tantos bytes como el transmisor le puede haber enviado con la ventana anterior. Si sólo reconoce 1 byte, la ventana advertida debe ser de 6 bytes; si reconoce los 4 bytes, esta última debe ser, al menos, de 3 bytes, puesto que el transmisor ya los podría haber transmitido. En cambio, si el receptor sólo reconoce 1 byte (el byte 1.000) y advierte una ventana de 1 byte, el transmisor se encontrará con un problema. Una ventana de 1 byte significa que sólo podía haber transmitido 1 (el 1.001), pero ya había transmitido 3, incluyendo el reconocido (del 1.000 al 1.003). Por tanto, el receptor debe asegurarse de advertir al menos tantos bytes como el transmisor le puede haber enviado con la ventana anterior. Si sólo reconoce 1 byte, la ventana advertida debe ser de 6 bytes; si reconoce los 4 bytes, esta última debe ser, al menos, de 3 bytes, puesto que el transmisor ya los podría haber transmitido. Ejemplo de funcionamiento del protocolo de ventana deslizante Ejemplo de funcionamiento del protocolo de ventana deslizante Utilizaremos el programa tcpdump para observar cómo funciona el protocolo de ventana deslizante. Asumimos que hemos efectuado un rlogin de argos a helios (argos % rlogin Utilizaremos el programa tcpdump para observar cómo funciona el protocolo de ventana deslizante. Asumimos que hemos efectuado un rlogin de argos a helios (argos % rlogin TCP/IP: los protocolos de la red Internet 68 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet helios) y ya estamos conectados a helios. Una vez nos encontramos en helios, ejecutamos el comando ls. Este último retorna por salida estándar el listado de directorios del directorio del usuario (home directory) en helios que ocupan 811 caracteres (representa el envío de 811 bytes). 68 FUOC • P03/75064/00977 helios) y ya estamos conectados a helios. Una vez nos encontramos en helios, ejecutamos el comando ls. Este último retorna por salida estándar el listado de directorios del directorio del usuario (home directory) en helios que ocupan 811 caracteres (representa el envío de 811 bytes). helios % ls helios % ls Las líneas que obtenemos con el programa tcpdump (numeradas del 1 al 13) son las siguientes: Las líneas que obtenemos con el programa tcpdump (numeradas del 1 al 13) son las siguientes: 1) 15:56:59.506091 argos.1023 > helios.login: P 37:38 (1)ack 596 win 31744 1) 15:56:59.506091 argos.1023 > helios.login: P 37:38 (1)ack 596 win 31744 2) 15:56:59.516091 helios.login > argos.1023: P 596:597 (1) ack 38 win 8760 2) 15:56:59.516091 helios.login > argos.1023: P 596:597 (1) ack 38 win 8760 3) 15:56:.59.526091 argos.1023 > helios.login: .ack 597 win 31744 3) 15:56:.59.526091 argos.1023 > helios.login: .ack 597 win 31744 4) 15:56:59.846091 argos.1023 > helios.login: P 38:39 (1)ack 597 win 31744 4) 15:56:59.846091 argos.1023 > helios.login: P 38:39 (1)ack 597 win 31744 5) 15:56:59.856091 helios.login > argos.1023: : P 597:600 (3) ack 39 win 8760 5) 15:56:59.856091 helios.login > argos.1023: : P 597:600 (3) ack 39 win 8760 6) 15:56:59.866091 argos.1023 > helios.login: .ack 600 win 31744 6) 15:56:59.866091 argos.1023 > helios.login: .ack 600 win 31744 7) 15:57:00.116091 argos.1023 > helios.login: P 39:40 (1)ack 600 win 31744 7) 15:57:00.116091 argos.1023 > helios.login: P 39:40 (1)ack 600 win 31744 8) 15:57:00.126091 helios.login > argos.1023: P 600:603 (3) ack 40 win 8760 8) 15:57:00.126091 helios.login > argos.1023: P 600:603 (3) ack 40 win 8760 9) 15:57:00.136091 argos.1023 > helios.login: .ack 603 win 31744 9) 15:57:00.136091 argos.1023 > helios.login: .ack 603 win 31744 10) 15:57:00.146091 helios.login > argos.1023: P 603:658 (55) ack 40 win 8760 10) 15:57:00.146091 helios.login > argos.1023: P 603:658 (55) ack 40 win 8760 11) 15:57:00.156091 argos.1023 > helios.login: .ack 658 win 31744 11) 15:57:00.156091 argos.1023 > helios.login: .ack 658 win 31744 12) 15:57:00.166091 helios.login > argos.1023: P 658:1414 (756) ack 40 win 8760 12) 15:57:00.166091 helios.login > argos.1023: P 658:1414 (756) ack 40 win 8760 13) 15:57:00.176091 argos.1023 > helios.login: .ack 1414 win 31744 13) 15:57:00.176091 argos.1023 > helios.login: .ack 1414 win 31744 La interpretación de estas líneas es la siguiente: argos ya ha enviado 36 bytes, mientras que helios ya ha enviado 595 (información que ambos han intercambiado desde el principio de la conexión, como pueden ser logins, usernames, etc.). Deducimos esta información de la primera línea del ejemplo. La interpretación de estas líneas es la siguiente: argos ya ha enviado 36 bytes, mientras que helios ya ha enviado 595 (información que ambos han intercambiado desde el principio de la conexión, como pueden ser logins, usernames, etc.). Deducimos esta información de la primera línea del ejemplo. 1) argos envía el carácter ‘l’. El indicador P señala PUSH. El número de secuencia avanza de 37 a 38. 2) helios retorna un eco del carácter ‘l’. Su número de secuencia avanza de 596 a 597 y reconoce el byte recibido (ACK = 37 + 1 = 38). 3) argos reconoce el eco: ACK = 597 + 1 = 598. 4) argos envía el carácter ‘s’. El número de secuencia avanza de 38 a 39. El ACK no reconoce nada porque vale igual que antes: ACK = 597. 5) helios hace un eco que ocupa 3 bytes (BS* + 1 + s). El número de secuencia avanza tres posiciones (de 597 a 600) y reconoce el carácter ‘s’ , puesto que ACK = 38 + 1 = 39. Recordad PUSH indica al receptor que pase los datos inmediatamente a la aplicación; es decir, que no los deje durante un tiempo en la memoria intermedia de recepción. * BS es la sigla de back space. 1) argos envía el carácter ‘l’. El indicador P señala PUSH. El número de secuencia avanza de 37 a 38. 2) helios retorna un eco del carácter ‘l’. Su número de secuencia avanza de 596 a 597 y reconoce el byte recibido (ACK = 37 + 1 = 38). 3) argos reconoce el eco: ACK = 597 + 1 = 598. 4) argos envía el carácter ‘s’. El número de secuencia avanza de 38 a 39. El ACK no reconoce nada porque vale igual que antes: ACK = 597. 5) helios hace un eco que ocupa 3 bytes (BS* + 1 + s). El número de secuencia avanza tres posiciones (de 597 a 600) y reconoce el carácter ‘s’ , puesto que ACK = 38 + 1 = 39. 6) argos reconoce el eco con un ACK = 600. 6) argos reconoce el eco con un ACK = 600. 7) argos envía el retorno de carro (CR). El número de secuencia avanza una posición. 7) argos envía el retorno de carro (CR). El número de secuencia avanza una posición. 8) helios hace un eco del CR y, asimismo, retorna otro CR seguido de un LF*. Ello significa el envío de 3 bytes. Reconoce el CR, puesto que ACK = 40. 9) argos reconoce estos tres caracteres. TCP/IP: los protocolos de la red Internet * LF es la sigla de line feed. 8) helios hace un eco del CR y, asimismo, retorna otro CR seguido de un LF*. Ello significa el envío de 3 bytes. Reconoce el CR, puesto que ACK = 40. 9) argos reconoce estos tres caracteres. Recordad PUSH indica al receptor que pase los datos inmediatamente a la aplicación; es decir, que no los deje durante un tiempo en la memoria intermedia de recepción. * BS es la sigla de back space. * LF es la sigla de line feed. FUOC • P03/75064/00977 69 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 69 10) helios responde a ‘ls’ enviando 55 de los 811 bytes que debe enviar. El número de secuencia avanza de 603 a 658. El ACK se mentiene a 40. 10) helios responde a ‘ls’ enviando 55 de los 811 bytes que debe enviar. El número de secuencia avanza de 603 a 658. El ACK se mentiene a 40. 11) argos reconoce estos 55 bytes enviando un ACK de 659. 11) argos reconoce estos 55 bytes enviando un ACK de 659. 12) helios transmite el resto de los 811 bytes, es decir, 756 bytes. 12) helios transmite el resto de los 811 bytes, es decir, 756 bytes. 13) argos reconoce estos bytes avanzando el ACK a 1.414. 13) argos reconoce estos bytes avanzando el ACK a 1.414. Como podemos observar en este ejemplo, el TCP divide la información que hay que enviar en dos segmentos: un segmento de 55 bytes y otro de 756 bytes. Conviene remarcar que rlogin envía los comandos carácter a carácter y que, además, la aplicación remota hace un eco de estos caracteres. Por ello, en las primeras líneas se envía primero la ‘l’, después la ‘s’, a continuación el retorno de carro, etc. Lo que nos interesa de este ejemplo es ver cómo avanzan las ventanas al emitir y al reconocer bytes. Por tanto, no justificaremos por qué rlogin retorna ecos, ni por qué añade un carácter LF al retorno de carro. Como podemos observar en este ejemplo, el TCP divide la información que hay que enviar en dos segmentos: un segmento de 55 bytes y otro de 756 bytes. Conviene remarcar que rlogin envía los comandos carácter a carácter y que, además, la aplicación remota hace un eco de estos caracteres. Por ello, en las primeras líneas se envía primero la ‘l’, después la ‘s’, a continuación el retorno de carro, etc. Lo que nos interesa de este ejemplo es ver cómo avanzan las ventanas al emitir y al reconocer bytes. Por tanto, no justificaremos por qué rlogin retorna ecos, ni por qué añade un carácter LF al retorno de carro. 8.6.3. Temporizadores y retransmisiones 8.6.3. Temporizadores y retransmisiones El TCP activa hasta cuatro temporizadores de diferente tipo para conseguir El TCP activa hasta cuatro temporizadores de diferente tipo para conseguir una entrega fiable de la información. En este subapartado nos centraremos únicamente en el temporizador de retransmisiones o RTO*. * RTO es la sigla de retransmission time out. una entrega fiable de la información. En este subapartado nos centraremos únicamente en el temporizador de retransmisiones o RTO*. Conviene recordar que tanto los segmentos como los reconocimientos se pue- Conviene recordar que tanto los segmentos como los reconocimientos se pue- den perder durante la transmisión, de manera que es preciso utilizar un tem- den perder durante la transmisión, de manera que es preciso utilizar un tem- porizador de retransmisiones. porizador de retransmisiones. Como ya hemos mencionado, el temporizador se programa cada vez que se re- Como ya hemos mencionado, el temporizador se programa cada vez que se re- cibe un reconocimiento, o bien cuando salta porque el reconocimiento no ha cibe un reconocimiento, o bien cuando salta porque el reconocimiento no ha llegado a tiempo (o, simplemente, no ha llegado). llegado a tiempo (o, simplemente, no ha llegado). Definimos el tiempo de ida y vuelta o RTT* como el tiempo que transcurre desde que se transmite un segmento, hasta que es reconocido (el ACK * RTT es la sigla de round trip time. Definimos el tiempo de ida y vuelta o RTT* como el tiempo que transcurre desde que se transmite un segmento, hasta que es reconocido (el ACK vuelve al transmisor). El RTT se puede medir restando el instante en que el vuelve al transmisor). El RTT se puede medir restando el instante en que el TCP transmisor emite el segmento y el instante en que recibe el ACK. TCP transmisor emite el segmento y el instante en que recibe el ACK. Lo más lógico sería activar el temporizador de retransmisión en el tiempo de Lo más lógico sería activar el temporizador de retransmisión en el tiempo de ida y vuelta (RTO = RTT). Sin embargo, es evidente que los retrasos que expe- ida y vuelta (RTO = RTT). Sin embargo, es evidente que los retrasos que expe- rimentan los segmentos son variables: si se activa el RTO en el RTT que ha ex- rimentan los segmentos son variables: si se activa el RTO en el RTT que ha ex- perimentado el segmento anterior, no se puede asegurar que este segmento no perimentado el segmento anterior, no se puede asegurar que este segmento no tenga un retraso superior y que el temporizador no salte antes de tiempo. Exis- tenga un retraso superior y que el temporizador no salte antes de tiempo. Exis- ten diferentes alternativas para programar el temporizador que explicaremos ten diferentes alternativas para programar el temporizador que explicaremos a continuación: a continuación: • Algoritmo de retransmisión adaptativo. • Algoritmo de retransmisión adaptativo. • Algoritmo de Jacobson para calcular el RTO. • Algoritmo de Jacobson para calcular el RTO. • Algoritmo de Karn. • Algoritmo de Karn. • Algoritmo slow start. • Algoritmo slow start. • Algoritmo congestion avoidance. • Algoritmo congestion avoidance. • Temporizador keepalive. • Temporizador keepalive. TCP/IP: los protocolos de la red Internet * RTO es la sigla de retransmission time out. * RTT es la sigla de round trip time. 70 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet Algoritmo de retransmisión adaptativo siguiente: Est_RTT = α · Est_RTT + (1 − α) · M_RTT. Se utiliza una estimación del RTT que considere el RTT medido y su último vaM_RTT es el último RTT medido (M_RTT o Measured RTT) y α es un factor cuyo valor se recomienda que sea 0,9 (el 90% del valor de la nueva estimación proviene de la última estimación del RTT y el 10% restante, de la última medida del RTT). Se recomienda que el temporizador valga: RTO = β · Est_RTT, TCP/IP: los protocolos de la red Internet Algoritmo de retransmisión adaptativo Se utiliza una estimación del RTT que considere el RTT medido y su último valor estimado del RTT. El nuevo RTT estimado (Est_RTT) se calcula de la manera 70 FUOC • P03/75064/00977 lor estimado del RTT. El nuevo RTT estimado (Est_RTT) se calcula de la manera siguiente: Est_RTT = α · Est_RTT + (1 − α) · M_RTT. M_RTT es el último RTT medido (M_RTT o Measured RTT) y α es un factor cuyo valor se recomienda que sea 0,9 (el 90% del valor de la nueva estimación proviene de la última estimación del RTT y el 10% restante, de la última medida del RTT). Se recomienda que el temporizador valga: β es el factor de variación del retraso y se recomienda que valga 2. RTO = β · Est_RTT, El problema de esta aproximación es que no considera las fluctuaciones del El problema de esta aproximación es que no considera las fluctuaciones del RTT, lo que provoca más retransmisiones de las necesarias. Para solucionar RTT, lo que provoca más retransmisiones de las necesarias. Para solucionar este problema, se propuso un estimador del RTT que tuviera en cuenta la va- este problema, se propuso un estimador del RTT que tuviera en cuenta la va- rianza del RTT. rianza del RTT. Algoritmo de Jacobson para calcular el RTO Algoritmo de Jacobson para calcular el RTO Este algoritmo mejora el cálculo del temporizador del algoritmo de retransmi- Este algoritmo mejora el cálculo del temporizador del algoritmo de retransmi- sión adaptativo. Jacobson propuso calcular el temporizador de retransmisio- sión adaptativo. Jacobson propuso calcular el temporizador de retransmisio- nes RTO utilizando la media y la varianza del RTT. nes RTO utilizando la media y la varianza del RTT. Tenemos que MRTT es la media estimada del RTT y que SRTT es la desviación Tenemos que MRTT es la media estimada del RTT y que SRTT es la desviación estándar estimada. De este modo, el temporizador tendrá en cuenta las fluc- estándar estimada. De este modo, el temporizador tendrá en cuenta las fluc- tuaciones en el retraso que puede experimentar un segmento al cruzar equipos tuaciones en el retraso que puede experimentar un segmento al cruzar equipos intermedios en una red. El algoritmo consiste en los pasos siguientes: intermedios en una red. El algoritmo consiste en los pasos siguientes: Las variables MRTT y SRTT se inicializan a 0 y 3 segundos respectivamente, y el valor de g es 1/8 y el de h es 1/4. β es el factor de variación del retraso y se recomienda que valga 2. Las variables MRTT y SRTT se inicializan a 0 y 3 segundos respectivamente, y el valor de g es 1/8 y el de h es 1/4. Podemos notar que el cálculo de la media MRTT es equivalente al estimador Podemos notar que el cálculo de la media MRTT es equivalente al estimador adaptativo, con la diferencia de que g = (1 − α) y α adopta un valor diferente. adaptativo, con la diferencia de que g = (1 − α) y α adopta un valor diferente. Por último, el temporizador se actualiza como una función de la medida y de Por último, el temporizador se actualiza como una función de la medida y de la desviación estándar (o varianza, puesto que están relacionadas) del RTT: la desviación estándar (o varianza, puesto que están relacionadas) del RTT: RTO = MRTT + 2 · SRTT para el primer temporizador. RTO = MRTT + 2 · SRTT para el primer temporizador. RTO = MRTT + 4 · SRTT a partir del primer temporizador. RTO = MRTT + 4 · SRTT a partir del primer temporizador. Algoritmo de Karn Algoritmo de Karn Cuando el temporizador salta, el segmento se retransmite y el TCP repro- Cuando el temporizador salta, el segmento se retransmite y el TCP repro- grama el temporizador. Supongamos que a continuación se recibe un ACK. grama el temporizador. Supongamos que a continuación se recibe un ACK. El TCP no tiene manera de saber a quién pertenece (al primer segmento o El TCP no tiene manera de saber a quién pertenece (al primer segmento o FUOC • P03/75064/00977 71 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 71 a su retransmisión), puesto que el ACK sólo indica el próximo byte que es- a su retransmisión), puesto que el ACK sólo indica el próximo byte que es- pera recibir. Esta situación se denomina problema de ambigüedad en las re- pera recibir. Esta situación se denomina problema de ambigüedad en las re- transmisiones y afecta a la manera de recalcular el RTO, puesto que este transmisiones y afecta a la manera de recalcular el RTO, puesto que este último depende de las medidas del RTT que llevamos a cabo. último depende de las medidas del RTT que llevamos a cabo. Es decir, debemos pensar que uno de los parámetros que se utiliza para calcu- Es decir, debemos pensar que uno de los parámetros que se utiliza para calcu- lar el valor del temporizador es la medida del tiempo de ida y vuelta (M_RTT). lar el valor del temporizador es la medida del tiempo de ida y vuelta (M_RTT). Si para medir el RTT, el TCP utiliza el ACK que llega después de haber retrans- Si para medir el RTT, el TCP utiliza el ACK que llega después de haber retrans- mitido uno o diferentes segmentos y se produce un problema de ambigüedad mitido uno o diferentes segmentos y se produce un problema de ambigüedad en las retransmisiones, el TCP puede computar valores que no son reales con en las retransmisiones, el TCP puede computar valores que no son reales con la situación actual de la red. Para evitarlo, se utiliza el algoritmo de Karn. la situación actual de la red. Para evitarlo, se utiliza el algoritmo de Karn. El algoritmo de Karn considera que el RTO sólo se recalculará por medio de El algoritmo de Karn considera que el RTO sólo se recalculará por medio de una estimación del RTT (es decir, utilizando un algoritmo como el de Jacob- una estimación del RTT (es decir, utilizando un algoritmo como el de Jacob- son) si el reconocimiento pertenece a un segmento no retransmitido. Cuando son) si el reconocimiento pertenece a un segmento no retransmitido. Cuando se produce una retransmisión, se utiliza un algoritmo de back-off exponencial se produce una retransmisión, se utiliza un algoritmo de back-off exponencial para doblar el valor del temporizador. para doblar el valor del temporizador. El algoritmo de back-off dobla el valor del último RTO hasta un límite de 64 El algoritmo de back-off dobla el valor del último RTO hasta un límite de 64 segundos. Cuando se reciba un ACK de un segmento que no se ha retransmi- segundos. Cuando se reciba un ACK de un segmento que no se ha retransmi- tido, se vuelve a tomar una medida del RTT y se aplica de nuevo el algoritmo tido, se vuelve a tomar una medida del RTT y se aplica de nuevo el algoritmo de Jacobson. Desde un punto de vista experimental, se ha comprobado que de Jacobson. Desde un punto de vista experimental, se ha comprobado que este algoritmo funciona muy bien incluso cuando la red experimenta muchas este algoritmo funciona muy bien incluso cuando la red experimenta muchas pérdidas de datos. pérdidas de datos. Algoritmo slow start Algoritmo slow start En numerosas ocasiones el transmisor empieza emitiendo el mayor número de En numerosas ocasiones el transmisor empieza emitiendo el mayor número de segmentos posible (tantos como le permite su ventana). Una vez ha agotado segmentos posible (tantos como le permite su ventana). Una vez ha agotado la ventana, el transmisor espera que el receptor le reconozca los datos y le ad- la ventana, el transmisor espera que el receptor le reconozca los datos y le ad- vierte de nuevas ventanas para continuar funcionando y emitir más datos. Sin vierte de nuevas ventanas para continuar funcionando y emitir más datos. Sin embargo, en una red hay equipos intermedios (direccionadores, conmutado- embargo, en una red hay equipos intermedios (direccionadores, conmutado- res, etc.) que pueden congestionarse. Por tanto, no podrán almacenar tanta in- res, etc.) que pueden congestionarse. Por tanto, no podrán almacenar tanta in- formación como el transmisor está emitiendo. formación como el transmisor está emitiendo. Los equipos intermedios se pueden congestionar por muchas razones: por ejemplo, a causa de un direccionador con enlaces de entrada a alta velocidad y enlaces de salida a baja velocidad, o con una CPU lenta o con memoria intermedia pequeña. Los equipos intermedios se pueden congestionar por muchas razones: por ejemplo, a causa de un direccionador con enlaces de entrada a alta velocidad y enlaces de salida a baja velocidad, o con una CPU lenta o con memoria intermedia pequeña. Asimismo, conviene considerar que el direccionador, además de retransmitir la información, debe direccionarla. Por tanto, no sólo debe procesar los datagramas IP que recibe, sino que en ocasiones debe computar algoritmos de direccionamiento. Asimismo, conviene considerar que el direccionador, además de retransmitir la información, debe direccionarla. Por tanto, no sólo debe procesar los datagramas IP que recibe, sino que en ocasiones debe computar algoritmos de direccionamiento. Es muy posible que estos equipos, para descongestionarse (tienen las memo- Es muy posible que estos equipos, para descongestionarse (tienen las memo- rias intermedias completas), descarten datagramas IP. Al fin y al cabo, por en- rias intermedias completas), descarten datagramas IP. Al fin y al cabo, por en- cima del IP hay un protocolo de retransmisiones (TCP) que retransmitirá toda cima del IP hay un protocolo de retransmisiones (TCP) que retransmitirá toda la información que no haya llegado a su destino. la información que no haya llegado a su destino. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 72 El problema surge cuando el TCP se percata de que la información no ha llegado a su destino (los datagramas IP con esta información han sido descartados por el direccionador) y vuelve a retransmitir la ventana. El direccionador se encuentra de nuevo con la misma situación, o incluso peor*, y vuelve a des- TCP/IP: los protocolos de la red Internet *La razón de este empeoramiento es que el direccionador recibe de nuevo los datagramas de las conexiones que había rechazado y todos al mismo tiempo, lo que no le ayuda a eliminar la congestión. FUOC • P03/75064/00977 72 El problema surge cuando el TCP se percata de que la información no ha llegado a su destino (los datagramas IP con esta información han sido descartados por el direccionador) y vuelve a retransmitir la ventana. El direccionador se encuentra de nuevo con la misma situación, o incluso peor*, y vuelve a des- cartar datagramas IP de esta conexión. cartar datagramas IP de esta conexión. El direccionador necesita aliviar la congestión; es decir, que las conexiones no El direccionador necesita aliviar la congestión; es decir, que las conexiones no le envíen demasiados datagramas IP y así tenga tiempo de recuperarse. Un al- le envíen demasiados datagramas IP y así tenga tiempo de recuperarse. Un al- goritmo que el TCP puede implementar para evitar la congestión de los equi- goritmo que el TCP puede implementar para evitar la congestión de los equi- pos intermedios de la red es el slow start. pos intermedios de la red es el slow start. El algoritmo slow start permite que el transmisor incremente el número de seg- El algoritmo slow start permite que el transmisor incremente el número de seg- mentos que es preciso transmitir exponencialmente cada vez que reciba un re- mentos que es preciso transmitir exponencialmente cada vez que reciba un re- conocimiento. El transmisor empieza transmitiendo un solo segmento. conocimiento. El transmisor empieza transmitiendo un solo segmento. El slow start define una segunda ventana a la que llama ventana de congestión. El slow start define una segunda ventana a la que llama ventana de congestión. El algoritmo funciona de la manera siguiente: El algoritmo funciona de la manera siguiente: 1) La ventana de congestión se inicializa en el valor de un segmento de tama- 1) La ventana de congestión se inicializa en el valor de un segmento de tama- ño máximo (MSS bytes). ño máximo (MSS bytes). 2) Cada vez que se recibe un ACK, la ventana de congestión se incrementa en un segmento (en MSS bytes). 3) El transmisor puede emitir lo mínimo entre la ventana de transmisión y la ventana de congestión. Cuando el algoritmo slow start... ... incrementa la ventana de congestión en un segmento, lo que hace es considerar un segmento como el número de bytes que ocupa un segmento de tamaño máximo. 2) Cada vez que se recibe un ACK, la ventana de congestión se incrementa en un segmento (en MSS bytes). 3) El transmisor puede emitir lo mínimo entre la ventana de transmisión y la ventana de congestión. De esta manera, el transmisor no enviará en un inicio toda su ventana de De esta manera, el transmisor no enviará en un inicio toda su ventana de transmisión. A medida que recibe el ACK, asume que no hay congestión e in- transmisión. A medida que recibe el ACK, asume que no hay congestión e in- crementa lentamente la cantidad de datos a transmitir. crementa lentamente la cantidad de datos a transmitir. La ventana de transmisión es un control de flujo impuesto por el receptor, La ventana de transmisión es un control de flujo impuesto por el receptor, mientras que la ventana de congestión consiste en un control de flujo impues- mientras que la ventana de congestión consiste en un control de flujo impues- to por el transmisor. Es conveniente considerar que el incremento de la ven- to por el transmisor. Es conveniente considerar que el incremento de la ven- tana de congestión es exponencial. En un inicio, vale un segmento. Cuando tana de congestión es exponencial. En un inicio, vale un segmento. Cuando el transmisor recibe un ACK, incrementa la ventana de congestión a dos seg- el transmisor recibe un ACK, incrementa la ventana de congestión a dos seg- mentos. Ahora recibirá 2 ACK, de manera que podrá incrementarla a cuatro mentos. Ahora recibirá 2 ACK, de manera que podrá incrementarla a cuatro segmentos. Y así continuamente. segmentos. Y así continuamente. Algoritmo congestion avoidance Algoritmo congestion avoidance El algoritmo slow start evita que se congestione un equipo intermedio que no El algoritmo slow start evita que se congestione un equipo intermedio que no está congestionado en un inicio. Sin embargo, ello no es suficiente para evitar está congestionado en un inicio. Sin embargo, ello no es suficiente para evitar la congestión: en algún momento la ventana de congestión será mayor que la la congestión: en algún momento la ventana de congestión será mayor que la de transmisión, de manera que el TCP siempre transmitirá toda su ventana. Si de transmisión, de manera que el TCP siempre transmitirá toda su ventana. Si TCP/IP: los protocolos de la red Internet *La razón de este empeoramiento es que el direccionador recibe de nuevo los datagramas de las conexiones que había rechazado y todos al mismo tiempo, lo que no le ayuda a eliminar la congestión. Cuando el algoritmo slow start... ... incrementa la ventana de congestión en un segmento, lo que hace es considerar un segmento como el número de bytes que ocupa un segmento de tamaño máximo. FUOC • P03/75064/00977 73 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 73 el equipo intermedio se congestiona, debe disminuirse el número de segmen- el equipo intermedio se congestiona, debe disminuirse el número de segmen- tos a transmitir y volver a aplicar un algoritmo como el slow start. tos a transmitir y volver a aplicar un algoritmo como el slow start. Sabremos que hay congestión cuando el receptor no reconozca los datos. Ello significa que el temporizador de retransmisión saltará porque no ha llegado un ACK o porque ha llegado un ACK con el mismo número que el anterior (se llama ACK duplicado). Recordad... ... que un ACK duplicado es un segmento con el mismo número ACK que el segmento anterior. Sabremos que hay congestión cuando el receptor no reconozca los datos. Ello significa que el temporizador de retransmisión saltará porque no ha llegado un ACK o porque ha llegado un ACK con el mismo número que el anterior (se llama ACK duplicado). El algoritmo de congestion avoidance reduce la ventana de congestión a la mitad El algoritmo de congestion avoidance reduce la ventana de congestión a la mitad cada vez que se pierde un segmento, y reduce la congestión en la red. Para ello, cada vez que se pierde un segmento, y reduce la congestión en la red. Para ello, define un umbral (threshold) y trabaja junto con el slow start de la manera si- define un umbral (threshold) y trabaja junto con el slow start de la manera si- guiente: guiente: • El TCP inicializa el umbral (threshold) a 65.535 bytes y la ventana de conges- • El TCP inicializa el umbral (threshold) a 65.535 bytes y la ventana de conges- tión a un segmento (MSS bytes). En un inicio, el transmisor está en estado slow tión a un segmento (MSS bytes). En un inicio, el transmisor está en estado slow start. start. • El transmisor envía datos de acuerdo con el algoritmo slow start. • El transmisor envía datos de acuerdo con el algoritmo slow start. • Si el transmisor detecta congestión (el temporizador salta o recibe un ACK • Si el transmisor detecta congestión (el temporizador salta o recibe un ACK duplicado), actualiza el valor del umbral a la mitad del valor de la ventana duplicado), actualiza el valor del umbral a la mitad del valor de la ventana de congestión que hay en este momento; pero nunca por debajo de dos de congestión que hay en este momento; pero nunca por debajo de dos segmentos, y reinicializa la ventana de congestión a un segmento volvien- segmentos, y reinicializa la ventana de congestión a un segmento volvien- do al estado slow start: do al estado slow start: threshold = máx(2, MSS (ventana de congestión) / 2) threshold = máx(2, MSS (ventana de congestión) / 2) • Cuando recibe un ACK, debe incrementar el valor de la ventana de conges- • Cuando recibe un ACK, debe incrementar el valor de la ventana de conges- tión teniendo en cuenta las situaciones siguientes: – Si la ventana de congestión es inferior o igual que el umbral, el transmisor está en un estado de congestion avoidance y la ventana de congestión se in- está en un estado de congestion avoidance y la ventana de congestión se in- crementa en un segmento cada vez que se recibe un ACK. El incremento es crementa en un segmento cada vez que se recibe un ACK. El incremento es exponencial, puesto que se corresponde con el algoritmo slow start. exponencial, puesto que se corresponde con el algoritmo slow start. – Si la ventana de congestión es mayor o igual que el umbral, el transmisor – Si la ventana de congestión es mayor o igual que el umbral, el transmisor se encuentra en un estado de congestion avoidance y la ventana de conges- se encuentra en un estado de congestion avoidance y la ventana de conges- tión se incrementa en 1/(ventana de congestión) cada vez que se recibe un tión se incrementa en 1/(ventana de congestión) cada vez que se recibe un ACK, de manera que el incremento es lineal. ACK, de manera que el incremento es lineal. Cuando una conexión TCP no dispone de datos para emitir, no se envía ningún tipo de información (por ejemplo, de control) entre el cliente y el servidor. Ello significa que la conexión puede estar horas o días abierta si la aplicación no la Recordad... ... que un ACK duplicado es un segmento con el mismo número ACK que el segmento anterior. tión teniendo en cuenta las situaciones siguientes: – Si la ventana de congestión es inferior o igual que el umbral, el transmisor Temporizador keepalive TCP/IP: los protocolos de la red Internet Keepalive El valor por defecto del temporizador es de dos horas, aunque puede activarse con otro valor. Temporizador keepalive Cuando una conexión TCP no dispone de datos para emitir, no se envía ningún tipo de información (por ejemplo, de control) entre el cliente y el servidor. Ello significa que la conexión puede estar horas o días abierta si la aplicación no la Keepalive El valor por defecto del temporizador es de dos horas, aunque puede activarse con otro valor. FUOC • P03/75064/00977 74 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 74 cierra. Puede darse el caso de que la máquina haya caído, o haya rebotado, en cierra. Puede darse el caso de que la máquina haya caído, o haya rebotado, en uno de los extremos y que la otra no se haya dado cuenta puesto que no ha ha- uno de los extremos y que la otra no se haya dado cuenta puesto que no ha ha- bido ningún tipo de intercambio de información entre los extremos. El tempo- bido ningún tipo de intercambio de información entre los extremos. El tempo- rizador keepalive no forma parte de la especificación TCP, aunque es interesante rizador keepalive no forma parte de la especificación TCP, aunque es interesante saber qué hace, puesto que existen algunas versiones TCP que lo implementan. saber qué hace, puesto que existen algunas versiones TCP que lo implementan. Se recomienda que sea la aplicación la que active este temporizador si le interesa. Se recomienda que sea la aplicación la que active este temporizador si le interesa. Si no hay actividad durante dos horas (valor del temporizador keepalive), el ser- Si no hay actividad durante dos horas (valor del temporizador keepalive), el ser- vidor envía un segmento de prueba al cliente. vidor envía un segmento de prueba al cliente. Se pueden dar cuatro situaciones: Se pueden dar cuatro situaciones: • Si el cliente todavía corre, responde, y el servidor reinicializa el temporiza- • Si el cliente todavía corre, responde, y el servidor reinicializa el temporiza- dor keepalive dos horas después. Si durante estas últimas hay intercambio dor keepalive dos horas después. Si durante estas últimas hay intercambio de datos, el temporizador se reinicializa dos horas después del mismo. de datos, el temporizador se reinicializa dos horas después del mismo. • Si el TCP cliente ha caído y no ha rebotado, el servidor envía hasta diez seg- • Si el TCP cliente ha caído y no ha rebotado, el servidor envía hasta diez seg- mentos de pruebas cada 75 segundos. Si no recibe respuesta, el servidor cie- mentos de pruebas cada 75 segundos. Si no recibe respuesta, el servidor cie- rra la conexión. rra la conexión. • Si la máquina cliente ha caído y ha rebotado, el servidor recibirá una respuesta para que cierre la conexión. • Si la máquina cliente ha caído y ha rebotado, el servidor recibirá una respuesta para que cierre la conexión. • El cliente está corriendo, pero no es asequible (por ejemplo, ha caído algún • El cliente está corriendo, pero no es asequible (por ejemplo, ha caído algún direccionador y no hay manera de llegar a él). Esta situación es equivalente direccionador y no hay manera de llegar a él). Esta situación es equivalente a la segunda, puesto que el servidor no tiene manera de saber si el cliente a la segunda, puesto que el servidor no tiene manera de saber si el cliente no es asequible a causa de un error de la red o de una caída de la máquina. no es asequible a causa de un error de la red o de una caída de la máquina. Si la máquina cliente simplemente ha rebotado, el proceso aplicación cliente Si la máquina cliente simplemente ha rebotado, el proceso aplicación cliente habrá cerrado la conexión TCP enviando un segmento FIN al servidor. habrá cerrado la conexión TCP enviando un segmento FIN al servidor. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 75 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 75 Resumen Resumen El objetivo principal de este módulo didáctico ha sido introducir los protoco- El objetivo principal de este módulo didáctico ha sido introducir los protoco- los que se utilizan en la red Internet. Estos últimos son, en el nivel de interco- los que se utilizan en la red Internet. Estos últimos son, en el nivel de interco- nexión, el IP y asociados, y en el nivel de transporte, el UDP y el TCP. nexión, el IP y asociados, y en el nivel de transporte, el UDP y el TCP. Se ha puesto especial énfasis en el encapsulamiento de la información y su Se ha puesto especial énfasis en el encapsulamiento de la información y su relación con los protocolos orientados al nivel de red (por ejemplo, PPP y relación con los protocolos orientados al nivel de red (por ejemplo, PPP y Ethernet). Ethernet). Uno de los puntos más importantes en el estudio de Internet es la asignación de Uno de los puntos más importantes en el estudio de Internet es la asignación de direcciones. Cada interfaz en la red Internet debe tener una dirección IP que direcciones. Cada interfaz en la red Internet debe tener una dirección IP que la identifique en la red. Esta dirección debe ser única. Las direcciones IP no la identifique en la red. Esta dirección debe ser única. Las direcciones IP no sólo identifican las interfaces de la red, sino también la red o subred a la que sólo identifican las interfaces de la red, sino también la red o subred a la que pertenece la interfaz. De este modo, es posible direccionar los datagramas IP de pertenece la interfaz. De este modo, es posible direccionar los datagramas IP de un direccionador a otro utilizando la identificación de red de la dirección IP. un direccionador a otro utilizando la identificación de red de la dirección IP. Además del protocolo IP, en el nivel de interconexión se definen diferentes Además del protocolo IP, en el nivel de interconexión se definen diferentes protocolos asociados a IP. Entre los más significativos se encuentra el ARP, protocolos asociados a IP. Entre los más significativos se encuentra el ARP, para el mapeado de direcciones IP en direcciones físicas, o el ICMP, para co- para el mapeado de direcciones IP en direcciones físicas, o el ICMP, para co- municar mensajes de errores y otras condiciones que requieren la atención del municar mensajes de errores y otras condiciones que requieren la atención del protocolo IP. protocolo IP. El objetivo principal del nivel de transporte es entregar la información a los El objetivo principal del nivel de transporte es entregar la información a los niveles orientados a la aplicación en los extremos de la red. En la jerarquía de niveles orientados a la aplicación en los extremos de la red. En la jerarquía de protocolos TCP/IP se definen dos protocolos de transporte: protocolos TCP/IP se definen dos protocolos de transporte: 1) El UDP, que es un protocolo no orientado a la conexión. Por tanto, no efec- 1) El UDP, que es un protocolo no orientado a la conexión. Por tanto, no efec- túa ningún control de errores ni de flujo. Si un datagrama UDP llega equivo- túa ningún control de errores ni de flujo. Si un datagrama UDP llega equivo- cado (el UDP utiliza un código detector de errores), el UDP lo descarta y no lo cado (el UDP utiliza un código detector de errores), el UDP lo descarta y no lo entrega a la aplicación. Esta última deberá ser capaz de responder a este tipo entrega a la aplicación. Esta última deberá ser capaz de responder a este tipo de servicio o deberá asumir la pérdida de la información. Este tipo de servicio de servicio o deberá asumir la pérdida de la información. Este tipo de servicio puede ser útil en aplicaciones en tiempo real, en las que es más importante que puede ser útil en aplicaciones en tiempo real, en las que es más importante que la información llegue cuando le toca; es decir, con un retraso delimitado, que la información llegue cuando le toca; es decir, con un retraso delimitado, que no que se pierda una parte de la misma. no que se pierda una parte de la misma. 2) El TCP, que es un protocolo orientado a la conexión. Habrá una fase de es- 2) El TCP, que es un protocolo orientado a la conexión. Habrá una fase de es- tablecimiento de la conexión (el llamado procedimiento three-way handshake), tablecimiento de la conexión (el llamado procedimiento three-way handshake), una fase de transmisión de la información y una fase de finalización de la co- una fase de transmisión de la información y una fase de finalización de la co- nexión. El TCP entregará la información a la aplicación totalmente libre de nexión. El TCP entregará la información a la aplicación totalmente libre de errores. Para conseguirlo, necesita efectuar un control de errores y de flujo. El errores. Para conseguirlo, necesita efectuar un control de errores y de flujo. El TCP utiliza un código detector de errores junto con un protocolo de retrans- TCP utiliza un código detector de errores junto con un protocolo de retrans- misiones para recuperar la información errónea. Como las memorias interme- misiones para recuperar la información errónea. Como las memorias interme- TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 76 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 76 dias de recepción se pueden desbordar, el TCP utiliza un control de flujo por dias de recepción se pueden desbordar, el TCP utiliza un control de flujo por ventana deslizante. El TCP debe dimensionar correctamente los temporizado- ventana deslizante. El TCP debe dimensionar correctamente los temporizado- res de retransmisión. Existen diferentes algoritmos, entre los que destaca el de res de retransmisión. Existen diferentes algoritmos, entre los que destaca el de Jacobson, basado en una estimación del RTT (tiempo de ida y vuelta de la in- Jacobson, basado en una estimación del RTT (tiempo de ida y vuelta de la in- formación entre los extremos TCP), y el cálculo de la medida y la varianza del formación entre los extremos TCP), y el cálculo de la medida y la varianza del RTT. Asimismo, hemos estudiado los algoritmos que el TCP utiliza para aliviar RTT. Asimismo, hemos estudiado los algoritmos que el TCP utiliza para aliviar la congestión en la red: slow start y congestion avoidance. la congestión en la red: slow start y congestion avoidance. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 77 TCP/IP: los protocolos de la red Internet Ejercicios de autoevaluación 1. Enviamos 8.192 bytes cruzando cuatro direccionadores (asumimos que estos últimos son del tipo store and forward, cada uno de los cuales conectado a una línea telefónica T1 a 1.544.000 bps). Consideraremos que el tiempo de propagación entre el primer y el último direccionador es una constante K. a) ¿Cuál es el tiempo máximo para transmitir la información si la longitud del segmento de datos es de 4.096 bytes? b) ¿Cuál es el tiempo máximo para transmitir la información si la longitud del segmento de datos es de 512 bytes? 2. Cuando se establece una conexión entre las estaciones argos y helios, tiene lugar el proceso siguiente: FUOC • P03/75064/00977 77 TCP/IP: los protocolos de la red Internet Ejercicios de autoevaluación Nota Este ejercicio tiene como finalidad averiguar si es mejor utilizar segmentos grandes o pequeños en la transmisión de datos, y está propuesto en: W.R. Stevens (1994). 1. Enviamos 8.192 bytes cruzando cuatro direccionadores (asumimos que estos últimos son del tipo store and forward, cada uno de los cuales conectado a una línea telefónica T1 a 1.544.000 bps). Consideraremos que el tiempo de propagación entre el primer y el último direccionador es una constante K. a) ¿Cuál es el tiempo máximo para transmitir la información si la longitud del segmento de datos es de 4.096 bytes? b) ¿Cuál es el tiempo máximo para transmitir la información si la longitud del segmento de datos es de 512 bytes? 2. Cuando se establece una conexión entre las estaciones argos y helios, tiene lugar el proceso siguiente: 15:56:54.796091 argos.1023 > helios.login S 3541904332: 3641904331 (0) win 31744 <mss 1460> 15:56:54.796091 argos.1023 > helios.login S 3541904332: 3641904331 (0) win 31744 <mss 1460> 15:57:00.796591 argos.1023 > helios.login S 3541904332: 3641904331 (0) win 31744 <mss 1460> 15:57:00.796591 argos.1023 > helios.login S 3541904332: 3641904331 (0) win 31744 <mss 1460> 15:57:13.797035 argos.1023 > helios.login S 3541904332: 3641904331 (0) win 31744 <mss 1460> 15:57:13.797035 argos.1023 > helios.login S 3541904332: 3641904331 (0) win 31744 <mss 1460> 15:57:13.797035 helios.login > argos.1023 S 548133143: 548133143 (0) ack 34519043333 win 8760 <mss 1460> 15:57:13.797035 helios.login > argos.1023 S 548133143: 548133143 (0) ack 34519043333 win 8760 <mss 1460> 15:56:54.797035 argos.1023 > helios.login .ack 548133144 win 31744 15:56:54.797035 argos.1023 > helios.login .ack 548133144 win 31744 El primer temporizador de argos se inicializa a 6 segundos. Determinad cuánto valen el segundo y el tercer temporizador de argos. El primer temporizador de argos se inicializa a 6 segundos. Determinad cuánto valen el segundo y el tercer temporizador de argos. 3. Un TCP transmisor ha advertido, durante el establecimiento de una conexión, un MSS de 512 bytes y durante la transferencia de la información advierte una ventana de 512 bytes. Un TCP receptor advierte ventanas de 2.048 bytes. Dibujad un diagrama de tiempo en el que se perciba el algoritmo slow start. 3. Un TCP transmisor ha advertido, durante el establecimiento de una conexión, un MSS de 512 bytes y durante la transferencia de la información advierte una ventana de 512 bytes. Un TCP receptor advierte ventanas de 2.048 bytes. Dibujad un diagrama de tiempo en el que se perciba el algoritmo slow start. Nota Este ejercicio tiene como finalidad averiguar si es mejor utilizar segmentos grandes o pequeños en la transmisión de datos, y está propuesto en: W.R. Stevens (1994). 78 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 78 FUOC • P03/75064/00977 Solucionario Solucionario Ejercicios de autoevaluación Ejercicios de autoevaluación 1. 1. a) En el primer caso, utiliza segmentos con un MSS igual a 4.096 bytes. Por tanto, necesita dos segmentos. Es preciso añadir a estos segmentos los 40 bytes de cabecera TCP e IP. Por consiguiente, los direccionadores transmitirán paquetes de (4.096 + 40) bytes. Como aplicamos la técnica de store and forward, para transmitir un paquete necesitamos este tiempo: a) En el primer caso, utiliza segmentos con un MSS igual a 4.096 bytes. Por tanto, necesita dos segmentos. Es preciso añadir a estos segmentos los 40 bytes de cabecera TCP e IP. Por consiguiente, los direccionadores transmitirán paquetes de (4.096 + 40) bytes. Como aplicamos la técnica de store and forward, para transmitir un paquete necesitamos este tiempo: ( 4.096 + 40 ) ⋅ 8 bits T 4.096 = ------------------------------------------------------ = 21, 4 ms. 1.544.000 bits/s ( 4.096 + 40 ) ⋅ 8 bits T 4.096 = ------------------------------------------------------ = 21, 4 ms. 1.544.000 bits/s El tiempo que se necesita para transmitir la totalidad de la información será la propagación más el número de paquetes (n), más el número de enlaces (E) menos 1 por la transmisión. Hay n = 2 paquetes y el número de enlaces es de E = 3. Ello significa lo siguiente: El tiempo que se necesita para transmitir la totalidad de la información será la propagación más el número de paquetes (n), más el número de enlaces (E) menos 1 por la transmisión. Hay n = 2 paquetes y el número de enlaces es de E = 3. Ello significa lo siguiente: TTOTAL = K + (n + E - 1) · T4.096 = K + 4 · T4.096 = K + 85,6 ms. TTOTAL = K + (n + E - 1) · T4.096 = K + 4 · T4.096 = K + 85,6 ms. b) Si los segmentos tienen un MSS de 512 bytes, entonces habrá 16 paquetes (n = 16). El tiempo de transmisión de cada paquete será el siguiente: b) Si los segmentos tienen un MSS de 512 bytes, entonces habrá 16 paquetes (n = 16). El tiempo de transmisión de cada paquete será el siguiente: ( 512 + 40 ) ⋅ 8 bits T 512 = ------------------------------------------------ = 2, 9 ms. 1.544.000 bits/s ( 512 + 40 ) ⋅ 8 bits T 512 = ------------------------------------------------ = 2, 9 ms. 1.544.000 bits/s En total tardaremos: En total tardaremos: TTOTAL = K + (n + E - 1) · T512 = K + 18 · T512 = K + 52,2 ms. TTOTAL = K + (n + E - 1) · T512 = K + 18 · T512 = K + 52,2 ms. Por tanto, el retraso total si utilizamos un MSS inferior, es menor que si utilizamos uno mayor. Sin embargo, ello no significa que sea mejor enviar segmentos con MSS pequeños. Hay otros factores que argumentan que, aunque el retraso sea menor, “cuesta” más enviar muchos paquetes pequeños que pocos grandes. La reducción del coste al enviar paquetes grandes se consigue en los costes asociados a la red, como la relación entre el tamaño de los datos y la cabecera, las decisiones de direccionamientos (cuantos más paquetes, más decisiones) y el coste del proceso en los protocolos (cuantos más paquetes, más interrupciones). Por tanto, el retraso total si utilizamos un MSS inferior, es menor que si utilizamos uno mayor. Sin embargo, ello no significa que sea mejor enviar segmentos con MSS pequeños. Hay otros factores que argumentan que, aunque el retraso sea menor, “cuesta” más enviar muchos paquetes pequeños que pocos grandes. La reducción del coste al enviar paquetes grandes se consigue en los costes asociados a la red, como la relación entre el tamaño de los datos y la cabecera, las decisiones de direccionamientos (cuantos más paquetes, más decisiones) y el coste del proceso en los protocolos (cuantos más paquetes, más interrupciones). Hay autores que están a favor de tamaños grandes y otros que prefieren tamaños pequeños. Hay autores que están a favor de tamaños grandes y otros que prefieren tamaños pequeños. 2. El primer Tout está inicializado a 6 segundos. De las trazas del tcpdump podemos deducir que el servidor en helios no responde y que el temporizador ha saltado. argos ha retrasnmitido una petición de conexión y activa el temporizador por medio del algoritmo de Karn; es decir, mediane el algoritmo de back off para calcular el nuevo valor del T’out: 2. El primer Tout está inicializado a 6 segundos. De las trazas del tcpdump podemos deducir que el servidor en helios no responde y que el temporizador ha saltado. argos ha retrasnmitido una petición de conexión y activa el temporizador por medio del algoritmo de Karn; es decir, mediane el algoritmo de back off para calcular el nuevo valor del T’out: T’out = 2 Tout = 12 s. T’out = 2 Tout = 12 s. TCP/IP: los protocolos de la red Internet 79 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 79 FUOC • P03/75064/00977 helios no responde a la segunda petición de argos. Por tanto, después de 12 segundos, el temporizador salta y argos vuelve a retransmitir la petición de conexión. Ahora vuelve a utilizar el algoritmo de back off para calcular el temporizador. Ello significa que Tout valdrá lo siguiente: helios no responde a la segunda petición de argos. Por tanto, después de 12 segundos, el temporizador salta y argos vuelve a retransmitir la petición de conexión. Ahora vuelve a utilizar el algoritmo de back off para calcular el temporizador. Ello significa que Tout valdrá lo siguiente: T’’out = 4 · T’out = 24 s. T’’out = 4 · T’out = 24 s. 3. El diagrama de tiempo en que se representa el algoritmo slow start por la transimisión indicada es el siguiente: 3. El diagrama de tiempo en que se representa el algoritmo slow start por la transimisión indicada es el siguiente: Como puede observarse, el slow start empieza enviando un segmento de tamaño MSS. En un inicio, la ventana de congestión es igual a MSS (512 bytes) y la ventana de transmisión tiene una longitud de 2.048 bytes. La secuencia de acontecimientos es la siguiente: Como puede observarse, el slow start empieza enviando un segmento de tamaño MSS. En un inicio, la ventana de congestión es igual a MSS (512 bytes) y la ventana de transmisión tiene una longitud de 2.048 bytes. La secuencia de acontecimientos es la siguiente: a) El TCP transmisor envía un segmento de tamaño MSS = 512 bytes. El TCP receptor reconoce estos 512 bytes con un ACK. a) El TCP transmisor envía un segmento de tamaño MSS = 512 bytes. El TCP receptor reconoce estos 512 bytes con un ACK. b) El slow start incrementa su ventana de congestión en dos segmentos: b) El slow start incrementa su ventana de congestión en dos segmentos: Ventana de congestión = 2 · MSS = 1.024 bytes. Ventana de congestión = 2 · MSS = 1.024 bytes. Puede enviar el mínimo entre la ventana de congestión y la ventana de transmisión. Ello significa que puede enviar 1.024 bytes. Como el tamaño máximo de los segmentos es de 512 bytes, entonces transmite dos segmentos. El TCP receptor reconoce estos 1.024 bytes con un ACK. Puede enviar el mínimo entre la ventana de congestión y la ventana de transmisión. Ello significa que puede enviar 1.024 bytes. Como el tamaño máximo de los segmentos es de 512 bytes, entonces transmite dos segmentos. El TCP receptor reconoce estos 1.024 bytes con un ACK. c) El ACK reconoce dos segmentos; por tanto, el slow start puede incrementar la ventana de congestión en un segmento por cada uno de los ACK que recibe. Aunque físicamente sólo reciba un solo ACK, este último vale por dos. Por tanto, la ventana de congestión aumenta de dos segmentos a cuatro: c) El ACK reconoce dos segmentos; por tanto, el slow start puede incrementar la ventana de congestión en un segmento por cada uno de los ACK que recibe. Aunque físicamente sólo reciba un solo ACK, este último vale por dos. Por tanto, la ventana de congestión aumenta de dos segmentos a cuatro: Ventana de congestión = 4 · MSS = 2.048 bytes. Ventana de congestión = 4 · MSS = 2.048 bytes. TCP/IP: los protocolos de la red Internet 80 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 80 FUOC • P03/75064/00977 Ahora puede transmitir lo mínimo entre la ventana de congestión y la de transmisión. Ello significa que puede transmitir 2.048 bytes divididos en cuatro segmentos de tamaño máximo. El receptor reconoce estos cuatro segmentos con un ACK. Ahora puede transmitir lo mínimo entre la ventana de congestión y la de transmisión. Ello significa que puede transmitir 2.048 bytes divididos en cuatro segmentos de tamaño máximo. El receptor reconoce estos cuatro segmentos con un ACK. d) El TCP transmisor recibe un ACK que vale por cuatro segmentos. Incrementa la ventana de congestión a 8 segmentos: d) El TCP transmisor recibe un ACK que vale por cuatro segmentos. Incrementa la ventana de congestión a 8 segmentos: Ventana de congestión = 8 · MSS = 4.096 bytes. Ventana de congestión = 8 · MSS = 4.096 bytes. Sin embargo, la ventana de transmisión continúa valiendo 2.048 bytes. Ello significa que no puede transmitir más de 2.048 bytes, es decir, cuatro segmentos de tamaño máximo. Sin embargo, la ventana de transmisión continúa valiendo 2.048 bytes. Ello significa que no puede transmitir más de 2.048 bytes, es decir, cuatro segmentos de tamaño máximo. Glosario Glosario address resolution protocol m Véase ARP. address resolution protocol m Véase ARP. ARP m Protocolo para el mapeado automático de direcciones MAC con direcciones IP. en address resolution protocol ARP m Protocolo para el mapeado automático de direcciones MAC con direcciones IP. en address resolution protocol bridge m Véase puente. bridge m Véase puente. concentrador m Equipo para la interconexión de terminales de una misma LAN. Todos los equipos interconectados por medio de un concentrador pertenecen a un mismo dominio de colisión. en hub concentrador m Equipo para la interconexión de terminales de una misma LAN. Todos los equipos interconectados por medio de un concentrador pertenecen a un mismo dominio de colisión. en hub conmutador m Equipo para la interconexión de terminales de una misma LAN. Hay algún tipo que permite la interconexión de diferentes concentradores. en switch conmutador m Equipo para la interconexión de terminales de una misma LAN. Hay algún tipo que permite la interconexión de diferentes concentradores. en switch cortafuegos m Direccionador con capacidad de filtrado de paquetes de acuerdo con unas reglas establecidas. Estas últimas se definen en cada instalación de acuerdo con los problemas de seguridad de la red en que se instala. en firewall cortafuegos m Direccionador con capacidad de filtrado de paquetes de acuerdo con unas reglas establecidas. Estas últimas se definen en cada instalación de acuerdo con los problemas de seguridad de la red en que se instala. en firewall Ethernet m Estándar de facto parcialmente compatible con el IEEE802.3. Ambos utilizan el algoritmo CSMA/CD 1 –persistente a 10 Mbps o 100 Mbps. Ethernet (red de éter) hace alusión tanto al hecho de que antiguamente se creía que el espacio que separaba a los astros estaba formado por un material (éter) capaz de transportar la luz, como al hecho de que la arquitectura de su red competidora, la Token Ring, necesitaba bastantes más elementos, aparte del éter. Ethernet m Estándar de facto parcialmente compatible con el IEEE802.3. Ambos utilizan el algoritmo CSMA/CD 1 –persistente a 10 Mbps o 100 Mbps. Ethernet (red de éter) hace alusión tanto al hecho de que antiguamente se creía que el espacio que separaba a los astros estaba formado por un material (éter) capaz de transportar la luz, como al hecho de que la arquitectura de su red competidora, la Token Ring, necesitaba bastantes más elementos, aparte del éter. firewall m Véase cortafuegos. firewall m Véase cortafuegos. hacker m Individuo (en argot) que se dedica a entrar en sistemas ajenos por medio de la red, aprovechando defectos de su configuración o gestión, o bien defectos de los sistemas que la componen. hacker m Individuo (en argot) que se dedica a entrar en sistemas ajenos por medio de la red, aprovechando defectos de su configuración o gestión, o bien defectos de los sistemas que la componen. hub m Véase concentrador. hub m Véase concentrador. ICMP m Protocolo de nivel de red utilizado sólo para tareas de gestión del nivel de red. en Internet control message protocol ICMP m Protocolo de nivel de red utilizado sólo para tareas de gestión del nivel de red. en Internet control message protocol IEEE m Asociación de Estados Unidos dedicada, entre otras cosas, a tareas de estandarización. en Institute of Electric and Electronic Engineers IEEE m Asociación de Estados Unidos dedicada, entre otras cosas, a tareas de estandarización. en Institute of Electric and Electronic Engineers initial sequence number m Véase ISN. initial sequence number m Véase ISN. Institute of Electric and Electronic Engineers m Véase IEEE. Institute of Electric and Electronic Engineers m Véase IEEE. integrated services digital network f Véase RDSI. integrated services digital network f Véase RDSI. Internet control message protocol m Véase ICMP. Internet control message protocol m Véase ICMP. Internet protocol m Véase IP. Internet protocol m Véase IP. IP m Protocolo de nivel de red utilizado en Internet. en Internet protocol IP m Protocolo de nivel de red utilizado en Internet. en Internet protocol TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 81 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 81 ISN m Número de secuencia inicial que es asignado al principio de la conexión. A partir de este momento, el TCP numera los bytes consecutivamente a partir de este número. en initial sequence number ISN m Número de secuencia inicial que es asignado al principio de la conexión. A partir de este momento, el TCP numera los bytes consecutivamente a partir de este número. en initial sequence number LAN f red de área local. en local area network LAN f red de área local. en local area network local area network f Véase LAN. local area network f Véase LAN. MAC m Protocolo de control de acceso al medio utilizado por las estaciones de una misma red de área local como, por ejemplo, Ethernet o IEEE802.5 (Token Ring). en medium access control MAC m Protocolo de control de acceso al medio utilizado por las estaciones de una misma red de área local como, por ejemplo, Ethernet o IEEE802.5 (Token Ring). en medium access control maximum segment size f Véase MSS. maximum segment size f Véase MSS. medium access control m Véase MAC. medium access control m Véase MAC. MSS f Define la longitud máxima de datos que el TCP enviará. Se especifica durante el establecimiento de la conexión. en maximum segment size MSS f Define la longitud máxima de datos que el TCP enviará. Se especifica durante el establecimiento de la conexión. en maximum segment size puente m Tipo de conmutador utilizado para interconectar las LAN. en bridge puente m Tipo de conmutador utilizado para interconectar las LAN. en bridge RDSI f red digital de servicios integrados. en integrated services digital network RDSI f red digital de servicios integrados. en integrated services digital network read only memory f Véase ROM. read only memory f Véase ROM. ROM f Memoria sólo de lectura utilizada para almacenar datos y/o programas pequeños. en read only memory ROM f Memoria sólo de lectura utilizada para almacenar datos y/o programas pequeños. en read only memory switch m Véase conmutador. switch m Véase conmutador. Bibliografía Bibliografía Chapman, D.B.; Zwicky, E.D. (1995). Building Internet Firewalls. Sebastopol: O’Reilly & Associates, Inc. Chapman, D.B.; Zwicky, E.D. (1995). Building Internet Firewalls. Sebastopol: O’Reilly & Associates, Inc. Comer, D.E. (1995). “Principles, Protocols and Architecture”. Internetworking with TCP/IP (vol. 1). Hertfordshire: Prentice Hall. Comer, D.E. (1995). “Principles, Protocols and Architecture”. Internetworking with TCP/IP (vol. 1). Hertfordshire: Prentice Hall. Stevens, W.R. (1998). “The Protocols” TCP/IP Illustrated (vol. I). Wilmington: AddisonWesley, 1994. Stevens, W.R. (1998). “The Protocols” TCP/IP Illustrated (vol. I). Wilmington: AddisonWesley, 1994. Thomas, S.A. (1996). IPng and the TCP/IP protocols, implementing the next generation Internet. Nueva York: John Wiley & Sons, Inc. Thomas, S.A. (1996). IPng and the TCP/IP protocols, implementing the next generation Internet. Nueva York: John Wiley & Sons, Inc. Wright, G.R.; Stevens, W.R. (1995). “The implementation”. TCP/IP Illustrated (vol. II). Wilmington: Addison-Wesley. Wright, G.R.; Stevens, W.R. (1995). “The implementation”. TCP/IP Illustrated (vol. II). Wilmington: Addison-Wesley. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 82 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 Anexos Anexos Anexo 1 Anexo 1 Aplicaciones mencionadas en el texto Aplicaciones mencionadas en el texto 1) Aplicaciones estándar 1) Aplicaciones estándar A continuación, mostramos las aplicaciones estándar que se han explicado en este módulo didáctico e indicamos los sistemas en que se pueden encontrar y qué utilidades tienen: • ping [UNIX, NT, MSWindows]: por medio de paquetes ICMP (del tipo petición de eco y respuesta de eco) permite saber si una máquina está funcionando o no y tener una idea de cuál es el retraso de ida y vuelta (round-trip). Asimismo, permite saber por qué máquinas pasa el paquete hasta que llega a destino. Para esta función, va mejor el programa traceroute, a causa de las limitaciones inherentes a los paquetes ICMP. • traceroute [UNIX, NT: tracert, MSWindows: tracert]: permite averiguar la ruta que se sigue desde el equipo local hasta un destino cualquiera de Internet. Marca los retrasos existentes en cada uno de los nodos que es preciso cruzar. Se basa en el campo TTL del paquete IP y los mensajes ICMP-time-to-live-exceeded. Esta aplicación no está disponible en algunas distribuciones de UNIX; sí que se puede conseguir como programa de libre distribución (freeware) en código fuente (lenguaje C). Más información En los sistemas UNIX podréis encontrar más información utilizando el comando man. Por ejemplo, para saber más detalles del comando route de UNIX podéis ejecutar: $ man route En MSWindows, podéis obtener más información de algunos comandos añadiendo /? como argumento: C:> route /? 82 A continuación, mostramos las aplicaciones estándar que se han explicado en este módulo didáctico e indicamos los sistemas en que se pueden encontrar y qué utilidades tienen: • ping [UNIX, NT, MSWindows]: por medio de paquetes ICMP (del tipo petición de eco y respuesta de eco) permite saber si una máquina está funcionando o no y tener una idea de cuál es el retraso de ida y vuelta (round-trip). Asimismo, permite saber por qué máquinas pasa el paquete hasta que llega a destino. Para esta función, va mejor el programa traceroute, a causa de las limitaciones inherentes a los paquetes ICMP. • traceroute [UNIX, NT: tracert, MSWindows: tracert]: permite averiguar la ruta que se sigue desde el equipo local hasta un destino cualquiera de Internet. Marca los retrasos existentes en cada uno de los nodos que es preciso cruzar. Se basa en el campo TTL del paquete IP y los mensajes ICMP-time-to-live-exceeded. Esta aplicación no está disponible en algunas distribuciones de UNIX; sí que se puede conseguir como programa de libre distribución (freeware) en código fuente (lenguaje C). • arp [UNIX, NT, MSWindows]: permite consultar y modificar la tabla ARP (caché ARP) de una máquina. • arp [UNIX, NT, MSWindows]: permite consultar y modificar la tabla ARP (caché ARP) de una máquina. • route [UNIX, NT, MSWindows]: sirve para consultar y modificar la tabla de direccionamiento IP de una máquina conectada a Internet. • route [UNIX, NT, MSWindows]: sirve para consultar y modificar la tabla de direccionamiento IP de una máquina conectada a Internet. • ifconfig [UNIX, NT: ipconfig, MSWindows: ipconfig]: permite consultar el estado de las tarjetas de red disponibles en el sistema local. • netstat [UNIX, NT, MSWindows]: proporciona estadísticas de los protocolos TCP y UDP. Permite listar los puertos que se escuchan. Muestra el estado en que se encuentran los sockets TCP. Si queréis un listado de todos los sockets activos y puertos abiertos, haced netstat -a, y, si os interesan otras variantes, consultad la ayuda (netstat -help en Windows, o man netstat en UNIX). • telnet [UNIX, NT, MSWindows]: ofrece, aparte de la principal emulación de terminal, conectar y experimentar los protocolos ASCII. Derechos de acceso Todos los comandos que se muestran dentro de este anexo están parcial o totalmente limitados a ser utilizados por todos los usuarios a excepción del superusuario (root en UNIX o Administrator en MSWindowsNT). MSWindows95/98 es menos escrupoloso en este aspecto. • ifconfig [UNIX, NT: ipconfig, MSWindows: ipconfig]: permite consultar el estado de las tarjetas de red disponibles en el sistema local. • netstat [UNIX, NT, MSWindows]: proporciona estadísticas de los protocolos TCP y UDP. Permite listar los puertos que se escuchan. Muestra el estado en que se encuentran los sockets TCP. Si queréis un listado de todos los sockets activos y puertos abiertos, haced netstat -a, y, si os interesan otras variantes, consultad la ayuda (netstat -help en Windows, o man netstat en UNIX). • telnet [UNIX, NT, MSWindows]: ofrece, aparte de la principal emulación de terminal, conectar y experimentar los protocolos ASCII. 2) Aplicaciones no estándar 2) Aplicaciones no estándar • netcat [UNIX, NT, MSWindows (freeware-lenguaje C)]: esta aplicación nos permite utilizar conexiones TCP y UDP desde la línea de comandos (por ejemplo, transmitir un fichero) o comprobar qué puertos tiene abiertos una determinada máquina, entre otros servicios. Su autor es Hobbit. • netcat [UNIX, NT, MSWindows (freeware-lenguaje C)]: esta aplicación nos permite utilizar conexiones TCP y UDP desde la línea de comandos (por ejemplo, transmitir un fichero) o comprobar qué puertos tiene abiertos una determinada máquina, entre otros servicios. Su autor es Hobbit. • tcpdump [UNIX (freeware-lenguaje C)]: permite analizar el tráfico de la red por medio de conexión (LAN o punto a punto). Al contrario de lo que su nombre indica, es capaz de interpretar los paquetes no sólo en el ámbito TCP, sino también en el IP, red, y aplicación (para aplicaciones comunes). Es una herramienta imprescindible para cualquier administrador de sistemas, aunque no aparezca en las distribuciones de las diferentes variantes de UNIX. El código es de libre distribución. Sus autores son Van Jacobson, Craig Leres y Steven McCanne, de la Universidad de California, aunque el programa en que se basaba el original, el Etherfind, era propiedad de Sun Microsystems y se distribuía dentro de SunOS. A continuación, se indican los resultados que puede mostrar el programa tcpdump. 3) El programa tcpdump El programa tcpdump permite capturar y filtrar paquetes que cruzan una interfaz de red que se ha activado en modo promiscuo (todos los paquetes que pasan por el medio son capturados y filtrados). Los paquetes son procesados por un software especial que sólo puede ejecutar el superusuario (root) de la máquina. Para ver cómo funcionan los diferentes protocolos, proporcionamos ejemplos de las trazas que muestra el tcpdump durante el establecimiento o la terminación de la conexión. Nota En LAN, el tcpdump pone la tarjeta de red en modo promiscuo. Lo que significa que todo el tráfico de la red es visible, con lo que cualquier usuario malintencionado (un hacker) puede hacer un mal uso del mismo. Por tanto, el tcpdump y otras herramientas similares o derivadas del tcpdump, conocidas como detectores (sniffers) se pueden considerar como una herramienta potencialmente peligrosa. De hecho, lo que es arriesgado es no utilizar al menos uno de los tres mecanismos de protección más importantes contra los detectores: cifrado, cifrado y cifrado. • tcpdump [UNIX (freeware-lenguaje C)]: permite analizar el tráfico de la red por medio de conexión (LAN o punto a punto). Al contrario de lo que su nombre indica, es capaz de interpretar los paquetes no sólo en el ámbito TCP, sino también en el IP, red, y aplicación (para aplicaciones comunes). Es una herramienta imprescindible para cualquier administrador de sistemas, aunque no aparezca en las distribuciones de las diferentes variantes de UNIX. El código es de libre distribución. Sus autores son Van Jacobson, Craig Leres y Steven McCanne, de la Universidad de California, aunque el programa en que se basaba el original, el Etherfind, era propiedad de Sun Microsystems y se distribuía dentro de SunOS. A continuación, se indican los resultados que puede mostrar el programa tcpdump. 3) El programa tcpdump El programa tcpdump permite capturar y filtrar paquetes que cruzan una interfaz de red que se ha activado en modo promiscuo (todos los paquetes que pasan por el medio son capturados y filtrados). Los paquetes son procesados por un software especial que sólo puede ejecutar el superusuario (root) de la máquina. Para ver cómo funcionan los diferentes protocolos, proporcionamos ejemplos de las trazas que muestra el tcpdump durante el establecimiento o la terminación de la conexión. TCP/IP: los protocolos de la red Internet Más información En los sistemas UNIX podréis encontrar más información utilizando el comando man. Por ejemplo, para saber más detalles del comando route de UNIX podéis ejecutar: $ man route En MSWindows, podéis obtener más información de algunos comandos añadiendo /? como argumento: C:> route /? Derechos de acceso Todos los comandos que se muestran dentro de este anexo están parcial o totalmente limitados a ser utilizados por todos los usuarios a excepción del superusuario (root en UNIX o Administrator en MSWindowsNT). MSWindows95/98 es menos escrupoloso en este aspecto. Nota En LAN, el tcpdump pone la tarjeta de red en modo promiscuo. Lo que significa que todo el tráfico de la red es visible, con lo que cualquier usuario malintencionado (un hacker) puede hacer un mal uso del mismo. Por tanto, el tcpdump y otras herramientas similares o derivadas del tcpdump, conocidas como detectores (sniffers) se pueden considerar como una herramienta potencialmente peligrosa. De hecho, lo que es arriesgado es no utilizar al menos uno de los tres mecanismos de protección más importantes contra los detectores: cifrado, cifrado y cifrado. FUOC • P03/75064/00977 83 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 83 Para ver cómo funciona este comando, puede utilizarse la instrucción man de UNIX (o LINUX). En este anexo ofrecemos un ejemplo del significado de la traza del tcpdump. Para ver cómo funciona este comando, puede utilizarse la instrucción man de UNIX (o LINUX). En este anexo ofrecemos un ejemplo del significado de la traza del tcpdump. El formato general de salida del tcpdump es el siguiente: El formato general de salida del tcpdump es el siguiente: Data src> dst: flag data-sqno ack window urgent options Data src> dst: flag data-sqno ack window urgent options El significado de los componentes del formato son los siguientes: El significado de los componentes del formato son los siguientes: • data: este componente nos proporciona la hora en que se produjo el acontecimiento en formato hora:minutos:segundos.microsegundos (o milisegundos, según la resolución del reloj). • data: este componente nos proporciona la hora en que se produjo el acontecimiento en formato hora:minutos:segundos.microsegundos (o milisegundos, según la resolución del reloj). • src y dst: son las direcciones IP y los puertos TCP/UDP de las conexiones de fuente y de destino. • src y dst: son las direcciones IP y los puertos TCP/UDP de las conexiones de fuente y de destino. • flags: son una combinación de los posibles indicadores de un segmento/datagrama TCP/UDP: S (SYN), F (FIN), P (PUSH), R (RST) y ‘.’ (que significa que no hay indicadores). • flags: son una combinación de los posibles indicadores de un segmento/datagrama TCP/UDP: S (SYN), F (FIN), P (PUSH), R (RST) y ‘.’ (que significa que no hay indicadores). • data-sqno: describe el número de secuencia de la porción de datos. • data-sqno: describe el número de secuencia de la porción de datos. • ack: es el número de secuencia del byte siguiente que espera recibir el otro extremo TCP/UDP. • ack: es el número de secuencia del byte siguiente que espera recibir el otro extremo TCP/UDP. • window: es el tamaño de la ventana que el receptor advierte al transmisor. • window: es el tamaño de la ventana que el receptor advierte al transmisor. • urgent: indica que existen datos urgentes en este segmento/datagrama. • urgent: indica que existen datos urgentes en este segmento/datagrama. • options: son las opciones TCP que suelen estar entre corchetes del tipo < >; por ejemplo, el tamaño máximo del segmento (por ejemplo, <mss 1.024>). • options: son las opciones TCP que suelen estar entre corchetes del tipo < >; por ejemplo, el tamaño máximo del segmento (por ejemplo, <mss 1.024>). Un ejemplo de una línea que retorna el comando tcpdump sería el siguiente: supongamos que hacemos un rlogin desde la máquina argos (fuente) hasta la máquina helios (destino). El comando tcpdump podría devolvernos lo siguiente: Un ejemplo de una línea que retorna el comando tcpdump sería el siguiente: supongamos que hacemos un rlogin desde la máquina argos (fuente) hasta la máquina helios (destino). El comando tcpdump podría devolvernos lo siguiente: • 12:34:23.165439 argos.1023 > helios.login: S 7838437: 7838437 (0) win 4096 <mss 1024> • 12:34:23.165439 argos.1023 > helios.login: S 7838437: 7838437 (0) win 4096 <mss 1024> • 12:34:23.165439 helios.login > argos.1023: S 453534: 453534 (0) ack7838438 win 4096 <mss 1024> • 12:34:23.165439 helios.login > argos.1023: S 453534: 453534 (0) ack7838438 win 4096 <mss 1024> La primera línea indica lo siguiente: La primera línea indica lo siguiente: a) El acontecimiento tiene lugar a las 12:34:23.165439. a) El acontecimiento tiene lugar a las 12:34:23.165439. b) Su origen es la máquina argos con el puerto 1.024. Su destino es la máquina helios con el puerto login. b) Su origen es la máquina argos con el puerto 1.024. Su destino es la máquina helios con el puerto login. c) El indicador S señala que es un segmento de SYN (por ejemplo, por un inicio de conexión). c) El indicador S señala que es un segmento de SYN (por ejemplo, por un inicio de conexión). d) Advierte un número de secuencia 7.838.437 y consume hasta este número. Conviene observar que el tcpdump escribe el número inicial y el final del número de secuencia de datos, y, entre paréntesis, la diferencia indicando la longitud del campo de datos (en este caso 0 bytes, puesto que es un segmento de petición de conexión). Por tanto, indica entre paréntesis la longitud del segmento de datos. Este número de secuencia es absoluto. Las salidas siguientes del tcpdump indicarán los números de secuecia relativos al inicial. Por ejemplo, en lugar de indicar 7.838.437: 7.838.450, (13) en notación absoluta, indicará 1:13, (13) en notación relativa al ISN (se cumple que valor absoluto es igual al ISN más el valor relativo). Lo mismo se aplica a los números de secuencia del ACK. d) Advierte un número de secuencia 7.838.437 y consume hasta este número. Conviene observar que el tcpdump escribe el número inicial y el final del número de secuencia de datos, y, entre paréntesis, la diferencia indicando la longitud del campo de datos (en este caso 0 bytes, puesto que es un segmento de petición de conexión). Por tanto, indica entre paréntesis la longitud del segmento de datos. Este número de secuencia es absoluto. Las salidas siguientes del tcpdump indicarán los números de secuecia relativos al inicial. Por ejemplo, en lugar de indicar 7.838.437: 7.838.450, (13) en notación absoluta, indicará 1:13, (13) en notación relativa al ISN (se cumple que valor absoluto es igual al ISN más el valor relativo). Lo mismo se aplica a los números de secuencia del ACK. e) Advierte una ventana de 4.096 bytes. e) Advierte una ventana de 4.096 bytes. f) Hay una petición de tamaño máximo de segmento de 1.024 bytes. f) Hay una petición de tamaño máximo de segmento de 1.024 bytes. La segunda línea indica lo siguiente: La segunda línea indica lo siguiente: a) El origen es la máquina helios con el puerto login. El destino es la máquina argos con el puerto 1.023. a) El origen es la máquina helios con el puerto login. El destino es la máquina argos con el puerto 1.023. b) El indicador S señala que es un segmento de SYN (por ejemplo, para un inicio de conexión). b) El indicador S señala que es un segmento de SYN (por ejemplo, para un inicio de conexión). TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 84 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 84 c) Indica el número de secuencia inicial 453.534. c) Indica el número de secuencia inicial 453.534. d) Reconoce con un ACK el byte siguiente que espera del transmisor, el 7.838.438 (es decir, 7.838.437 + 1), puesto que los recibió correctamente hasta el 7.838.437). d) Reconoce con un ACK el byte siguiente que espera del transmisor, el 7.838.438 (es decir, 7.838.437 + 1), puesto que los recibió correctamente hasta el 7.838.437). e) Advierte una ventana de 4.096 bytes. e) Advierte una ventana de 4.096 bytes. f) Hay una petición de tamaño máximo de segmento de 1.024 bytes. f) Hay una petición de tamaño máximo de segmento de 1.024 bytes. El programa tcpdump permite escuchar, de manera sencilla, todo lo que sucede en la red. Admite toda una serie de indicadores para filtrar sólo las direcciones IP de fuente o de destino que pueden interesar, o el tipo de protocolo que se quiere escuchar (TCP, UDP, ARP, etc.). Asimismo, admite indicadores para obtener el campo de datos, para filtrar un número fijo de segmentos, etc. Para ver todas las posibles opciones que permite el programa tcpdump se utiliza el comando man. El programa tcpdump permite escuchar, de manera sencilla, todo lo que sucede en la red. Admite toda una serie de indicadores para filtrar sólo las direcciones IP de fuente o de destino que pueden interesar, o el tipo de protocolo que se quiere escuchar (TCP, UDP, ARP, etc.). Asimismo, admite indicadores para obtener el campo de datos, para filtrar un número fijo de segmentos, etc. Para ver todas las posibles opciones que permite el programa tcpdump se utiliza el comando man. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 85 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 85 Anexo 2 Anexo 2 Direcciones especiales Direcciones especiales Las direcciones especiales más importantes son las siguientes: Las direcciones especiales más importantes son las siguientes: • Dirección 0.0.0.0: señala el mismo ordenador que lo envía. Posee dos funciones básicas: • Dirección 0.0.0.0: señala el mismo ordenador que lo envía. Posee dos funciones básicas: – Aparecer como dirección de origen en paquetes IP generados por estaciones sin dirección IP asignada. Por norma general, sólo sale mientras la estación trata de averiguar su dirección por medio de protocolos como el RARP (reverse address resolution protocol), el BOOTP (bootstrap protocol) o el DHCP (dynamic host configuration protocol). – Aparecer como dirección de origen en paquetes IP generados por estaciones sin dirección IP asignada. Por norma general, sólo sale mientras la estación trata de averiguar su dirección por medio de protocolos como el RARP (reverse address resolution protocol), el BOOTP (bootstrap protocol) o el DHCP (dynamic host configuration protocol). – Servir al software de gestión de direccionamiento para indicar la ruta por defecto. – Servir al software de gestión de direccionamiento para indicar la ruta por defecto. • Todas las direcciones de estos rangos: • Todas las direcciones de estos rangos: – 10.0.0.0/8 – 10.0.0.0/8 – De la 172.16.0.0/16 a la 172.31.0.0/16. – De la 172.16.0.0/16 a la 172.31.0.0/16. – De la 192.168.0.0/24 a la 192.168.255.0/24. – De la 192.168.0.0/24 a la 192.168.255.0/24. Estas direcciones, que corresponden respectivamente a redes de clase A, B y C, no son asignadas por Internet, ni nunca lo serán. Se utilizan en redes que no está previsto que se conecten directamente a Internet, pero que, en caso de que se conectaran, no se quiere que sus direcciones se confundan con otras de estaciones que sí que están en Internet. Ejemplos de ello son estaciones parcialmente conectadas a la red, no por medio de direccionadores, sino por medio de proxies o firewalls. Estas direcciones, que corresponden respectivamente a redes de clase A, B y C, no son asignadas por Internet, ni nunca lo serán. Se utilizan en redes que no está previsto que se conecten directamente a Internet, pero que, en caso de que se conectaran, no se quiere que sus direcciones se confundan con otras de estaciones que sí que están en Internet. Ejemplos de ello son estaciones parcialmente conectadas a la red, no por medio de direccionadores, sino por medio de proxies o firewalls. • Direcciones de clase D, desde la 224.0.0.0 hasta la 239.255.255.255: se reservan para el tráfico multicast IP. • Direcciones de clase D, desde la 224.0.0.0 hasta la 239.255.255.255: se reservan para el tráfico multicast IP. • Direcciones de clase E: se reservan para asignarlas a nuevos servicios. • Direcciones de clase E: se reservan para asignarlas a nuevos servicios. TCP/IP: los protocolos de la red Internet 86 FUOC • P03/75064/00977 TCP/IP: los protocolos de la red Internet 86 FUOC • P03/75064/00977 Anexo 3 Anexo 3 El algoritmo checksum El algoritmo checksum Los protocolos IP y TCP utilizan, entre otros, un sencillo checksum para la detección de errores. Ésta es una versión del algoritmo checksum: Los protocolos IP y TCP utilizan, entre otros, un sencillo checksum para la detección de errores. Ésta es una versión del algoritmo checksum: u_short checksum(u_short * addr,int len) { int aux_len = len; u_short *aux_addr = addr; u_short res; int sum = 0; u_short checksum(u_short * addr,int len) { int aux_len = len; u_short *aux_addr = addr; u_short res; int sum = 0; while(aux_len > 1) { sum+ = *aux_addr++; aux_len- = 2; } while(aux_len > 1) { sum+ = *aux_addr++; aux_len- = 2; } if(aux_len == 1) sum+ = *(u_char) *aux_addr; if(aux_len == 1) sum+ = *(u_char) *aux_addr; sum = (sum>>16) + (sum & 0xffff); sum+ = (sum>>16); res = ~sum; sum = (sum>>16) + (sum & 0xffff); sum+ = (sum>>16); res = ~sum; return res; } return res; } TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 87 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 87 Anexo 4 Anexo 4 NAT (network address translation) NAT (network address translation) La NAT (‘traducción de direcciones de red’) permite que los ordenadores de una LAN tengan acceso transparente al exterior sin necesidad de disponer de direcciones Internet válidas externamente. Ello puede ser útil para abaratar costes (la tarifa se establece por direcciones) o para aprovechar mejor el recurso escaso “dirección”. La NAT (‘traducción de direcciones de red’) permite que los ordenadores de una LAN tengan acceso transparente al exterior sin necesidad de disponer de direcciones Internet válidas externamente. Ello puede ser útil para abaratar costes (la tarifa se establece por direcciones) o para aprovechar mejor el recurso escaso “dirección”. La NAT se implementa en los direccionadores o en los cortafuegos que proporcionan acceso a la red (por ejemplos, los direccionadoes ADSL) para ocultar al exterior los ordenadores de la red local. La NAT se implementa en los direccionadores o en los cortafuegos que proporcionan acceso a la red (por ejemplos, los direccionadoes ADSL) para ocultar al exterior los ordenadores de la red local. Reunir en una sola dirección más de un ordenador puede parecer inviable puesto que, aunque los paquetes salientes no tendrían problema (todos llevarían la misma dirección de origen), los paquetes de respuesta no tendrían manera de retornar al ordenador correcto, puesto que la dirección no sería una discriminación suficiente. Para solucionar este problema, se discriminan los ordenadores internos a partir de los puertos del nivel de transporte (con independencia de que sea TCP o UDP). El direccionador recuerda la dirección interna correspondiente a cada puerto que ha utilizado en la salida. Reunir en una sola dirección más de un ordenador puede parecer inviable puesto que, aunque los paquetes salientes no tendrían problema (todos llevarían la misma dirección de origen), los paquetes de respuesta no tendrían manera de retornar al ordenador correcto, puesto que la dirección no sería una discriminación suficiente. Para solucionar este problema, se discriminan los ordenadores internos a partir de los puertos del nivel de transporte (con independencia de que sea TCP o UDP). El direccionador recuerda la dirección interna correspondiente a cada puerto que ha utilizado en la salida. TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 88 TCP/IP: los protocolos de la red Internet FUOC • P03/75064/00977 88 TCP/IP: los protocolos de la red Internet