Πώς ένας πελάτης Bittorrent αρχικά ανακαλύπτει τους συνομηλίκους του;
Όταν ο πελάτης σας torrent ενώνει το σμήνος για να μοιραστεί και να συγκεντρώσει κομμάτια αρχείων, πώς ακριβώς ξέρει πού είναι όλοι οι συνομήλικοί του; Διαβάστε παρακάτω καθώς μπαίνουμε μέσα στους μηχανισμούς που βρίσκονται κάτω από το πρωτόκολλο BitTorrent.
Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα που κατευθύνεται από τους ιστότοπους ερωτήσεων & απαντήσεων.
Το ερώτημα
Ο αναγνώστης SuperUser Steve V. είχε μια πολύ συγκεκριμένη ερώτηση σχετικά με το σύστημα Distributed Hash Table (DHT) στο πρωτόκολλο BitTorrent:
Έχω ήδη διαβάσει αυτήν την απάντηση του SuperUser και αυτό το άρθρο της Wikipedia, αλλά και οι δύο είναι υπερβολικά τεχνικές για μένα να ολοκληρώσω πραγματικά το κεφάλι μου γύρω.
Κατανοώ την ιδέα ενός ιχνηλάτη: οι πελάτες συνδέονται με έναν κεντρικό εξυπηρετητή ο οποίος διατηρεί μια λίστα με συνομηλίκους σε ένα σμήνος.
Κατανοώ επίσης την ιδέα της ανταλλαγής ομοτίμων: οι πελάτες που βρίσκονται ήδη σε ένα σμήνος στέλνουν τον πλήρη κατάλογο των συνομηλίκων τους ο ένας στον άλλο. Αν ανακαλυφθούν νέοι συνομηλίκοι, προστίθενται στη λίστα.
Η ερώτησή μου είναι πώς λειτουργεί η DHT; Αυτό είναι, πώς μπορεί ένας νέος πελάτης να ενταχθεί σε ένα σμήνος χωρίς έναν ιχνηλάτη ή τη γνώση τουλάχιστον ενός μέλους του σμήνους για να ανταλλάξει συνομηλίκους με?
(Σημείωση: οι καλύτερες απλές εξηγήσεις.)
Η ερώτησή του με τη σειρά του προκάλεσε μια πραγματικά λεπτομερή απάντηση σχετικά με τις διάφορες λειτουργίες του συστήματος BitTorrent. ας ρίξουμε μια ματιά σε αυτό τώρα.
Η απάντηση
Ο συνεργάτης του SuperUser Allquixotic προσφέρει μια εις βάθος εξήγηση:
Πώς μπορεί ένας νέος πελάτης να συμμετάσχει σε ένα σμήνος χωρίς έναν ιχνηλάτη ή τη γνώση τουλάχιστον ενός μέλους του σμήνους για την ανταλλαγή συνομηλίκων με?
Δεν μπορείτε. Είναι αδύνατο.*
* (Εκτός αν ένας κόμβος στο τοπικό δίκτυο συμβαίνει ήδη να είναι ένας κόμβος στο DHT. Σε αυτή την περίπτωση, θα μπορούσατε να χρησιμοποιήσετε έναν μηχανισμό εκπομπής, όπως ο Avahi, για να «ανακαλύψετε» αυτό το peer, και να ξεκινήσετε από αυτά. Αλλά πώς αυτοί bootstrap οι ίδιοι; Τελικά, θα χτυπήσετε μια κατάσταση όπου θα πρέπει να συνδεθείτε στο δημόσιο διαδίκτυο. Και το δημόσιο διαδίκτυο είναι μόνο unicast, όχι multicast, επομένως έχετε κολλήσει με τη χρήση προκαθορισμένων λιστών συνομηλίκων.)
βιβλιογραφικές αναφορές
Το Bittorrent DHT υλοποιείται μέσω ενός πρωτοκόλλου γνωστού ως Kademlia, το οποίο είναι μια ειδική περίπτωση θεωρητικής έννοιας ενός κατανεμημένου πίνακα hash.
Εκθεση
Με το πρωτόκολλο Kademlia, όταν μπείτε στο δίκτυο, περνάτε από μια διαδικασία εκκίνησης, η οποία απαιτεί απόλυτα να γνωρίζετε, εκ των προτέρων, τη διεύθυνση IP και τη θύρα τουλάχιστον ενός κόμβου που συμμετέχει ήδη στο δίκτυο DHT. Ο ιχνηλάτης στον οποίο συνδέεστε, για παράδειγμα, μπορεί να είναι ο ίδιος ένας κόμβος DHT. Μόλις συνδεθείτε σε έναν κόμβο DHT, προχωράτε στη λήψη πληροφοριών από το DHT, το οποίο σας παρέχει πληροφορίες συνδεσιμότητας για περισσότερους κόμβους και, στη συνέχεια, περιηγείστε στη συγκεκριμένη δομή "γραφήματος" για να αποκτήσετε συνδέσεις σε όλο και περισσότερους κόμβους, οι οποίοι μπορούν να παρέχουν συνδεσιμότητα με άλλους κόμβους και δεδομένα ωφέλιμου φορτίου (κομμάτια της λήψης).
Νομίζω ότι η πραγματική ερώτησή σας με τολμηρό - αυτό για το πώς να συμμετάσχετε σε ένα δίκτυο της Kademlia DHT χωρίς να το γνωρίζετε όποιοςάλλα μέλη - βασίζεται σε ψευδή παραδοχή.
Η απλή απάντηση στην ερώτησή σας είναι με έντονους χαρακτήρες, δεν το κάνετε. Εάν δεν γνωρίζετε ΟΠΟΙΑΔΗΠΟΤΕ πληροφορίες σχετικά με ακόμη και έναν κεντρικό υπολογιστή που ενδέχεται να περιέχει μεταδεδομένα DHT, έχετε κολλήσει - δεν μπορείτε να ξεκινήσετε. Θέλω να πω, βέβαια, ότι θα μπορούσατε να κάνετε βίαιη προσπάθεια να ανακαλύψετε μια IP στο δημόσιο διαδίκτυο με μια ανοιχτή θύρα που συμβαίνει να μεταδίδει πληροφορίες DHT. Πιθανότατα, ο πελάτης BT σας είναι σκληρός κωδικοποιημένος σε κάποια συγκεκριμένη στατική διεύθυνση IP ή DNS η οποία επιλύεται σε έναν σταθερό κόμβο DHT, ο οποίος παρέχει μόνο τα μεταδεδομένα DHT.
Βασικά, το DHT είναι μόνο αποκεντρωμένο με τον μηχανισμό σύνδεσης και επειδή ο μηχανισμός σύνδεσης είναι αρκετά εύθραυστος (δεν υπάρχει κανένας τρόπος να "μεταδοθεί" σε ολόκληρο το Διαδίκτυο! unicastσε έναν μεμονωμένο προκαθορισμένο κεντρικό υπολογιστή για να λάβετε τα δεδομένα DHT), το Kademlia DHT δεν είναι Πραγματικά αποκεντρωμένη. Όχι με την αυστηρότερη έννοια της λέξης.
Φανταστείτε αυτό το σενάριο: Κάποιος που θέλει να σταματήσει το P2P σβήνει και προετοιμάζει μια επίθεση όλα χρησιμοποιούνται συνήθως σταθεροί κόμβοι DHT που χρησιμοποιούνται για εκκίνηση με bootstrapping. Μόλις πραγματοποιήσουν την επίθεσή τους, την ανοίγουν όλα κόμβους ταυτόχρονα. Wham. κάθε bootstrapping κόμβος DHT είναι κάτω σε όλα σε ένα πτώση swoop. Και τώρα τι? Είστε κολλημένοι με τη σύνδεση κεντρικούς ιχνηλάτες για να κατεβάσετε τις παραδοσιακές λίστες των συνομηλίκων από αυτά. Λοιπόν, αν επιτεθούν και στους ιχνηλάτες, τότε είστε πραγματικά, Πραγματικά ένα ρυάκι. Με άλλα λόγια, το Kademlia και ολόκληρο το δίκτυο BT περιορίζεται από τους περιορισμούς του ίδιου του Διαδικτύου, δεδομένου ότι υπάρχει ένας πεπερασμένος (και σχετικά μικρός) αριθμός υπολογιστών που θα έπρεπε να επιτεθείτε επιτυχώς ή να πάρετε εκτός σύνδεσης για να αποτρέψετε> 90% των χρηστών από τη σύνδεση στο δίκτυο.
Μόλις οι "ψευδοκεντρωμένοι" κόμβοι εκτόξευσης ξεπεραστούν, οι εσωτερικοί κόμβοι του DHT, οι οποίοι δεν εκκινούν επειδή κανείς στο εξωτερικό του DHT δεν γνωρίζει τους εσωτερικούς κόμβους, είναι άχρηστα. δεν μπορούν να φέρουν νέους κόμβους στο DHT. Έτσι, καθώς κάθε κόμβος εσωτερικού χώρου αποσυνδέεται από το DHT με την πάροδο του χρόνου, είτε λόγω του τερματισμού των υπολογιστών, της επανεκκίνησης για ενημερώσεις κ.λπ., το δίκτυο θα κατέρρευσε.
Φυσικά, για να ξεπεραστεί αυτό, κάποιος θα μπορούσε να αναπτύξει ένα patched BitTorrent client με μια νέα λίστα προκαθορισμένων σταθερών κόμβων DHT ή διευθύνσεων DNS και να διαφημίσει δυνατά στην κοινότητα P2P να χρησιμοποιήσει αυτή τη νέα λίστα. Αλλά αυτό θα γίνει μια κατάσταση "whack-a-mole" όπου ο επιτιθέμενος (ο κόμβος-eater) θα κατεβάσει σταδιακά αυτές τις λίστες οι ίδιοι και θα στοχεύσει στους γενναίους νέους bootstrapping κόμβους,.
Όχι μόνο μάθαμε την απάντηση στην αρχική ερώτηση, αλλά μάθαμε αρκετά σχετικά με τη φύση του συστήματος BitTorrent και τις ευπάθειές του.
Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.