Protocolos TCP/IP
ResumenEste trabajo intenta dar una información clara y directa de los protocolos englobados dentro del conjunto de protocolos TCP/IP. Este documento esta ideado como un manual de referencia de algunos de los protocolos antes mencionados, asi como del formato de los mensajes que utilizan estos. Indice
Aunque poca gente sabe lo que es TCP/IP todos lo emplean indirectamente y lo confunden con un solo protocolo cuando en realidad son varios, de entre los cuales destaca y es el mas importante el protocolo IP. Bajo este nombre(TCP/IP)se esconde uno de los protocolos mas usados del mundo, debido a que es el mas usado por Internet y esta muy extendido en el sistema operativo UNIX. En el 1973 , la DARPA inició un programa de investigacion de tecnologias de comunicación entre redes de diferentes caracteristicas. El proyecto se basaba en la transmision de paquetes de información, y tenia por objetivo la interconexion de redes. De este proyecto surgieron dos redes: Una de investigacion, ARPANET, y una de uso exclusivamente militar, MILNET. Para comunicar las redes, se desarrollaron varios protocolos: El protocolo de Internet y los protocolos de control de transmision. Posteriormente estos protocolos se englobaron en el conjunto de protocolos TCP/IP. En 1980, se incluyo en el UNIX 4.2 de BERKELEY, y fue el protocolo militar standard en 1983. Con el nacimiento en 1983 de INTERNET, este protocolo se popularizo bastante, y su destino va unido al de internet. ARPANET dejo de funcionar oficialmente en 1990. Algunos de los motivos de su popularidad son: [Tcpip3]
El modelo básico en internet es el modelo Cliente/Servidor. El Cliente es un programa que le solicita a otro que le preste un servicio. El Servidor es el programa que proporciona este servicio.
La arquitectura de Internet esta basada en capas. Esto hace mas facil implementar nuevos protocolos.
El conjunto de protocolos TCP/IP, al estar integrado plenamente en Internet, tambien dispone de este tipo de arquitectura.
El modelo de capas de TCP/IP es algo diferente al propuesto por ISO (International Standard Organization) para
la interconexión de sistemas abiertos (OSI). (Ver imágenes 1 y 2).
Esta capa corresponde a las aplicaciones que estan disponibles para los usuarios, como TELNET, FTP, SNMP...
3.1. BOOTP (Bootstrap Protocol)
Información generalEn lugar de utilizar el protocolo ARP, una maquina que acaba de ponerse en funcionamiento por primera vez, puede utilizar el protocolo bootstrap para obtener la direccion IP y información sobre su sector de arranque. Este metodo tiene algunas ventajas respecto al del protocolo ARP. Formato del mensajeDescripcion de los campos: (Ver Figura 1)
3.2. DNS (Domain Name Service) [Wylder93]
Muchos usuarios prefieren utilizar un nombre que sea mas fácil de recordar que una direccion numerica. Para hacer esto, un servidor debe transformar el nombre en la direccion correcta. Esto se hacia originalmente en Internet mediante una tabla unica situada en un servidor central, donde estaban contenidos todos los nombres de Host. Esto era posible debido a que solo existian unos cientos de servidores, pero debido a un gran aumento del numero de servidores, fue necesario descentralizar el servidor de nombres y dividirlo en multiples DNS (servidores de nombres de dominio). Esto redujo el tiempo de respuesta del sevidor, y disminuyo el trafico en la red. La estructura del sistema de dominios es similar a la estructura de directorios del DOS o del UNIX. Es decir, es una estructura en forma de arbol, y los archivos estan identificados con una ruta de acceso. La diferencia es que en el DNS la ruta empieza con el nombre del nodo en vez del directorio raiz. Ademas, las rutas en un servidor DNS se escriben en sentido inverso a las del DOS. Desde el punto de vista de un programa el funcionamiento de este servicio en muy simple. El programa proporciona un nombre de dominio, y el DNS le devuelve su direccion IP. Nombres de dominioEl programa de usuario proporciona el nombre de dominio como una secuencia de palabras. Las palabras estan listadas de izquierda a derecha, y la que representa la zona mas cercana al usuario es la primera. Los programas DNS manipulan el nombre del dominio proporcionado por el usuario de manera que sea facilmente interpretado por otros programas. Para los programas, cada nombre de dominio contiene una secuencia de etiquetas, y cada etiqueta contiene un octeto de longitud seguido por una cadena de caracteres de un subconjunto de caracteres ASCII. Este subconjunto está formado por caracteres alfa (A-Z), digitos (0-9) y un signo menos (-). Arquitectura del DNSDNS es un protocolo de la capa de aplicacion y esta clasificado como una utilidad por convenio entre los usuarios y el administrador del sistema, en vez de una parte integrada en los servicios de usuario. Elementos de programas de DNSSiguiendo el modelo Cliente/Servidor, DNS consiste en un usuario, un cliente, un servidor de nombres local y un servidor de nombres remoto. En terminos de las especificaciones, DNS consiste en un programa de usuario, un cliente, un servidor de nombres, y un servidor de nombres remoto. Cada Host debe implementar un mecanismo utilizando el cliente DNS para convertir nombres de Host en direcciones IP. Elementos de Datos de DNSUn nodo DNS se representa por una etiqueta en el interior del nombre de dominio, y todos los nodos tienen unos archivos de recursos (resource records (RRs)) que contienen información que habilita el programa DNS para encontrar el nombre de dominio solicitado. Formato de un RR. (Ver Figura 2)
Funcionamiento del DNSUn programa manda una solicitud a un cliente (resolver) que contiene un nombre de dominio para el cual se quiere la direccion IP asociada. La solicitud se suele hacer con una subrutina, o un puntero hacia el nombre de dominio en la pila del sistema. Los nombres de dominio en el cache del Resolver (cliente) estan en un formato estándar contenido en RRs. Existen tres posibles respuestas de un Resolver al programa de usuario.
Formato de un mensaje DNS
El Protocolo DNS utiliza mensajes enviados por el UDP para trasladar solicitudes y respuestas
entre servidores de nombres. La transferencia de zonas completas la hace el
TCP.
Formato de la cabecera. (Ver Figura 3)La cabecera contiene los siguientes campos:
Formato de la sección PreguntasEsta sección la construye el cliente, y siempre esta presente. Contiene el nombre de dominio objetivo, seguido por los campos Qtype y Qclass. Esta sección es identica en longitud y formato que la definida para los campos CName, tipo y clase de un Resource Record. Formato de la sección RespuestaEsta sección contiene uno o mas RRs. Formato de la sección AutoridadLa sección autoridad contiene uno o mas RRs que apuntan hacia los origenes de la información autorizada. Formato de la sección AdicionalEsta sección contiene uno o mas RRs que proporcionan fuentes adicionales de información. 3.3. Echo Protocol
El servidor eco utiliza el puerto de UDP numero 7 para escuchar las solicitudes de eco del cliente. El cliente utiliza un numero de puerto UDP libre para el numero de puerto de origen y manda un mensaje por medio del UDP al servidor eco. El servidor recibe la solicitud, intercambia las direcciones de origen y destino, intercambia las identificaciones de puertos, y devuelve el mensaje al cliente. 3.4. NTP (Network Time Protocol) [Wylder93]
El NTP se utiliza para sincronizar los servidores con una precisión de nanosegundos. Formato del mensaje. (Ver Figura 4).El mensaje NTP esta formado por los siguientes campos:
3.5. SNMP (Simple Network Management Protocol)
[Raro97] El protocolo SNMP se utiliza para administrar multiples redes fisicas de diferentes fabricantes, es decir Internet, donde no existe un protocolo comun en la capa de Enlace. La estructura de este protocolo se basa en utilizar la capa de aplicacion para evitar el contacto con la capa de enlace. Formato del mensajeExisten tres partes en un mensaje SNMP:
3.6. ICMP
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Tipo | Tipo de Mensaje |
|---|---|
| 0 | Respuesta de Eco |
| 3 | Destino Inalcanzable |
| 4 | Origen saturado |
| 5 | Redireccion (cambiar ruta) |
| 8 | Solicitud de eco |
| 11 | Tiempo excedido para un datagrama |
| 13 | Problema de parametros en un datagrama |
| 13 | Solicitud de fecha y hora |
| 14 | Respuesta de fecha y hora |
| 17 | Solicitud de nascara de direccion |
| 18 | Respuesta de mascara de direccion |
Un Host puede comprobar si otro Host es operativo mandando una solicitud de eco. El receptor de la solicitud la devuelve a su origen. Esta aplicacion recibe el nombre de Ping. Esta utilidad encapsula la solicitud de eco del ICMP (tipo 8) en un datagrama IP y lo manda a la direccion IP.
El receptor de la solicitud de eco intercambia las direcciones del datagrama IP, cambia el codigo a 0 y lo devuelve al origen.
| Octet +0 | Octet +1 | Octet +2 | Octet +3 | |||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| +0 | Type | Code | Checksum | |||||||||||||||||||||||||||||
| +4 | Identifier | Sequence number | ||||||||||||||||||||||||||||||
| Optional Data | ||||||||||||||||||||||||||||||||
Si un Gateways no puede enviar un datagrama a la direccion de destino, este manda
un mensaje de error ICMP al origen. El valor del campo tipo es 3, y el tipo de error
viene dado por el campo codigo. (Ver Tabla 8).
| Codigo | Descripcion |
|---|---|
| 0 | Red no alcanzable |
| 1 | Host no alcanzable |
| 2 | Protocolo no alcanzable |
| 3 | Puerto no alcanzable |
| 4 | Necesaria fragmentacion con la opcion DF |
| 5 | Fallo de la ruta de origen |
| 6 | Red de Destino desconocida |
| 7 | Host de Destino desconocido |
| 8 | Fallo del Host de Origen |
| 9 | Red prohibida administrativamente |
| 10 | Host prohibido administrativamente |
| 11 | Tipo de servicio de Red no alcanzable |
| 12 | Tipo de servicio de Host no alcanzable |
| Octet +0 | Octet +1 | Octet +2 | Octet +3 | ||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Type | Code | Checksum | |||||||||||||||||||||||||||||
| Internal header plus 64 bits of datagram | |||||||||||||||||||||||||||||||
Para contener los datagramas IP, un Gateways dispone de un buffer. Si el numero de datagramas es grande, el buffer se satura. En este momento el Gateways descarta todos los mensajes que recive hasta que obtiene un nivel de buffer aceptable. Cada datagrama descartado hace que el Gateways mande un mensaje ICMP de control de flujo al origen. Esto informa de que un mensaje ha sido descartado.
Originalmente el mensaje ICMP de control de flujo se enviaba cuando el buffer estaba lleno, pero esto llegaba demasiado tarde, y el sistema ya estaba saturado.
El algoritmo se cambio para que el mensaje ICMP de control de flujo se enviara cuando el buffer estuviera al 50%.
Los Gateways en cualquier Internet contienen las tablas de redireccionamiento mas comunes. Cuando la ruta por defecto no es la mas adecuada, el Gateways puede enviar al Host un mensaje de redireccionamiento ICMP que contiene la ruta correcta.
El formato del mensaje ICMP de control de flujo es igual al del mensaje de
Inalcanzable, excepto que el tipo es 5 y el valor del codigo es variable
entre 1 y 3. Los motivos para la redireccion y sus codigos se pueden consultar en la Tabla 9.
| Codigo | Razon para la redireccion |
|---|---|
| 1 | Por el Host |
| 2 | Por el tipo de servicio y red |
| 3 | Por el tipo de servicio y Host |
Para prevenir bucles en la redireccion, el datagrama IP contiene un tiempo de vida definido por el origen. A medida que cada Gateways procesa el datagrama, el valor del campo disminuye en una unidad. Posteriormente el Gateways verifica si el valor del campo es 0. Cuando se detecta un 0, el Gateways manda un mensaje de error ICMP y descarta el datagrama.
El formato del mensaje de error es igual al del mensaje de inalcanzable, pero el tipo es 11, y el codigo es igual a 0 (contador sobrepasado), o 1 (tiempo de reensamblaje de fragmento excedido).
Un error de parametros se produce cuando el que origina el datagrama, lo construye mal, o el datagrama esta dañado. Si un Gateways encuentra un error en un datagrama, manda un mensaje ICMP de error de parametros al origen y descarta el datagrama.
El formato del mensaje ICMP de error de parametros es igual al de inalcanzable, pero su tipo es 12, y el codigo es 0 si se utilizan punteros, o 1 si no se utilizan.
El Mensaje Fecha y hora del ICMP es una herramienta util para diagnosticar problemas de internet, y recoger información acerca del rendimiento. El protocolo NTP (Network Time Protocol), puede utilizarse para marcar el tiempo inicial, y puede guardar la sincronizacion en milisegundos del reloj.
El mensaje Fecha y hora tiene los siguientes campos: Tipo, Codigo, Checksum, Identificador, Numero de secuencia, Fecha y hora original, Fecha y hora receptor y Fecha y hora de transmision. El tipo es igual 13 para el origen y 14 para el Host remoto. El codigo es igual a cero. El identificador y el numero de secuencia se usan para identificar la respuesta. El Fecha y hora original es el tiempo en el que el emisor inicia la transmision, el Fecha y hora receptor es el tiempo inicial en el que el receptor recibe el mensaje. El Fecha y hora de transmision es el tiempo en que el receptor inicia el retorno del mensaje.
| Octet +0 | Octet +1 | Octet +2 | Octet +3 | ||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Type | Code | Checksum | |||||||||||||||||||||||||||||
| Identifier | Sequence number | ||||||||||||||||||||||||||||||
| Originate Timestamp | |||||||||||||||||||||||||||||||
| Receive Timestamp | |||||||||||||||||||||||||||||||
| Transmit Timestamp | |||||||||||||||||||||||||||||||
Cuando un Host quiere conocer la mascara de subred de una LAN fisica, puede mandar una solicitud ICMP de mascara de subred.
El formato es igual a los primeros ocho octetos del ICMP Fecha y hora. El valor del campo tipo es 17 para la solicitud de mascara de subred y 18 para la respuesta. El codigo es 0, y el identificador y el numero de secuencia se utilizan para identificar la respuesta.
EL IGMP (Internet Group Management Protocol) es un protocolo que funcion como una extension del protocolo IP.
Se utiliza exclusivamente por los miembros de una red multicast para mantener su status de miembros, o para propagar información de direccionamiento.
Un Gateways multicast manda mensajes una vez por minuto como maximo. Un Host receptor
responde con un mensaje IGMP, que marca al Host como miembro activo. Un Host que no
responde al mensaje se marca como inactivo en las tablas de direccionamiento de la
red multicast.
| 3.8. PROTOCOLOS DE ACTUALIZACIÓN DE LA TABLA DE DIRECCIONAMIENTO |
Un dominio de direccionamiento es un grupo de redireccionadores que usan un IGP(Internal Gateways Protocol) comun. Una forma de reducir el volumen de información intercambiado se basa en que un dominio de redireccionmiento utilice un Gateways seleccionado para comunicar información de direccionamiento con los Gateways seleccionados de otros dominios. El Gateways seleccionado se considera como un Gateways exterior, y el protocolo usado entre Gateways exteriores es el EGP.
El protocolo EGP se compone de tres partes:
El Neighbor Adquisition Protocol se utiliza simplemente para establecer comunicacion.
Consta de una solicitud y una respuesta.
El Neighbor Reachability Protocol se basa en un mensaje "Hello" (comando), y una respuesta "I heard you". Se utiliza para saber si la comunicacion continua.
El mensaje Network Reachability se usa para comprobar si el siguiente "vecino" es un camino valido para llegar a un destino particular.
EL principal inconveniente del protocolo EGP es que crea una estructura en forma de arbol, es decir que si hay problemas en Internet, los Gateways solo saben que hay problemas en el Gateways exterior.
El problema del protocolo EGP, fue el que impulso a diseñar e implementar el protocolo BGP.
El protocolo BGP es un protocolo interno de sistema autonomo. Un sistema autonomo puede contener multiples dominios de direccionamiento, cada uno con su propio protocolo interno de sistema autonomo, o IGP. Dentro de cada sistema autonomo pueden haber varios Gateways que se pueden comunicar con los Gateways de otros sistemas. Tambien se puede elegir un Gateways para lograr un informe de la información de direccionamiento para el sistema autonomo. En cualquier caso, un sistema autonomo aparece ante otro sistema autonomo como un direccionador consistente. Esto elimina la estructura de arbol del protocolo EGP.
Los primeros Gateways de internet utilizaban un IGP llamado Gateways-to-Gateways Protocol , que fue el primer IGP utilizado. Usando GGP cada Gateways manda un mensaje a todos los otros Gateways de su grupo autonomo que contiene una tabla con las direcciones que el Gateways ha direccionado, con su vector de distancia asociado.
El RIP es un IGP desarrollado bastante despues del GGP, y esta basado en el vector/distancia. Si un Gateways conoce varias rutas para llegar a un destino, asigna un coste a la ruta en funcion de los saltos de Gateways que deba realizar. (Cuantos mas Gateways tenga que cruzar, mas saltos debera realizar).
Cada 30 segundos envia un mensaje con su tabla de direccionamiento a los demas que actualizan sus tablas con los datos recibidos. (Esto produce un incremento del trafico de red).
Este algoritmo tiene algun fallo, como por ejemplo no detecta bucles en la transmision de la ruta. Esto daria un problema consistente en que dos rutas que se llamen entre ellas estarian emitiendo tablas de direccionamiento indefinidamente.
Otro error es que no obliga a la autentificacion de los intercambios, por lo que cualquier persona podria recibir información de las rutas enviadas por los Gateways.
Existen dos versiones RIP I y RIP II (Soporta mascaras de subred).
Un IGP similar al RIP es el Hello Protocol. La diferencia basica es que el RIP cuenta los saltos de Gateways, y el Hello mide la distancia por el tiempo transcurrido. Este protocolo tiene un problema asociado al vector de distancia. El problema tiene dos etapas. La primera etapa es cuando los Gateways descubren una ruta mas corta para llegar a un determinado destino. Esta ruta es mas corta y mas rapida, lo que provoca que el trafico de red pase a utilizar esta nueva ruta.
La segunda etapa empieza cuando los Gateways descubren que la nueva ruta es mas lenta que la ruta vieja, debido a que al desviar el trafico de red a la nueva ruta, esta se satura, y todos los usuarios vuelven a la ruta vieja.
Uno de los protocolos IGP mas nuevos es el OSPF. Este protocolo ofrece un mayor grado de sofisticacion con caracteristicas como: Rutas basadas en el tipo de servicio, la distancia, nivel de carga, etc.
El formato del mensaje OSPF es mas complejo que el RIP. Tiene una cabecera fija de 24 octetos, y una parte variable para especificar el tipo del mensaje. Existen cinco tipos de mensaje, como se puede ver en la Tabla 10.
| Tipo | Significado |
|---|---|
| 1 | Hola (Utilizado para comprobar la acesibilidad) |
| 2 | Descripcion de la Base de Datos |
| 3 | Solicitud del estado del enlace |
| 4 | Actualizacion del estado del enlace |
| 5 | Reconocimiento del estado del enlace |
| 4. CAPA DE TRANSPORTE |
Provee comunicación extremo a extremo desde un programa de aplicación a otro. Puede proveer un transporte confiable asegurándose de que los datos lleguen sin errores y en la secuencia correcta. Coordina a múltiples aplicaciones que se encuentren interactuando con la red simultáneamente de tal manera que los datos que envíe una aplicación sean recibidos correctamente por la aplicación remota.
En esta capa se encuentran los protocolos UDP y TCP.
El protocolo UDP (User Datagram Protocol) proporciona aplicaciones con un tipo de sevicio de datagramas orientado a transacciones. El servicio es muy parecido al protocolo IP en el sentido de que no es fiable y no esta orientado a la conexión. El UDP es simple, eficiente e ideal para aplicaciones como el TFTP y el DNS. Una dirección IP sirve para dirigir el datagrama hacia una maquina en particular, y el numero de puerto de destino en la cabecera UDP se utiliza para dirigir el datagrama UDP a un proceso especifico localizado en la cabecera IP. La cabecera UDP tambien contiene un numero de puerto origen que permite al proceso recibido conocer como responder al datagrama.
El datagrama UDP contiene cuatro campos, que son Numero del Puerto de Origen, Numero del Puerto de Destino, Longitud del mensaje y Checksum.
| Octet +0 | Octet +1 | Octet +2 | Octet +3 | |||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| +0 | Source Port | Destination Port | ||||||||||||||||||||||||||||||
| +4 | Message Length | Checksum | ||||||||||||||||||||||||||||||
| UDP Data | ||||||||||||||||||||||||||||||||
Estos numeros, junto con las direcciones IP definen el punto final de la comunicacion. El numero del puerto de origen, puede tener valor cero si no se usa. El numero del puerto de destino solo tiene sentido en el contexto de un datagrama UDP y un a direccion IP en particular.
El numero de puerto de origen es un campo de 16 bits. El puerto de destino tiene la misma longitud.
Este campo tiene una longitud de 16 bits y contiene el numero total de octetos que forman el datagrama, incluida la cabecera.
El uso del checksum es opcional, y este campo debe ponerse a cero si no es utilizado. Mientras que el checksum del datagrama IP solo tiene en cuenta la cabecera del mensaje, el UDP tiene su propio checksum para garantizar la integridad de los datos. La longitud de este campo es de 16 bits, y esta formado por la suma de los campos del UDP, y algunos campos del IP.
Para incluir los campos del IP, se construye una pseudo cabecera UDP. Esta pseudo cabecera de 12 octetos se utiliza unicamente a efectos de calcular la suma. (Ver Figura 9)
| Octet +0 | Octet +1 | Octet +2 | Octet +3 | |||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| P s e u d o H e a d e r | Source IP Adress | |||||||||||||||||||||||||||||||
| Destination IP Address | ||||||||||||||||||||||||||||||||
| Zero | Protocol ID | Length | ||||||||||||||||||||||||||||||
| Source Port | Destination Port | |||||||||||||||||||||||||||||||
| Message Length | Checksum | |||||||||||||||||||||||||||||||
| UDP Data | ||||||||||||||||||||||||||||||||
| UDP Data | Zero | |||||||||||||||||||||||||||||||
El protocolo TCP proporciona un servicio de comunicacion que forma un circuito, es decir, que el flujo de datos entre el origen y el destino parece que sea continuo. TCP proporciona un circuito virtual el cual es llamado una conexión.
Al contrario que los programas que utilizan UDP, los que utilizan el TCP tienen un servicio de conexión entre los programas llamados y los que llaman, chequeo de errores, control de flujo y capacidad de interrupción.
Existen dos tipos de interfaces entre la conexión TCP y los otros programas.
El primero es utilizar la pila de los programas de la capa de red. Como en esta capa solo esta el protocolo IP, el interface lo determina este protocolo. El segundo tipo es el interfaz del programa de usuario. Este interface puede variar segun el sistema operativo, pero en general tiene las siguientes caracteristicas.
El interface envuelve el programa de usuario llamando a una rutina que introduce entradas en una estructura de datos llamada el bloque de control de transmision (TCB). Las entradas se realizan inicialmente en la pila de hardware y transferidas al TCB por medio de una rutina de sistema. Estas entradas permiten al TCP asociar un usuario con una conexión particular, de modo que pueda aceptar comandos de un usuario y mandarlos a otro usuario en la otra parte de la conexión. TCP utiliza unos identificadores unicos para cada parte de la conexión. Esto se utiliza para recordar la asociacion entre dos usuarios. Al usuario se le asigna un nombre de conexión para utilizarlo un futuras entradas del TCB. Los identificadores para cada estremo de la conexión se llaman sockets. El socket local se construye concatenando la direccion IP de origen y el numero de puerto de origen. El socket remoto se obtiene concatenando la direccion IP de destino y el numero de puerto de destino.
El par de sockets de una conexión forman un unico numero en Internet. El UDP tiene los mismos sockets, pero no los recuerda. Esta es las diferencia entre un protocolo orientado a conexión y otro a no conexión. A continuacion se explican los comandos mas usuales:
El TCP recuerda el estado de cada conexión por medio del TCB. Cuando se abre una conexión, se efectua una entrada unica en el TCB. Un nombre de conexión se le asigna al usuario para activar los comandos de la conexión. Cuando se cierra una conexión se elimina su entrada del TCB.
El protocolo TCP puede controlar la cantidad de datos que debe enviar mediante el campo Window. Este campo indica el numero maximo de octetos que pueden ser recibidos. El receptor de un segmento con el campo window a cero, no puede enviar mensajes al emisor, excepto mensajes de prueba. Un mensaje de prueba es un mensaje de un solo octeto que se utiliza para detectar redes o hosts inalcanzables.
El segmento TCP consiste en una cabecera y datos. A continuacion se describen los campos del segmento TCP.
Como en el Checksum del protocolo TCP tambien se incluyen campos del protocolo IP, es necesario construir una pseudo-cabecera TCP que se considera unicamente a efectos de calculo.(Ver Figura 10)
| Octet +0 | Octet +1 | Octet +2 | Octet +3 | ||||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
| D a t a i n C h e c k s u m | Source IP Adress | P s e u d o h e a d e r | |||||||||||||||||||||||||||||||
| Destination IP Address | |||||||||||||||||||||||||||||||||
| Zero | Protocol Number | Number of octets in header and data | |||||||||||||||||||||||||||||||
| TCP Header | |||||||||||||||||||||||||||||||||
| TCP Data | |||||||||||||||||||||||||||||||||
| TCP Data | Zero | ||||||||||||||||||||||||||||||||
| msb | lsb | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| T C P H e a d e r | Source Port | |||||||
| Destination Port | ||||||||
| Sequence Number | ||||||||
| Acknowledgement Number | ||||||||
| Header Length | Reserved | |||||||
| RSV | Code Bits | |||||||
| Window | ||||||||
| Checksum | ||||||||
| Urgent Pointer | ||||||||
| Options | ||||||||
| Padding | ||||||||
| TCP Data | ||||||||
| 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | |
El inicio, mantenimiento y cierre de una conexión requiere que el TCP recuerde toda la información relativa a cada conexión. Esta información se almacena en una entrada para cada conexión dentro del TCB. Cuando se abre una conexión, la entrada en el TCB se realiza con todas las variables inicializadas con sus rexpectivos valores. Durante la conexión, la entrada del TCB es actualizada a medida que cambia la información. A continuacion se describen algunos de los estados del TCP:
| 5. CAPA DE RED |
[Raro97] Controla la comunicación entre un equipo y otro. Conforma los paquetes IP que serán enviados por la capa inferior. Desencapsula los paquetes recibidos pasando a la capa superior la información dirigida a una aplicación.
El Protocolo IP proporciona un sistema de distribucion que es poco fiable incluso en un base solida. El protocolo IP especifica que la unidad basica de transferencia de datos en el TCP/IP es el datagrama.[Tcpip2]
Los datagramas pueden ser retrasados, perdidos, duplicados, enviados en una secuencia incorrecta o fragmentados intencionadamente para permitir que un nodo con un buffer limitado pueda coger todo el datagrama. Es la responsabilidad del protocolo IP reensamblar los fragmentos del datagrama en el orden correcto. En algunas situaciones de error los datagramas son descartados sin mostrar ningun mensaje mientras que en otras situaciones los mensajes de error son recibidos por la maquina origen (esto lo hace el protocolo ICMP).
El protocolo IP tambien define cual sera la ruta inicial por la que seran mandados los datos.
Cuando los datagramas viajan de unos equipos a otros, es posible que atraviesen diferentes tipos de redes. El tamaño maximo de estos paquetes de datos puede variar de una red a otra, dependiendo del medio fisico que se emplee para su transmision. A este tamaño maximo se le denomina MTU (Maximum Transmission Unit), y ninguna red puede transmitir un paquete de tamaño mayor a esta MTU. El datagrama consiste en una cabecera y datos. (Ver Figura 12)
Este campo ocupa 4 bits, y representa el numero de octetos de la cabecera dividido por cuatro, lo que hace que este sea el numero de grupos de 4 octetos en la cabecera.
El campo versión ocupa 4 bits. Este campo hace que diferentes versiones del protocolo IP puedan operar en la Internet. En este caso se trata de la versión 4.
Este campo ocupa un octeto de la cabecera IP, y especifica la precedencia y la prioridad del datagrama IP. Los tres primeros bits del octeto indican la precedencia. Los valores de la precedencia pueden ser de 0 a 7. Cero es la precedencia normal, y 7 esta reservado para control de red. Muchos Gateways ignoran este campo.
Los otros 4 bits definen el campo prioridad, que tiene un rango de 0 a 15. Las cuatro prioridades que estan asignadas son: 0, (por defecto, servicio normal), 1 (minimizar el coste monetario), 2 (maxima fiabilidad), 4 (Maximizaar la transferencia), 8 (El bit +4 igual a 1, define minimizar el retraso). Estos valores son utilizados por los routers para direccionar las solicitudes de los usuarios.
Este campo se utiliza para identificar el numero de octetos en el datagrama total.
El valor del campo identificacion es un numero secuencial asignado por el Host origen. El campo ocupa dos octetos. Los numeros oscilan entre 0 y 65.535, que cuando se combinan con la direccion del Host forman un numero unico en la Internet. El numero se usa para ayudar en el reensamblaje de los fragmentos de datagramas.
Cuando el tamaño de un datagrama excede el MTU, este se segmenta.
El fragmento Offset representa el desplazamiento de este segmento desde en inicio del datagrama entero.
El campo flag ocupa 3 bits y contiene dos flags. El bit +5 del campo flags se utiliza para indicar el ultimo datagrama fragmentado cuando toma valor cero. El bit +7 lo utiliza el servidor origen para evitar la fragmentacion. Cuando este bit toma valor diferente de cero y la longitud de un datagrama excede el MTU, el datagrama es descartado y un mensaje de error es enviado al Host de origen por medio del protocolo ICMP.
El campo tiempo de vida ocupa un octeto. Representa el numero maximo de segundos que un datagrama puede existir en Internet, antes de ser descartado.Un Datagrama puede existir un maximo de 255 segundos. El numero recomendado para IP es 64.
El originador del datagrama manda un mensaje ICMP cuando el datagrama es descartado.
El campo protocolo se utiliza para identificar la capa de mayor nivel mas cercana usando el IP. Este es un campo de 0 bits, que normalmente identifica tanto la capa TCP (valor 6), como la capa UDP (valor 17) en el nivel de ransporte, pero puede identificar hasta 255 protocolos de la capa de transporte.
El checksum proporciona la seguridad de que el datagrama no ha sido dañado ni modificado. Este campo tiene una longitud de 16 bits.
El checksum incluye todos los campos de todos los campos de la cabecera IP, incluido el mismo, cuyo valor es cero a efectos de calculo.
Un Gateways o nodo que efectue alguna modificacion en los campos de la cabecera (por ejemplo en el tiempo de vida), debe recalcular el valor del checksum antes de enviar el datagrama.
Los usuarios del IP deben proporcionar su propia integridad en los datos, ya que el checksum es solo para la cabecera.
Este campo contiene un identificador de red (Netid) y un identificador de Host (Hostid). El campo tiene una longitud de 32 bits. La direccion puede ser de clase A, B, C. (ver Direcciones IP).
Este campo contiene el Netid y el Hostid del destino. El campo tiene una longitud de 32 bits. La direccion puede ser de clase A, B, C o D (ver Direcciones IP).
La existencia de este campo viene determinada por la longitud de la cabecera. Si esta es mayor de cinco, por lo menos existe una opcion.
Aunque un Host no esta obligado a poner opcciones, puede aceptar y procesar opciones recibidas en un datagrama. El campo Opciones es de longitud variable. Cada octeto esta formado por los campos Copia, Clase de Opcion y Numero de Opcion.
| Clase de Opcion | Numero de Opcion | Octetos | Descripcion |
|---|---|---|---|
| 0 | 0 | 1 | Fin de alineamiento |
| 0 | 1 | 1 | Para alinear dentro de una lista de opciones |
| 0 | 2 | 11 | Seguridad (aplicaciones militares) |
| 0 | 3 | var | Ruteo del Origen |
| 0 | 7 | var | Grabar/trazar ruta |
| 0 | 9 | var | Ruteo estricto del Origen |
| 2 | 4 | var | Fecha y hora de Internet |
Cuando esta presente el campo Pad, consiste en 1 a 3 octetos puestos a cero, si es necesario, para hacer que el numero total de octetos en la cabecera sea divisible por cuatro.
El campo datos consiste en una cadena de octetos. Cada octeto tiene un valor entre 0 y 255. El tamaño de la cadena puede tener un minimo y un maximo, dependiendo del medio fisico. El tamaño maximo esta definido por la longitud total del datagrama. El tamaño del campo Datos en octetos es igual a:
| msb | lsb | ||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
| I P H e a d e r | Version | Header Length | +0 | ||||||
| Type of Service | +1 | ||||||||
| Total Length | +2 | ||||||||
| +3 | |||||||||
| Identification | +4 | ||||||||
| +5 | |||||||||
| Flags | Fragment Offset | +6 | |||||||
| +7 | |||||||||
| Time to Live | +8 | ||||||||
| Protocol | +9 | ||||||||
| Header Checksum | +10 | ||||||||
| +11 | |||||||||
| Source Address of Originating Host | +12 | ||||||||
| +13 | |||||||||
| +14 | |||||||||
| +15 | |||||||||
| Destination Address of Target Host | +16 | ||||||||
| +17 | |||||||||
| +18 | |||||||||
| +19 | |||||||||
| Options | +20 | ||||||||
| +21 | |||||||||
| +22 | |||||||||
| Padding | +23 | ||||||||
| IP Data | +0 | ||||||||
| +1 | |||||||||
| MSB | +n | ||||||||
Las direcciones IP hacen que el envio de datos entre ordenadores se haga de forma eficaz, de un modo similar al que se utilizan los numeros de telefono.
Las direcciones IP tienen 32 bits, formados por cuatro campos de 8 bits separados por puntos. Cada campo puede tener un valor comprendido entre 0 y 255. Esta compuesta por una direccion de red, seguida de una direccion de subred y de una direccion de host.
Existen cinco clases de subredes, tal y como muestra la Figura 13. [Tcpip1]
[Tcpip4] Esta es una nueva versión del protocolo IP, llamada IPv6, aunque también es conocida como IPng (Internet Protocol Next Generation). Es la versión 6, debido a que la numero 5 no paso de la fase experimental. La compatibilidad con la versión 4 es prácticamente total, ya que se han incluido características de compatibilidad. Algunas de las modificaciones, estan encaminadas a mejorar la seguridad en la red, que apenas existia en la versión 4.
Esta cabecera ocupa el doble que la anterior, pero se ha simplificado omitiendo algunos campos y haciendo que otros sean opcionales. De esta manera, los routers no tienen que procesar tanta imformación. Los campos son los siguientes:
| Octet +0 | Octet +1 | Octet +2 | Octet +3 | ||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Versión | Prioridad | Etiqueta de flujo | |||||||||||||||||||||||||||||
| Longitud | Siguiente cabecera | Tiempo de vida | |||||||||||||||||||||||||||||
| Dirección de Origen (128 bits) | |||||||||||||||||||||||||||||||
| Dirección de Destino (128 bits) | |||||||||||||||||||||||||||||||
[Tcpip4] El cambio mas significativo en las direcciones ha sido, que ahora, se refieren a un interfaz y no a un nodo, aunque como cada interfaz pertenece a un nodo, es posible referirse a estos mediante su interfaz.
El numero de direcciones diferentes se ha multiplicado de una manera exagerada. Teoricamente, es posible tener 2128 direcciones diferentes. Este numero quiere decir que se podrían llegar a tener mas de 665.000 trillones de direcciones por metro cuadrado, aunque si siguieran una jerarquia, este numero decrede hasta 1564 direcciones por metro cuadrado en el peor caso o tres trillones siendo optimistas.
En el IPv6 existen tres tipos basicos de direcciones:
| 6. CAPA FÍSICA |
Este nivel corresponde al hardware. En este nivel estan los protocolos ARP y RARP.
El protocolo ARP (Address Resolution Protocol), es el encargado de convertir las direcciones IP en direcciones de la red fisica.
El funcionamiento del protocolo ARP es bastante simple. Cuando una máquina desea enviar un mensaje a otra máquina que está conectada a través de una red ethernet se encuentra con un problema: la dirección IP de la máquina en cuestión es diferente a la dirección física de la misma. La máquina que quiere enviar el mensaje sólo conoce la dirección IP del destino, por lo que tendrá que encontrar un modo de traducir la dirección IP a la dirección física. Esto se hace con el protocolo ARP.
Este protocolo utiliza una tabla denominada Tabla de Direcciones ARP, que contiene la correspondencia entre direcciones IP y direcciones físicas utilizadas recientemente. Si la dirección solicitada se encuentra en esta tabla el proceso se termina en este punto, puesto que la máquina que origina el mensaje ya dispone de la dirección física de la máquina destino.
Si la dirección buscada no esta en la tabla el protocolo ARP envia un mensaje a toda la red. Cuando un ordenador reconoce su dirección IP envia un mensaje de respuesta que contiene la dirección física. Cuando la máquina origen recibe este mensaje ya puede establecer la comunicación con la máquina destino, y esta dirección física se guarda en la Tabla de direcciones ARP.
| Tipo | Descripcion |
|---|---|
| 1 | Ethernet (10mb) |
| 2 | Experimental Ethernet (3 mb) |
| 3 | Amateur Radio X.25 |
| 4 | Proteon ProNET Token Ring |
| 5 | Chaos |
| 6 | IEEE 802 Network |
| 7 | ARCNET |
| 8 | Hyperchannel |
| 9 | Lanstar |
| 10 | Autonet Short Address |
| 11 | LocalTalk |
| 12 | LocalNet |
| Octet +0 | Octet +1 | Octet +2 | Octet +3 | |||||||||||||||||||||||||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| +0 | Hardware | Protocol | ||||||||||||||||||||||||||||||
| +4 | Length HW Addr. | Protocol Length | Operation | |||||||||||||||||||||||||||||
| +8 | Source Hardware Address | |||||||||||||||||||||||||||||||
| +12 | Source Hardware Address | Source IP Address | ||||||||||||||||||||||||||||||
| +16 | Source IP Address | Destination Hardware Address | ||||||||||||||||||||||||||||||
| +20 | Destination Hardware Address | |||||||||||||||||||||||||||||||
| +24 | Destination IP Address | |||||||||||||||||||||||||||||||
El protocolo RARP (Reverse Address Resolution Protocol) es el encargado de asignar una direccion IP a una direccion fisica.
| 7. CONCLUSIÓN |
La conclusion a la que se ha llegado tras realizar este trabajo ha sido la siguiente:
El conjunto de protocolos TCP/IP ha sido de vital imporancia para el desarrollo de las
redes de comunicación, sobre todo para Internet. El ritmo de expansión de Internet
también es una consecuencia de estos protocolos, sin los cuales, conectar redes de
distintas naturalezas (diferente Hardware, sistema operativo, etc..), hubiera sido mucho mas dificil, por no decir imposible.
Así pues, podemos decir que los protocolos TCP/IP fueron y son el motor necesario para que las redes
en general, e Internet en particular, se mejoren y se pueda lograr una buena "autopista de la información".
| 8. REFERENCIAS |
[Raro97]
Jose Luis Raya, Victor Rodrigo (1997).Domine TCP/IP. ED RA-MA.
[Tcpip1]
Biblioteca de Represetación Gráfica de Mensajes para X-Window y Adaptación de Protocolo TCP para el Sistema Simple_Com en Ada95
http://cimmeria.uc3m.es/~tatou/proyecto/node1.html
[Tcpip2]
LA SUITE DE PROTOCOLOS TCPIP
http://minter.cieamer.conacyt.mx/internet/tcp_ip.html
[Tcpip3]
TEMA 9: PROTOCOLOS TCP/IP
http://infase.es/FORMACION/INTERNET/tcpip.html
[Tcpip4]
Funcionamiento de Internet
http://www.oocities.org/SiliconValley/Bay/8259/contenido.html
Si desea mas información puede consultar los siguientes Request For Comments