Para que dos sistemas informáticos puedan intercambiar datos en la red, es indispensable disponer de una base de comunicación común. Uno de los protocolos más simples desarrollados con este fin es el Trivial File Transfer Protocol (TFTP), un protocolo que tuvo mucha importancia durante los primeros tiempos de Internet.
¿Qué es el Protocolo TFTP?
El protocolo Trivial File Transfer Protocol, en su forma abreviada TFTP, es un protocolo cliente-servidor muy simple que regula la transferencia de archivos en redes informáticas. Se definió originalmente en junio de 1981 en el RFC 783, si bien en la actualidad está vigente el estándar RFC 1350, publicado en 1992. Por defecto, el protocolo TFTP se basa en el protocolo mínimo de nivel de transporte UDP (User Datagram Protocol), que ofrece la posibilidad de transmitir datos sin necesidad de una conexión fija entre los miembros de la comunicación. Se trata de un protocolo de transferencia de archivos que funciona mediante paquetes de datos. Forma parte de la familia de protocolos TCP/IP y fue específicamente diseñado para que su implementación fuese lo más sencilla y ligera posible.
Por esta razón, su funcionalidad consiste principalmente en la lectura o escritura de un archivo o un correo electrónico de un servidor. Sin embargo, con el protocolo TFTP no es posible listar directorios o establecer permisos usando chmod. TFTP utiliza el puerto 69. Posteriormente, la comunicación se produce a través de números de puerto asignados individualmente (entre el 1024 y el 65535), que el servidor del protocolo TFTP envía al cliente solicitante a través de identificadores TID (Transfer Identifiers).
Muchos sistemas operativos tienen implementados un servidor y un cliente TFTP propios para poder realizar la transferencia de archivos a través del protocolo. Por ejemplo, muchas versiones Linux y Windows (especialmente en la versión servidor) presentan por defecto las herramientas de línea de comandos tftpd (servidor) y tftp (cliente). Además, existen otras soluciones de terceros, como el software de código abierto Tftpd32, que incluye tanto al servidor como al cliente.

