TFTP

Το πρωτόκολλο Trivial File Transfer Protocol (TFTP) είναι ένα πολύ απλό πρωτόκολλο για την μεταφορά αρχείων μέσω του Διαδικτύου. Εμφανίστηκε για πρώτη φορά το 1980 και παρέχει μερικές μόνο από τις λειτουργίες που διαθέτει το πρωτόκολλο FTP. Δεδομένου ότι είναι τόσο απλό, η ποσότητα μνήμης που χρειάζεται για να λειτουργήσει είναι σχετικά μικρή, πράγμα πολύ σημαντικό την εποχή που εμφανίστηκε διότι η μνήμη υπολογιστών ήταν ιδιαιτέρως περιορισμένη. Το TFTP χρησιμοποιήθηκε κυρίως για την έναρξη (booting) διαφόρων δρομολογητών (routers) οι οποίοι δεν είχαν σκληρούς δίσκους ή δισκέτες για να αποθηκεύσουν το λειτουργικό σύστημα. Σήμερα χρησιμοποιείται για την μεταφορά μικρών αρχείων μεταξύ των υπολογιστών ενός δικτύου. Το TFTP βασίζεται κυρίως σε ένα προγενέστερο πρωτόκολλο, το EFTP. Λόγω της απλότητάς του, το TFTP ήταν ένα από τα πρώτα πρωτόκολα της σουίτας πρωτοκόλλων TCP/IP που υλοποιήθηκε. Στην αρχική έκδοση του πρωτοκόλλου υπήρχε ένα αρκετά σημαντικό λάθος, το οποίο ανακαλύφθηκε σύντομα και ονομάστηκε orcerer's Apprentice Syndrome. Διάφορα σκουλίκια υπολογιστών (worms), όπως για παράδειγμα ο Blaster, χρησιμοποιούν το TFTP για να μεταδοθούν και να μολύνουν νέους υπολογιστές.

 Το TFTP χρησιμοποιεί την πόρτα UDP 69, σε αντίθεση με το FTP το οποίο χρησιμοποιεί την πόρτα TCP 21. Επίσης, το TFTP δεν μπορεί να απεικονίσει τα περιεχόμενα των φακέλων και δεν περιλαμβάνει κανενός είδους μηχανισμό αυθεντικοποίησης χρηστών ή κρυπτογράφησης. Χρησιμοποιείται αποκλειστικά για την ανάγνωση ή εγγραφή αρχείων σε έναν απομακρυσμένο server. Υποστηρίζει τριών ειδών μεταφοράς αρχείων "netascii", "octet" και "mail". Τα πρώτα δύο είναι αντίστοιχα με τα είδη "ASCII" και "image" (binary) που υποστηρίζει το FTP, ενώ το τρίτο έχει πλέον καταργηθεί στην πράξη και δεν χρησιμοποιείται. Αρχικά το πρωτόκολλο επέτρεπε την μεταφορά αρχείων με μέγεθος το πολύ 32ΜΒ, αρκετά μεγάλο για την εποχή εκείνη. Αργότερα όμως έγινε επέκταση στο πρωτόκολλο και τώρα πλέον υποστηρίζει αρχεία μεγέθους 4GB και περισσότερο. Όπως αναφέρθηκε και προηγουμένως, το TFTP χρησιμοποιεί πακέτα UDP και κατά συνέπεια θα πρέπει το ίδιο το πρωτόκολλο να καθορίζει μηχανισμούς αξιόπιστης μεταφοράς δεδομένων και εγκαθίδρυσης συνόδου (session). Κάθε αρχείο που μεταφέρεται μέσω TFTP θεωρείται μία ξεχωριστή συναλλαγή μεταξύ δύο υπολογιστών. Αφού το πρωτόκολλο TFTP δεν υποστηρίζει μηχανισμούς ασφάλειας, είναι επικίνδυνη η χρήση του στο Διαδίκτυο. Κατά συνέπεια χρησιμοποιείται πλέον μονάχα σε ιδιωτικά ή τοπικά δίκτυα, όπου δεν υπάρχουν κίνδυνοι ασφάλειας. Μία σύνοδος (session) TFTP διεξάγεται σύμφωνα με τα ακόλουθα βήματα: Ο υπολογιστής Α στέλνει στον υπολογιστή Β ένα πακέτο που περιέχει είτε μία αίτηση ανάγνωσης (RRQ - Read ReQuest) είτε μία αίτηση εγγραφής (WRQ - WriteReQuest), μαζί με το όνομα του αρχείου και τον τρόπο μεταφοράς. Το πακέτο αυτό αποστέλλεται προς την πόρτα 69, την προεπιλεγμένη πόρτα του TFTP.Ο υπολογιστής Β απαντά στην αίτηση του υπολογιστή Α. Εάν η αίτηση ήταν αίτηση ανάγνωσης, τότε του στέλνει κατευθείαν ένα πακέτο δεδομένων (DATA). Αντιθέτως, εάν πρόκειται για αίτηση εγγραφής, τότε ο υπολογιστής Β στέλνει ένα πακέτο αποδοχής (ACK - ACKnowledgement. Ο υπολογιστής Β για να στείλει το πακέτο δεσμεύει μία νέα ελεύθερη πόρτα και το στέλνει από εκεί. Στην συνέχεια όλα τα πακέτα που φτάνουν προς τον υπολογιστή Β ή φεύγουν από αυτόν χρησιμοποιούν αποκλειστικά την πόρτα αυτή ούτως ώστε να αποδεσμεύσουν την πόρτα 69 και να επιτρέψουν και σε άλλους υπολογιστές να συνδεθούν.Στην συνέχεια, ο ένας υπολογιστής (ο υπολογιστής Α εάν πρόκειται για αίτηση ανάγνωσης και υπολογιστής Β εάν πρόκειται για αίτηση εγγραφής) αποστέλλει συνεχώς πακέτα δεδομένων προς τον δεύτερο υπολογιστή. Ο τελευταίος απαντά σε κάθε πακέτο με ένα πακέτο ACK ούτως ώστε να δηλώσει στον πρώτο ότι το πακέτο δεδομένων έχει ληφθεί με επιτυχία.Στο τέλος της μεταφοράς των δεδομένων, η σύνδεση τερματίζεται. FTP SSH