close

Protocole de transfert de fichiers trivial

Aller à la navigation Aller à la recherche
TFTP
Nom Protocole de transfert de fichiers trivial
Niveau (selon le modèle OSI ) Appliqué
Famille UDP / IP
Créé en ~ 1980
Port/identifiant 69/UDP
Objet du protocole Transfert de fichier
spécification RFC 1350 / STD 33
Principales implémentations (clients) RIS Windows, tftp.exe
Implémentations de base ( serveurs ) Serveur WinAgents TFTP, RIS Windows, tftpd
Extensibilité Options ( RFC 2347 )
Extensions majeures Taille de bloc ( RFC 2348 ), Délai de transmission ( RFC 2349 )

Le protocole TFTP ( Trivial File Transfer Protocol ) est principalement utilisé pour le démarrage initial des postes de travail sans disque .  TFTP, contrairement à FTP , ne contient pas de capacités d' authentification (bien que le filtrage par adresse IP soit possible) et est basé sur le protocole de transport UDP .

Application

L'objectif principal de TFTP est de rendre le client facile à mettre en œuvre. En tant que tel, il est utilisé pour démarrer des postes de travail sans disque, télécharger des mises à jour et des configurations sur des périphériques réseau "intelligents", enregistrer des statistiques à partir de mini-PBX ( CDR ) et de routeurs / pare -feu matériels .

Utilisé pour la programmation IAP de systèmes embarqués développés sur la base de microcontrôleurs.

Sécurité

Étant donné que le protocole ne prend pas en charge l'authentification, la seule méthode d'identification d'un client est son adresse réseau (qui peut être usurpée). Généralement, sur les systèmes Unix, seul le répertoire /tftpboot est disponible pour tftpd. Cependant, dans les anciens serveurs TFTP, il était possible d'obtenir le fichier de mots de passe avec la commande RRQ ../etc/passwd.

Le démon tftpd (une des implémentations du serveur tftp) refuse de traiter les fichiers qui contiennent la combinaison "/../" dans leur nom ou qui commencent par "../". L'écriture n'est autorisée que dans les fichiers qui existent déjà (de n'importe quelle taille, comme zéro) et sont disponibles pour l'écriture publique (autorisations : -rw-rw-rw-) [1] .

Une protection supplémentaire contre l'accès à des fichiers arbitraires est fournie en remplaçant le répertoire racine par le répertoire tftpd (généralement /usr/TFTPRoot).

Types de colis

D'abord, dans le paquet TFTP, il y a un champ de 2 octets qui détermine le type du paquet :

  • Demande de lecture (RRQ, #1) - une demande de lecture d'un fichier.
  • Demande d'écriture (WRQ, #2) - une demande d'écriture d'un fichier.
  • Données (DATA, #3) - données transmises via TFTP.
  • Accusé de réception (ACK, #4) - accusé de réception du paquet.
  • Erreur (ERR, #5) — une erreur.
  • Accusé de réception d' option (OACK, #6) - confirmation des options.

Requêtes de lecture et d'écriture

Pour démarrer le transfert de données, le client doit envoyer un paquet WRQ ou RRQ au serveur. Les deux packages ont le même format :

0x01/0x02 (type de paquet) Nom de fichier 0x00 (fin de ligne) Mode de transfert 0x00 (fin de ligne) Options… (le cas échéant)
2 octets chaîne en ASCII 1 octet chaîne en ASCII 1 octet Voir "Options"

Il existe 2 modes de transfert dans TFTP (le mode Mail défini dans IEN 133 est obsolète) :

  • netascii - le fichier est encodé en ASCII avant d'être transféré.
  • octet - le fichier est transféré sans modifications.

Après avoir reçu le paquet RRQ par le serveur, celui-ci démarre immédiatement la transmission des données. Dans le cas d'une requête WRQ, le serveur doit envoyer un paquet ACK avec le numéro de paquet 0.

Processus de transfert de données

Après avoir reçu la demande RRQ, le serveur envoie immédiatement un paquet avec des données et avec un ID de paquet égal à un en guise d'accusé de réception. Dans WRQ, ACK avec ID égal à zéro est utilisé comme accusé de réception. Un total de 32 Mo peut être transféré via TFTP (65536 * 512 / 1024²), cependant, en raison de l'utilisation d'un entier signé au lieu d'un non signé, la taille de l'accusé de réception est limitée à 16 mégaoctets. Cependant, si le client et le serveur prennent en charge les extensions de protocole RFC 2347 et RFC 2348 , la taille maximale du fichier à transférer passe à 4 Go.

Options TFTP

La RFC 2347 a fourni un format pour les options qui peuvent être ajoutées à la fin d'un paquet RRQ et d'un paquet WRQ :

Code d'option 0x00 (fin de ligne) Valeur d'option 0x00 (fin de ligne)
chaîne en ASCII 1 octet chaîne en ASCII 1 octet

Il peut y avoir plusieurs options. Ensuite, ils se succéderont. L'ordre des options n'a pas d'importance.

En réponse à un RRQ (ou WRQ) avec options, le serveur DOIT envoyer un OACK avec une liste des options acceptées par le serveur. Les options les plus courantes sont :

Nom Défini dans Code d'option
Taille de bloc RFC2348 taille noire La valeur de l'option est un nombre qui prend une valeur de 8 à 65464, indiquant la taille du bloc.
Intervalle de retransmission (Timeout) RFC2349 temps libre La valeur de l'option est un nombre qui prend une valeur de 1 à 255, indiquant le temps d'attente avant de retransmettre le bloc en secondes.
taille du fichier RFC2349 tsize La valeur de l'option est un nombre indiquant la taille du fichier transféré en octets.

Erreurs

Dans TFTP, les informations d'erreur ont le format suivant :

0x05 (type de paquet) Code d'erreur Erreur de description 0x00 (fin de ligne)
2 octets 2 octets chaîne en ASCII 1 octet

Le code d'erreur peut prendre l'une des valeurs listées dans STD 33 (à l'exception du code 8 - il est décrit dans la RFC 2347 ). Les voici:

Code d'erreur La description
0 Aucun code défini, voir le texte d'erreur
une Fichier introuvable
2 L'accès est refusé
3 Impossible d'allouer de l'espace disque
quatre Fonctionnement TFTP incorrect
5 Mauvais ID de transfert
6 Le fichier existe déjà
sept L'utilisateur n'existe pas
huit Mauvaise option

Schéma d'URI

RFC 3617 définit le format URI pour TFTP. Il ressemble à ceci :

tftp://[hôte de destination]/[fichier souhaité] ;mode=[mode de transfert]

Par exemple:

tftp://example.com/todo.txt;mode=netascii

Normes

Options

Remarques

  1. Pages de manuel FreeBSD 4.9 tftpd

Littérature

  • W.Richard Stevens. "Protocoles TCP/IP. Guide pratique. Chapitre 15, « Protocole de transfert de fichiers TFTP simple ». ISBN 5-7940-0093-7
  • H. Osterloch. TCP/IP. Une famille de protocoles de transfert de données dans les réseaux informatiques. Chapitre 16 "Protocole de transfert de fichiers simple (TFTP)". ISBN 5-93772-039-3

Liens