¿Cómo Funciona el Protocolo TFTP?
La transferencia de archivos a través de TFTP se basa siempre en una solicitud de acceso del cliente, bien de lectura bien de escritura. Esta solicitud funciona al mismo tiempo como petición de conexión que se concede automáticamente en el momento en el que el servidor acepta el acceso. A continuación, el cliente o el servidor envía el archivo que corresponda en bloques de tamaño fijo. En las primeras versiones del protocolo, se utilizaba un valor fijo de 512 bytes, pero, a partir del RFC 2348, el servidor y el cliente tienen la posibilidad de negociar en cada caso el tamaño del bloque.
Originalmente, el tamaño de los archivos enviados a través de TFTP estaba limitado a 32 MB. Pero desde que publicaron el RFC 2347 en 1998, se aumentó el límite a 4 GB. La transferencia se realiza bloque a bloque. El servidor no envía un nuevo bloque hasta que reciba el paquete de confirmación del bloque anterior. El paquete de datos final se identifica por ser más pequeño del tamaño establecido. Si un paquete se pierde, se generará un timeout, tras el que se efectuará la retransmisión del último paquete. De esta manera, el emisor del paquete perdido sabrá que tiene que retransmitir dicho paquete.
Cualquier error que ocurra al transferir archivos mediante TFTP dan lugar a paquetes de error que en la mayoría de los casos causan la finalización de la transferencia. Las posibles causas de error son:
- No es posible aceptar una solicitud de transferencia, por ejemplo, porque el archivo no se ha podido encontrar, el usuario no existe o se ha producido una violación de permisos (archivo protegido, etc.).
- Los clientes o servidores reciben un paquete que no se puede explicar por un retraso o duplicación en la red. Es el caso, por ejemplo, de paquetes con formato incorrecto.
- Se pierde el acceso a un recurso necesario, por ejemplo, si no hay espacio en el disco duro.
Explicación de FTP (Protocolo de Transferencia de Archivos), SFTP y TFTP.
¿Cómo se Estructuran los Paquetes TFTP?
El protocolo TFTP utiliza cinco tipos de paquetes, cada uno de los cuales empieza con un campo de código de operación de 16 bits (Operation Code) con el valor correspondiente:
| Código de Operación | Tipo de Paquete | Descripción |
|---|---|---|
| 1 | RRQ (Read request) | Solicitud de lectura |
| 2 | WRQ (Write request) | Solicitud de escritura |
| 3 | DATA (Data) | Paquete de datos |
| 4 | ACK (Acknowledgement) | Paquete de confirmación |
| 5 | ERROR (Error) | Paquete de error |
Sin embargo, el valor del código de operación no es el único componente que distingue la estructura de los tipos de paquetes listados.
Crear Paquetes de Lectura (RRQ) y Paquetes de Escritura (WRQ) TFTP
El cliente TFTP comienza la operación al enviar al servidor TFTP una solicitud de lectura (paquete RRQ) o de escritura (paquete WRQ), que se diferencian solo en el código de operación. Por lo demás, los dos tipos de paquetes se caracterizan por el siguiente formato:
Si el cliente soporta las opciones TFTP (RFC 2347), se podrán agregar tras la cadena de caracteres que indica el modo de la transferencia (incluyendo el campo de 8 bits formado por ceros). Los mensajes RRQ y WRQ empiezan los dos con el campo de código de la operación de 16 bits que caracteriza al protocolo. Como se muestra en la primera tabla, los paquetes RRQ utilizan el valor "1", mientras que los paquetes WRQ utilizan el valor "2". A esto le sigue una secuencia de bits en formato NetASCII de tamaño variable que contiene el nombre del archivo que hay que leer o enviar. Este campo de 8 bits está formado por ceros. El formato NetASCII es un formato de 8 bits ASCII especial que deja sin definir los caracteres de control que no suelen utilizarse. Contiene el bloque completo de 95 caracteres imprimibles desde x20 a x7E (32-126) y algunos caracteres especiales (concretamente NUL, CR, LF). Otra cadena de longitud variable contiene la información sobre el modo de transferencia de los datos. El final de este campo se indica mediante un grupo de ceros de 8 bits.
Crear Paquetes de Datos (DATA) en TFTP
Los paquetes DATA contienen archivos que se van a intercambiar entre cliente y servidor. La transferencia de estos datos se realiza en bloques, por lo que un mensaje DATA en TFTP contiene exclusivamente una parte del archivo, salvo en aquellos casos en que el tamaño total sea inferior al tamaño establecido por defecto en 512 bytes o el tamaño especificado para ese bloque concreto. El formato de los paquetes de datos tiene la siguiente apariencia:
Los paquetes de datos TFTP pueden ser enviados tanto por el servidor como por el cliente. Los paquetes DATA también comienzan con el campo de código de operación que, en este caso, tiene asignado el valor "3". La siguiente secuencia de 16 bits identifica el número del bloque de datos, donde el valor "1" sirve como número de inicio. Este valor se incrementa automáticamente de uno en uno con cada bloque de datos adicional asociado al archivo. Los bloques pertenecen al campo de datos y tienen un tamaño de 0 a 512 bytes (4096 bits), a menos que el servidor y el cliente TFTP hayan establecido un tamaño máximo diferente para los bloques. El último bloque, con el que se indica el final de la transferencia, es al menos un bit más pequeño del tamaño máximo estipulado. Es decir, con un tamaño por bloque de 512 bytes, el último bloque tendría de 0 a 511 bytes. Si se da el caso de que el último paquete con el resto de archivos tuviese el mismo tamaño que los bloques anteriores, el remitente todavía haría llegar un paquete con un bloque de datos vacío.
Estructura de los Paquetes ACK del Protocolo TFTP
Todos los paquetes WRQ, así como todos los paquetes de datos que no marcan el final de la transferencia de archivos, deben ser confirmados mediante un mensaje ACK siempre y cuando el Trivial File Transfer Protocol funcione correctamente (salvo que se produzca un timeout). Las solicitudes de acceso de lectura a un archivo (paquetes RRQ) no son confirmadas por ACK sino por paquetes DATA. La estructura de estos mensajes de confirmación es muy simple:
Los mensajes ACK se confirman, como las peticiones RRQ, mediante paquetes DATA. Los mensajes ACK utilizados en la comunicación del protocolo TFTP están formados por un código de operación de 16 bits, que toma el valor "4", y el número de 16 bits del bloque de datos que confirma el mensaje ACK. Si se trata de una respuesta a una solicitud WRQ, el paquete ACK tiene como número de bloque de datos el valor "0".
Estructura del Mensaje de Error en TFTP (ERROR)
El cliente o el servidor envían los mensajes de ERROR en cuanto se produce un fallo en la comunicación TFTP. Por ello, estos paquetes son una posible respuesta a todos los tipos de paquetes ya listados. Los paquetes de error están estructurados de la siguiente manera:
El cliente y el servidor TFTP solo necesitan utilizar el código de error de 16 bits para indicar el error. Al código de operación con valor "5", que aparece en los mensajes de ERROR, le sigue un campo de 16 bits con el código de error. Por ejemplo, el valor "1" significa que no se pudo encontrar el archivo correspondiente, mientras que el valor "6" indica al receptor que el archivo ya existe. El mensaje de error que se muestra ayuda al usuario a comprender el problema. Ese es uno de los motivos por el que esta cadena de longitud variable se encuentra normalmente en formato NetASCII. El paquete contiene al final un campo de 8 bits formado por ceros.

