Protocolo TCP/IP

From glossaLAB

[gL.edu] Este artículo recoge contribuciones de Juan Eduardo García, J.M. Díaz Nafría, elaboradas en el contexto de la Clarificación conceptual en torno a los Sistemas de transmisión, bajo la supervisión de J.M. Díaz Nafría.

Historia y Definiciones

El Departamento de Defensa de EE.UU. creó en la década de 1970 el modelo de referencia denominado Protocolo de Control de Transmisión o Protocolo de Internet (abreviado como TCP/IP por sus siglas en inglés: Transmission Control Protocol / Internet Protocol), inicialmente conocido como Modelo DoD de Arquitectura de Internet (como referencia al Departamento de Defensa) con objeto de dar respuesta a la necesidad de interconectar redes con diferentes modelos de interconexión. Dicha necesidad había surgido a partir de los primeros desarrollos de la red de datos ARPANET (Advanced Research Projects Agency Network), en la que luego se basará Internet, llevados a cabo por la Agencia de Proyectos de Investigación Avanzados de Defensa (DARPA, Defense Advanced Research Projects Agency) al tratar de interconectar diferentes tecnologías de transmisión de datos, que incluían servicios de paquetes vía radio, servicios de paquetes por satélite, redes de área local, y otras redes de datos públicas y privadas. Para lograrlo el modelo TCP/IP se define como una arquitectura abierta que permitía la interconexión de las diferentes redes de datos, de donde se deriva el término de inter-net.[1][2]

Figura 1: Encapsulación de datos de aplicación descendiendo a través de las capas del protocolo TCP/IP (RFC 1122) (Fuente: Wikimedia).

El modelo de ARPANET incluía las tres capas representadas en la segunda columna de la tabla 1, mientras que el modelo TCP/IP, en su versión original (columna tercera), desdoblaba la capa de transporte en dos, una de ellas precisamente dedicada a facilitar la interconexión de redes. La figura 1 muestra la relación que existe entre las capas en lo concerniente a los datos y metadatos empleados en cada nivel para facilitar que la información entre los diferentes terminales de origen y destino de la red se encaucen apropiadamente y el intercambio de información se produzca con la calidad requerida. Como puede apreciarse, cada capa añadida –a partir del nivel de aplicación (superior)– introduce una cabecera, respecto al nivel superior precedente, que es empleada para realizar las operaciones de conmutación y transmisión necesarias para cumplir con los criterios establecidos.

Cuando se desarrolló el protocolo no se había propuesto aún el modelo de interconexión de sistemas abiertos (ISO/IEC 7498-1), conocido como modelo OSI, (en inglés, Open Systems Interconnection) y usado como referencia desde que en 1980 lo creara la Organización Internacional de Normalización. Éste modelo considera las siete capas referidas en la columna de la izquierda de la tabla 1. Aunque algunos autores consideran que la capa de enlace del protocolo TPC/IP se desdobla en dos capas del modelo de referencia OSI, otros autores aducen que la capa física del modelo de referencia no está propiamente cubierto en el modelo TCP/IP (según se representa en la tabla). Por esta razón, el modelo TCP/IP actualizado añade una capa adicional, precisamente la capa física.[3]

Tabla 1: capas de los protocolos
Modelo de referencia OSI Modelo ARPANET (RFC 871) Modelo TCP/IP original (RFC 1122) Modelo TCP/IP actualizado
7 Aplicación
Application
3 Aplicación

Application / Process

4 Aplicación
Application
5 Aplicación
Application
6 Presentación
Presentation
5 sesión
Session
4 Transporte
Transport
2 Transporte

Host-to-Host

3 Transporte
Transport
4 Transporte
Transport / Host-to-Host
3 Red
Network
2 Internet
Internet
3 Internet
Internet / Network
2 Enlace de datos
Data Link
1 Interfaz de red

Network interface

1 Enlace / Interfaz de red
Link
2 Enlace de datos
Data Link / Network Access
1 Física
Physical
1 Física
Physical

Capas del modelo TCP/IP actualizado

Capa Física

