Μέσω μιας απλής γλώσσας ο απέραντος κόσμος του διαδικτύου γίνεται κατανοητός και σε εμάς τους αδαείς. Μια περιήγηση στο παρακάτω άρθρο θα σας πείσει.
Πώς
λειτουργεί το Διαδίκτυο;
Το
διαδίκτυο είναι ένα πάρα πολύ χρήσιμο εργαλείο το οποίο όλοι μας την σημερινή
εποχή χρησιμοποιούμε. Με απλά λόγια, το διαδίκτυο είναι ένα δίκτυο από καλώδια το
οποίο συνδέει υπολογιστές μεταξύ τους. Μέσω αυτής της σύνδεσης οι υπολογιστές
μπορούν και ανταλλάζουν δεδομένα, κάτι που τους επιτρέπει να επικοινωνούν ή να
μοιράζονται πληροφορίες. Σκοπός μου σε αυτό το άρθρο είναι να αναλύσω το πως
ακριβώς λειτουργεί αυτή η σύνδεση, σε βάθος, όσο πιο σωστά και κατανοητά
μπορώ. Δεν είμαι ειδικός πάνω στο θέμα, άρα δεν εγγυούμαι πως ότι γράψω θα
είναι σίγουρα σωστό. Έχω ασχοληθεί
παρόλα αυτά με το Διαδίκτυο για αρκετό καιρό και έτσι κατέχω κάποιες
γνώσεις.
Όταν θες να βάλεις ίντερνετ στο
σπίτι σου χρειάζεται αρχικά να επιλέξεις με ποιον τρόπο θες να το κάνεις αυτό.
Υπάρχουν διάφοροι τρόποι να συνδεθείς στο Διαδίκτυο, ο πιο γνωστός είναι μέσω καλωδίου DSL (Digital Subscriber Line). Το DSL χρησιμοποιεί το καλώδιο του τηλεφώνου
σου. Πιο συγκεκριμένα, το DSL λειτουργεί εντός των συχνοτήτων που δεν
χρησιμοποιεί το τηλέφωνο, και έτσι είναι δυνατό να χρησιμοποιείς το Διαδίκτυο
ενώ πραγματοποιείς τηλεφωνικές κλήσεις. Μπορείς επίσης να χρησιμοποιήσεις
ομοαξονικό καλώδιο, είναι το ίδιο καλώδιο που χρησιμοποιείς για την τηλεόραση,
το κακό με αυτόν τον τρόπο είναι πως μοιράζεσαι μέρος της σύνδεσής σου με
οποιονδήποτε γείτονα χρησιμοποιεί και αυτός ομοαξονικό καλώδιο, και έτσι αν
πολλά άτομα στην περιοχή σου χρησιμοποιούν ομοαξονικό καλώδιο τότε μπορεί η
σύνδεση σου να μην είναι πολύ καλή. Ακόμα ένας τρόπος είναι να χρησιμοποιήσεις
δορυφόρο, κάτι που δεν θα συνιστούσα αφού αρχικά είναι σχετικά ακριβό αλλά και
οι ταχύτητες που σου δίνει είναι πολύ χαμηλές,
έχοντας καθυστέρηση περίπου 600 ms, ενώ η καθυστέρηση του DSL είναι γύρω
στα 30 ms. Τέλος, ο καλύτερος τρόπος να συνδεθείς στο διαδίκτυο είναι χρησιμοποιώντας
καλώδιο οπτικών ινών, το οποίο παρόλα αυτά δύσκολα θα βρεις αφού ακόμα δεν
είναι διαθέσιμο σε πολλά μέρη. Έχοντας επιλέξει τον τρόπο με τον οποίο θες να
συνδεθείς στο Διαδίκτυο μπορείς μετά να ζητήσεις από τον πάροχο υπηρεσιών
Διαδικτύου σου να σου στείλει τις απαραίτητες συσκευές που θα χρειαστείς.
Συνήθως αυτές είναι ένα modem και ένα router, η ένας συνδυασμός των δύο μαζί με
κάποια καλώδια που θα χρειαστείς για την εγκατάσταση τους.
Αρχικά θα ήθελα να αναφερθώ στο πως
ακριβώς λειτουργεί η συσκευή που μας συνδέει στο διαδίκτυο, δηλαδή το modem.
Ένα modem δημιουργεί και διατηρεί μια αποκλειστική σύνδεση με τον πάροχο
υπηρεσιών Διαδικτύου που έχουμε, μέσω του οποίου μπορούμε και συνδεόμαστε σε
άλλα δίκτυα. Ο λόγος που είναι αναγκαίο να έχουμε ένα modem είναι λόγω των δύο
διαφορετικών τύπων σημάτων που χρησιμοποιούνται σε έναν υπολογιστή και στο
διαδίκτυο. Ένας υπολογιστής διαβάζει μόνο ψηφιακά σήματα, ενώ τα σήματα που
βγαίνουν στο Διαδίκτυο είναι αναλογικά. Το modem λοιπόν μπορεί και μετατρέπει
τα αναλογικά σήματα σε ψηφιακά και το αντίστροφο. Μπορείτε να συνδέσετε το modem
σας με κάποια συσκευή σας χρησιμοποιώντας καλώδιο δικτύου και στη συνέχεια θα
έχετε πρόσβαση στο Διαδίκτυο. Ωστόσο, όπως οι περισσότεροι, λογικά θα έχετε
πολλές συσκευές που χρειάζονται πρόσβαση στο διαδίκτυο και έτσι θα χρειαστείτε
ένα router.
Σχεδόν όλοι όσοι έχουν σύνδεση στο
Διαδίκτυο στο σπίτι τους έχουν και ένα router. Όταν ο πάροχος υπηρεσιών
διαδικτύου σας, σας στέλνει ένα modem, η όταν αγοράζετε ένα από το κατάστημα,
το modem
μπορεί να είναι συνδυασμός modem/router. Μπορεί δηλαδή να είναι ένα μόντεμ με
ενσωματωμένο router σε μία φυσική συσκευή. Το router και το modem παρόλα αυτά
δεν είναι το ίδιο. Το router έρχεται μετά το modem, και χρησιμοποιείται για να
συνδέσει πολλαπλές συσκευές στο διαδίκτυο. Το router εκπέμπει ένα σήμα Wi-Fi
έτσι ώστε ασύρματες συσκευές, όπως ένα κινητό η ένα λάπτοπ να μπορούν να
συνδεθούν σε αυτό, ακόμα συνήθως περιέχει και ένα ενσωματωμένο switch με πολλές
θύρες όπου συσκευές μπορούν να συνδεθούν χρησιμοποιώντας καλώδια. Ένα switch
είναι μια συσκευή με την οποία μπορείς να συνδέσεις υπολογιστές μεταξύ τους.
Ένα router περιλαμβάνει επίσης έναν τοίχο προστασίας, τον λεγόμενο fire wall, ο
οποίος προστατεύει το δίκτυο σου από ανθρώπους που μπορεί να προσπαθήσουν να το
διαπεράσουν και έτσι να πάρουν πρόσβαση στον υπολογιστή σου. Υπάρχουν και άλλες
λειτουργίες που μπορεί να έχει ένα router, για τις οποίες όμως θα αναφερθώ
αργότερα.
To router σου ανήκει στο δίκτυο κάποιου
πάροχου υπηρεσιών διαδικτύου, το δίκτυο αυτό είναι ένα σύνολο σημείων που
λέγονται POP
(Point
of Presence). Τα σημεία αυτά είναι συνδεμένα
μεταξύ τους με καλώδια, και το router
σου συνδέεται με ένα
από αυτά τα σημεία, όπως και άλλα πολλά routers στην περιοχή σου. Οι διάφοροι πάροχοι
υπηρεσιών διαδικτύου συνδέουν τα δίκτυα τους μέσο σημείων IXP (Internet Exchange Point). Για να συνδεθούν τα σημεία IXP μιας ηπείρου με τα σημεία IXP μιας άλλης χρησιμοποιούνται μεγάλα
καλώδια που περνάνε μέσα από τους ωκεανούς, το δίκτυ καλωδίων αυτό μπορείς να
το βρεις σχεδιασμένο σε χάρτη και το ονομάζουμε backbone του διαδικτύου. Εσύ μπορεί να
συνδέεσαι στο διαδίκτυο με την χρήση δεδομένων στο κινητό σου, η μέσο κάποιου router σε κάποιο εστιατόριο, τα πακέτα
δεδομένων όμως που στέλνεις μέσο διαδικτύου πάντα καταλήγουν σε αυτά τα
καλώδια.
Σε πολλά σημεία αυτού του άρθρου θα
αναφερθώ σε servers και
πρωτόκολλα. Στο Διαδίκτυο, πρωτόκολλα ονομάζουμε ένα σύνολο κανόνων, συμβάσεων και
δομών δεδομένων που καθορίζουν τον τρόπο με τον οποίο συσκευές ανταλλάσσουν
δεδομένα. Με άλλα λόγια, πρωτόκολλα είναι κάτι σαν γλώσσες που δύο συσκευές
πρέπει να κατανοούν για την σωστή επικοινωνία πληροφοριών μεταξύ τους. Όταν χρησιμοποιούμε την λέξη server συνήθως αναφερόμαστε σε έναν υπολογιστή ο οποίος είναι αφοσιωμένος για
την παροχή υπηρεσιών σε άλλους υπολογιστές. Ένας απλός υπολογιστής μπορεί να
λειτουργήσει σαν server,
παρόλα αυτά οι περισσότεροι servers
είναι ειδικές συσκευές δημιουργημένες έτσι ώστε να μπορούν να διαχειριστούν πολλές επικοινωνίες ταυτόχρονα οποιαδήποτε
στιγμή χρειαστεί. Υπάρχουν πολλά διαφορετικά είδη servers για διάφορες υπηρεσίες όπως ένας web server που στέλνει στον υπολογιστή σου
ιστοσελίδες, ένας DNS
server
που μεταφράζει
διευθύνσεις ιστού σε διευθύνσεις IP και γενικώς πολλοί άλλοι servers, κάποιους από τους οποίους θα
αναλύσω κιόλας περισσότερο αργότερα. Σημαντικό είναι να αναφέρω πως ένας server μπορεί να παρέχει πάνω από μία
υπηρεσίες, δεν χρειάζεται αναγκαστικά ένας server να έχει μόνο μια υπηρεσία. Ένας web server για παράδειγμα και ένας email server θα μπορούσαν να υπάρξουν σαν μία
φυσική συσκευή με δύο υπηρεσίες.
Το Διαδίκτυο είναι στην ουσία ένα
μεγάλο δίκτυο υπολογιστών συνδεδεμένων μεταξύ τους. Σκοπός του πρωτόκολλου IP (Internet Protocol) είναι η μεταφορά δεδομένων από
έναν υπολογιστή σε έναν άλλον. Το πρωτόκολλο IP είναι ένα σύνολο κανόνων που
καθορίζει το πώς ένας υπολογιστής πρέπει να στείλει ένα πακέτο δεδομένων, αλλά
και το τι πρέπει να κάνει ένας υπολογιστής όταν λάβει αυτό το πακέτο δεδομένων.
Συχνά λειτουργεί σε συνδυασμό με το πρωτόκολλο ελέγχου μετάδοσης TCP
(Transmission Control Protocol), το οποίο διαιρεί τα δεδομένα σε πακέτα για την
αποτελεσματική μεταφορά τους μέσω Διαδικτύου. Μαζί αναφέρονται ως TCP/IP. Το πρωτόκολλο
TCP συνθέτει ένα πακέτο, ενώ το πρωτόκολλο IP είναι κάτι σαν φορτηγό παράδοσης
που μεταφέρει αυτό το πακέτο στον προορισμό του. Επίσης δουλειά του TCP είναι
να επιβεβαιώσει ότι όλα τα πακέτα έφτασαν όπως έπρεπε και αν όχι, να τα στείλει
ξανά.
Και τα δύο πρωτόκολλα χρησιμοποιούν
headers
για την μεταφορά
δεδομένων. Ένας header
είναι κάτι σαν ένα σημείωμα που μεταφέρετε μαζί με τα δεδομένα, και περιέχει
πληροφορίες σχετικά με το πακέτο. Ένα πακέτο IP περιέχει μια ενότητα header και μια ενότητα δεδομένων. Τα κύρια
στοιχεία που περιλαμβάνει ένας IP
header
είναι η διεύθυνση IP του αποστολέα και η διεύθυνση IP του υπολογιστή στον οποίο στέλνεται
το πακέτου. Η ενότητα δεδομένων ενός
πακέτου IP
περιέχει συνήθως ένα
πακέτο TCP, το οποίο και αυτό περιέχει τις δικές του ενότητες header και δεδομένων. O TCP header περιέχει πληροφορίες σχετικά με τη
σύνδεση, όπως για παράδειγμα τους αριθμούς port που χρησιμοποιούνται αλλά και
πληροφορίες σχετικά με τα τρέχοντα δεδομένα που αποστέλλονται, όπως την σειρά που
τα προσδιορίζει.
Μια διεύθυνση IP είναι ένα σύνολο αριθμών που
λειτουργεί ως αναγνωριστικό για έναν υπολογιστή σε ένα δίκτυο και είναι
απαραίτητη για την λειτουργία του πρωτόκολλου IP. Κάθε συσκευή πρέπει να έχει μια
διεύθυνση IP για λόγους επικοινωνίας. Μια διεύθυνση IP από μόνη της δεν είναι
αρκετή, συνήθως χρειάζεται να συνοδευτεί μαζί με κάποιον αριθμό port. Οι
αριθμοί ports λειτουργούν σαν κανάλια επικοινωνίας μιας συσκευής. Ένας αριθμός
port συνήθως μπορεί να είναι από 1 μέχρι και 65000. Όλες οι συσκευές δικτύου
τους χρησιμοποιούν και οι περισσότερες έχουν τη δυνατότητα να τους αλλάζουν
όταν απαιτείται. Αρχικά δημιουργήθηκαν για να επιτρέπουν σε πολλά προγράμματα
να χρησιμοποιούν την ίδια διεύθυνση IP, αλλά έχουν και άλλες χρήσεις.
Γενικότερα, ένας αριθμός port προσδιορίζει μια συγκεκριμένη διαδικασίας στην
οποία πρόκειται να προωθηθεί ένα μήνυμα Διαδικτύου ή άλλου δικτύου όταν φτάσει
στον υπολογιστή σου.
Για να βρεθεί η καλύτερη δυνατή
διαδρομή που θα μπορούσε να πάρει ένα πακέτο δεδομένων ώστε να φτάσει στον
προορισμό του συνήθως χρησιμοποιείται το πρωτόκολλο BGP (Border Gateway
Protocol). Το πρωτόκολλο BGP
είναι ένα σύνολο
κανόνων και διαδικασιών που βοηθούν ένα αυτόνομο σύστημα (AS) να ανταλλάσσει
πληροφορίες δρομολόγησης μέσω του Διαδικτύου με άλλα αυτόνομα συστήματα. Αυτόνομο
σύστημα είναι ένα δίκτυο υπολογιστών που διευθύνεται από μια οντότητα, για
παράδειγμα, ο πάροχος υπηρεσιών διαδικτύου σου, ο οποίος ελέγχει μια σειρά από
διευθύνσεις IP.
Ένα αυτόνομο σύστημα διαχειρίζεται έναν πίνακα που περιέχει όλες τις γνωστές του
διαδρομές προς άλλα δίκτυα, ο οποίος πίνακας στη συνέχεια διαδίδεται σε
γειτονικά δίκτυα. Ο μηχανισμός λήψης αποφάσεων BGP αναλύει τα δεδομένα ενός
πακέτου IP
και επιλέγει την καλύτερη διαδρομή για το επόμενο άλμα δικτύου. Το πρωτόκολλο
αυτό χρησιμοποιείται μόνο για επικοινωνίες με υπολογιστές έξω του αυτόνομου
συστήματος σου. Το κάθε αυτόνομο σύστημα έχει μια η περισσότερες ομάδες
διευθύνσεων που το καθορίζουν. Ο διαχειριστής ενός αυτόνομου συστήματος
γνωρίζει που έχει δοθεί η κάθε διεύθυνση IP του, και έτσι όταν του στέλνεται
ένα πακέτο δεδομένων μπορεί να καταλάβει αν αυτό πρέπει να σταλθεί σε κάποιο
από τα δίκτυα του και αν ναι μπορεί να το προωθήσει εκεί που πρέπει.
Όταν θες να επισκεφτείς μια
ιστοσελίδα, να κατεβάσεις ένα αρχείο ή να κοιτάξεις ένα email, περιμένεις τα
δεδομένα τα οποία θα λάβεις να είναι σωστά οργανωμένα και χωρίς απώλειες.
Φαντάσου αν στο email το οποίο διάβαζες τα γράμματα στέλνονταν στον υπολογιστή
σου ανακατεμένα, η αν αντί να κατεβάσεις ένα αρχείο ολόκληρο κατέβαζες μόνο
κάποια κομμάτια του αρχείου. Η επικοινωνία μεταξύ δύο υπολογιστών πρέπει να
είναι καλή και αξιόπιστη, και για αυτόν τον λόγο δημιουργήθηκε το πρωτόκολλο
TCP (Transmission Control Protocol), το οποίο εγγυάται πως τα δεδομένα τα οποία
στέλνονται μεταξύ δύο υπολογιστών θα λαμβάνονται σωστά. Το πρωτόκολλο TCP είναι
ένα connection-oriented πρωτόκολλο. Αυτό σημαίνει με λίγα λόγια πως για την
λειτουργία του είναι αναγκαίο να επαληθευθεί μια σύνδεση πριν πραγματοποιηθεί
οποιαδήποτε επικοινωνία. Αυτό γίνεται χρησιμοποιώντας μια τριπλή χειραψία.
Η χειραψία αυτή ονομάζεται three-way handshake, αφού περιλαμβάνει 3 μηνύματα.
Αρχικά ο υπολογιστής σου ζητάει να ξεκινήσει μια σύνδεση στέλνοντας ένα μήνυμα
συγχρονισμού στον άλλον υπολογιστή, το μήνυμα αυτό λέγεται SYN (synchronize). Ο
υπολογιστής η server που λαμβάνει αυτό το μήνυμα επιβεβαιώνει πως η σύνδεση έχει
συγχρονιστεί και στέλνει και αυτός ένα
δικό του μήνυμα συγχρονισμού, στέλνοντας το μήνυμα SYN-ACK
(synchronize-acknowledge) πίσω στον υπολογιστή σου. Ο υπολογιστής σου
επιβεβαιώνει πως η σύνδεση έχει συγχρονιστεί απατώντας με ένα μήνυμα ACK
(acknowledge) το οποίο και ολοκληρώνει την χειραψία.
Το πρωτόκολλο TCP αναλύει μηνύματα,
όπως ένα email, σε πακέτα δεδομένων και έπειτα
διασφαλίζει πως τα πακέτα αυτά θα φτάσουν στον προορισμό τους με
επιτυχία. Οι υπολογιστές αποθηκεύουν δεδομένα σε μορφή μιας συλλογής αριθμών 1
και 0, το κάθε ψηφίο ονομάζεται bit, 8 bits μαζί δημιουργούν ένα byte, το οποίο
είναι και η μικρότερη μονάδα μνήμης
στους περισσότερους υπολογιστές. Κάθε byte σε μια επικοινωνία έχει έναν αριθμό
σειράς που το προσδιορίζει. Το κείμενο το οποίο διαβάζεις στάλθηκε σε μορφή
bytes στον υπολογιστή σου, τα bytes αυτά στέλνονται μέσο πακέτων TCP με την
βοήθεια του πρωτόκολλου IP.
Κάθε πακέτο έχει έναν header όπου αποθηκεύεται ο αριθμό σειράς του πρώτου byte
από τα bytes που περιέχει. Τα bytes τοποθετούνται με την σειρά μέσα στα πακέτα,
άρα γνωρίζοντας τον αριθμό σειράς του πρώτου byte ενός πακέτου και πόσα bytes
περιέχει, ο υπολογιστής σου μπορεί και καταγράφει ποιοι αριθμοί σειράς έχουν
ληφθεί. Για κάθε πακέτο που βρίσκεται σε μεταφορά, ο αποστολέας διατηρεί ένα
χρονόμετρο. Εάν ο χρονοδιακόπτης τελειώσει πριν ληφθεί ένα μήνυμα επιβεβαίωσης
ACK για το πακέτο, το πακέτο αποστέλλεται ξανά. Μετά από έναν ορισμένο αριθμό
αποτυχημένων αναμεταδόσεων ενός πακέτου, το TCP θα εγκαταλείψει και θα διακόψει
τη σύνδεση.
Όταν όλα τα πακέτα TCP έχουν
σταλθεί με επιτυχία, πρέπει να εκτελεσθεί μια διαδικασία τεσσάρων βημάτων
προτού τερματιστεί η σύνδεση. Η διαδικασία αυτή μοιάζει λίγο με την τριπλή
χειραψία η οποία πραγματοποιήθηκε για την έναρξη της σύνδεσης, αλλά αντί για 3
μηνύματα στέλνονται 4. Αρχικά ο αποστολέας στέλνει ένα μήνυμα FIN (finish) στον υπολογιστή σου για να τον
ενημερώσει πως όλα τα πακέτα δεδομένων έχουν σταλθεί με επιτυχία, ο υπολογιστής
σου αποδέχεται αυτό το μήνυμα και ύστερα στέλνει ένα μήνυμα ACK (acknowledge) για να ενημερώσει τον αποστολέα
πως έλαβε το μήνυμα. Όταν ο υπολογιστής σου έχει λάβει όλα τα πακέτα δεδομένων
και είναι έτοιμος να κλείσει την σύνδεση στέλνει και αυτός ένα δικό του μήνυμα FIN (finish) στον αποστολέα, στο οποίο και ο
αποστολέας απαντάει με ένα μήνυμα ACK (acknowledge).
Ολοκληρώνοντας αυτήν την διαδικασία, η σύνδεση μπορεί μετά να τερματιστεί
σωστά.
Ένα ακόμα πρωτόκολλο που
χρησιμοποιείται για την μεταφορά δεδομένων στο διαδίκτυο είναι και το
πρωτόκολλο UDP (User Datagram Protocol) το οποίο είναι παρόμοιο του TCP. Η
κύρια διαφορά των δύο αυτών πρωτόκολλων είναι πως το UDP δεν εγγυάται την
παράδοση των δεδομένων, ενώ επίσης είναι connection-less που σημαίνει πως η
σύνδεση δεν χρειάζεται να επαληθευθεί πριν ξεκινήσει η επικοινωνία. Το UDP
χρησιμοποιείται συνήθως για εφαρμογές που μπορούν να χειριστούν κάποια απώλεια
πακέτων δεδομένων, όπως streaming, audio και video.
Όταν το Διαδίκτυο δεν είχε γίνει
ακόμα όσο γνωστό είναι τώρα οι δημιουργοί του δεν είχαν φανταστεί πόσες πολλές
συσκευές θα υπήρχαν στον μέλλον. Η πρώτη δημόσια έκδοση διεύθυνσης IP ήταν η
έκδοση 4, η οποία μπορεί να έχει μέχρι και 4,294,967,296 διαφορετικούς
συνδυασμούς αριθμών. Σύντομα έγινε φανερό πως οι διευθύνσεις δεν θα έφταναν για
όλες τις συσκευές. Ξεμέναμε από διευθύνσεις και έπρεπε να βρεθεί μια λύση. Για
αυτόν τον λόγο δημιουργήθηκε η μέθοδος NAT (Network Address Translation) η
οποία έλυσε το πρόβλημα. Με την εφαρμογή της μέθοδού NAT δεν χρειάζεται πλέον η
κάθε συσκευή να έχει την δικιά της δημόσια διεύθυνση IPv4. Όταν θες να βάλεις ίντερνετ στο
σπίτι σου, ο πάροχος υπηρεσιών διαδικτύου σου, σου εκχωρεί μονάχα μία δημόσια
διεύθυνση IPv4,
η οποία και δίνεται στο router σου, η σε οποιαδήποτε συσκευή συνδέσεις στο
modem σου τέλος πάντων, αν και καλό θα ήταν αυτή να είναι κάποιο router για
λόγους ασφαλείας. Κάθε διεύθυνση IP πρέπει να είναι διαφορετική, για αυτό και
οι διευθύνσεις δίνονται μέσο ενός πρωτόκολλου που λέγετε DHCP (Dynamic Host
Configuration Protocol).
Ένας πάροχος υπηρεσιών διαδικτύου
αγοράζει μια ομάδα διευθύνσεων IP
τις οποίες και
μοιράζει στους πελάτες του.
Όταν το router σου συνδέεται με τον
πάροχο σου, ζητάει από τον DHCP server του να σου δοθεί μια διεύθυνση IP, η διεύθυνση αυτή λέγετε δυναμική διότι κάθε 2
με 3 βδομάδες συνήθως σου την αλλάζει. Αν για κάποιον λόγο θες να διατηρείς την
ίδια διεύθυνση IP μπορείς να ζητήσεις να σου δοθεί μια στατική διεύθυνση, συνήθως
όμως αυτό κοστίζει περισσότερο. Παρόμοια με το πως ο πάροχος σου δίνει στο
router σου μια δημόσια διεύθυνση IPv4, ένα router μπορεί επίσης να
λειτουργήσει σαν ένας DHCP server
και έτσι να δώσει αυτόματα
ιδιωτικές διευθύνσεις IPv4
στις συσκευές που συνδέονται σε αυτό. Οι διευθύνσεις αυτές είναι προσωρινές
αφού δίνονται σε κάθε συσκευή για περιορισμένο χρόνο αλλά μπορείς αν θες να
ρυθμίσεις το router
σου έτσι ώστε
συγκεκριμένες διευθύνσεις IPv4
να δίνονται πάντα σε συγκεκριμένες συσκευές, κάτι που μπορεί να θες να κάνεις
για έναν εκτυπωτή για παράδειγμα. Οι διευθύνσεις αυτές λέγονται ιδιωτικές διότι
χρησιμοποιούνται μόνο για την επικοινωνία των συσκευών μέσα στο δίκτυο σου,
όταν επικοινωνείς με άλλα δίκτυα χρησιμοποιείς την δημόσια διεύθυνση IP που σου
έχει δώσει ο πάροχος σου, την οποία και μοιράζεσαι με όλες τις συσκευές του
δικτύου σου
Αν ένας φίλος σου ήθελε να
χρησιμοποιήσει εξ αποστάσεως τον υπολογιστή σου θα μπορούσε να το κάνει
χρησιμοποιώντας μια υπηρεσία όπως η RDC (remote desktop connection). Η υπηρεσία
αυτή είναι προκαθορισμένη να δέχεται δεδομένα στο port 3389 του υπολογιστή σου.
Η ιδιωτική διεύθυνση IPv4
της συσκευής σου όμως δεν μπορεί να χρησιμοποιηθεί από υπολογιστές έξω από το
δίκτυο σου. Για να επιτρέψεις στον φίλο σου να επικοινωνήσει με το port 3389
του υπολογιστή σου θα πρέπει να ρυθμίσεις κάποιον από τους αριθμούς ports του
router σου έτσι ώστε δεδομένα που στέλνονται σε αυτόν να προωθούνται στο port
3389 του υπολογιστή σου. Έτσι ο φίλος σου μπορεί να χρησιμοποιήσει την δημόσια
IPv4
του router σου συνοδευμένη με τον αριθμό port τον οποίο ρύθμισες για να πάρει
πρόσβαση στον υπολογιστή σου. Ο αριθμός port που θα ρυθμίσεις μπορεί να είναι
οποιοσδήποτε, παρόλα αυτά καλό θα ήταν να είναι κάποιος αριθμός μεγαλύτερος του
49152, αφού αριθμοί μικρότεροι αυτού μπορεί να χρησιμοποιούνται από άλλες
υπηρεσίες η προγράμματα. Η διαδικασία αυτή λέγεται port forwarding και στο
παράδειγμα το οποίο έδωσα είναι αναγκαίο να την κάνεις εσύ ο ίδιος. Όταν μία
σύνδεση ξεκινάει από εσένα παρόλα αυτά, το router σου μπορεί να πραγματοποιήσει
την διαδικασία αυτή αυτόματα. Όταν συνδέεσαι σε μια ιστοσελίδα, ο υπολογιστής
σου στέλνει πακέτα δεδομένων στον server της ιστοσελίδας μέσο του router σου.
Ξεκινώντας την σύνδεση αυτή το router σου ρυθμίζει κάποιο από τα ports του
αυτόματα έτσι ώστε δεδομένα που στέλνονται σε αυτό να προωθούνται στον υπολογιστή
σου, έπειτα ξεκινάει την επικοινωνία με την ιστοσελίδα χρησιμοποιώντας αυτό το port, και έτσι δεδομένα τα οποία
στέλνονται πίσω από την ιστοσελίδα προωθούνται στον υπολογιστή σου.
Αν παρομοιάζαμε τις διευθύνσεις IPv4 με αριθμούς τηλεφώνου, η μέθοδος
NAT είναι όπως όταν όλοι σε ένα γραφείο έχουν τον ίδιο αριθμό τηλεφώνου, αλλά
πρέπει να μιλήσεις με τη γραμματέα για να συνδεθείς στο σωστό τηλέφωνο. Για
αυτόν τον λόγο η μέθοδος NAT δημιουργεί αρκετά τεχνικά προβλήματα σε πράγματα
όπως στα βιντεοπαιχνίδια, στην τεχνολογία VoIP (Voice Over Internet Protocol)
που σου επιτρέπει να πάρεις τηλέφωνο μέσο διαδικτύου, και γενικώς πάρα πολλά
πράγματα. Τα τελευταία χρόνια έχει ξεκινήσει να χρησιμοποιείται μια νέα έκδοση
διεύθυνσης IP, η IPv6, και χάρης αυτής της έκδοσης IP δεν είναι αναγκαία πια η
χρήση της μεθόδου ΝΑΤ. Η νέα αυτή έκδοση μπορεί να μας προσφέρει τόσους πολλούς
διαφορετικούς συνδυασμούς αριθμών που ακόμα και αν εκχωρούσαμε ένα
τρισεκατομμύρια νέες διευθύνσεις IPv6 κάθε δευτερόλεπτο για ένα τρισεκατομμύριο
χρόνια, και πάλι δεν θα πλησιάζαμε να φτάσουμε το όριο. Η IPv4 εξακολουθεί να
χρησιμοποιείται παρόλα αυτά από πολλούς για λόγους συμβατότητας αφού πολλοί
servers εξακολουθούν να μην υποστηρίζουν την IPv6. Για αυτόν τον λόγο οι
περισσότερες συσκευές σήμερα έχουν και τις δύο εκδόσεις IP έτσι ώστε αν η IPv6
δεν είναι συμβατή να χρησιμοποιείται η IPv4 με την μέθοδο NAΤ όπως περίγραψα
προηγουμένως.
Ο πάροχος υπηρεσιών Διαδικτύου σου,
σου εκχωρεί έναν αρκετά μεγάλο αριθμό διευθύνσεων IPv6 στο δίκτυο σου. Με λίγα
λόγια, σου δίνεται μία διεύθυνση στην οποία κάποια από τα τελευταία της ψηφία
είναι ελεύθερα να μετατραπούν σε οποιονδήποτε συνδυασμό θέλεις. Σου δίνεται
δηλαδή μια μοναδική στον κόσμο ομάδα διευθύνσεων την οποία μπορείς να
χρησιμοποιήσεις για να μοιράσεις διευθύνσεις στις συσκευές οι οποίες συνδέονται
στο router σου. Ο τρόπος που σου δίνονται αυτές οι διευθύνσεις είναι παρόμοιος
με τον τρόπο που σου δίνεται και μια διεύθυνση IPv4, αντί για DHCP server όμως το router σου ζητάει
μια ομάδα διευθύνσεων από έναν DHCPv6 server και έπειτα υπάρχουν διάφοροι
μέθοδοι που μπορεί να χρησιμοποιήσει για να μοιράσει αυτές τις διευθύνσεις στις
συσκευές τις οποίες συνδέονται σε αυτό.
Έχοντας καταλάβει πλέον τα βασικά
σχετικά με το πως οι υπολογιστές μπορούν και επικοινωνούν μεταξύ τους μπορούμε
τώρα να αναλύσουμε σε μεγαλύτερο βάθος το τι ακριβώς συμβαίνει όταν συνδέεσαι
σε μια ιστοσελίδα. Ένας web browser είναι μια εφαρμογή ή οποία σου προσφέρει
πρόσβαση στο Διαδίκτυο. Όταν τον χρησιμοποιείς για να επισκεφτείς μια
ιστοσελίδα, ο web browser ανακτά το απαραίτητο περιεχόμενο από την διεύθυνση
που πληκτρολόγησες και στη συνέχεια εμφανίζει την ιστοσελίδα στην οθόνη σου. Το
πως θα πρέπει το περιεχόμενο αυτό να τοποθετηθεί στην οθόνη και άλλες διάφορες
συμπεριφορές που θα πρέπει να έχει η ιστοσελίδα προγραμματίζονται
χρησιμοποιώντας γλώσσες όπως HTML, CSS και JavaScript τις οποίες και ο web
browser μπορεί να διαβάζει. Το περιεχόμενο μιας ιστοσελίδας συνήθως είναι αποθηκευμένο σε έναν web server, ο οποίος συνήθως βρίσκεται σε
κάποιο data
center, ένα
χτίριο δηλαδή που περιέχει και διατηρεί πολλούς servers. Ένας web server μπορεί να περιέχει πολλές
ιστοσελίδες, όλες τους είναι στην ίδια συσκευή, και έτσι έχουν την ίδια
διεύθυνση IP,
χάρης των HTTP
headers
όμως, ο ιδιοκτήτης του
web server μπορεί να τον προγραμματίσει έτσι
ώστε να στέλνει συγκεκριμένο περιεχόμενο για συγκεκριμένες URL. Θα αναφερθώ σε αυτήν την
διαδικασία ποιο αναλυτικά αργότερα που θα μιλήσω για το πρωτόκολλο HTTP.
Στο Διαδίκτυο, όταν θέλουμε να
επισκεφθούμε μια ιστοσελίδα συνήθως πληκτρολογούμε μια URL (Uniform Resource Locators). Για παράδειγμα, για να
χρησιμοποιήσεις την μηχανή αναζήτηση της Google, μπορείς να πληκτρολογήσεις
στον browser σου
την URL
https://www.google.com:443
και έπειτα πατώντας enter
η μηχανή αναζήτησης
της google
θα εμφανιστεί. Πως
ακριβώς λειτουργεί μια URL
όμως; Αρχικά, το πρώτο μέρος της URL υποδεικνύει το πρωτόκολλο που θες να χρησιμοποιήσεις για
την επικοινωνία σου με την ιστοσελίδα. Στο τέλος της URL περιλαμβάνεις τον αριθμό port με τον οποία θες να συνδεθείς. Για
τις περισσότερες ιστοσελίδες δεν είναι
αναγκαίο να πληκτρολογήσεις κάποιον αριθμό port, αφού αφήνοντας τον κενό ο browser σου θα χρησιμοποιήσει αυτόματα το port 80 για επικοινωνίες HTTP και το port 443 για επικοινωνίες HTTPS. Για αυτόν τον λόγο οι
περισσότερες ιστοσελίδες δέχονται επικοινωνίες σε αυτά τα δύο ports. Το www.google.com είναι ένα όνομα ιστού, το οποίο
αντιστοιχεί στην διεύθυνση IP
της Google.
Για την διευκόλυνση του ανθρώπου
στο Διαδίκτυο έχει δημιουργηθεί το σύστημα DNS (Domain Name System), αντί για διευθύνσεις IP δηλαδή χρησιμοποιούμε ονόματα ιστού
τα οποία είναι και ποιο εύκολο να θυμόμαστε. Ο υπολογιστής από μόνος του δεν
μπορεί να γνωρίζει σε ποια διεύθυνση IP αντιστοιχεί το
κάθε όνομα ιστού, για αυτό δημιουργήθηκαν οι DNS servers. Όταν πληκτρολογούμε την URL της google στον browser μας λοιπόν αρχικά γίνεται ένας
έλεγχος, μην τυχόν μπορέσει ο υπολογιστής μας να βρει ποια διεύθυνση IP αντιστοιχεί στον όνομα ιστού της google χωρίς να χρειαστεί την βοήθεια των DNS servers. Για παράδειγμα, μπορεί η
διεύθυνση αυτή να έχει ήδη αποθηκευτεί στην μνήμη του browser μας η την μνήμη του λειτουργικού
συστήματος του υπολογιστή μας αν την είχαμε ξανά επισκεφθεί στο παρελθόν.
Ακόμα, είναι πιθανόν να είναι αποθηκευμένη στην μνήμη του router μας η του DNS resolver που χρησιμοποιούμε. Αν όμως η
διεύθυνση δεν βρεθεί τότες ζητάει από τον DNS resolver μας να του την βρει. Ο DNS resolver που χρησιμοποιείς συνήθως
διαλέγεται από τον πάροχο υπηρεσιών Διαδικτύου σου, αλλά μπορείς να τον
αλλάξεις αν θέλεις. Ένας DNS
resolver
επικοινωνεί με DNS servers έτσι ώστε να βρει την διεύθυνση που
αναζητάς.
Υπάρχει μια ιεραρχία στον τρόπο με
τον οποίο λειτουργούν οι DNS
servers. Ίσως
έχεις παρατηρήσει πως όλα τα ονόματα ιστού συνήθως τελειώνουν με κάποια λέξη
όπως το com,
gr και άλλες παρόμοιες. Αυτό που
λογικά δεν ξέρεις όμως είναι ότι όλα τα ονόματα ιστού στην πραγματικότητα τελειώνουν με μια τελεία. Δεν το ξέρεις διότι
ο browser σου
δεν στο δείχνει, αλλά δοκίμασε να προσθέσεις μια τελεία στο τέλος οποιουδήποτε
ονόματος ιστού και δεν θα υπάρξει κανένα πρόβλημα. Η τελεία στο τέλος
αντιστοιχεί στον πρώτο DNS
server
στην ιεραρχία, ο
οποίος λέγεται root.
Όταν ο DNS
resolver
σου επικοινωνήσει με
έναν root
server, επειδή
το όνομα ιστού της google
τελειώνει με com ο root server θα στείλει στον DNS resolver σου την διεύθυνση IP του DNS server που είναι υπεύθυνος για τις
ιστοσελίδες που τελειώνουνε με com. Αυτός ο DNS server ονομάζεται TLD (top-level domain) server και διαχειρίζεται τον τομέα com. O DNS resolver σου θα επικοινωνήσει με τον TLD server του τομέα com ο οποίος έπειτα θα στείλει στον DNS resolver σου την διεύθυνση του Authoritative
DNS server της google, ο οποίος και περιέχει την διεύθυνση
IP που ψάχνεις. Όταν
αυτή η διαδικασία αναζήτησης τελειώσει η διεύθυνση θα σταλθεί στον υπολογιστή
σου και θα αποθηκευτεί στην μνήμη του έτσι ώστε την επόμενη φορά που την
χρειαστείς να μην χρειάζεται να ξανά γίνει όλη αυτή η διαδικασία. Κάποια από τα
βήματα τα οποία ανέφερα μπορούν να παραληφθούν αφού όλοι οι DNS servers στην αλυσίδα κρατούν και αυτοί την
δικιά τους μνήμη, όπου και αποθηκεύουν διευθύνσεις οι οποίες τους έχουν ζητηθεί
πρόσφατα. Ο DNS
resolver
σου για παράδειγμα
μπορεί να γνωρίζει ήδη την διεύθυνση IP του TLD
server
του τομέα com αφού είναι ένας αρκετά γνωστός
τομέας που χρησιμοποιείται συνέχεια.
Οι Authoritative DNS servers είναι αρκετά ακριβοί, αλλά υπάρχουν
πολλές εταιρίες online που για ένα σχετικά μικρό
χρηματικό ποσό, η ακόμα και χωρίς
κανένα χρηματικό ποσό, μπορούν να σου προσφέρουν ένα όνομα ιστού για την
ιστοσελίδα σου. Όποιος σου παρέχει τον DNS resolver σου μπορεί να βλέπει την διαδικτυακή
σου δραστηριότητα, την οποία μπορεί και να κλέψει για να πουλήσει. Υπάρχουν
όμως DNS resolvers οι οποίοι υπόσχονται πως η δραστηριότητα σου θα παραμένει
ιδιωτική, ένα παράδειγμα τέτοιου DNS resolver είναι και ο DNS resolver της cloudeflare. Επειδή το Διαδίκτυο είναι τεράστιο
και οι DNS servers χρησιμοποιούνται αρκετά έχουν δημιουργηθεί πολλοί DNS servers οι οποίοι και έχουν τοποθετηθεί
στρατηγικά σε διάφορα μέρη του κόσμου, ο DNS resolver σου θα χρησιμοποιήσει τους DNS servers που βρίσκονται ποιο κοντά σε αυτόν,
ενώ εσύ θα χρησιμοποιήσεις τον DNS resolver που βρίσκεται ποιο κοντά σε εσένα. Υπάρχουν
συνολικά 13 διαφορετικές διευθύνσεις IP που αντιστοιχούν σε DNS root servers, αλλά χάρης της τεχνικής anycast μπορεί η κάθε διεύθυνση να
χρησιμοποιείται από πολλούς servers και έτσι πλέον υπάρχουν πάνω από 1300 root servers σε όλον τον κόσμο.
Στο διαδίκτυο χρησιμοποιούνται
διάφοροι μέθοδοι μετάδοσης, για παράδειγμα, λογικά θα έχετε ακουστά την μέθοδο broadcast που στέλνει πακέτα δεδομένων σε
όλες τις συσκευές στο δίκτυο σου, μία άλλη μέθοδος μετάδοσης είναι και η
μέθοδος Anycast. Με την μέθοδο αυτή, ένα μήνυμα μπορεί να λαμβάνεται από τον
πλησιέστερο δέκτη σε μια ομάδα δεκτών που έχουν την ίδια διεύθυνση IP. Το Anycast δεν υποστηρίζεται επίσημα από την
διεύθυνση IPv4,
παρόλα αυτά, μπορεί και εφαρμόζεται με την χρήση του πρωτόκολλου BGP (το οποίο και ανέφερα
προηγουμένως). Δεν θα αναλύσω σε μεγαλύτερο βάθος το τρόπο λειτουργίας αυτής της
μεθόδου, είναι ανάγκη παρόλα αυτά να καταλάβετε πως πολλές συσκευές μπορούν να
χρησιμοποιούν την ίδια διεύθυνση IP και πως ο υπολογιστής σου μπορεί να συνδεθεί στην
συσκευή ποιο κοντά σε αυτόν.
Συνήθως η μέθοδος Anycast χρησιμοποιείται κυρίως για να λύσει
προβλήματα απόστασης. Για το πρόβλημα της αντοχής ενός server από την άλλη συνήθως
χρησιμοποιούνται load
balancers, για
παράδειγμα, ένα data
center
της google μπορεί να χρησιμοποιεί έναν load balancer, έτσι ώστε αντί να χρησιμοποιεί
έναν server
για όλες τις συσκευές
που συνδέονται σε αυτό το data
center, να έχει
μια ομάδα servers στους
οποίους ο load
balancer
να μοιράζει τα
αιτήματα στρατηγικά. Ακόμα, για να βελτιώσουν την εμπειρία των χρηστών τους, μεγάλες εταιρίες
δημιουργούν servers με
αντίγραφα στατικών δεδομένων τους, και τους τοποθετούν σε στρατηγικές
γεωγραφικές τοποθεσίες σε όλο τον κόσμο. Αυτό το δίκτυο από servers ονομάζεται CDN (content delivery network), και ο κάθε server αυτού του δικτύου ονομάζεται edge server. Ένας edge server θα μπορούσε για παράδειγμα να περιέχει
φωτογραφίες και υλικό το οποίο δεν αλλάζει. Συνήθως ο DNS server του ονόματος ιστού που πληκτρολόγησες
θα σου επιστρέψει την διεύθυνση IP ενός δικτύου CDN, το οποίο δίκτυο χρησιμοποιεί την τεχνική Anycast και περιέχει πολλούς edge servers. Αν ο CDN server που θα συνδεθείς δεν περιέχει τα
δεδομένα που ζητάς τότες τα ζητάει από έναν πραγματικό server κοντά σε αυτόν, σου τα επιστρέφει και
μετά τα αποθηκεύει στην μνήμη του σε περίπτωση που τα ξανά χρειαστεί.
Όταν λοιπόν συνδέεσαι σε μια
ιστοσελίδα, με όποιον τρόπο και να γίνεται αυτό, χρησιμοποιείς το πρωτόκολλο HTTP, όπως έχω αναφέρει και προηγούμενος.
Το πρωτόκολλο HTTP (Hypertext Transfer Protocol) χρησιμοποιείται συνήθως για την
μεταφορά αρχείων και άλλων δεδομένων μεταξύ web browsers και web servers, αν και μπορεί να χρησιμοποιηθεί και
για άλλα πράγματα την σημερινή εποχή. Όταν συνδέεσαι σε μια ιστοσελίδα,
στέλνεις ένα μήνυμα HTTP ζητώντας να σου δοθούν τα αρχεία τα οποία χρειάζεσαι για την προβολή της
ιστοσελίδας, έπειτα η ιστοσελίδα στέλνει πίσω μια απάντηση HTTP με τα αρχεία τα οποία ζήτησες. Κάπως
έτσι δουλεύει αυτό το πρωτόκολλο, τα μηνύματα HTTP στέλνονται σε ζευγάρια, στέλνεις
αίτημα HTTP για
κάτι και λαμβάνεις μια απάντηση HTTP. Μαζί με αυτά τα μηνύματα στέλνονται και επιπλέον
πληροφορίες, τα HTTP headers. Για παράδειγμα, ένας HTTP header ενός αιτήματος θα μπορούσε να
περιέχει την URL που
πληκτρολόγησες, ενώ ένας HTTP header μιας απάντησης θα μπορούσε να
περιέχει τον αριθμό κατάστασης της απάντησης (αν αυτό που ζήτησες δεν βρέθηκε
τότες ο αριθμός αυτός θα ήταν 404). Οι HTTP headers περιέχουν και άλλες πολλές
πληροφορίες, τις οποίες και θα χρειαστεί να μάθεις αν έχεις σκοπό κάποτε στην
ζωή σου να ασχοληθείς με το Διαδίκτυο, αφού ένας προγραμματιστής μπορεί να
προγραμματίσει έναν server έτσι ώστε όταν λαμβάνει αίτημα HTTP σε κάποιο port, ανάλογα με τις πληροφορίες που περιέχει ο HTTP header να στέλνει πίσω συγκεκριμένη HTTP απάντηση.
Τα μηνύματα HTTP δεν είναι ασφαλές, αφού το
περιεχόμενο τους μπορεί να το διαβάσει οποιοσδήποτε. Ένας hacker δηλαδή εύκολα θα μπορούσε να διαβάσει
τα μηνύματα HTTP που
στέλνονται ανάμεσα σε εσένα και μια ιστοσελίδα, κάτι που δεν είναι καλό, ειδικά
όταν στέλνεις σημαντικές πληροφορίες όπως κωδικούς, τηλέφωνα, και άλλα
ευαίσθητα στοιχεία. Για αυτόν τον λόγο δημιουργήθηκε το πρωτόκολλο HTTPS (Secure Hypertext Transfer Protocol) το οποίο στην ουσία λειτουργεί με
τον ίδιο τρόπο που το πρωτόκολλο HTTP λειτουργεί, αλλά προσθέτει έναν τοίχο προστασίας,
κρυπτογραφώντας τα μηνύματα που στέλνονται. Για την κρυπτογράφηση αυτή το
πρωτόκολλο HTTPS μπορεί
να χρησιμοποιήσει το πρωτόκολλο SSL (secure sockets layer) η το πρωτόκολλο TLS (transport
layer security). Το πρωτόκολλο TLS είναι μια ποιο μοντέρνα έκδοση του πρωτόκολλου SSL, και τα δύο λειτουργούν παρόμοια
όμως, επαληθεύουν την ταυτότητα της ιστοσελίδας και ξεκινούν μια
κρυπτογραφημένη επικοινωνία.
Για να παρέχει μια ιστοσελίδα υπηρεσίες
HTTPS θα πρέπει να κατέχει ένα SSL η TSL πιστοποιητικό, το οποίο μπορεί να
αγοράσει από μία οντότητα CA (Cartificate Authority). Όταν επικοινωνείς με μια ιστοσελίδα
χρησιμοποιώντας HTTPS αρχικά η ιστοσελίδα θα σου στείλει το πιστοποιητικό της, το οποίο
περιλαμβάνει ένα κλειδί, μια υπογραφή και άλλες πληροφορίες σχετικά με την
ιστοσελίδα. Ο browser σου μπορεί
να επαληθεύσει πως το πιστοποιητικό αυτό είναι έγκυρο, αφού συνήθως έχει
αποθηκευμένες τις υπογραφές όλων των έμπιστων οντοτήτων CA. Σκοπός αυτού του πιστοποιητικού δεν
είναι να επαληθεύσει πως ο αποστολέας είναι όντως η ιστοσελίδα, σκοπός του
είναι να επαληθεύσει πως το δημόσιο κλειδί το οποίο στάλθηκε μαζί του ανήκει
στην ιστοσελίδα. Αυτό το κλειδί μπορεί να κρυπτογραφεί μηνύματα, τα οποία όμως μπορεί να αποκρυπτογραφήσει ένα
μόνο άλλο κλειδί, το ιδιωτικό κλειδί της ιστοσελίδας το οποίο μόνο αυτή έχει
και υποτίθεται προστατεύει καλά. Θα μπορούσε κάποιος άλλος να σου έχει στείλει
το πιστοποιητικό, αλλά δεν θα κατάφερνε κάτι, αφού δεν θα είχε το ιδιωτικό
κλειδί της ιστοσελίδας. Αφού η ταυτότητα του κλειδιού επαληθευτεί τότες ο
υπολογιστής σου δημιουργεί ένα PMS (pre master secret) το
οποίο κρυπτογραφεί με το δημόσιο κλειδί της ιστοσελίδας και της το στέλνει.
Έπειτα η ιστοσελίδα το αποκρυπτογραφεί με το ιδιωτικό της κλειδί. Ένα PMS περιέχει απλά ένα σύνολο αριθμών τους οποίους χρησιμοποιεί ο υπολογιστή
σου και η ιστοσελίδα για να δημιουργήσουν κλειδιά κρυπτογράφησης με τα οποία
ύστερα μπορούν να ξεκινήσουν μια επικοινωνία συμμετρικής κρυπτογράφησης.
Στο διαδίκτυο υπάρχουν και άλλα πολλά
πρωτόκολλα. Για παράδειγμα, υπάρχει το πρωτόκολλο SMTP (Simple Mail Transfer Protocol) που
χρησιμοποιείται για την μετάδοση μηνυμάτων ηλεκτρονικού ταχυδρομείου. Υπάρχει
ακόμα το πρωτόκολλο FTP (File Transfer Protocol) που χρησιμοποιείται για την μεταφορά αρχείων, κάτι που μπορεί να κάνει
και το πρωτόκολλο HTTP αλλά
το πρωτόκολλο FTP είναι καλύτερο σε αυτό ειδικά όταν τα αρχεία
είναι μεγάλου μεγέθους. Ακόμα υπάρχει το πρωτόκολλο SNMP (Simple Network Management Protocol), που χρησιμοποιείται για την παρακολούθηση δικτύων, τον εντοπισμό
σφαλμάτων δικτύου και μερικές φορές χρησιμοποιείται ακόμη και για την ρύθμιση συσκευών
από απόσταση. Γενικώς, υπάρχουν πολλά πρωτόκολλα, τα οποία δεν θα μπορούσα
εύκολα να καλύψω όλα σε ένα μόνο άρθρο. Τα πρωτόκολλα HTTP και HTTPS είναι όμως τα ποιο σημαντικά, αφού τα
χρησιμοποιούμε συνέχεια, για αυτό και αναφέρθηκα σε αυτά ποιο αναλυτικά από τα
υπόλοιπα.
Αυτά είναι λοιπόν τα βασικά σχετικά με το πως
λειτουργεί το διαδίκτυο. Υπάρχουν φυσικά πολλά πράγματα τα οποία δεν κάλυψα,
και άλλα τα οποία κάλυψα μεν, αλλά όχι τελείως. Γενικώς, υπάρχει πολύ βάθος
στον τρόπο λειτουργίας του Διαδικτύου, και μπορεί να γίνει αρκετά περίπλοκος. Ελπίζω
παρόλα αυτά εφόσον διαβάσατε το άρθρο μου να μπορείτε πλέον να καταλάβετε
λιγάκι καλύτερα το τι ακριβώς συμβαίνει όταν συνδέεστε στο διαδίκτυο. Δεν
χρειάζεται να καταλάβετε τα πάντα, κάποια τεχνικά κομμάτια τα οποία ανάλυσα δεν
είναι αλήθεια αναγκαίο να τα γνωρίζει κάποιος, και η αλήθεια είναι πως αν και
έκανα την έρευνα μου, αμφιβάλω πως ότι έγραψα είναι σίγουρα και ολόσωστο. Θα
ήθελα να αναλύσω κάποια κομμάτια περισσότερο, άλλα τότες το άρθρο δεν θα
τέλειωνε ποτέ. Για αυτό, αν θέλετε κάποια από τα θέματα τα οποία ανάλυσα να τα
καταλάβετε καλύτερα και σωστότερα τότες θα σας συνιστούσα να βρείτε και να
διαβάσετε άλλα άρθρα στο διαδίκτυο, που να τα έχουν γράψει ειδικοί.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου