Protocolos TCP/IP


¿Qué es TCP/IP?

 TCP/IP es un conjunto de protocolos, en total más de 100 protocolos, que proporcionan las reglas para comunicarse. En un protocolo es donde se contienen los detalles de los formatos de los mensajes, y describen como responde una computadora cuando llega un mensaje, especificando cómo maneja el error un PC u otras condiciones no normales.  Permite reflexionar sobre la comunicación por computadora de manera independiente del  hardware de red de cualquier marca. TCP (Protocolo de Control de Transmisión) e  IP (Protocolo de Internet), el IP se encarga de la transmisión de datos y el TCP asegura que todo funcione correctamente, dividiendo la información a enviar en paquetes, y añadiendo a cada paquete los caracteres de control de errores.

 Estos paquetes, a los que llamaré socket’s se envían a la red, y el IP lo transporta hasta el host remoto (destino), al otro extremo, TCP recibe los paquetes y comprueba si no hay errores. Si hubiese un error, TCP pide que se le vuelva a enviar el socket, encargándose de buscar la mejor ruta y asegurándose de que la información llegue en buen estado. TCP/IP es el protocolo por defecto de linux el estandar en todos los Unix y tambien el estandar en Internet. Sus origenes se remontan al año 1969, en la Agencia de Proyectos Avanzados de Investigaciones en Defensa de los Estados Unidos. Alli se inicio la legendaria ARPANET, padre de Internet en el año 1983 Internet adopta como protocolo estandar el TCP/IP, que luego tambien seria incorporado como el estandar de los sistemas Unix.

 Se hizo popular rápidamente gracias a su independencia del fabricante, a que soporta múltiples tecnologías, a que puede funcionar en máquinas de todo tamaño (multiplataforma), y a que su uso mayoritario actualmente en Internet le ha vuelto tan popular.

 TCP/IP no es un solo protocolo, sino que es el conjunto de protocolos que cubren los distintos niveles del modelo OSI. Los dos protocolos mas importantes son el TCP (Protocolo de control de transferencia) y el IP (Protocolo de Internet), que son los que le dan nombre al conjunto.

Estructura Básica

  La arquitectura del TCP/IP consta de cinco niveles o capas en las que se agrupan los protocolos, y que se relacionan con los niveles OSI de la siguiente manera: Primera capa -=Aplicaciones de red=-  Se corresponde con los niveles OSI de aplicación, presentación y sesión. Aquí se  incluyen  protocolos  destinados  a  proporcionar  servicios,  tales  como correo  electrónico(SMTP), transferencia de ficheros (FTP),  conexión  remota (TELNET)  y otros más recientes como el protocolo HTTP (Hypertext Transfer Protocol). Transporte: Coincide con el nivel de transporte del modelo OSI. Los protocolos de este nivel, tales como TCP y UDP, se encargan de manejar los datos y  proporcionar  la fiabilidad necesaria en el transporte de los mismos.

Internet:  Es  el  nivel  de red  del modelo OSI. Incluye al protocolo IP, que se  encarga de enviar los paquetes de información  a  sus  destinos  correspondientes.  Es utilizado con esta finalidad por los protocolos del nivel de transporte.

Físico : Análogo al nivel físico del OSI.

Red : Es la interfaz de la red real. TCP/IP no especifíca ningún protocolo concreto,  asi es que corre por las interfaces conocidas como por ejemplo: 802.2, CSMA/CD, X.25, etc.

NIVEL DE APLICACIÓN
NIVEL DE TRANSPORTE
NIVEL DE INTERNET
NIVEL DE RED
NIVEL FÍSICO

  Para transmitir información a través de TCP/IP, ésta debe ser  dividida  en  unidades  de  menor  tamaño.  Esto  proporciona  grandes ventajas en el manejo  de  los  datos  que  se  transfieren y, por otro lado, esto es algo común en cualquier protocolo de comunicaciones.  En TCP/IP cada una  de  estas  unidades  de  información  recibe  el nombre de "datagrama"  (datagram), y son conjuntos de datos que se envían como mensajes independientes.