Pros y Contras del Protocolo TFTP
Una de las principales ventajas del protocolo TFTP es su simplicidad, pues está diseñado para permitir la escritura y la lectura de archivos sin tener que establecer una conexión entre el cliente y el servidor. Por ello, el protocolo TFTP no solo es fácil de implementar, sino que también es el precursor de la transferencia rápida de archivos. Los identificadores TID y los números de bloque de datos únicos hacen que el archivo llegue en su totalidad al destinatario.
Sin embargo, la falta de cifrado y de un mecanismo de control de autenticación y acceso hacen que el envío de archivos confidenciales a través del protocolo TFTP suponga riesgos altos. En su lugar, pueden utilizarse otras alternativas más seguras como FTP, un protocolo más complejo. Además, muchos servidores TFTP no permiten eliminar y renombrar archivos.
¿En Qué Casos se Utiliza el Trivial File Transfer Protocol?
El protocolo TFTP está estrechamente relacionado con el llamado arranque en red (también conocido como "bootstrapping"). Con esta técnica, que se utilizó especialmente en la década de los años 80, un ordenador de red obtiene e inicia el sistema operativo desde un servidor central. Especialmente en el caso de terminales y estaciones de trabajo sin disco duro, que no permitían la instalación de su propio sistema operativo, el desarrollo y la implementación del protocolo TFTP fue crucial. El protocolo de transferencia de archivos era compatible con BOOTP, publicado en 1985, que permitía a los clientes de la red obtener de forma automática la dirección del servidor TFTP.
Hoy en día, el protocolo Trivial File Transfer Protocol ya no es tan popular. En las redes donde los usuarios disponen de sus propios sistemas operativos de forma estándar, el método de arranque solo se encuentra de forma aislada y modificada. Por ejemplo, las instalaciones del sistema, el mantenimiento, las actualizaciones de firmware o los análisis de virus pueden ayudar a reducir la sobrecarga administrativa a través de los llamados sistemas operativos auxiliares.
También en el caso de las memorias de solo lectura (ROM), es frecuente encontrar implementaciones de TFTP debido a que requieren poco esfuerzo, pues este protocolo no exige que haya una conexión. Además, los servidores TFTP se utilizan para guardar las configuraciones y crear copias de seguridad de la imagen CISCO IOS y para almacenar los registros de carga de las centrales de Siemens.

