Δίκτυα Υπολογιστών Κεφάλαιο 7 – Πρωτόκολλα FTP και TFTP

Δημοσιεύτηκε από τον/την codebrakes στις

Δίκτυα Υπολογιστών
Κεφάλαιο 7 - Πρωτόκολλα FTP και TFTP

Τι είναι το πρωτόκολλο FTP

Το πρωτόκολλο μεταφοράς αρχείων (File Transfer Protocol – FTP) ορίζει τους κανόνες για την μεταφορά αρχείων. Για παράδειγμα σε μια τυπική σύνοδο FTP ο χρήστης έχει έναν τοπικό υπολογιστή που θέλει να μεταφέρει αρχεία προς έναν απομακρυσμένο εξυπηρετητή (server). Για να μπορέσει ο χρήστης να αποκτήσει πρόσβαση σε έναν απομακρυσμένο λογαριασμό, πρέπει να δώσει όνομα χρήστη (username) και ένα συνθηματικό (password). Αφού ο χρήστης δώσει αυτές τις πληροφορίες εξουσιοδότησης, μπορεί να μεταφέρει αρχεία απ’ το τοπικό του σύστημα αρχείων (δηλαδή τον τοπικό υπολογιστή του) προς το απομακρυσμένο σύστημα αρχείων (δηλαδή έναν server) και το ανάστροφο. Το πρωτόκολλο HTTP έχει πολλά κοινά χαρακτηριστικά. Ένα από αυτά τα κοινά χαρακτηριστικά είναι ότι και το FTP εκτελείται πάνω στο πρωτόκολλο μεταφοράς TCP. Το FTP χρησιμοποιεί τις TCP θύρες επικοινωνίας 20 για σύνδεση δεδομένων και την 21 για σύνδεση ελέγχου. Η εικόνα της παρακάτω διαφάνειας δίνει ένα πιο σαφές παράδειγμα των TCP θυρών επικοινωνίας που χρησιμοποιεί το FTP.

Συνδέσεις ελέγχου και δεδομένων FTP

Όπως παρατηρούμε από την παραπάνω εικόνα είναι ότι χρησιμοποιεί δύο παράλληλες συνδέσεις TCP για μεταφορά ενός αρχείου. Η θύρα 21 είναι για σύνδεση ελέγχου (control connection) και η θύρα 20 για σύνδεση δεδομένων (data connection). Η σύνδεση ελέγχου χρησιμοποιείται για αποστολή πληροφοριών ελέγχου ανάμεσα σε δύο υπολογιστές όπως το όνομα χρήστη, κωδικοί πρόσβασης, εντολές για αλλαγή ενός απομακρυσμένου καταλόγου και εντολές για αποστολή και λήψη αρχείων. Η σύνδεση δεδομένων χρησιμοποιείται για να κάνει την πραγματική αποστολή ενός αρχείου. Ας δούμε πιο αναλυτικά την επικοινωνία του FTP.

  • Ο χρήστης παρέχει στον FTP client το όνομα του απομακρυσμένου host.

  • Ο FTP client ξεκινά την TCP σύνδεση με τον FTP server (θύρα 21).

  • Ο client στέλνει την ταυτότητα (ID) και τον κωδικό πρόσβασης (password) του χρήστη μέσω της σύνδεσης ελέγχου με εντολές FTP.

  • Ο server εξουσιοδοτεί τον χρήστη.

  • Ο client εξετάζει τον απομακρυσμένο κατάλογο στέλνοντας εντολές μέσω της σύνδεσης ελέγχου.

  • Όταν ο server λάβει την εντολή για την μεταφορά ενός αρχείου, ανοίγει μια TCP σύνδεση δεδομένων με τον client.

  • Ο server κλείνει την TCP σύνδεση μετά την μεταφορά ενός αρχείου.

  • Ο server ανοίγει δεύτερη TCP σύνδεση δεδομένων για να μεταφέρει ένα άλλο αρχείο.

  • Σύνδεση ελέγχου: παραμένουσα (persistent).

  • Σύνδεση δεδομένων: μη παραμένουσα (non persistent)

Όπως αναφέραμε παραπάνω το FTP χρησιμοποιεί δύο TCP θύρες την 20 για μεταφορά δεδομένων και την 21 για έλεγχο της σύνδεσης. Με λίγα λόγια το FTP στέλνει πληροφορία ελέγχου out-of-band σε σχέση με το HTTP που στέλνει πληροφορία ελέγχου in-band.Το FTP διατηρεί κατάσταση (state) κατά την διάρκεια ενός FTP session:

  • Πρέπει να παρακολουθεί την κίνηση στον απομακρυσμένο κατάλογο (directory).

  • Περιορίζεται ο αριθμός των ταυτόχρονων FTP sessions

Σημαντική Παρατήρηση
Μια σημαντική παρατήρηση είναι ότι ένας εξυπηρετητής (server) FTP κατά τη διάρκεια μιας συνόδου πρέπει να διατηρεί την κατάσταση (state) για τον χρήστη. Δηλαδή ο εξυπηρετητής πρέπει να σχετίσει την σύνδεση ελέγχου με έναν συγκεκριμένο λογαριασμό χρήστη και παράλληλα να παρακολουθεί τον τρέχοντα κατάλογο του χρήστη.