CARACTERÍSTICAS DE TCP/IP

  La tarea de IP es llevar los datos (paquetes) a su destino. Las computadoras  que  encuentran las vías para llevar los datos de una red a otra (denominadas enrutadores)  utilizan  IP  para trasladar los datos. En resumen IP mueve los paquetes de datos de una maquina a otra, mientras TCP se encarga del flujo y asegura que los datos estén correctos.

  Las líneas de comunicación se pueden compartir entre varios usuarios. Cualquier tipo de paquete puede transmitirse al mismo tiempo, y se ordenará y combinará cuando llegue a su destino. Compare esto con la manera en que se transmite una conversación telefónica. Una vez que establece una conexión, se reservan algunos circuitos para usted, que  no  puede emplear en otra llamada, aun si deja esperando a su la otra persona mientras usted habla.

  Los datos puede que no se envien directamente entre dos computadoras. Cada paquete pasa  de computadora en computadora hasta llegar a su destino. Éste, claro está, es la manera de cómo se envian los paquetes de maquina en maquina aunque no estén conectadas  directamente  entre sí. Lo que realmente sorprende es que sólo se necesitan  algunos  segundos  para  enviar  un archivo de buen tamaño de una máquina a otra, aunque estén separadas por miles de kilómetros y pese a que los datos tienen que pasar por múltiples computadoras. Una de las razones de la rapidez es que, cuando algo anda mal, sólo es necesario volver a transmitir un paquete, y no todo el mensaje.

  Los paquetes no necesitan seguir la misma trayectoria. La red puede llevar cada paquete de un lugar a otro y usar la conexión más idónea que esté disponible en ese instante. No todos los paquetes  de  los  mensajes  tienen  que  viajar, necesariamente, por la misma ruta, ni necesariamente tienen que llegar todos al mismo tiempo.

  La flexibilidad del sistema lo hace muy confiable.  Si  un  enlace  se  pierde, el sistema usa otro. Cuando usted envía un mensaje, el TCP divide los  datos  en  paquetes,  ordena  éstos  en secuencia, agrega cierta información para control de errores y después los lanza  hacia  fuera, y los distribuye. En el otro extremo, el TCP recibe los paquetes, verifica  si  hay  errores  y los vuelve a combinar para convertirlos en los datos originales. De haber error en algún punto, el  programa  TCP  destino  envía  un  mensaje solicitando que se vuelvan a enviar determinados paquetes.