El Protocolo de transferencia de archivos trivial (TFTP) es una utilidad de software de Internet para la transferencia de archivos que es más simple de usar que el File Transfer Protocol (FTP) pero menos capaz. Se utiliza cuando no se requiere la autenticación del usuario y la visibilidad del directorio. TFTP utiliza el Protocolo de Datagrama de Usuario (UDP) en lugar del Protocolo de Control de Transmisión (TCP).
TFTP tiene un diseño muy simple y tiene características limitadas en comparación con el File Transfer Protocol (FTP). TFTP no proporciona autenticación y seguridad mientras transfiere archivos. Como resultado, generalmente se usa para transferir archivos de arranque o archivos de configuración entre máquinas en una configuración local. Debido a su diseño simple, los usuarios rara vez lo utilizan de forma interactiva en una red informática. Su falta de seguridad también lo hace peligroso para su uso en Internet.
TFTP es muy útil para computadoras de arranque y dispositivos que no tienen unidades de disco duro o dispositivos de almacenamiento porque puede implementarse fácilmente usando una pequeña cantidad de memoria. Esta característica de TFTP lo convierte en uno de los elementos centrales del protocolo de arranque de red o del entorno de ejecución previo al arranque (PXE).
La transferencia de datos a través de TFTP generalmente se inicia a través del puerto 69. Sin embargo, los puertos de transferencia de datos son seleccionados por el emisor y el receptor cuando se inicializa la conexión.
Usos comunes incluyen: arranque de red, instalaciones de red del sistema operativo, actualización de IOS de dispositivos Cisco, copia de seguridad y recuperación de archivos de configuración de dispositivos de red. Hoy en día, TFTP se encuentra en los routers de banda ancha y los routers de la red comercial. Los administradores de redes domésticas usan TFTP para actualizar el firmware del router, mientras que los administradores profesionales usan TFTP para distribuir software a través de redes corporativas.
Al igual que FTP, TFTP utiliza software de cliente y servidor para hacer conexiones entre dos dispositivos. Desde un cliente TFTP, los archivos individuales se pueden copiar (cargar) o descargar desde el servidor. Cuando un servidor concede esta solicitud, la conexión se abre y el archivo se envía en bloques de longitud fija de 512 bytes.
Los clientes TFTP de línea de comandos se incluyen en las versiones actuales de Microsoft Windows, Linux y macOS. Los clientes TFTP con interfaces gráficas también están disponibles como freeware, por ejemplo, TFTPD32 que incluye un servidor TFTP. Windows TFTP Utility es otro ejemplo de un cliente y servidor GUI para TFTP.
El Protocolo de transferencia de archivos trivial difiere del FTP en estos aspectos clave: Las versiones originales de TFTP transfirieron archivos de hasta 32 MB de tamaño. Algunos servidores TFTP más nuevos eliminan esta restricción o pueden limitar el tamaño del archivo a 4 GB. A diferencia de FTP, TFTP no tiene una función de inicio de sesión, por lo que no solicita un nombre de usuario y contraseña.
El uso de xinetd (eXtended InterNET Daemon) es común para gestionar servicios como TFTP. xinetd controla procesos que requieren conectividad con Internet y permite configurar aspectos como la seguridad y el consumo de recursos. El parámetro wait en la configuración de xinetd indica si el servicio es monoproceso (no) o multiproceso (yes), siendo este último lo normal en las CPUs modernas. El parámetro Server define el binario a ejecutar, y Disable especifica si el servicio debe iniciarse con xinetd.
Para verificar la correcta operación de un servidor TFTP, es necesario crear el directorio /tftpboot (si no existe) y colocar un archivo de prueba dentro. Luego, se puede intentar descargar este archivo desde otro equipo con un cliente TFTP. Una configuración más avanzada implica combinar TFTP con un servidor DHCP que incorpore funciones TFTP. Esto permite que los dispositivos obtengan una dirección IP y, simultáneamente, la dirección del servidor TFTP desde el cual descargar sus archivos de configuración. Es posible organizar los archivos de configuración en subdirectorios específicos basados en el fabricante del dispositivo, utilizando la información de la dirección MAC.
El protocolo TFTP, a pesar de su simplicidad, sigue siendo una herramienta valiosa en escenarios específicos de administración de redes, especialmente donde la eficiencia y la ligereza son primordiales. Su integración con otros servicios como DHCP y xinetd permite crear soluciones robustas para la gestión de dispositivos.
tags: #instalacion #de #tftp #explicacion