Τρίτη 14 Ιουνίου 2011

HTTP

Όπως γνωρίζουμε το Internet αναλύεται σε 4 επίπεδα (Network Access, Internet, Transport, Application) όπου το κάθε ένα από αυτά τα επίπεδα διαθέτει μια ομάδα πρωτοκόλλων. Το σύνολο αυτών των πρωτοκόλλων ονομάζεται TCP/IP. To Hypertext Transfer Protocol (HTTP) είναι πρωτόκολλο του επιπέδου Application και χρησιμοποιείται για τη μεταφορά των δεδομένων αλλά και για τις κλήσεις από τον Web server στον Web browser (και αντίστροφα).


Οπως όλες οι υπηρεσίες του Internet έτσι και η υπηρεσία WWW στηρίζεται στο μοντέλο πελάτη / διανομέα (client/server). Αυτό σημαίνει, πως το σύνολο των πληροφοριών βρίσκεται σε κάποιον υπολογιστή που εξυπηρετεί κλήσεις ανάσυρσης. Το πρόγραμμα εξυπηρέτησης των κλήσεων ονομάζεται server, ενώ το πρόγραμμα το οποίο στέλνει τις κλήσεις στον server ονομάζεται client. Έτσι, λοιπόν, στην υπηρεσία WWW ο server ονομάζεται Web server και ο client ονομάζεται Web client ή Web browser.

Το πρωτόκολλο HTTP επιτρέπει στον υπολογιστή A (τον πελάτη-client) να πραγματοποιήσει μια σύνδεση με τον υπολογιστή B (τον διανομέα- server) και να υλοποιήσει την αίτησή του. Ο server αποδέχεται την σύνδεση που ξεκίνησε από τον client και στέλνει πίσω μια απάντηση. Η HTTP αίτηση αναζητά και βρίσκει την πηγή για την οποία ο client ενδιαφέρεται και λέει στο server ποια ενέργεια να κάνει αναφορικά με αυτή την πηγή. Το πρωτόκολλο HTTP (Hypertext Transfer Protocol) λοιπόν, είναι το σύνολο των κανόνων για την μεταφορά του υπερκειμένου(hypertext) (το οποίο μπορεί να αντιστοιχεί σε αρχεία κειμένου, γραφικών, εικόνας, ήχου, video ή οποιουδήποτε multimedia αρχείου) μέσα στον Παγκόσμιο Ιστό (World Wide Web).

Αμέσως μόλις ο χρήστης του Web ανοίξει τον δικό του Web browser, κάνει χρήση του πρωτοκόλλου HTTP. Πάντα στην αρχη κάθε URL υπαρχει το “http://” .Αυτό σημαίνει ότι χρησιμοποιούμε το πρωτόκολλο HTTP. Ένα απλό παράδειγμα για να καταλάβουμε την διάφορα μεταξύ των πρωτοκόλλων είναι να πληκτρολογήσουμε αυτά τα 2 URL ftp://ftp.ntua.gr και http://www.ntua.gr . Το πρώτο αναφέρεται στον FTP server (πρωτόκολλο FTP) του Εθνικού Μετσόβιου Πολυτεχνείου ενώ το άλλο στον αντίστοιχο Web server (πρωτόκολλο HTTP).

Επειδή πριν μιλήσαμε για μεταφορά δεδομένων πιθανόν να δημιουργηθεί κάποια σύγχυση σχετικά με το πρωτόκολλο TCP το οποίο είναι υπεύθυνο για τον έλεγχο μετάδοσης των δεδομένων. Για εξηγηθεί καλύτερα η διαφορά θα χρησιμοποιήσουμε ένα παράδειγμα.

Έστω λοιπόν ότι βρισκόμαστε σε μια ιστοσελίδα και θέλουμε να “κατεβάσουμε” μια φωτογραφία. Αυτό που θα κάνουμε λογικά είναι δεξί κλικ και αποθήκευση ως. Εκείνη την στιγμή το πρωτόκολλο HTTP κάνει κλήση στον server και ζητά την φωτογραφία. Αφού γίνει αποδεκτό το αίτημα, η φωτογραφία που στην ουσία είναι μια σειρά από bits “μεταφέρεται” στο αμέσως κατώτερο επίπεδο δηλαδή αυτό της μεταφοράς όπου το TCP αναλαμβάνει να τεμαχίσει την πληροφορία (φωτογραφια) σε πακέτα δεδομένων και να δώσει σε κάθε ένα από αυτά έναν αριθμό ακολουθίας και έναν αριθμό επιβεβαίωσης ώστε να μπορεί το TCP του υπολογιστή μας να ελέγξει αν φτάσανε όλα τα πακέτα και αν όχι να ζητήσει επαναποστολή κάποιων. Μετά πηγαίνουμε στο αμέσως χαμηλότερο επίπεδο (διευθυνσιοδοτησης) όπου το ΙΡ δίνει διευθύνσεις αποστολέα και παραλήπτη σε κάθε ένα πακέτο ώστε να δρομολογηθούν μέσα στο διαδίκτυο. Έπειτα στο φυσικό επίπεδο, που στην ουσία είναι τα καλώδια και οι συσκευές, χρησιμοποιείται το πρωτόκολλο Ethernet από τον server (υπολογιστή) μέχρι το router και μετά έχουμε το ADSL. Αφού φτάσουν τα πακέτα και γίνει η αντίστροφη διαδικασία το HTTP θα μας ενημερώσει μέσω του Web browser ότι η λήψη ολοκληρώθηκε.

Βλέπουμε λοιπόν ότι το HTTP είναι το πρωτόκολλο με το όποιο μπορούμε και έχουμε πρόσβαση στον παγκόσμιο ιστό και έρχεται σε επαφή με τον χρηστή, ενώ το TCP κάνει την “βρώμικη δουλεία”, δηλαδή είναι υπεύθυνο για την μεταφορά της πληροφορίας και τον έλεγχο σφαλμάτων που πρόεκυψαν κατά την μετάδοση.