CÓMO FUNCIONA TCP/IP

  El nivel IP del conjunto de protocolos TCP/IP aporta un interfaz de comunicación no orientado a conexión. Cada datagrama IP que se transmite por la red es independiente de los otros. Por lo tanto, cualquier asociación entre los datagramas para formar un mensaje completo debe ser aportado por los niveles superiores. El interfaz que aporta también se denomina no fiable, esto se traduce en que no garantiza que los datagramas IP vayan o ser recibidos, o recibidos correctamente. Al igual que la característica anterior, deberá ser aportada por los niveles superiores que lo requieran en sus especificaciones, por ej. el TCP.

  Este protocolo es el que permite el encaminamiento de la información a través de Internet, o sea, el que define una red de conmutación de paquetes. La información se fragmenta en pequeños trozos o paquetes (con una capacidad aprox. de 1500 caracteres) que se envían independientemente por la red. Cada paquete es enviado con la dirección del ordenador al que va dirigida la información, yendo cada paquete por una ruta distinta hasta alcanzar su objetivo.

  Un datagrama IP consta de una parte de cabecera y una parte de texto. La cabecera tiene una parte fija de 20 octetos y una parte opcional de longitud variable. El campo Versión indica a qué versión del protocolo pertenece cada uno de los datagramas. Mediante la inclusión de la versión en cada datagrama, no se excluye la posibilidad de modificar los protocolos mientras la red se encuentre en operación.

  Debido a que la longitud de la cabecera no es constante, un campo de la cabecera, IHL, permite que se indique la longitud que tiene la cabecera en palabras de 32 bits. El valor mínimo es de 5. Tamaño 4 bit.

  El campo Tipo de servicio le permite al hostal indicarle a la subred el tipo de servicio que desea. Es posible tener varias combinaciones con respecto a la seguridad y la velocidad. Para voz digitalizada, por ejemplo, es más importante la entrega rápida que corregir errores de transmisión. En tanto que, para la transferencia de archivos, resulta más importante tener la transmisión fiable que entrega rápida. También, es posible tener algunas otras combinaciones, desde un tráfico rutinario, hasta una anulación instantánea. Tamaño 8 bit.

  La Longitud total incluye todo lo que se encuentra en el datagrama -tanto la cabecera como los datos. La máxima longitud es de 65536 octetos(bytes). Tamaño 16 bit.

  El campo Identificación se necesita para permitir que el hostal destinatario determine a qué datagrama pertenece el fragmento recién llegado. Todos los fragmentos de un datagrama contienen el mismo valor de identificación. Tamaño 16 bits.

  Enseguida viene un bit que no se utiliza, y después dos campos de 1 bit. Las letras DF quieren decir no fragmentar. Esta es una orden para que las pasarelas no fragmenten el datagrama, porque el extremo destinatario es incapaz de poner las partes juntas nuevamente. Por ejemplo, supóngase que se tiene un datagrama que se carga en un micro pequeño para su ejecución; podría marcarse con DF porque la ROM de micro espera el programa completo en un datagrama. Si el datagrama no puede pasarse a través de una red, se deberá encaminar sobre otra red, o bien, desecharse.

  Las letras MF significan más fragmentos. Todos los fragmentos, con excepción del último, deberán tener ese bit puesto. Se utiliza como una verificación doble contra el campo de Longitud total, con objeto de tener seguridad de que no faltan fragmentos y que el datagrama entero se reensamble por completo.

  El desplazamiento de fragmento indica el lugar del datagrama actual al cual pertenece este fragmento. En un datagrama, todos los fragmentos, con excepción del último, deberán ser un múltiplo de 8 octetos, que es la unidad elemental de fragmentación. Dado que se proporcionan 13 bits, hay un máximo de 8192 fragmentos por datagrama, dando así una longitud máxima de datagrama de 65536 octetos, que coinciden con el campo Longitud total. Tamaño 16 bits.

  El campo Tiempo de vida es un contador que se utiliza para limitar el tiempo de vida de los paquetes. Cuando se llega a cero, el paquete se destruye. La unidad de tiempo es el segundo, permitiéndose un tiempo de vida máximo de 255 segundos. Tamaño 8 bits.

  Cuando la capa de red ha terminado de ensamblar un datagrama completo, necesitará saber qué hacer con él. El campo Protocolo indica, a qué proceso de transporte pertenece el datagrama. El TCP es efectivamente una posibilidad, pero en realidad hay muchas más.

  Protocolo: El número utilizado en este campo sirve para indicar a qué protocolo pertenece el datagrama que se encuentra a continuación de la cabecera IP, de manera que pueda ser tratado correctamente cuando llegue a su destino. Tamaño: 8 bit.

  El código de redundancia de la cabecera es necesario para verificar que los datos contenidos en la cabecera IP son correctos. Por razones de eficiencia este campo no puede utilizarse para comprobar los datos incluidos a continuación, sino que estos datos de usuario se comprobarán posteriormente a partir del código de redundancia de la cabecera siguiente, y que corresponde al nivel de transporte. Este campo debe calcularse de nuevo cuando cambia alguna opción de la cabecera, como puede ser el tiempo de vida. Tamaño: 16 bit.

  La Dirección de origen contiene la dirección del host que envía el paquete. Tamaño: 32 bit.  La Dirección de destino: Esta dirección es la del host que recibirá la información. Los routers o gateways intermedios deben conocerla para dirigir correctamente el paquete.

 Tamaño: 32 bit.

- Encaminamiento:

  En redes del tipo TCP/IP es necesario tomar una decisión cada vez que se necesita enviar un datagrama. Por ello dos datagramas que tengan el mismo origen y destino y sean consecutivos pueden seguir diferentes rutas hasta alcanzar el nodo receptor.

 Podemos encontrar diferentes algoritmos de encaminado de paquetes.

 Básicamente distinguiremos dos clases:

Encaminado estático.
Encaminado dinámico.

 El encaminado estático escoje una ruta para el datagrama basándose en información recogida en tablas diseñadas en un primer momento y que no son modificadas, salvo en casos de cambio de topología de la red, adición de nuevos nodos, etc.

 El encaminado dinámico tiene en cuenta la carga actual de las distintas partes de la red. El sistema decide basándose en información actual. Esta información puede ser únicamente local, centralizada o distribuida a lo largo de los nodos, con la posibilidad de que éstos intercambien información para ajustar sus tablas de encaminamiento dinámico de forma precisa.

LA DIRECCIÓN DE INTERNET

protocolo IP identifica a cada ordenador que se encuentre conectado a la red mediante su correspondiente dirección. Esta dirección es un número de 32 bit que debe ser único para cada host, y normalmente suele representarse como cuatro cifras de 8 bit separadas por puntos.

La dirección de Internet (IP Address) se utiliza para identificar tanto al ordenador en concreto como la red a la que pertenece, de manera que sea posible distinguir a los ordenadores que se encuentran conectados a una misma red. Con este propósito, y teniendo en cuenta que en Internet se   encuentran conectadas redes de tamaños muy diversos, se establecieron tres clases diferentes de direcciones, las cuales se representan mediante tres rangos de valores:

Clase A: Son las que en su primer byte tienen un valor comprendido entre 1 y 126, incluyendo ambos valores. Estas direcciones utilizan únicamente este primer byte para identificar la red, quedando los otros tres bytes disponibles para cada uno de los hosts que pertenezcan a esta misma red. Esto significa que podrán existir más de dieciséis millones de ordenadores en cada una de las redes de esta clase. Este tipo de direcciones es usado por redes muy extensas, pero hay que tener en cuenta que sólo puede haber 126 redes de este tamaño. ARPAnet es una de ellas, existiendo además algunas grandes redes comerciales, aunque son pocas las organizaciones que obtienen una dirección de "clase A". Lo normal para las grandes organizaciones es que utilicen una o varias redes de "clase B".

Clase B: Estas direcciones utilizan en su primer byte un valor comprendido entre 128 y 191, incluyendo ambos. En este caso el identificador de la red se obtiene de los dos primeros bytes de la dirección, teniendo que ser un valor entre 128.1 y 191.254 (no es posible utilizar los valores 0 y 255 por tener un significado especial). Los dos últimos bytes de la dirección constituyen el identificador del host permitiendo, por consiguiente, un número máximo de 64516 ordenadores en la misma red. Este tipo de direcciones tendría que ser suficiente para la gran mayoría de las organizaciones grandes. En caso de que el número de ordenadores que se necesita conectar fuese mayor, sería posible obtener más de una dirección de "clase B", evitando de esta forma el uso de una de  "clase A".

Clase C: En este caso el valor del primer byte tendrá que estar comprendido entre 192 y 223, incluyendo ambos valores. Este tercer tipo de direcciones utiliza los tres primeros bytes para el número de la red, con un rango desde 192.1.1 hasta 223.254.254. De esta manera queda libre un byte para el host, lo que permite que se conecten un máximo de 254 ordenadores en cada red. Estas direcciones permiten un menor número de host que las anteriores, aunque son las más numerosas pudiendo existir un gran número redes de este tipo (más de dos millones).

Tabla de direcciones IP de Internet.

Clase

Primer byte

Identificación de red

Identificación de hosts

Número de redes

Número de hosts

A

1 .. 126

1 byte

3 byte

126

16.387.064

B

128 .. 191

2 byte

2 byte

16.256

64.516

C

192 .. 223

3 byte

1 byte

2.064.512

