Protocole de transfert de fichiers trivial
| 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
- ↑ 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
- Serveur TFTP pour Windows avec prise en charge des autorisations
- Tftpd32 Serveur TFTP open source pour Windows
tftpd(8)- Page de manuel de l' administrateur système FreeBSD