La capa física (que según lo discutido anteriormente no está propiamente definido en el protocolo TCP/IP original) es la más directamente asociada a las conexiones entre equipos. En ella se definen las especificaciones eléctricas y físicas de los dispositivos y del medio de comunicaciones. Entre las características definidas podemos encontrar niveles de voltaje, temporización en los cambios de voltaje, velocidad de transmisión de datos, distancias de transmisión máximas, características de los conectores físicos y atributos similares. Esta especificación puede hacerse en relación a alguna norma técnica, como puede ser la norma IEEE 802.3 para la conexión física de terminales en una red Ethernet, o el Estándar Recomendado 232 (RS-232, de Recommended Standard 232), que especifica cómo se realiza el intercambio de datos binarios serie entre un Equipo Terminal de Datos (DTE, por Data Terminal Equipment), por ejemplo un ordenador, y un Equipo de Comunicación de Datos (DCE, por Data Communication Equipment), por ejemplo un módem.

Capa de enlace de datos

La capa de enlace opera en el marco de la conexión de red local a la que está enlazada el servidor. En principio TCP/IP está diseñado para ser independiente de los equipos y puede ser implementado virtualmente sobre cualquier tecnología de capa de enlace, lo que incluye no solo implementaciones entre equipos físicos, sino redes privadas virtuales y túneles entre redes. Esta capa facilita los procesos de transmisión y recepción de paquetes (incluido el control de errores y de estructuras de datos) entre las interfaces de la capa de Internet de dos servidores (hosts) diferentes en el mismo enlace. Algunos ejemplos de protocolos de capa de enlace de datos lo constituye la norma IEEE 802.2 que define el control de enlace lógico (LLC) para Redes de Área Local (LAN) y Redes de Área Metropolitana (MAN), o el Protocolo Punto a Punto (PPP), utilizado para establecer conexiones directas entre dos nodos de una red. Cabe mencionar que el grupo de trabajo IEEE 802, creado en 1980 para la normalización de redes de datos, especifica protocolos y servicios correspondientes a las dos capas más bajas del modelo OSI, divididos en la capa lógica de control de enlace (LLC) antes mencionada y la capa de control de acceso al medio (MAC).

Capa de Internet

Esta capa tiene la misión de organizar el flujo del tráfico de internet. Los datos que intercambian a través de Internet se subdividen en pedazos más pequeños, denominados paquetes. Para la organización e intercambio del flujo de datos se emplean las direcciones IP consistentes en identificadores únicos asignados a cada dispositivo o dominio que se conecta a Internet. Cada paquete IP contiene tanto la dirección IP del dispositivo o dominio que envía el paquete como la dirección IP del destinatario, de forma similar a como se incluye la dirección de destino y la dirección de retorno en un correo. Actualmente existen dos versiones del protocolo IP, la versión 4 (IPv4) y la versión 6 (IPv6).[2]

Dentro de esta capa también se encuentra el protocolo de resolución de direcciones (ARP) y el protocolo de mensajes de control de Internet (ICMP).

Capa de transporte

Los protocolos de la capa de transporte dan soporte a la capa de aplicación, enviando los datos sin importar el contenido. Se cuenta con dos protocolos principales[2]:

  • Protocolo de Control de Transmisión (TCP), ampliamente utilizado para el control de flujo, reensamblado de paquetes y acuses de recibo. Se trata de un protocolo orientado a conexión que utiliza un saludo en tres vías.
  • Protocolo de Datagrama del Usuario (UDP) que ofrece menor seguridad que TCP y carece de corrección de errores. Se trata de un protocolo no orientado a conexión en el que los datos se envían sin verificar previamente el destino. A pesar de ello, es muy utilizado debido al bajo consumo de recursos de red asociado.

Aunque menos frecuente que los anteriores, el protocolo de transmisión de control de corriente (SCTP, Stream Control Transmission Protocol), lanzado en el año 2000 por el Grupo de Trabajo de Ingeniería de Internet (IETF, v. Organismos de normalización) combinando los protocolos TCP y UDP, aunque su uso es restringido debido a que los sistemas operativos Windows o MacOs no lo soportan.

Capa de aplicación