254

   En la clasificación de direcciones anterior se puede notar que ciertos números no se usan. Algunos de ellos se encuentran reservados para un posible uso futuro, como es el caso de las direcciones cuyo primer byte sea superior a 223 (clases D y E, que aún no están definidas), mientras que el valor 127 en el primer byte se utiliza en algunos sistemas para propósitos especiales. También es importante notar que los valores 0 y 255 en cualquier byte de la dirección no pueden usarse normalmente por tener otros propósitos específicos.

   El número 0 está reservado para las máquinas que no conocen su dirección, pudiendo utilizarse tanto en la identificación de red para máquinas que aún no conocen el número de red a la que se encuentran conectadas, en la identificación de host para máquinas que aún no conocen su número de dentro de la red, o en ambos casos. El número 255 tiene también un significado especial, puesto que se reserva para el broadcast. El broadcast es necesario cuando se pretende hacer que un mensaje sea visible para todos los sistemas conectados a la misma red. Esto puede ser útil si se necesita enviar el mismo datagrama a un número determinado de sistemas, resultando más eficiente que enviar la misma información solicitada de manera individual a cada uno. Otra situación para el uso de broadcast es cuando se quiere convertir el nombre por dominio de un ordenador a su correspondiente número IP y no se conoce la dirección del servidor de nombres de dominio más cercano.

   Lo usual es que cuando se quiere hacer uso del broadcast se utilice una dirección compuesta por el identificador normal de la red y por el número 255 (todo unos en binario) en cada byte que identifique al host. Sin embargo, por conveniencia también se permite el uso del número 255.255.255.255 con la misma finalidad, de forma que resulte más simple referirse a todos los sistemas de la red. El broadcast es una característica que se encuentra implementada de formas diferentes dependiendo del medio utilizado, y por lo tanto, no siempre se encuentra disponible. En ARPAnet y en las líneas punto a punto no es posible enviar broadcast, pero sí que es posible hacerlo en las redes Ethernet, donde se supone que todos los ordenadores prestarán atención a este tipo de mensajes.

   En el caso de algunas organizaciones extensas puede surgir la necesidad de dividir la red en otras redes más pequeñas (subnets). Como ejemplo podemos suponer una red de clase B que, naturalmente, tiene asignado como identificador de red un número de dos bytes. En este caso sería posible utilizar el tercer byte para indicar en qué red Ethernet se encuentra un host en concreto. Esta división no tendrá ningún significado para cualquier otro ordenador que esté conectado a una red perteneciente a otra organización, puesto que el tercer byte no será comprobado ni tratado de forma especial. Sin embargo, en el interior de esta red existirá una división y será necesario disponer de un software de red especialmente diseñado para ello. De esta forma queda oculta la organización interior de la red, siendo mucho más cómodo el acceso que si se tratara de varias direcciones de clase C independientes.-=Nivel de Transporte. UDP y TCP=-

 Normalmente los procesos que se ejecutan en la máquina no acceden directamente al Nivel de Red (IP), por el contrario interactúan con un nivel superior de abstracción: El nivel de transporte.

 Este nivel, dentro del sistema de protocolos TCP/IP, permite a los procesos enviar y recibir datos a través de los protocolos TCP y UDP. Básicamente, TCP ofrece un servicio fiable y orientado a conexión, mientras que UDP ofrece un servicio no fiable y no orientado a conexión. Al basarse en IP, podemos deducir a partir de estas especificaciones que el protocolo TCP debe aportar todo el servicio relacionado con la conexión y el cierre de la comunicación, así como la fiablilidad del servicio.

 El protocolo UDP únicamente aporta dos características nuevas a IP:

 - Número de puerto (multiplexación).

 - Un checksum opcional. Un checksum es básicamente un campo introducido en el mensaje que permite verificar en destino que los datos no se han corrompido en la comunicación, aunque no es capaz de detectar el 100% de los fallos de transmisión.

 TCP también aporta estas características, aparte de la fiabilidad antes mencionada, consistente en:

Sección realizada por Carlos Esteban Miguens.
E-mail: tang_os@usa.net