Το Διαδίκτυο: HTTP και HTML Είμαι η Τζασμίν και είμαι επικεφαλής προγραμμάτων στην ομάδα δημιουργίας του XBOX ONE. Μια από τις σπουδαιότερες λειτουργίες που προσφέρουμε είναι το XBOX Live. Είναι μια διαδικτυακή υπηρεσία που διασυνδέει παίκτες από όλο τον κόσμο μέσω ίντερνετ. Αυτό δεν είναι καθόλου εύκολο και υπάρχουν πολλά πράγματα που συμβαίνουν στο παρασκήνιο. Το διαδίκτυο αλλάζει τελείως το πώς οι άνθρωποι αλληλεπιδρούν και επικοινωνούν. Όμως πώς λειτουργεί; Πώς υπολογιστές σε όλη τη γη επικοινωνούν μεταξύ τους; Ας σκεφτούμε την πλοήγηση στο ίντερνετ. Πρώτα ανοίγουμε έναν φυλλομετρητή. Είναι η εφαρμογή για το άνοιγμα των ιστοσελίδων. Μετά, πληκτρολογούμε τη διεύθυνση (ή URL) της ιστοσελίδας που θέλουμε να επισκεφθούμε π.χ. tumblr.com. Γεια, είμαι ο Ντέιβιντ Καρπ, ιδρυτής τουΤumblr. Σήμερα θα μιλήσουμε για το πως λειτουργούν οι φυλλομετρητές που χρησιμοποιούμε καθημερινά. Ίσως να έχετε αναρωτηθεί τι πραγματικά συμβαίνει όταν πληκτρολογείτε μια διεύθυνση και πατάτε enter. Και πραγματικά είναι σχεδόν τόσο τρελό όσο φαντάζεστε. Εκείνη την στιγμή, ο υπολογιστής σας αρχίζει να μιλάει με έναν άλλον υπολογιστή που ονομάζεται εξυπηρετητής που συνήθως είναι χιλιάδες χιλιόμετρα μακριά. Και σε χιλιοστά του δευτερολέπτου ο υπολογιστής σας ρωτάει τον εξυπηρετητή για μια ιστοσελίδα, και ο εξυπηρετητής του απαντάει σε μια γλώσσα που λέγεται HTTP (HyperText Transfer Protocol) και είναι η γλώσσα που χρησιμοποιούν οι υπολογιστές για να ζητήσουν ένα αρχείο από έναν άλλο υπολογιστή. Και είναι πραγματικά αρκετά κατανοητή. Αν ακούγατε τη συνομιλία μεταξύ του υπολογιστή και του εξυπηρετητή, θα διαπιστώνατε ότι είναι κυρίως μια σειρά από αιτήματα "GET" (λαμβάνω). Δηλαδή απλά η λέξη "GET" και το όνομα του αρχείου που ζητάτε. Άρα, αν προσπαθήσετε να συνδεθείτε στο Tumblr για να ανοίξετε την αρχική σελίδα μας ουσιαστικά στέλνετε ένα αίτημα GET /login στον εξυπηρετητή Tumblr. Αυτό του λέει ότι ζητάτε όλον τον κώδικα HTML για την αρχική σελίδα του Tumblr. HTML σημαίνει Hypertext Markup Language είναι δηλαδή η γλώσσα που λέει σε έναν φυλλομετρητή πώς μοιάζει η ιστοσελίδα. Αν σκεφτούμε για παράδειγμα τη Βικιπαίδεια, η οποία είναι στην ουσία μόνο ένα μεγάλο απλό έγγραφο, η HTML είναι η γλώσσα που χρησιμοποιούμε για να κάνουμε τον τίτλο μεγάλο και έντονο, να ορίσουμε γραμματοσειρά, να φτιάξουμε υπερσυνδέσμους προς άλλες σελίδες, το να κάνουμε κάποια γράμματα έντονα ή πλάγια, να τοποθετήσουμε μια εικόνα στην μέση της σελίδας, να την ευθυγραμμίσουμε δεξιά ή αριστερά. Το κείμενο μιας ιστοσελίδας συμπεριλαμβάνεται απευθείας στην HTML, όμως άλλα τμήματα όπως εικόνες ή βίντεο είναι ξεχωριστά αρχεία με δική τους URL που πρέπει να ζητηθούν. Ο φυλλομετρητής στέλνει ξεχωριστά αιτήματα HTTP για καθένα από αυτά και τα εμφανίζει μόλις τα λάβει. Αν μια σελίδα έχει πολλές διαφορετικές εικόνες, η κάθε μια χρειάζεται ένα ξεχωριστό αίτημα HTTP και η σελίδα φορτώνει πιο αργά. Όταν περιηγείστε στο διαδίκτυο, δεν αιτείστε μόνο σελίδες με αιτήματα GET. Πολλές φορές στέλνετε πληροφορίες, όπως όταν συμπληρώνετε μια φόρμα ή πληκτρολογείτε ένα ερώτημα αναζήτησης. Ο φυλλομετρητής στέλνει αυτές τις πληροφορίες σε απλό κείμενο στον εξυπηρετητή χρησιμοποιώντας ένα αίτημα HTTP POST. Όταν για παράδειγμα συνδέεστε στο Tumblr, πρώτα στέλνετε ένα αίτημα POST στην αρχική σελίδα του. Το αίτημα μεταφέρει κάποια δεδομένα μαζί του, δηλαδή την ηλεκτρονική σας διεύθυνση και τον κωδικό σας. Αυτό πηγαίνει στον εξυπηρετητή του Tumblr. Ο εξυπηρετητής του Tumblr καταλαβαίνει ότι είστε π.χ. ο Ντέιβιντ. Στέλνει τότε μια ιστοσελίδα πίσω στον φυλλομετρητή σας που λέει "Επιτυχία! Συνδέθηκε ο Ντέηβιντ." Αλλά μαζί με αυτήν, επισυνάπτει ένα μικροσκοπικό αόρατο cookie δεδομένων που ο φυλλομετρητής σας βλέπει και αποθηκεύει. Και είναι πολύ σημαντικό γιατί είναι πραγματικά ο μόνος τρόπος που έχει μια ιστοσελίδα για να θυμάται ποιος είστε. Τα δεδομένα που περιέχει ουσιαστικά αυτό το cookie είναι ο αριθμός ταυτοποίησής σας για το Tumblr. Ο φυλλομετρητής σας θυμάται αυτόν τον αριθμό και την επόμενη φορά που κάνετε ανανέωση της σελίδας Tumblr ή πηγαίνετε στο Tumblr.com προσαρτά αυτόματα αυτόν τον αριθμό ταυτότητας στο αίτημα που στέλνεται από αυτόν προς τον εξυπηρετητή του Tumblr. Ο εξυπηρετητής του Tumblr βλέπει το αίτημα που προέρχεται από τον φυλλομετρητή σας μαζί με τον αριθμό ταυτότητας και ξέρει ότι: "Αυτό είναι ένα αίτημα από τον Ντέιβιντ". Όμως το διαδίκτυο είναι τελείως ανοιχτό. Όλες οι συνδέσεις του είναι κοινές και οι πληροφορίες στέλνονται σε απλό κείμενο. Αυτό δίνει τη δυνατότητα σε χάκερς να κατασκοπεύσουν προσωπικές πληροφορίες που στέλνετε μέσω διαδικτύου. Οι ασφαλείς ιστότοποι το αποτρέπουν αυτό, ζητώντας από τον φυλλομετρητή να επικοινωνεί σε ασφαλές κανάλι με την χρήση του πιστοποιητικού ασφαλείας SSL (Secure Sockets Layer) και του μεταγενέστερου TLS (Transport Layer Security). Μπορείτε να δείτε το SSL και το TLS σαν ένα στρώμα ασφαλείας τυλιγμένο γύρω από τις επικοινωνίες σας για να τις προστατεύουν από το κατασκοπεία ή παρεμβάσεις. Το SSL και το TLS είναι ενεργά όταν βλέπετε το μικρό λουκέτο που εμφανίζεται στη γραμμή διεύθυνσης του φυλλομετρητή σας, δίπλα στο HTTPS. Τα πρωτόκολλα HTTPS εξασφαλίζουν ότι τα αιτήματα HTTP που κάνετε είναι ασφαλή και προστατευμένα. Όταν ένας ιστότοπος ζητά από τον φυλλομετρητή σας να μιλήσουν με ασφαλή σύνδεση, πρώτα παρέχει ένα ψηφιακό πιστοποιητικό. Αυτό είναι σαν μια επίσημη ταυτότητα που αποδεικνύει ότι είναι όντως η αυθεντική ιστοσελίδα που ζητήσατε. Τα πιστοποιητικά ασφαλείας εκδίδονται από αρχές πιστοποίησης, έμπιστες υπηρεσίες που επαληθεύουν την ταυτότητα των ιστοσελίδων και εκδίδουν πιστοποιητικά για αυτές. Όπως ακριβώς η κυβέρνηση εκδίδει ταυτότητες ή διαβατήρια. Αν ένας ιστότοπος προσπαθήσει να ξεκινήσει μια ασφαλή σύνδεση χωρίς ψηφιακό πιστοποιητικό, ο φυλλομετρητής θα σας ειδοποιήσει. Αυτά είναι τα βασικά της περιήγησης στον ιστό! Της πλευράς του διαδικτύου που βλέπουμε κάθε μέρα! Περιληπτικά θα λέγαμε ότι το HTTP και οι DNS διαχειρίζονται την αποστολή και λήψη HTML, αρχείων πολυμέσων, και οτιδήποτε άλλο στο ίντερνετ. Αυτό που το καθιστά δυνατό στο παρασκήνιο είναι το TCP/IP και τα δίκτυα δρομολογητών (router) που χωρίζουν και μεταφέρουν τις πληροφορίες σε μικρά πακέτα. Τα πακέτα αυτά αποτελούνται από δυαδικά ψηφία, ακολουθίες από 1 και 0 που στέλνονται μέσω ηλεκτρικών καλωδίων, οπτικής ίνας και ασύρματων δικτύων. Ευτυχώς, μόλις μάθουμε πώς λειτουργεί ένα στρώμα του διαδικτύου, μπορούμε να βασιζόμαστε σε αυτό χωρίς να χρειάζεται να θυμόμαστε όλες τις λεπτομέρειες. Και μπορούμε να έχουμε εμπιστοσύνη ότι όλα τα στρώματα θα δουλεύουν μαζί για να παραδώσουν επιτυχώς τις πληροφορίες με αξιοπιστία.