Κυριακή 30 Ιανουαρίου 2022

Πώς λειτουργεί το διαδίκτυο ( internet ) ;

 Μέσω μιας απλής γλώσσας ο απέραντος κόσμος του διαδικτύου γίνεται κατανοητός και σε εμάς τους αδαείς. Μια περιήγηση στο παρακάτω άρθρο θα σας πείσει. 

Πώς λειτουργεί το Διαδίκτυο; 

 

            Το διαδίκτυο είναι ένα πάρα πολύ χρήσιμο εργαλείο το οποίο όλοι μας την σημερινή εποχή χρησιμοποιούμε. Με απλά λόγια, το διαδίκτυο είναι ένα δίκτυο από καλώδια το οποίο συνδέει υπολογιστές μεταξύ τους. Μέσω αυτής της σύνδεσης οι υπολογιστές μπορούν και ανταλλάζουν δεδομένα, κάτι που τους επιτρέπει να επικοινωνούν ή να μοιράζονται πληροφορίες. Σκοπός μου σε αυτό το άρθρο είναι να αναλύσω το πως ακριβώς λειτουργεί αυτή η σύνδεση, σε βάθος, όσο πιο σωστά και κατανοητά μπορώ. Δεν είμαι ειδικός πάνω στο θέμα, άρα δεν εγγυούμαι πως ότι γράψω θα είναι σίγουρα σωστό. Έχω ασχοληθεί  παρόλα αυτά με το Διαδίκτυο για αρκετό καιρό και έτσι κατέχω κάποιες γνώσεις.

 

Όταν θες να βάλεις ίντερνετ στο σπίτι σου χρειάζεται αρχικά να επιλέξεις με ποιον τρόπο θες να το κάνεις αυτό. Υπάρχουν διάφοροι τρόποι να συνδεθείς στο Διαδίκτυο, ο πιο γνωστός είναι μέσω καλωδίου 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 είναι όμως τα ποιο σημαντικά, αφού τα χρησιμοποιούμε συνέχεια, για αυτό και αναφέρθηκα σε αυτά ποιο αναλυτικά από τα υπόλοιπα.

 

Αυτά είναι λοιπόν τα βασικά σχετικά με το πως λειτουργεί το διαδίκτυο. Υπάρχουν φυσικά πολλά πράγματα τα οποία δεν κάλυψα, και άλλα τα οποία κάλυψα μεν, αλλά όχι τελείως. Γενικώς, υπάρχει πολύ βάθος στον τρόπο λειτουργίας του Διαδικτύου, και μπορεί να γίνει αρκετά περίπλοκος. Ελπίζω παρόλα αυτά εφόσον διαβάσατε το άρθρο μου να μπορείτε πλέον να καταλάβετε λιγάκι καλύτερα το τι ακριβώς συμβαίνει όταν συνδέεστε στο διαδίκτυο. Δεν χρειάζεται να καταλάβετε τα πάντα, κάποια τεχνικά κομμάτια τα οποία ανάλυσα δεν είναι αλήθεια αναγκαίο να τα γνωρίζει κάποιος, και η αλήθεια είναι πως αν και έκανα την έρευνα μου, αμφιβάλω πως ότι έγραψα είναι σίγουρα και ολόσωστο. Θα ήθελα να αναλύσω κάποια κομμάτια περισσότερο, άλλα τότες το άρθρο δεν θα τέλειωνε ποτέ. Για αυτό, αν θέλετε κάποια από τα θέματα τα οποία ανάλυσα να τα καταλάβετε καλύτερα και σωστότερα τότες θα σας συνιστούσα να βρείτε και να διαβάσετε άλλα άρθρα στο διαδίκτυο, που να τα έχουν γράψει ειδικοί.