Los protocolos de la capa de aplicación "describen el conjunto de normas y convenciones que rigen la forma en que los dispositivos de una red intercambian información"[2], como es el caso del protocolo Telnet para conexiones remotas que permite que los usuarios utilicen recursos disponibles en la red como si estuvieran localmente conectados. Cabe destacar en el nivel de aplicación los siguientes protocolos:

  • Protocolo simple de administración de red (SNMP), utilizado casi exclusivimente en redes TCP/IP y que sirve, entre otras funciones importantes, para monitoriza, controlar y administrar los dispositivos de red.
  • Protocolo de configuración dinámica del host (DHCP) que asigna direcciones IP de forma dinámica, permitiendo reutilizar servidores (host) que están disponibles.

Pero otros protocolos de este nivel, como HTTP, FTP, TFTP, SMTP, DNS, etc. son de uso frecuente.

Código

Los códigos siguientes de MATLAB ilustran como establecer una conexión entre un servidor y cliente para la transmisión de una sencilla secuencia de datos empleando el protocolo TCP/IP.[4] Para ello en primer lugar se crea un servidor TCP/IP que permanece a la escucha de una petición de conexión de cliente en un puerto y dirección IP especificados, seguidamente se crea un cliente que se conecta al servidor. Finalmente se transcriben datos desde el servido al cliente conectado.

1) Creación del servidor. El siguiente comando crea un servidor TCP/IP que se queda a la escucha de conexiones en el servidor local (localhost) y puerto 3000.

server = tcpserver("localhost",3000)

Lo que devuelve en la consola la siguiente salida (que podrá ser diferente dependiendo del equipo):

server = 
  TCPServer with properties:
        ServerAddress: "127.0.0.1"
           ServerPort: 3000
            Connected: 0
        ClientAddress: ""
           ClientPort: []
    NumBytesAvailable: 0

Donde puede verse que no hay ningún cliente conectado. 2) Creación de un cliente conectado al servidor. A continuación se crea un cliente TCP/IP client para conectar al servidor objeto usando tcpclient, debiendo usar la misma dirección IP y número de puerto usado para crear el servidor.

client = tcpclient("localhost",3000)

Lo que devuelve en la consola la siguiente salida:

client = 
  tcpclient with properties:
              Address: 'localhost'
                 Port: 3000
    NumBytesAvailable: 0

Si ahora comprobamos los valores Connected, ClientAddress, y ClientPort del servidor ejecutando el comando server obteniendo la siguiente salida en la consola:

server = 
  TCPServer with properties:
        ServerAddress: "127.0.0.1"
           ServerPort: 4000
            Connected: 1
        ClientAddress: "127.0.0.1"
           ClientPort: 65136
    NumBytesAvailable: 0

Donde observamos ahora que el servidor, server, ha aceptado exitosamente la petición cliente, client y que éste ha establecido una conexión con el servidor. 3) Transferencia de datos entre servidor y cliente. Puede ahora enviarse datos al cliente escribiéndolos usando el objeto server, usando el comando write:

write(server,"bienvenidos a glossaLAB","string")

Ya que el cliente está conectado al servidor, estos datos estarán ahora disponibles en el cliente. Para ello pueden leerse los datos del objeto client.

read(client,11,"string")

Lo que devuelve en la consola la siguiente salida la lectura de 11 caracteres:

ans = 
    "Bienvenido "

Y si volvemos a repetir el mismo comando, se leerán los siguientes once caracteres, "a glossaLAB", ya que los primeros once ya habían sido entregados por el servidor.

Referencias

  1. Hafner, Katie; Lyon, Matthew (1996). Where wizards stay up late : the origins of the Internet. New York: Simon & Schuster. p. 263. [Consultado el 10/5/2023 en Internet Archive].
  2. 2.0 2.1 2.2 2.3 Arignello, E. (2020). Redes CISCO - Guía de Estudio para la certificación CCNA 200-301. Madrid: Paracuellos de Jarama: RA-MA Editorial.
  3. Tanenbaum, Andrew S. (2003). Computer Networks. Hoboken, New Jersey: Prentice Hall. p. 42. [Consultado el 10/5/2023 en Internet Archive]
  4. Mathwoks (s.f.). tcpserver. Create TCP/IP server. Ayuda de Mathworks. [Consultado el 11/05/2023 en Mathworks help center]