Στο πρωτόκολλο FTP οι εντολές (commands) και οι απαντήσεις (responses) στέλνονται ως κείμενο ASCII μέσω της σύνδεσης ελέγχου.

Δείγμα εντολών Δείγμα αποκρίσεων

user → username

pass → password

LIST → Επιστρέφει την λίστα αρχείων στον τρέχον κατάλογο

RETR filename → Ανάκτηση αρχείου GET απο τον τρέχον κατάλογο

STOR filename → Αποθήκευση αρχείου PUT στον τρέχον κατάλογο του απομακρυσμένου host


Κώδικας και φράση όπως στο HTTP

331 → Username ΟΚ, password required

125 → data connection already open; transfer starting

425 → Can't open data connection

452 → Error writing file


Τρόπος λειτουργίας (active/passive mode)

Στην ενεργητική λειτουργία (active mode) ο FTP client διαλέγει μια τυχαία θύρα στην οποία δέχεται τα δεδομένα της σύνδεσης. Ο client στέλνει τον αριθμό της θύρας, στην οποία επιθυμεί να “ακούει” (listen) για εισερχόμενες συνδέσεις. Ο FTP server δημιουργεί μια σύνδεση από την θύρα 20 στην ανοιχτή θύρα του client για τη μεταφορά των δεδομένων. Οποιαδήποτε πληροφορία ζητήσει ο client, ανταλλάσσεται με βάση αυτή τη σύνδεση, που βασίζεται στο TCP. Όταν η μεταφορά ολοκληρωθεί ο server κλείνει τη σύνδεση αποστέλλοντας ένα πακέτο FIN, όπως σε κάθε σύνδεση βασισμένη στο TCP. Κάθε φορά που ο client ζητάει δεδομένα, δημιουργείται κατά παρόμοιο τρόπο μια σύνδεση δεδομένων και η διαδικασία επαναλαμβάνεται.

FTP active mode

Στην παθητική λειτουργία (passive mode) ο client ζητά από τον server να διαλέξει μια τυχαία θύρα, στην οποία θα “ακούει” (listen) για την σύνδεση δεδομένων (data connection). Ο server ενημερώνει τον client για την θύρα την οποία έχει διαλέξει και ο client συνδέεται σε αυτή για τη μεταφορά των δεδομένων. Η μεταφορά ολοκληρώνεται όπως και στην ενεργητική λειτουργία (active mode), αφού η σύνδεση δεδομένων βασίζεται στο TCP.

FTP active mode

Τι είναι το πρωτόκολλο TFTP

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

Μία σύνοδος (session) TFTP διεξάγεται σύμφωνα με τα ακόλουθα βήματα:

  1. Ο υπολογιστής Α στέλνει στον υπολογιστή Β ένα πακέτο που περιέχει είτε μία αίτηση ανάγνωσης (RRQ – Read ReQuest) είτε μία αίτηση εγγραφής (WRQ – WriteReQuest), μαζί με το όνομα του αρχείου και τον τρόπο μεταφοράς. Το πακέτο αυτό αποστέλλεται προς την πόρτα 69, την προεπιλεγμένη πόρτα του TFTP.

  2. Ο υπολογιστής Β απαντά στην αίτηση του υπολογιστή Α. Εάν η αίτηση ήταν αίτηση ανάγνωσης, τότε του στέλνει κατευθείαν ένα πακέτο δεδομένων (DATA). Αντιθέτως, εάν πρόκειται για αίτηση εγγραφής, τότε ο υπολογιστής Β στέλνει ένα πακέτο αποδοχής (ACK – ACKnowledgement.

  3. Ο υπολογιστής Β για να στείλει το πακέτο δεσμεύει μία νέα ελεύθερη πόρτα και το στέλνει από εκεί. Στην συνέχεια όλα τα πακέτα που φτάνουν προς τον υπολογιστή Β ή φεύγουν από αυτόν χρησιμοποιούν αποκλειστικά την πόρτα αυτή ούτως ώστε να αποδεσμεύσουν την πόρτα 69 και να επιτρέψουν και σε άλλους υπολογιστές να συνδεθούν.

  4. Μετέπειτα, ο ένας υπολογιστής (ο υπολογιστής Α εάν πρόκειται για αίτηση ανάγνωσης και υπολογιστής Β εάν πρόκειται για αίτηση εγγραφής) αποστέλλει συνεχώς πακέτα δεδομένων προς τον δεύτερο υπολογιστή. Ο τελευταίος απαντά σε κάθε πακέτο με ένα πακέτο ACK ούτως ώστε να δηλώσει στον πρώτο ότι το πακέτο δεδομένων έχει ληφθεί με επιτυχία.

  5. Στο τέλος της μεταφοράς των δεδομένων, η σύνδεση τερματίζεται.

Διεξαγωγή συνόδου (session) TFTP

Τελευταία ενημέρωση: 23/04/2018