Τεχνολογίες Παγκοσµίου Ιστού (WEB)



Σχετικά έγγραφα
ΕΠΛ 012 Εισαγωγή στο Παγκόσμιο Πλέγμα Πληροφοριών

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Γλώσσες Σήµανσης (Markup Languages) Τεχνολογία ιαδικτύου και Ηλεκτρονικό Εµπόριο

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία ( ) Υπηρεσία FTP (File Transfer Protocol)

7.11 Πρωτόκολλα εφαρµογής

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

Τεχνολογίες ιαδικτύου

Εισαγωγή στον Παγκόσμιο ιστό και στη γλώσσα Html. Χρ. Ηλιούδης

ΔΝΓΔΙΚΣΙΚΔ ΑΠΑΝΣΗΔΙ 3 εο ΓΡΑΠΣΗ ΔΡΓΑΙΑ

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΟ ΔΙΑΔΙΚΤΥΟ

Διαδίκτυο: Ιστορία, Δομή, Υπηρεσίες

Ιόνιο Πανεπιστήµιο. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα Θ. Υπηρεσίες Internet. ρ. Ε. Μάγκος

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Κεφάλαιο 11: Εισαγωγή στην HTML. Εφαρμογές Πληροφορικής Κεφ. 11 Καραμαούνας Πολύκαρπος

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Ηλεκτρονικό Ταχυδρομείο - SMTP

α) η καταγραφή και η σύλληψη της δικτυακής κίνησης (capture) και β) η ανάλυση της δικτυακής κίνησης.

Περιεχόμενα. Πρόλογος... xiii

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Το πρωτόκολλο ΗΤΤΡ (HyperText Transfer Protocol)

Εισαγωγή στις ΤΠΕ ΙΙ Γιάννης Βρέλλης ΠΤΔΕ-Πανεπιστήμιο Ιωαννίνων. World Wide Web. Παγκόσμιος Ιστός

6.2 Υπηρεσίες Διαδικτύου

Τεχνολογίες Παγκόσμιου Ιστού. 1η διάλεξη

Προγραμματισμός Ιστοσελίδων (Web Design)

ΚΕΦΑΛΑΙΟ Web Services

7.11 Πρωτόκολλα Εφαρµογής Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Βασικές Έννοιες Web Εφαρμογών

Ενότητα 1: HTTP, Clients και Servers. (Web, το θεμέλιο του Σημασιολογικού Ιστού)

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ

Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

World Wide Web: Ο παγκόσµιος ιστός Πληροφοριών

Θέματα Προγραμματισμού Διαδικτύου Εισαγωγή - Πρωτόκολλα

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

Ref.: SLWS 1 5Copyright 2005 The European Computer Driving Licence Foundation Ltd Σελίδα 1 από 7

To λεξικό του Internet

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Υπηρεσία Ηλεκτρονικού Ταχυδρομείου - SMTP

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

ΤΕΧΝΟΛΟΓΙΕΣ ΣΧΕΔΙΑΣΗΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ (Web Site Design Technologies)

Ενότητα 8. Εισαγωγή στην Πληροφορική. Internet: Τότε και Τώρα. Κεφάλαιο 8Α. Τρόπος Λειτουργίας Internet. Χειµερινό Εξάµηνο

Αλεξιάδης Γεώργιος (ΠΕ86) -

Εργαλεία ανάπτυξης εφαρμογών internet Ι

ΔΙΚΤΥΑ. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Σε αυτό το µάθηµα θα ασχοληθούµε µε τη βελτίωση της εµφάνισης ενός ιστοτόπου, αλλά και τον εύκολο χειρισµό όλων των αλλαγών στην εµφάνιση της σελίδας

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Εισαγωγη στην html. Η δομή μιας ιστοσελίδας (αρχείο html) Η βασική δομή ενός αρχείου html είναι η εξής: <html> <head>

Δυναμικές Ιστοσελίδες στο Πανελλήνιο Σχολικό Δίκτυο

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 1: Εισαγωγή. Καθ. Ιωάννης Γαροφαλάκης Πολυτεχνική Σχολή Μηχανικών Η/Υ & Πληροφορικής

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Περιεχόμενα. Λίγα λόγια από το συγγραφέα... 7

Τεχνικός Εφαρμογών Πληροφορικής

Γαβαλάς αµιανός

Σχεδίαση και Ανάπτυξη Ιστότοπων

Τι διαφορά έχει μια ιστοσελίδα του Διαδραστικού Ιστού web 2.0 από εκείνη του Στατικού Ιστού web 1.0;

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services

Εισαγωγή στους Υπολογιστές

Υπολογιστές και ίκτυα Η/Υ.

Κάντε κλικ για έναρξη

Σταύρος Καουκάκης Ευτύχιος Βαβουράκης

Πρωτόκολλα Διαδικτύου

ΜΑΘΗΜΑ 4 - ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ

7.2 Τεχνολογία TCP/IP

Περί δικτύων. Δρ. Ματθαίος Πατρινόπουλος

Το διαδίκτυο είναι ένα δίκτυο που αποτελείτε από πολλά μικρότερα δίκτυα υπολογιστών.

Το πρωτόκολλο HTTP 1

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

(Blended Executive Learning)

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED σχεδιασμός ιστοσελίδας ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

Κεφάλαιο 13 Εφαρμογές Διαδικτύου

Client server Peer-to-peer (Οµότιµα ίκτυα)

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Αποµακρυσµένη κλήση διαδικασιών

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Ποιες είναι οι κύριες ετικέτες που χρησιμοποιεί η HTML για την περιγραφή της συνολικής δομής μιας ιστοσελίδας;

Βασικές Υπηρεσίες Διαδικτύου. Επικοινωνίες Δεδομένων Μάθημα 2 ο

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Internet -

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

Network Address Translation (NAT)

ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ : ΜΗΧΑΝΙΣΜΟΙ ΣΥΛΛΟΓΗΣ ΣΤΟΙΧΕΙΩΝ ΣΤΟ ΔΙΑΔΥΚΤΙΟ (COOKIES)

Εισαγωγή στο Διαδίκτυο και στην Υπηρεσία περιήγησης του Παγκόσμιου Ιστού (WWW) Επικοινωνίες Δεδομένων Μάθημα 1 ο

ΑΡΧΙΜΗ ΗΣ - ΕΝΙΣΧΥΣΗ ΕΡΕΥΝΗΤΙΚΩΝ ΟΜΑ ΩΝ ΣΤΑ ΤΕΙ. Υποέργο: «Ανάκτηση και προστασία πνευµατικών δικαιωµάτων σε δεδοµένα

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Περιεχόμενα. Γαβαλάς Δαμιανός Τρέχον status της HTML

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Αριστοµένης Μακρής Εργαστήρια Η/Υ

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Όταν αποθηκεύετε μία παρουσίαση, την ονομάζετε και καθορίζετε πού θα την αποθηκεύσετε

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

Φόρμες. Γενικοί κανόνες. Η ετικέτα <form>

1 η Διάλεξη: Εισαγωγή στο Διαδίκτυο

Transcript:

Κεφάλαιο 1 Τεχνολογίες Παγκοσµίου Ιστού (WEB) Εισαγωγή Το ιαδίκτυο (Internet) σήµερα αποτελείται από εκατοµµύρια συσκευών διασυνδεδεµένων µεταξύ τους που επικοινωνούν χρησιµοποιώντας την στοίβα πρωτοκόλλων TCP/IP η οποία περιγράφηκε στα προηγούµενα κεφάλαια.. Πάνω από τα δικτυακά αυτά πρωτόκολλα, εκτελείται λογισµικό στο επίπεδο εφαρµογής για την επικοινωνία µεταξύ προγραµµάτων χρηστών. Οι εφαρµογές αυτές είναι άπειρες και η σύγχρονη τάση είναι όλες οι εφαρµογές λογισµικού να µπορούν να χρησιµοποιηθούν και πάνω από δίκτυο. Μάλιστα το επίτευγµα της προτυποποίησης του TCP/IP είναι να δώσει µια προγραµµατιστική διεπαφή (π.χ. στα WINDOWS το winsock.dll και στο UNIX το Sockets) µέσω των οποίων κάθε διαδικασία (process) εφαρµογής µπορεί να επικοινωνεί µε κάθε άλλη µε οµοιόµορφο τρόπο ανεξάρτητα εάν βρίσκονται στο ίδιο υπολογιστή ή σε υπολογιστές που απέχουν χιλιάδες χιλιόµετρα. ηλαδή τα sockets λειτουργούν σαν το γραµµατοκιβώτιο όπου ό,τι γράµµα πέσει εµφανίζεται εκεί που θέλουµε. ηλαδή ο τρόπος που γράφω και στέλνω ένα σηµείωµα για το διπλανό γραφείο ή για το υποκατάστηµα σε άλλο κτίριο ή άλλη χώρα γίνεται ο ίδιος. Έτσι και το TCP/IP δίδει τη δυνατότητα η εφαρµογή που λειτουργεί σε αποµονωµένο υπολογιστή πολύ εύκολα να προσαρµόζεται για να λειτουργεί µεταξύ αποµακρυσµένων υπολογιστών. Υπάρχουν ωστόσο κάποια ακόµη στοιχεία που πρέπει να έχουν κοινά και τυποποιηµένα οι εφαρµογές ιαδικτύου για να διευκολύνουν τους χρήστες. Συγκεκριµένα χρειάζονται τυποποιηµένες γραφικές διεπαφές µε τους χρήστες (Graphical User Interface-GUI) και µηχανισµούς σερβιρίσµατος της πληροφορίας µέσω του ιστού (Web server). Το πρώτο αναφέρεται στο τι βλέπει ο χρήστης στη οθόνη του που τον καθοδηγεί στην αναζήτηση της πληροφορίας. Αυτή η διάσταση έχει τυποποιηθεί µέσω των φυλλοµετρητών (browsers) που έχουν επεκταθεί να συµπεριλάβουν και τις εφαρµογές ηλεκτρονικού ταχυδροµείου, µεταφοράς αρχείων κτλ. Το δεύτερο αναφέρεται στο τρόπο που φυλάσσεται και προσφέρεται η πληροφορία που έχει τυποποιηθεί µε τους εξυπηρετητές του ιστού (web servers). Μερικές εφαρµογές είναι καθαρά δικτυακές και δεν έχουν νόηµα χωρίς το δίκτυο ενώ σε άλλες η δικτύωση απλά αυξάνει τη χρησιµότητα. Στις πρώτες ανήκουν το ηλεκτρονικό ταχυδροµείο (µε αντίστοιχα πρωτοκολλά SMTP, POP3), η µεταφορά αρχείων (µε το πρωτόκολλο FTP), οι οµάδες συζητήσεων (NNTP), οι δικτυακές συζητήσεις πραγµατικού χρόνου (IRC), και η πλοήγηση σε σελίδες του παγκοσµίου ιστού (HTTP). Στις δεύτερες ανήκουν πάµπολλες ειδικευµένες βάσεις δεδοµένων π.χ. το αρχείο παραγγελιών ή το αρχείο µετόχων µιας εταιρείας, το αρχείο εισφορών ενός ασφαλιστικού ταµείου που ετηρούντο και παλαιότερα σε καρτέλες ή σε ένα υπολογιστή και που η διαθεσιµότητα τους µέσω δικτύου αύξησε την αποδοτικότητα της χρήσης τους. Οι τελευταίες δεν διατίθενται για προσπέλαση στο ευρύ κοινό και µπορεί να έχουν µη τυποποιηµένο µηχανισµό προσπέλασης που δεν έχει γενικό χαρακτήρα γι αυτό δεν θα µας απασχολήσουν περαιτέρω. Στη συνέχεια θα εξετάσουµε συνοπτικά ένα πολύ βασικό εργαλείο που ενοποιεί πολλές εφαρµογές του ιαδικτύου δηλαδή τον Παγκόσµιο Ιστός (WWW) και τις τεχνολογίες που χρησιµοποιούνται σε αυτόν σήµερα. Το WWW είναι ένα εγχείρηµα το οποίο ξεκίνησε το Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 1

1989 στο CERN από τον Tim Berners-Lee µε σκοπό να χτιστεί ένα κατανεµηµένο σύστηµα διανοµής υπερκειµένων (hypertext). Για την υποστήριξη αυτού του εγχειρήµατος προτάθηκαν τρία βασικά πρότυπα: τα URIs (Universal Resource Identifiers) για µια ενιαία µέθοδο σύνταξης του τρόπου έκφρασης ονοµάτων και διευθύνσεων αντικειµένων στο δίκτυο, το HTTP (HyperText Transfer Protocol) για την επικοινωνία µεταξύ των εφαρµογών που ανταλλάσσουν υπερκείµενα και η HTML (HyperText Markup Language) µια γλώσσα σήµανσης (markup) για την κατασκευή υπερκειµένων (hypertext) και την εύκολη πλοήγηση µεταξύ τους. Σηµειώνουµε ότι οι λέξεις υπερκείµενο και υπερµέσο δεν εµφανίστηκαν µε την δηµιουργία του WWW αλλά προϋπήρχαν από την δεκαετία του 60 και ο πατέρας τους είναι ο Theodor H. Nelson. Τις χρησιµοποίησε για να περιγράψει µια νέα µορφή ηλεκτρονικού κειµένου αλλά και ενός νέου τρόπου δηµοσίευσης αυτού. Ο Nelson εξηγεί ότι µε τον όρο υπερκείµενο αναφέρεται «σε µη γραµµική συγγραφή (ηλεκτρονικού) κειµένου το οποίο διαθέτει διακλαδώσεις και επιτρέπει στον αναγνώστη να επιλέξει που θα κατευθυνθεί» [1]. Ο εµπλουτισµός του υπερκειµένου µε οπτική ή ακουστική πληροφορία, αλλά και κίνηση επεκτείνει την έννοια του υπερκειµένου σε αυτή του υπερµέσου. Βασικές Έννοιες URL-URI Το πρότυπο των URL [2] (Uniform Resource Locators) χρησιµοποιείται για να υπάρξει ένας ενιαίος τρόπος να ονοµαστούν οι διάφοροι (και διάσπαρτοι) πόροι (υπολογιστές, κείµενα, εικόνες κτλ) στο δίκτυο έτσι ώστε να µπορεί κανείς να αναφέρεται σε αυτούς και να τους εντοπίζει µε οµοιόµορφο τρόπο. Από την πρώτη χρήση τους τα URLs έχουν περάσει µερικά στάδια βελτιώσεων και αλλαγών στον ορισµό τους και σήµερα χρησιµοποιούµε τον όρο URI [3] (Uniform Resource Identifiers) ώστε να έχουµε ακόµα πιο γενικούς τρόπους για να χαρακτηρίσουµε πόρους σε ένα δίκτυο. Τα URLs αποτελούν πλέον ένα υποσύνολο του γενικότερου σχήµατος ονοµάτων που καθορίζουν τα URIs. Ένα URI έχει έναν συγκεκριµένο τρόπο σύνταξης που γενικά αποτελείται από τα ακόλουθα βασικά στοιχεία <πρωτόκολλο>:<µέρος_που_σχετίζεται_µε_το_πρωτόκολο> Ορίζει δηλαδή αρχικά το πρωτόκολλο (ή διαφορετικά σχήµα) που χρησιµοποιείται και στη συνέχεια, µετά την άνω κάτω τελεία :, εισάγεται το µέρος εκείνο που θα ερµηνευθεί από το πρωτόκολλο. Το πεδίο του πρωτοκόλλου εκτός από την τιµή http µπορεί προφανώς να πάρει και άλλες τιµές που χαρακτηρίζουν άλλα πρωτόκολλα του ιδικτύου όπως ftp,news,mailto κ.τ.λ., µάλιστα δυνατή είναι και η τιµή file που στην ουσία δεν ορίζει κάποιο πρωτόκολλο αλλά µόνο ένα αρχείο. Η σύνταξη του πεδίου µετά την άνω-κάτω τελεία µπορεί να πάρει διάφορες τιµές, ανάλογα µε το πρωτόκολλο, αλλά για τα πρωτόκολλα του ιαδικτύου έχει ορισθεί ένας κοινός τρόπος σύνταξης που φαίνεται παρακάτω //<ονοµα_χρήστη>:<κωδικός>@<σύστηµα>:<πόρτα>/<µονοπάτι> εν είναι υποχρεωτικό να υπάρχουν ορισµένα σε κάθε URL όλα τα πεδία που φαίνονται µέσα στις αγκύλες. Ιδιαίτερη έµφαση πρέπει να δοθεί στον όρο <µονοπάτι> (path) το οποίο καθορίζει την ακριβή θέση του αντικειµένου στο <σύστηµα> στο οποίο αναφέρεται το URL. To <µονοπάτι> δεν ορίζεται πάντα σε ένα URL, αυτό σηµαίνει ότι το <σύστηµα> στο οποίο αναφερόµαστε θα του αναθέσει µια εξορισµού τιµή. Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 2

Παραδείγµατα URL είναι τα ακόλουθα 1. http://www.teipir.gr 2. http://www.teipir.gr:8080/automation/index.html 3. ftp://ftp.teipir.gr/pub 4. ftp://user@ftp.teipir.gr 5. ftp://user:mypasswd@ftp.teipir.gr/pub/bin/test.mpg Στα παραπάνω παραδείγµατα φαίνεται η πλήρης δοµή ενός URL, ας ερµηνεύσουµε ορισµένα από αυτά σύµφωνα µε όσα αναφέρθηκαν παραπάνω: Το URL 1 ορίζει ως πρωτόκολλο το HTTP άρα θα αναφέρεται σε κάποιο αντικείµενο του WWW. Βλέποντας το επόµενο πεδίο www.teipir.gr αναγνωρίζουµε το όνοµα που αντιστοιχεί στον κεντρικό διακοµιστή ιστοσελίδων του ΤΕΙ Πειραιά, άρα έχουν παραληφθεί τα πεδία ονόµατος χρήστη και κωδικού, µια και στο WWW συνήθως δεν υπάρχουν συστήµατα πιστοποίησης για να έχει κανείς πρόσβαση σε ιστοσελίδες. Επειδή δεν καθορίζουµε σαφώς συγκεκριµένο αντικείµενο µετά το <σύστηµα> αυτό σηµαίνει ότι ο διακοµιστής θα επιστρέψει την εξορισµού αρχική ιστοσελίδα του δικτυακού τόπου (συνήθως είναι η index.html). Το URL 4 ορίζει ως πρωτόκολλο το FTP και το επόµενο πεδίο είναι το όνοµα χρήστη το οποίο είναι user και το καταλαβαίνουµε βλέποντας το σύµβολο @ που στα αγγλικά διαβάζεται at και σηµαίνει στο, τέλος υπάρχει το όνοµα του διακοµιστή FTP του ΤΕΙ Πειραιά (ftp.teipir.gr), το οποίο φυσικά δεν είναι αναγκαίο να ξεκινά µε τον όρο ftp, αυτό το χρησιµοποιούµε για µεγαλύτερη σαφήνεια. Άρα το URL 4 µπορεί να διαβαστεί ως FTP (του) user στο (at ή @) ftp.teipir.gr. ΜΙΜΕ Κατά την αρχική σχεδίαση του ARPANET υπήρξε πρόβλεψη για ανταλλαγή µηνυµάτων σε µορφή κειµένου [5] χρησιµοποιώντας το σύνολο χαρακτήρων από το πρότυπο US- ASCII. Η ανάγκη να µεταφερθούν, αρχικά µέσω ηλεκτρονικού ταχυδροµείου, µηνύµατα µε διαφορετικά σύνολα χαρακτήρων (π.χ. για άλλες γλώσσες) αλλά και δυαδικά δεδοµένα όπως εικόνες, αρχεία και προγράµµατα, οδήγησε στον καθορισµό ενός νέου προτύπου για την ανταλλαγή τους µε τον όρο MIME (Multipurpose Internet Mail Extensions). Το πρότυπο επαναπροσδιορίζει τη µορφή που έχουν τα µηνύµατα και καθορίζει ένα σύνολο από τύπους και έτσι ώστε : το σώµα των µηνυµάτων κειµένου να µπορεί να έχει και άλλους χαρακτήρες εκτός του US-ASCII να υπάρχει ένα επεκτεινόµενο σύνολο τύπων που να καθορίζουν το περιεχόµενο µηνυµάτων που δεν είναι αλφαριθµητικά. να µπορούν να οριστούν µηνύµατα που έχουν παραπάνω από ενός τύπου περιεχόµενο (multipart) να µπορούν να οριστούν κεφαλίδες οι οποίες να περιέχουν αλφαριθµητικές τιµές µε χαρακτήρες εκτός του US-ASCII Οι τύποι που καθορίζει το πρότυπο MIME [6] για να χαρακτηρίζει το είδος του περιεχοµένου αποτελούνται από ένα κύριο τύπο, όπως κείµενο ή εικόνα, και ένα δευτερεύον τύπο που κάνει πιο συγκεκριµένο τον χαρακτηρισµό. Για παράδειγµα : Τύπος Κύριος ευτερεύον Περιέχει Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 3

Text Image Video application plain απλό κείµενο σε µορφή ASCII html κείµενο σε HTML xml κείµενο σε XML vnd.wap.wml κείµενο σε WML png εικόνα σε µορφή PNG gif εικόνα σε µορφή GIF jpeg εικόνα σε µορφή JPEG mpeg βίντεο σε µορφή MPEG quicktime βίντεο σε µορφή Quick Time msword ένα κείµενο στη µορφή που χρησιµοποιεί το MS- Word Pdf ένα κείµενο στη µορφή που PDF Zip συµπιεσµένα δεδοµένα µε ZIP Το πρότυπο MIME χρησιµοποιείται και στις ανταλλαγές µηνυµάτων του πρωτοκόλλου HTTP µε τρόπο που θα δούµε στο αντίστοιχο κεφάλαιο. DTD Tα DTD (Document Type Definition) χρησιµοποιούνται για να ορίζουν ποια στοιχεία και ιδιοχαρακτηριστικά µπορούν να χρησιµοποιηθούν για την περιγραφή του περιεχοµένου ενός εγγράφου. Ορίζουν την δυνατότητα χρήσης στοιχείων µέσα σε άλλα στοιχεία και τις δυνατές τιµές που µπορούν να πάρουν τα ιδιοχαρακτηριστικά των στοιχείων. Με αυτό τον τρόπο µπορεί κανείς να ελέγχει αν ένα έγγραφο είναι συµβατό µε τις προδιαγραφές σύνταξης που ορίζει το DTD του. Τα DTD χρησιµοποιούνται σε έγγραφα που συντάσσονται στις γλώσσες σήµανσης HTML, SGML και XML οι οποίες σκιαγραφούνται στο επόµενο τµήµα. XML (extensible Markup Language) Η XML (επεκτάσιµη γλώσσα σήµανσης) είναι µία γλώσσα σήµανσης που σχεδιάστηκε µε σκοπό να περιγράφει κάθε είδους δεδοµένα ανεξαρτήτως συστήµατος. Επειδή είναι γλώσσα σήµανσης µοιάζει αρκετά στην σύνταξη µε την HTML και είναι συµβατή µε τις αρχές της SGML. Το χαρακτηριστικό της είναι ότι δεν διαθέτει προκαθορισµένες ετικέτες (όπως η HTML) αλλά ορίζει απλά ένα τρόπο γραφής, δοµής και σύνταξης ετικετών. Οι ετικέτες της XML καθορίζονται κάθε φορά από τον χρήστη µέσα από ένα DTD ή ένα XML Schema, µε αποτέλεσµα, όπως δηλώνει και ο τίτλος της, να είναι επεκτάσιµη, δηλαδή ο χρήστης να µπορεί να κατασκευάζει και να ορίζει τις δικές του ετικέτες ανάλογα µε τα δεδοµένα που θέλει να περιγράψει. Σκοπός της XML είναι να µπορεί ένας χρήστης να περιγράψει τα δεδοµένα που διαθέτει µε τέτοιο τρόπο ώστε να είναι χρήσιµα στην εφαρµογή του ή στην ανταλλαγή τους µε άλλα συστήµατα. Ανάλογα µε το εννοιολογικό πλαίσιο που χρησιµοποιείται κάθε φορά, µία ετικέτα µε το ίδιο όνοµα µπορεί να σηµαίνει διαφορετικά πράγµατα για διαφορετικό τύπο εφαρµογής. Χρησιµοποιώντας ένα προκαθορισµένο από κοινού DTD, εφαρµογές µπορούν να ανταλλάσσουν δεδοµένα και να κάνουν αναζητήσεις σε αυτά ανάλογα µε τις ανάγκες τους. Παράδειγµα µιας τέτοιας περίπτωσης είναι η χρήση µιας ετικέτας όπως <address> που για µια εφαρµογή ηλεκτρονικού ταχυδροµείου µπορεί να σηµαίνει την διεύθυνση e-mail, ενώ σε µια εφαρµογή πελατολογίου την διεύθυνση κατοικίας ενός πελάτη. Με αυτό τον τρόπο η XML στην ουσία παρέχει µεταδεδοµένα (metadata) για τα δεδοµένα που περιέχονται ανάµέσα στις ετικέτες της. Με τον όρο µεταδεδοµένα Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 4

χαρακτηρίζουµε την πληροφορία που αναφέρεται στον τύπο και τα χαρακτηριστικά κάποιου δεδοµένου, και όχι στα δεδοµένα τα ίδια. Ένα βασικό στοιχείο που πρέπει να αναφερθεί για την XML είναι ότι σχεδιάστηκε µε σκοπό τον χαρακτηρισµό των δεδοµένων και τίποτα άλλο. Στην ουσία η XML δεν κάνει τίποτα! Είναι τα προγράµµατα που την χρησιµοποιούν που καθορίζουν την χρήση κάθε ετικέτας και τη σηµασία της. Μερικές από τις χρήσεις της XML σήµερα είναι Ανταλλαγή δεδοµένων µεταξύ διαφορετικών συστηµάτων (data exchange) Αποθήκευση δεδοµένων (data storage) Κοινή χρήση δεδοµένων (data sharing) Πηγαίνοντας ένα βήµα παραπέρα, επειδή η XML είναι ανεξάρτητη του συστήµατος που την χρησιµοποιεί νέες τεχνολογίες εισάγονται στο ιαδίκτυο όπως τα Web Services (Υπηρεσίες Παγκοσµίου Ιστού). Τα Web Services έχουν ως βάση την XML και το πρωτόκολλο HTTP και επιτρέπουν την εκτέλεση αποµακρυσµένων διεργασιών πάνω από το ιαδίκτυο µεταξύ διαφορετικών συστηµάτων. HTML Εισαγωγή Η HTML είναι µία γλώσσα σήµανσης (markup language) που χρησιµοποιείται για να προσδιορίσει τον τρόπο µε τον οποίο δοµείται και απεικονίζεται ένα έγγραφο υπερκειµένου. Αποτελεί µία απλούστευση της SGML (Simple Generalized Markup Language) η οποία αποτελεί ένα πρότυπο (ISO 8879:1986) µε σκοπό την ολοκληρωµένη διαχείριση και δόµηση εγγράφων ώστε να είναι δυνατή η εύκολη αρχειοθέτησή τους και η αναζήτηση πληροφορίας σε αυτά. Το πρότυπο της SGML δεν είχε την απήχηση που αναµενόταν λόγω της πολυπλοκότητας που απαιτούσε για την συγγραφή και τον χαρακτηρισµό των εγγράφων. Η HTML χρησιµοποίησε τις βασικές αρχές της SGML ως προς την χρήση ετικετών για να χαρακτηρίσει κοµµάτια του εγγράφου, µε την διαφορά ότι το σύνολο των διαθέσιµων ετικετών είναι περιορισµένο και σταθερά προσανατολισµένο στον τρόπο δόµησηςπαρουσίασης του υπερκειµένου και στην δηµιουργία δεσµών µεταξύ οντοτήτων. Βασικό χαρακτηριστικό της SGML, το οποίο χρησιµοποιεί και η HTML, είναι η έννοια του DTD (Document Type Definition) το οποίο αποτελεί τον τρόπο ορισµού των διαθέσιµων ετικετών για ένα υπερκείµενο και ο τρόπος χρήσης-σύνταξης αυτών. Σήµερα η HTML είναι µία σύσταση (recommendation) την οποία διαχειρίζεται το W3C (World Wide Web Consortium) και βρίσκεται στην έκδοση HTML/4.01 [7] η οποία προσφέρει καλύτερη υποστήριξη για γλώσσες scripting (απλές γλώσσες για «ελαφριές» εργασίες ), για φόρµες εισαγωγής δεδοµένων και για απεµπλοκή του περιεχοµένου από την εµφάνιση µε CSS (Cascade Style Sheets). Η HTML χρησιµοποιείται για να µπορέσουµε να µεταφέρουµε ένα κείµενο µεταξύ δύο υπολογιστών χωρίς αυτοί να έχουν απαραίτητα το ίδιο λειτουργικό. Συνήθως η HTML χρησιµοποιείται για να χαρακτηρίσει υπερκείµενο το οποίο θα αποσταλεί πάνω από κάποιο δίκτυο µεταξύ ενός εξυπηρετητή HTTP και ενός φυλοµετρητή (browser). Ετικέτες HTML Όπως κάθε γλώσσα σήµανσης η HTML χρησιµοποιεί ετικέτες (tags) για να χαρακτηρίσει το περιεχόµενο που περιέχεται σε ένα έγγραφο HTML. Τα στοιχεία (elements) και τα ιδιοχαρακτηριστικά (attributes) των διαθέσιµων ετικετών καθορίζονται από το DTD (Document Type Definition) της έκδοσης. Οι ετικέτες συνήθως περικλείουν ένα κοµµάτι δεδοµένων, για αυτό το λόγο υπάρχουν ετικέτες έναρξης (start-tags) και οι αντίστοιχες ετικέτες κλεισίµατος (end tag). Μια ετικέτα έναρξης έχει την ακόλουθη µορφή : Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 5

<ονοµα_στοιχείου όνοµα_ιδιοχαρ_1= τιµή_ιδιοχαρ _1 όνοµα_ιδιοχαρ_2= τιµή_ιδιοχαρ_2 > ενώ εκείνη του κλεισίµατος, όταν υπάρχει, έχει το ίδιο όνοµα στοιχείου και χρησιµοποιείται το σύµβολο / µε την µορφή : </ονοµα_στοιχείου> Το όνοµα του στοιχείου κάθε ετικέτας είναι αυτό που καθορίζει τον τύπο της και τα ιδιοχαρακτηριστικά είναι εκείνα που καθορίζουν πιο συγκεκριµένα χαρακτηριστικά του στοιχείου. Κάποια ιδιοχαρακτηριστικά δεν είναι υποχρεωτικό να ορίζονται πάντα και όταν δεν εµφανίζονται παίρνουν τις εξορισµού τιµές που καθορίζονται στο DTD. Ακόµα µερικοί τύποι στοιχείων δεν είναι υποχρεωτικό να ακολουθούνται από ετικέτα κλεισίµατος του συγκεκριµένου τύπου, όπως στην περίπτωση των στοιχείων παραγράφου <p> ή αντικειµένου λίστας <li>. Επίσης µερικά στοιχεία δεν είναι υποχρεωτικό να περιβάλλουν κάποιο περιεχόµενο, όπως είναι το στοιχείο που ορίζει µία νέα γραµµή <br> το οποίο χρησιµοποιείται µόνο του. Πρέπει να πούµε εδώ ότι για την ασυµβατότητα της HTML µε την XML η οποία δεν υποστηρίζει τις παραπάνω παραδοχές έχει οριστεί και προωθείται µία νέα σύσταση του W3C µε όνοµα XHML (extensible HyperText Markup Language). Η XHTML είναι µία σύσταση για την προσαρµογή της HTML στα πρότυπα της XML. οµή Εγγράφου HTML Ένα έγγραφο HTML αποτελείται από τρία µέρη Μία γραµµή που περιέχει πληροφορίες για την έκδοση της HTML που χρησιµοποιείται Ένα τµήµα επικεφαλίδας (header section) και ορίζεται µέσα στις ετικέτες <head> Το σώµα (body) όπου περιέχει το πραγµατικό περιεχόµενο του κειµένου και ορίζεται µέσα στις ετικέτες <body> Τα τµήµατα επικεφαλίδας και σώµατος περιέχονται µέσα στις ετικέτες <html>. Στο παρακάτω σχήµα φαίνεται ένα πλήρες έγγραφο HTML. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd"> <HTML> Γραµµή Πληροφοριών έκδοσης <HEAD> <TITLE>Τίτλος Εγγράφου</TITLE> Τµήµα επικεφαλίδας </HEAD> <BODY> <P>Καληµέρα Κόσµε!! Τµήµα σώµατος </BODY> Έγγραφο HTML </HTML> Εκδόσεις Τα έγκυρα HTML έγγραφα ορίζουν στην πρώτη γραµµή την έκδοση της HTML που χρησιµοποιούν. Η HTML 4.01 καθορίζει τρία DTDs ανάλογα µε τα στοιχεία που υποστηρίζει. Οι δυνατές εκδόσεις που µπορεί να χρησιµοποιεί ο συγγραφέας ενός κειµένου HTML ανάλογα µε το DTD είναι οι ακόλουθες : Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 6

HTML 4.01 Strict DTD, περιλαµβάνει όλα τα στοιχεία και ιδιοχαρακτηριστικά που δεν είναι παρωχηµένα (deprecated), έγγραφα που ακολουθούν αυτό το DTD µπορούν να χαρακτηρίζονται µε την παρακάτω γραµµή <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/tr/html4/strict.dtd"> HTML 4.01 Transitional DTD, περιλαµβάνει ότι και το προηγούµενο µαζί µε τα στοιχεία και ιδιοχαρακτηριστικά που είναι παρωχηµένα, έγγραφα που ακολουθούν αυτό το DTD µπορούν να χαρακτηρίζονται µε την παρακάτω γραµµή <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" http://www.w3.org/tr/html4/loose.dtd"> HTML 4.01 Frameset DTD, περιλαµβάνει ότι και το προηγούµενο αλλά επιτρέπει και πλαίσια (frames), έγγραφα που ακολουθούν αυτό το DTD µπορούν να χαρακτηρίζονται µε την παρακάτω γραµµή <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" http://www.w3.org/tr/html4/frameset.dtd"> Επικεφαλίδα Η επικεφαλίδα ενός HTML εγγράφου ορίζεται µέσα στα στοιχεία <HEAD> και </HEAD>. Περιλαµβάνει πληροφορίες µεταδεδοµένων για το έγγραφο όπως το όνοµα τους συγγραφέα του εγγράφου και λέξεις κλειδιά που χαρακτηρίζουν το έγγραφο. Οι µεταπληροφορίες χρησιµοποιούνται συνήθως από τις µηχανές αναζήτησης για να κατηγοριοποιήσουν το έγγραφο στους καταλόγους τους και να γίνεται πιο αποδοτική η αναζήτηση. Ένα στοιχείο που περιλαµβάνει η επικεφαλίδα είναι και το τίτλος του εγγράφου, στοιχείο το οποίο συνήθως χρησιµοποιείται και από τους διαφυλλιστές για να δείξουν τον τίτλο στην γραµµή τίτλου του προγράµµατος. Το στοιχείο τίτλου ορίζεται µε τις ετικέτες αρχής <TITLE> και τέλους </TITLE> Παράδειγµα επικεφαλίδας HTML εγγράφου είναι η ακόλουθη Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 7

<HEAD> <TITLE>Τίτλος Εγγράφου</TITLE> <META name="author" content= ydes"> <META name= keywords lang= en content= html, example, tutorial, TEI"> </HEAD> Τίτλος εγγράφου Μεταπληροφορία για τον συγγραφέα Μεταπληροφορία για τις λέξεις κλειδιά άλλες µεταπληροφορίες που µπορούν να εισαχθούν στην επικεφαλίδα είναι η ηµεροµηνία (µε name= date ), τα πνευµατικά δικαιώµατα (µε name= copyright ), το σχήµα του χρησιµοποιείται (µε name= schema ) και άλλα. Στην επικεφαλίδα του εγγράφου αναφέρονται και πιθανά stylesheets που µπορεί να χρησιµοποιούνται για την µορφοποίηση και απεικόνιση του εγγράφου όπως <LINK rel="stylesheet" type="text/css" href="smartstyle.css"> Σώµα Το σώµα ενός HTML εγγράφου ορίζεται µέσα στις ετικέτες αρχής <BODY> και τέλους </BODY>. Μέσα στο σώµα ενός HTML εγγράφου εισάγουµε το πραγµατικό περιεχόµενο υπερκειµένου που θέλουµε να λάβει ο χρήστης. Στο περιεχόµενο ο συγγραφέας µπορεί να ορίζει τους ακόλουθους τύπους Κείµενο, µε χαρακτηριστικές ετικέτες αυτές της παραγράφου <P> του µορφοποιηµένου κειµένου <PRE>, των επικεφαλίδων <H1>,<H2>,<H3>,<H4>,<H5> και <H6>, της αλλαγής γραµµής <BR>>, του δείκτη <SUP> και της υποσηµείωσης <SUB> Λίστες, µε χαρακτηριστικές ετικέτες αυτές για ταξινοµηµένες λίστες <OL>,για µη ταξινοµηµένες λίστες <UL>, των στοιχείων µίας λίστας <LI> Πίνακες, µε χαρακτηριστικές ετικέτες αυτές του πίνακα <TABLE>, της επικεφαλίδας ενός πίνακα <THEAD>, του σώµατος ενός πίνακα <TBODY>, της γραµµής ενός πίνακα <TR> και τέλος του κελιού ενός πίνακα <TD> εσµούς µε χαρακτηριστική ετικέτα αυτή του anchor < > Αντικείµενα και Εικόνες µε χαρακτηριστικές ετικέτες αυτές της εικόνας <IMG> και του αντικειµένου <OBJECT>. Φόρµες, µε χαρακτηριστικές ετικέτες αυτές της γενικής φόρµας <FORM>, της εισαγωγής <INPUT>, της εισαγωγής µεγάλου κειµένου <TEXTAREA>, της επιλογής από µενού <SELECT> και αυτής του κουµπιού αποστολής <BUTTON> HTTP Εισαγωγή Το HTTP [4] είναι ένα πρωτόκολλο στο επίπεδο εφαρµογής, εκτελείται πάνω από την στοίβα πρωτοκόλλων TCP/IP, βασίζεται στην αρχιτεκτονική πελάτη-διακοµιστή (clientserver) και χρησιµοποιείται για την ανάκτηση περιεχόµένου στον Παγκόσµιο Ιστό (WWW). Η πρώτη του έκδοση ήταν η HTTP/0.9 και σήµερα βρίσκεται στην HTTP/1.1. Οι βασικές αλλαγές που υπήρξαν στο πρωτόκολλο από την έκδοση 0.9 είναι ότι ενώ στην αρχή είχε οριστεί απλά για την µεταφορά ακατέργαστων δεδοµένων πάνω από το ιαδίκτυο, στη συνέχεια ορίσθηκε η ανταλλαγή µηνυµάτων σε µορφή MIME και η εισαγωγή µεταπληροφορίας για τα δεδοµένα που ανταλλάσσονται. Στην σηµερινή του µορφή έχει προστεθεί η δυνατότητα σωστότερης επικοινωνίας µε proxies και caches αλλά Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 8

και η δυνατότητα διατήρησης µόνιµων συνδέσεων για πιο αποδοτική χρήση του TCP. Πρέπει να σηµειωθεί ότι το HTTP είναι ένα πρωτόκολλο όπου δεν κρατιέται κατάσταση από τον διακοµιστή για τους πελάτες. ΙΑΚΟΜΙΣΤΗΣ ΑΙΤΗΣΗ ΗΤΤΡ ΠΕΛΑΤΗΣ ιαδίκτυο ΑΠΟΚΡΙΣΗ HTTP Στην αρχιτεκτονική πελάτη-διακοµιστή για την περίπτωση του HTTP το πρόγραµµα πελάτης είναι συνήθως ένας φυλλοµετρητής σελίδων (web browser) και δύο από τα γνωστότερα τέτοια προγράµµατα είναι ο Netscape Navigator και ο Internet Explorer. Το πρόγραµµα διακοµιστής είναι συνήθως ένας διακοµιστής παγκοσµίου ιστού (web server) και από τα πιο γνωστά προγράµµατα είναι ο Apache Web Server και ο Internet Information Server (IIS). Ο φυλλοµετρητής και ο διακοµιστής παγκοσµίου ιστού επικοινωνούν µεταξύ τους χρησιµοποιώντας το HTTP πρωτόκολλο ανταλλάσσοντας µηνύµατα για να εκτελέσουν όλες τις αναγκαίες λειτουργίες όπως είναι η αίτηση για κάποια σελίδα και η επιστροφή αυτής, αλλά και η αποστολή δεδοµένων από τον χρήστη προς ένα δικτυακό τόπο. Το σχήµα λειτουργίας είναι αρκετά απλό και σε µια απλή περίπτωση περιλαµβάνει τα ακόλουθα βήµατα Ο διακοµιστής παγκοσµίου ιστού αναµένει κάποια αίτηση TCP στην πόρτα 80 O φυλλοµετρητής σελίδων συνδέεται στην πόρτα 80 και ζητάει µία σελίδα υπερκειµένου Ο εξυπηρετητής παγκοσµίου ιστού λαµβάνει την αίτηση και επιστρέφει την σελίδα. O φυλλοµερτητής εξετάζει το HTML περιεχόµενο της σελίδας και αν η σελίδα περιλαµβάνει και άλλα αντικείµενα εκτός από κείµενο και αν υπάρχει π.χ. κάποια εικόνα την ζητά και αυτή Ο εξυπηρέτης παγκοσµίου ιστού λαµβάνει την αίτηση για την εικόνα και την επιστρέφει O φυλλοµερτητής απεικονίζει στην οθόνη του χρήστη το HTML περιεχόµενο της σελίδας µαζί µε την εικόνα. Στην συνέχεια θα παρουσιάσουµε πιο αναλυτικά τις λειτουργίες και τα µηνύµατα του HTTP πρωτοκόλλου Μηνύµατα HTTP Το µηνύµατα του HTTP αποτελούνται από τις αιτήσεις του πελάτη και τις αποκρίσεις του διακοµιστή προς τον πελάτη. Ο γενικός τύπος ενός µηνύµατος περιέχει τα παρακάτω στοιχεία 1. Μία αρχική γραµµή όπου µπορεί να περιέχει µία εντολή αίτησης ή µία απόκριση κατάστασης 2. Κανένα, ένα ή περισσότερα πεδία κεφαλίδων (header fields) 3. Mία κενή γραµµή που δηλώνει το τέλος των κεφαλίδων Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 9

4. Tο στέλεχος του µηνύµατος (message body) το οποίο φέρει το στέλεχος οντοτήτων (entity body) Πεδία HTTP κεφαλίδων Οι κεφαλίδες των HTTP µηνυµάτων χωρίζονται σε τέσσερις τύπους Κεφαλίδες γενικού τύπου (general-header) Κεφαλίδες αιτήσεων (request-header) Κεφαλίδες αποκρίσεων (response-header) Κεφαλίδες οντοτήτων (entity-header) Κάθε πεδίο κεφαλίδας αποτελείται από ένα όνοµα ακολουθούµενο από µία άνω-κάτω τελεία (:) και την τιµή του πεδίου. Οι τιµές των πεδίων µπορούν να είναι παραπάνω από µία, χωριζόµενες από ένα κόµµα. Όταν χρειάζεται να υπάρξουν περισσότερα δεδοµένα για την τιµή ενός πεδίου, αυτά χωρίζονται µε το ελληνικό ερωτηµατικό ; Κεφαλίδες γενικού τύπου Οι κεφαλίδες γενικού τύπου χρησιµοποιούνται στις αιτήσεις και στις αποκρίσεις, αλλά δεν εφαρµόζονται στις οντότητες όπου µεταφέρονται. Τα δυνατά ονόµατα πεδίων γενικού τύπου είναι τα ακόλουθα : Cache-Control Connection Date Pragma Trailer Transfer-Encoding Upgrade Via Warning Αναφέρουµε την χρήση µερικών από τις κεφαλίδες γενικού τύπου, τις οποίες θα τα δούµε και στα ολοκληρωµένα παραδείγµατα κάθε µηνύµατος Cache-Control: Καθορίζει την συµπεριφορά που πρέπει να έχουν οι µονάδες προσωρινής-ενδιάµεσης αποθήκευσης (cache), παραδείγµατα τιµών που µπορεί να πάρει είναι no-cache ή no-store Connection: Ορίζεται από τον αποστολέα και προσδιορίζει την επιθυµητή διαχείριση της σύνδεσης, τιµές που µπορεί να πάρει είναι close ή keep-alive Date: Περιέχει την ηµεροµηνία όπου δηµιουργήθηκε το µήνυµα Pragma: Περιέχει οδηγίες που µπορούν να εφαρµοστούν σε οποιοδήποτε µέλος της επικοινωνίας και έχουν ουσία ως προς µια συγκεκριµένη υλοποίηση. Γενικά καθορίζουν προαιρετικές λειτουργίες όπως η τιµή no-cache που πληροφορεί ότι η εφαρµογή πρέπει να προωθήσει την αίτηση στον διακοµιστή ανεξάρτητα αν έχει κάποιο προσωρινό αντίγραφο (cache) του περιεχοµένου Transfer-Encoding : Καθορίζει αν το στέλεχος του µηνύµατος έχει υποστεί κάποιο µετασχηµατισµό (συµπίεση). Η διαφορά του µε το πεδίο των κεφαλίδων οντοτήτων Content-Encoding είναι ότι το δεύτερο χαρακτηρίζει το στέλεχος της οντότητας ενώ το πρώτο όλου του µηνύµατος Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 10

Κεφαλίδες αιτήσεων Οι τα πεδία των κεφαλίδων αιτήσεων επιτρέπουν στο πρόγραµµα πελάτη να µεταφέρει πληροφορίες για την αίτηση που κάνει αλλά και για τα χαρακτηριστικά του στον διακοµιστή. Τα πεδία που καθορίζει το πρότυπο του HTTP 1.1 είναι τα ακόλουθα: Accept Accept-Charset Accept-Encoding Accept-Language Authorization Expect From Host If-Match If-Modified-Since If-None-Match If-Range If-Unmodified-Since Max-Forwards Proxy-Authorization Range Referer TE User-Agent Σε κάθε HTTP αίτηση δεν είναι υποχρεωτικό να υπάρχουν όλα τα παραπάνω πεδία. Κάθε υλοποίηση ενός πελάτη για το HTTP πρωτόκολλο (µπορεί να είναι ένας φυλλοµετρητής, αλλά και οποιοδήποτε άλλο πρόγραµµα που χρησιµοποιεί το πρωτόκολλο HTTP π.χ. ένα robot µιας µηχανής αναζήτησης ή ένας πληρεξούσιος (proxy) ) επιλέγει ποια από τα πεδία χρειάζεται να στείλει ώστε να έχει κατάλληλη και σωστή-αποδοτική επικοινωνία µε τον διακοµιστή. Αναφέρουµε την χρήση για τα πιο συνηθισµένα από τα παραπάνω : Accept : καθορίζει τους τύπους αρχείων που έχει την δυνατότητα να λάβει το πρόγραµµα πελάτης,.µπορεί να πάρει τιµές για συγκεκριµένους τύπους (π.χ. text/plain ) αλλά και για ένα ολόκληρο σύνολο τύπων (π.χ. text/* ). Μαζί µε τον τύπο αρχείων µπορεί προαιρετικά να οριστεί και ένας παράγοντας προτίµησης q µε τιµές 0 έως 1, και για όποιο τύπο δεν ορίζεται θεωρείται ότι είναι 1. Όσοι τύποι δεν ορίζονται, και δεν υπάρχει ο χαρακτήρας αναπλήρωσης * (whildcard) σηµαίνει ότι έχουν q=0. Ως παράδειγµα µπορεί να δοθούν οι ακόλουθες τιµές : Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* όπου σηµαίνει ότι γίνονται αποδεκτοί όλοι οι τύποι (*/*) αλλά υπάρχει προτίµηση µε q=1 στις εικόνες τύπου gif, x-xbitmap, jpeg και pjpeg. Accept-Charset: Χρησιµοποιείται για να δηλώσει ποια σύνολα χαρακτήρων (character sets) είναι αποδεκτά για την απάντηση στην αίτηση. Με αυτό τον τρόπο δίνεται η δυνατότητα στον διακοµιστή να στείλει έγγραφα µε διαφορετικό σύνολο χαρακτήρων ανάλογα µε την δυνατότητα του προγράµµατος πελάτη. Μαζί µε το σύνολο χαρακτήρων µπορεί και εδώ να οριστεί παράγοντας προτίµησης q µε την ίδια λογική όπως και πριν µε την µόνη διαφορά το σύνολο χαρακτήρων iso-8859-1 για το οποίο ακόµα και αν Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 11

απουσιάζει θεωρείται δεδοµένο και έχει εξορισµού τιµή q=1. Ως παράδειγµα µπορεί να δοθεί η ακόλουθη κεφαλίδα : Accept-Charset: iso-8859-7, unicode-1-1;q=0.8 όπου σηµαίνει ότι τα σύνολα χαρακτήρων που υποστηρίζονται από το πρόγραµµα πελάτης είναι το το iso-8859-1 µε προτίµηση q=1, το iso-8859-7 µε προτίµηση q=1 και το unicode-1-1 µε προτίµηση q=0.8. Accept-Encoding : Χρησιµοποιείται όπως και το Accept-Charset αλλά αναφέρεται στην κωδικοποίηση του περιεχοµένου του µηνύµατος. Σκοπός του στην κεφαλίδα ενός µηνύµατος αίτησης είναι να ενηµερώσει τον διακοµιστή για την δυνατότητα του προγράµµατος πελάτη να λάβει περιεχόµενο που είναι κωδικοποιηµένο µε κάποιο τρόπο. Τυπική χρήση γίνεται σε περιπτώσεις συµπίεσης των δεδοµένων. Και εδώ µπορεί να εισαχθεί παράγοντας προτίµησης q. Παράδειγµα Accept-Encoding: compress, gzip όπου σηµαίνει ότι το πρόγραµµα πελάτης µπορεί να λάβει δεδοµένα συµπιεσµένα µε τα προγράµµατα compress και gzip Accept-Language : Χρησιµοποιείται όµοια µε το Accept αλλά για να δηλώσει ποιες φυσικές γλώσσες είναι προτιµώµενες από το πρόγραµµα πελάτη. Παράδειγµα : Accept-Language: gr, en-gb;q=0.8, en;q=0.7 όπου σηµαίνει ότι οι επιθυµητές γλώσσες είναι τα ελληνικά ( gr ) µε q=1, τα αγγλικάβρετανικά µε q=0.8 και τα αγγλικά (γενικά) µε q=0.7 Host: Χρησιµοποιείται για να ορίσει σε ποιον διακοµιστή και σε ποια πόρτα (port) γίνεται η αίτηση HTTP. Συνήθως είναι ένα URL. Στην περίπτωση που απουσιάζει η τιµή της πόρτας θεωρείται ότι είναι η 80. Με αυτό τον τρόπο µπορεί να απαντηθεί µία αίτηση GET / HTTP/1.1 σε ένα διακοµιστή που φιλοξενεί παραπάνω από ένα δικτυακούς τρόπους. Σε περίπτωση που δεν ορίζεται κεφαλίδα Host, ο διακοµιστής πρέπει να απαντήσει µε µήνυµα το "λάθος αίτηση If-Modified-Since: Λαµβάνει ως τιµή µία ηµεροµηνία ώστε ο διακοµιστής να στείλει το περιεχόµενο µόνο σε περίπτωση που αυτό έχει τροποποιηθεί από την ηµεροµηνία και µετά. Σκοπός είναι αν το περιεχόµενο δεν έχει αλλάξει να µην συνεχιστεί η ανταλλαγή, αλλά το πρόγραµµα πελάτης να το ανακτήσει από την προσωρινή µνήµη (cache). User-Agent : Χρησιµοποιείται για να δώσει πληροφορίες για το λογισµικό του προγράµµατος πελάτη που κάνει την αίτηση. Μπορεί να έχει παραπάνω από µία τιµές στη σειρά, οι οποίες συνήθως µπαίνουν µε σειρά προτεραιότητας. Κεφαλίδες αποκρίσεων Τα πεδία των κεφαλίδων αποκρίσεων επιτρέπουν στον διακοµιστή να µεταφέρει περισσότερες πληροφορίες για την απόκριση που στέλνει, πληροφορίες που δεν µπορούν να συµπεριληφθούν στην γραµµή που περιέχεται η απόκριση κατάστασης. Χρησιµοποιούνται τόσο για να αποσταλούν πληροφορίες για τον ίδιο τον διακοµιστή όσο και για την περαιτέρω πρόσβαση στο περιεχόµενο που ζητήθηκε από το πρόγραµµα πελάτη. Τα πεδία που καθορίζει το πρότυπο του HTTP 1.1 είναι τα ακόλουθα: Accept-Ranges Age Etag Location Proxy-Authenticate Retry-After Server Vary Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 12

WWW-Authenticate Αναφέρουµε την χρήση για τα πιο συνηθισµένα από τα παραπάνω : Server: Χρησιµοποιείται για να δώσει πληροφορίες για το λογισµικό του διακοµιστή που δίνει την απόκριση. Μπορεί να έχει παραπάνω από µία τιµές στη σειρά, οι οποίες συνήθως µπαίνουν µε σειρά προτεραιότητας. WWW-Authenticate : Χρησιµοποιείται από τον διακοµιστή όταν η αίτηση που έχει λάβει είναι για κάποιο πόρο για τον οποίο χρειάζεται, πριν να αποσταλεί, να υπάρξει πρώτα κάποια πιστοποίηση του αιτούντος. Παράδειγµα χρήσης : WWW-Authenticate: Basic realm="give Access Code" όπου ο διακοµιστής ζητάει τη βασική πιστοποίηση, δίνοντας και µία µικρή προτροπή προς τον χρήστη (είναι ένα αυθαίρετο κείµενο που συνήθως ορίζουν οι διαχειριστές του διακοµιστή και εµφανίζει ο φυλλοµετρητής στον χρήστη µετά την αίτηση) Κωδικοί κατάστασης Τα πεδία των κεφαλίδων οντοτήτων ορίζουν µεταπληροφορίες για τις οντότητες που µεταφέρονται στο στέλεχος του µηνύµατος. Όταν δεν υπάρχει στέλεχος µηνύµατος τότε παρέχουν µεταπληροφορίες για τον πόρο που καθορίζεται από την αίτηση. εν µπορεί να υπάρξει στέλεχος µε οντότητες αν δεν υπάρχει στέλεχος µηνύµατος το οποίο φέρει το στέλεχος οντοτήτων. Τα πεδία που καθορίζει το πρότυπο του HTTP 1.1 για τα πεδία των κεφαλίδων οντοτήτων είναι τα ακόλουθα: Allow Content-Encoding Content-Language Content-Length Content-Location Content-MD5 Content-Range Content-Type Expires Last-Modified Αναφέρουµε την χρήση για τα πιο συνηθισµένα από τα παραπάνω : Content-Encoding : Χρησιµοποιείται για να καθορίσει αν οι περιεχόµενες οντότητες έχουν κωδικοποιηθεί µε κάποιο τρόπο, ώστε να είναι δυνατή η αποκωδικοποίηση τους. Παράδειγµα χρήσης όταν π.χ. το περιεχόµενο είναι συµπιεσµένο Content-Encoding : gzip Content-Language : Χρησιµοποιείται για να ορίσει την φυσική γλώσσα για την οποία απευθύνεται το περιεχόµενο των οντοτήτων. Όταν δεν ορίζεται σηµαίνει ότι απευθύνεται σε όλες τις γλώσσες. Content-Length : Το πεδίο αυτό παίρνει ως τιµή το µέγεθος σε bytes του στελέχους των οντοτήτων. Content-Type : Χρησιµοποιείται για να ορίσει τον τύπο της οντότητας που αποστέλλεται. Ένα παράδειγµα για µια οντότητα που είναι HTML έγγραφο µε ελληνική κωδικοσελλίδα χαρακτήρων µπορεί να είναι το ακόλουθο: Content-Type: text/html; charset=iso-8859-7 Expires : Χρησιµοποιείται για να ενηµερώσει για την ηµεροµηνία όπου η οντότητα που περιέχεται µπορεί να θεωρηθεί πεπαλαιωµένη. Πρέπει να σηµειωθεί ότι η τιµή του πεδίου δεν υποχρεώνει τον διακοµιστή να αλλάξει την τιµή της οντότητας µετά Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 13

συγκεκριµένο χρόνο, στην ουσία είναι η χρήση της είναι ενηµερωτική. Θεωρείται ότι αν η τιµή του πεδίου είναι περίπου ίση µε ένα χρόνο µετά την ηµεροµηνία της αίτησης, η οντότητα δεν λήγει ποτέ. Last-Modified : Χρησιµοποιείται για να ενηµερώσει για την ηµεροµηνία που θεωρεί ο διακοµιστής ότι άλλαξε τελευταία φορά η οντότητα που περιέχεται στο µήνυµα. Στην περίπτωση απλών αρχείων συνήθως περιέχει την ηµεροµηνία που άλλαξε το αρχείο, αλλά στην περίπτωση δεδοµένων που ανακτώνται δυναµικά καθορίζεται από την υλοποίηση του διακοµιστή. Αιτήσεις HTTP Οι αιτήσεις του HTTP ακολουθούν τη δοµή µηνυµάτων που αναφέρεται στην παράγραφο 0. Ξεκινάνε µε µία γραµµή όπου δηλώνεται ο τύπος της εντολής (ή µέθοδος) και το URI στο οποίο αναφέρεται και τελειώνει µε την έκδοση του πρωτοκόλλου: GET http://www.teipir.gr/index.html HTTP/1.1 Οι µέθοδοι που επιτρέπονται είναι οι ακόλουθες : Μέθοδος OPTIONS GET HEAD POST PUT DELETE TRACE Περιγραφή Μέθοδος για την ανάκτηση πληροφοριών για ένα πόρο ή για τις δυνατότητες ενός διακοµιστή χωρίς υποχρεωτικά να ανακτάτε ο πόρος ή να γίνεται κάποια ενέργεια σε αυτόν Μέθοδος για την ανάκτηση των δεδοµένων που καθορίζονται από URI που την ακολουθεί Μέθοδος που επιστρέφει µόνο τις κεφαλίδες, όµοιες µε εκείνες που θα λάµβανε κανείς αν είχε χρησιµοποιήσει την GET µέθοδο Μέθοδος που ζητά την ανάκτηση δεδοµένων που καθορίζονται από το URI που την ακολουθεί αλλά αποστέλλει δευτερεύουσες οντότητες µαζί µε το URI τις οποίες ο διακοµιστής πρέπει να δεχτεί. Μέθοδος που απαιτεί την δηµοσίευση και αποθήκευση στον διακοµιστή των οντοτήτων που αποστέλλονται Μέθοδος που ζητά την διαγραφή από τον διακοµιστή την διαγραφή ενός πόρου Μέθοδος που χρησιµοποιείται για την εκτέλεση µίας εντολής ανάδρασης ώστε ο πελάτης να µπορεί να εντοπίζει τα µηνύµατα που φτάνουν στον διακοµιστή. Χρησιµοποιείται για διαγνωστικούς λόγους. Ανάλογα µε τον τύπο της µεθόδου µπορούµε να δούµε ότι µερικές φορές χρειάζεται και η αποστολή οντοτήτων µαζί µε το URI που ζητάµε (πχ στην περίπτωση των µεθόδων POST και PUT όπου ο χρήστης στέλνει και δεδοµένα µαζί µε την αίτηση), οι δοµή των οντοτήτων και των κεφαλίδων που χρησιµοποιούνται αναλύονται σε ακόλουθη παράγραφο. Παράδειγµα απλής GET αίτησης για το URL http://www.teipir.gr GET / HTTP/1.1\r\n Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n Accept-Language: en-us,el;q=0.5\r\n Accept-Encoding: gzip, deflate\r\n Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 14

If-Modified-Since: Mon, 08 Mar 1999 11:42:44 GMT; length=396\r\n User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)\r\n Host: www.teipir.gr\r\n Connection: Keep-Alive\r\n \r\n Παράδειγµα απλής POST αίτησης POST /index.html HTTP/1.1\r\n Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n Accept-Language: en-us,el;q=0.5\r\n Content-Type: application/x-www-form-urlencoded\r\n Accept-Encoding: gzip, deflate\r\n User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)\r\n Host: www.teipir.gr\r\n Content-Length: 16\r\n Το µέγεθος των δεδοµένων που αποστέλλονται σε bytes Connection: Keep-Alive\r\n Cache-Control: no-cache\r\n \r\n value1=the+value Αποκρίσεις HTTP Μετά την λήψη µίας αίτησης από τον πελάτη ο διακοµιστής παγκοσµίου ιστού (web server) ερµηνεύει (interprets) την αίτηση και αποκρίνεται µε ένα µήνυµα απόκρισης. Τα µηνύµατα απόκρισης έχουν και αυτά την γενική µορφή των µηνυµάτων HTTP. Οι αποκρίσεις του HTTP αποτελούνται από τρία στοιχεία, την πρώτη γραµµή όπου αναγράφεται η έκδοση του πρωτοκόλλου, ένας τριψήφιος αριθµός που είναι ο κωδικός κατάστασης της απόκρισης και τέλος µία µικρή φράση που περιέχει µία λογική περιγραφή του κωδικού. Στην δεύτερη γραµµή υπάρχουν κεφαλίδες που µπορούν να είναι γενικού τύπου, κεφαλίδες που χρησιµοποιούνται µόνο σε µηνύµατα αποκρίσεων ή κεφαλίδες για οντότητες. Τέλος ακολουθεί το σώµα της απόκρισης που συνήθως έχει το HTML έγγραφο. Κωδικοί κατάστασης Οι κωδικοί κατάστασης είναι αριθµοί τριών (δεκαδικών) ψηφίων που χρησιµοποιούνται στης απαντήσεις για να ενηµερώσουν αυτόν που κάνει την αίτηση για το πώς έγινε αυτή κατανοητή από τον διακοµιστή. Το πρώτο ψηφίο καθορίζει τον τύπο του κωδικού και τα υπόλοιπα δύο για να κατηγοριοποιήσουν τα περιεχόµενα κάθε τύπου. 1xx : καθορίζει απόκριση πληροφοριακού τύπου, σηµαίνει ότι η αίτηση έχει ληφθεί και η επεξεργασία της συνεχίζεται. 2xx : καθορίζει απόκριση για επιτυχηµένες αιτήσεις. Η αίτηση έχει ληφθεί, έχει ερµηνευθεί και είναι αποδεκτή 3xx : καθορίζει ανακατεύθυνση. Η αίτηση έχει ληφθεί αλλά χρειάζεται να γίνουν περαιτέρω ενέργειες για να απαντηθεί 4xx : καθορίζει σφάλµα του προγράµµατος πελάτη. Η αίτηση έχει συνταχθεί λανθασµένα ή δεν µπορεί να εκπληρωθεί. 5xx : καθορίζει σφάλµα του διακοµιστή. Ο διακοµιστής δεν µπορεί να εκπληρώσει µια φαινοµενικά σωστή αίτηση. Τυπικές τιµές που συναντώνται συχνά είναι οι ακόλουθες Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 15

100 (Continue) Ενδιάµεση απάντηση που ενηµερώνει το πρόγραµµα πελάτη ότι το αρχικό µέρος µίας αίτησης έχει ληφθεί και µπορεί να συνεχίσει µε το υπόλοιπο 101 (Switching Protocols) Ο διακοµιστής συµφωνεί να αλλάξει πρωτόκολλο (δεν υπάρχουν άλλα πληροφοριακά µηνύµατα) 200 (ΟΚ) Η αίτηση ήταν επιτυχής 204 (No Content) Η αίτηση ήταν επιτυχής αλλά δεν υπάρχει περιεχόµενο για να στείλει ο διακοµιστής 301 (Moved Permanently) Ο πόρος που ζητήθηκε έχει µεταφερθεί σε άλλο URL, µε αυτό τον κώδικα κατάστασης το πρόγραµµα πελάτης συνήθως αυτόµατα ανακατευθύνει την αίτηση στο νέο URL 400 (Bad Request) Η αίτηση δεν εξυπηρετήθηκε διότι είχε λάθος σύνταξη 401 (Unauthorised) Η αίτηση για πρόσβαση σε αυτό τον πόρο χρειάζεται πιστοποίηση 403 (Forbidden) Η αίτηση έγινε κατανοητή από τον διακοµιστή, αλλά δεν επιτρέπει πρόσβαση στον συγκεκριµένο πόρο. 404 (Not Found) Το URI που ζητήθηκε δεν υπάρχει στον διακοµιστή 500 (Internal Server Error) Ο διακοµιστής αντιµετωπίζει µια απρόσµενη κατάσταση σφάλµατος που δεν του επιτρέπει να εκπληρώσει την αίτηση. Παραδείγµατα απόκρισης HTTP για την αίτηση GET της παραγράφου 0 HTTP/1.0 200 Document follows\r\n MIME-Version: 1.0\r\n Server: CERN/3.0\r\n Date: Tuesday, 24-Sep-:2 11:17:05 GMT\r\n Content-Type: text/html\r\n Content-Length: 396\r\n Last-Modified: Monday, 08-Mar-99 11:42:44 GMT\r\n \r\n [Data (396 bytes)] Ένα συνολικό διάγραµµα αίτησης και απόκρισης µεταξύ ενός φυλλοµετρητή (διαφυλιστή) και ενός διακοµιστή παγκοσµίου ιστού φαίνονται στο παρακάτω σχήµα. Ο φυλλοµετρητής ζητά από τον διακοµιστή παγκοσµίου ιστού την κεντρική σελίδα του ( το / µετά την εντολή GET σηµαίνει δώσε µου την πρώτη σου σελίδα), στη συνέχεια ο διακοµιστής επιστρέφει το HTML έγγραφο, ενηµερώνοντας από την κεφαλίδα ότι ο τύπος περιεχοµένου που ακολουθεί είναι text/html. Ο φυλλοµετρητής λαµβάνει το HTML έγγραφο και ξεκινά να το απεικονίζει στην οθόνη του χρήστη. Όταν υπάρχουν αναφορές και για άλλα αντικείµενα µέσα στο HTML έγγραφο, ο φυλλοµετρητής τα ζητά και αυτά από τον διακοµιστή µε αντίστοιχες αιτήσεις HTTP. Οι δύο τελευταίες αποκρίσεις που φαίνονται στο σχήµα είναι για αντικείµενα τύπου εικόνας, για αυτό και ο τύπος περιεχοµένου ορίζεται ως image/gif. Στο σχήµα αυτό βλέπουµε ότι ένα HTML έγγραφο δεν περιλαµβάνει άλλα αντικείµενα πέραν του κειµένου, τα υπόλοιπα αντικείµενα ορίζονται µε δεσµούς µέσα στο κείµενο και κάθε φορά ο φυλλοµετρητής κάνει µία νέα αίτηση για να πάρει τα νέα αντικείµενα διαφορετικού τύπου. Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 16

ιακοµιστής Αίτηση : GΕΤ / HTTP/1.1 Κεφαλίδες: ιάφορες ιαφυλλιστής Απόκριση : HTTP/1.1 200 Κεφαλίδες: Content-Type: text/html εδοµένα: Το HTML έγγραφο RENDERING HTML Αίτηση : GΕΤ /images/img1.gif HTTP/1.1 Κεφαλίδες: ιάφορες img1.gif Αίτηση : GΕΤ /images/img2.gif HTTP/1.1 Κεφαλίδες: ιάφορες img2.gif Απόκριση : HTTP/1.1 200 Κεφαλίδες: Content-Type: image/gif εδοµένα: H εικόνα img1.gif Απόκριση : HTTP/1.1 200 Κεφαλίδες: Content-Type: image/gif εδοµένα: H εικόνα img2.gif. Active Server Pages Τα Active Server Pages (ASP) είναι ένα περιβάλλον προγραµµατισµού από την εταιρία Microsoft που έχει στόχο να δώσει µεγαλύτερη ευελιξία στην συγγραφή δυναµικών σελίδων HTML και γενικότερα WWW εφαρµογών στην πλευρά του εξυπηρετητή. Με την τεχνολογία αυτή ο κατασκευαστής ιστοσελίδων µπορεί να δηµιουργήσει περιεχόµενο και να το εισαγάγει δυναµικά µέσα στις σελίδες του ανάλογα µε της ανάγκες της εφαρµογής του. Όταν ο εξυπηρετητής δεχθεί µία αίτηση για µία σελίδα ASP, πρώτα επεξεργάζεται και εκτελεί τις εντολές που υπάρχουν στο αρχείο για να κατασκευάσει την ιστοσελίδα και στη συνέχεια την αποστέλλει στον φυλοµετρητή. Με αυτόν τον τρόπο µπορεί κανείς να κατασκευάσει ιστοσελίδες που λαµβάνουν δεδοµένα από βάσεις δεδοµένων, έχουν διαφορετική απεικόνιση ανάλογα µε τον χρήστη που της ζητά ή ανάλογα µε τον φυλοµετρητή που κάνει την αίτηση. Ο χρήστης λαµβάνει την ιστοσελίδα όπως µία κανονική ιστοσελίδα HTML χωρίς να βλέπει τις εντολές που έχουν εκτελεστεί στον εξυπηρετητή. Μία σελίδα ASP γράφεται ακριβώς όπως και µια σελίδα HTML µε την διαφορά ότι η πρώτη µπορεί να περιέχει προγραµµατιστικές εντολές οι οποίες εκτελούνται στον εξυπηρετητή πριν η σελίδα αποσταλεί στον χρήστη. Για να λειτουργήσει το παραπάνω µοντέλο είναι υποχρεωτικό ο εξυπηρετητής να γνωρίζει πως θα εκτελέσει τις εντολές ASP που υπάρχουν στη σελίδα, ο κάθε εξυπηρετητής παγκοσµίου ιστού δεν είναι ικανός να χρησιµοποιηθεί για ASPs. Τα αρχεία ASP έχουν κατάληξη.asp και συνήθως φιλοξενούνται σε εξυπηρετητές της εταιρίας Microsoft όπως είναι ο MS Internet Information Server (MS IIS) η οποία έχει κατασκευάσει αυτή την τεχνολογία. Αντίστοιχες τεχνολογίες για προγραµµατισµό και δυναµική κατασκευή ιστοσελίδων στην πλευρά του εξυπηρετητή είναι τα JSPs (Java Server Pages) και τα PHPs (PHP: Hypertext Preprocessor, είναι επαναλαµβανόµενο ακρωνύµιο). Και αυτές µε την σειρά τους προσφέρουν δυνατότητα προγραµµατισµού στις ιστοσελίδες, προφανώς και εδώ για να Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 17

εκτελεστούν οι εντολές πρέπει να µπορεί ο εξυπηρετητής να εκτελεί την συγκεκριµένη τεχνολογία. ΑΙΤΗΣΗ για σελίδα *.asp, *.jsp, *.php Εξυπηρετητής ΙΑ ΙΚΤΥΟ Πελάτης Αποστολή Text HTML html ASP ENGINE Processing Παραγωγή νέας HTML ανά αίτηση, ανά συνεδρία, ή µόνο την πρώτη φορά Κατασκευάζοντας σελίδες ASP Μία σελίδα ASP είναι ένα απλό αρχείο κειµένου αποθηκευµένο στον εξυπηρετητή µε την επέκταση.asp και µπορεί να περιέχει οποιονδήποτε συνδυασµό από τα ακόλουθα : Απλό κείµενο HTML ετικέτες Κοµµάτια κώδικα προς εκτέλεση στον εξυπηρετητή (ονοµάζονται Server-side scripts) Για να ξεχωρίζουν οι ενότητες της ASP σε ένα αρχείο χρησιµοποιούνται οι ειδικοί οροθέτες <% και %>, όπως χρησιµοποιούνται οι οροθέτες <> των ετικετών της HTML. Εξορισµού οι σελίδες ASP χρησιµοποιούν για γλώσσα προγραµµατισµού την VBScript η οποία είναι µία scripting γλώσσα που στηρίζεται στην Visual Basic και διαθέτει ένα υποσύνολο εντολών της. Ο χρήστης µπορεί να επιλέξει και άλλες γλώσσες όπως η JScript. Ακολουθεί ένα παράδειγµα σελίδας ASP στο οποίο χρησιµοποιείται µία ενότητα µε κώδικα asp που σκοπό έχει να ορίσει τον χαιρετισµό που θα δείχνει η σελίδα ανάλογα µε την ώρα της ηµέρας, αν η ώρα που ζητάει ο χρήστης τη σελίδα από τον εξυπηρετητή είναι πριν τις 12 τότε του απαντά Kaln sas mera! αν είναι µετά τις 12 του απαντά Geia sas!. Η απάντηση καθορίζεται στον εξυπηρετητή αφού πρώτα πάρει την τρέχουσα ώρα µε την εντολή Hour(Now()), και στη συνέχει ελέγξει την τιµή της αν είναι µεγαλύτερη ή µικρότερη του αριθµού 12. Αν είναι µικρότερη του αριθµού 12 τότε αναθέτει στην µεταβλητή greeting την τιµή Kaln sas mera! θεωρώντας ότι είναι πρωί, ενώ αν την βρει µεγαλύτερη του 12 αναθέτει στην µεταβλητή greeting την τιµή Geia sas!. Η εισαγωγή µέσα στο έγγραφο της τιµής που έχει ανατεθεί στην µεταβλητή greeting γίνεται µε στην γραµµή <%= greeting %>. Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 18

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/tr/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Χαιρετισµός από σελίδα ASP</TITLE> <HEAD> <BODY> <P> Αυτή η σελίδα asp σας λέει <% Dim thehour thehour = Hour(Now()) If thehour < 12 Then greeting = "Kaln sas mera!" Else greeting = "Geia sas!" End If %> <%= greeting %> </BODY> </HTML> ιαθέσιµα αντικείµενα Για να δοθεί η δυνατότητα στον κατασκευαστή ASP σελίδων να λαµβάνει και να στέλνει δεδοµένα από το πρόγραµµα πελάτη ή από τον εξυπηρετητή, το περιβάλλον ASP του δίνει την δυνατότητα να αλληλεπιδρά µε διάφορα αντικείµενα που δίνουν προγραµµατιστική πρόσβαση σε οντότητες όπως η αίτηση που κάνει ο χρήστης, η απόκριση που λαµβάνει και άλλα. Τα αντικείµενα που είναι διαθέσιµα στον προγραµµατιστή είναι τα ακόλουθα Αντικείµενο Εφαρµογής (Application Object) Αντικείµενο Αίτησης (Request Object) Αντικείµενο Απόκρισης (Response Object) Αντικείµενο Εξυπηρετητή (Server Object) Αντικείµενο Συνεδρίας (Session Object) Αντικείµενο ASP Λάθους (ASPError Object) Αντικείµενο Context (ObjectContext Object) Το αντικείµενο Εφαρµογής Μία εφαρµογή ASP µπορεί να αποτελείται από πολλά αρχεία τα οποία συνδυάζονται για κάποιο σκοπό, το σύνολο των αρχείων αυτών αποτελεί µία εφαρµογή. Το αντικείµενο Εφαρµογής χρησιµοποιείται για ενώσει όλα αυτά τα αρχεία µαζί, έτσι ώστε δεδοµένα που είναι κοινά για όλα τα αρχεία να µπορούν να αποθηκεύονται και να ανακτώνται από αυτό. Η πληροφορίες που αποθηκεύονται στο αντικείµενο Εφαρµογής είναι κοινές για όλα τα αρχεία της εφαρµογής και προσπελάσιµες από όλα. Σε αυτό το αντικείµενο συνήθως αποθηκεύονται πληροφορίες που είναι χρήσιµες για όλη την εφαρµογή ώστε να µην χρειάζεται να υπάρχουν σε κάθε αρχείο πολλές φορές, παράδειγµα είναι οι πληροφορίες σύνδεσης σε µία βάση δεδοµένων που χρησιµοποιούν όλα τα αρχεία. Για τις περιπτώσεις όπου υπάρχουν δεδοµένα που είναι επικίνδυνο να προσπαθήσουν τα αλλάξουν δύο ή περισσότερα αρχεία ταυτόχρονα, το αντικείµενο Εφαρµογής διαθέτει µεθόδους κλειδώµατος και ξεκλειδώµατος των δεδοµένων (Lock, Unlock). Παράδειγµα χρήσης : Στο αρχείο Global.asa µπορούµε να ορίσουµε την µεταβλητή myname <% Application("myname")= tester %> Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 19

και σε όλα τα άλλα να την ανακτούµε και να την στέλνουµε στον χρήστη µε το ακόλουθο κοµµάτι κώδικα <% Response.Write(Application("myname")) %> Το αντικείµενο Αίτησης Η HTTP αίτηση που στέλνει ένας φυλλοµετρητής στην εφαρµογή µοντελοποιείται σε ένα αντικείµενο Αίτησης ώστε να είναι δυνατό να µπορεί ο προγραµµατιστής να πάρει πληροφορίες για την αίτηση και τα δεδοµένα που έστειλε ο χρήστης. Τα σύνολα δεδοµένων (collections) που διαθέτει το αντικείµενο Αίτησης τα οποία συµπληρώνονται ανάλογα µε την αίτηση είναι τα ακόλουθα Cookies, περιλαµβάνει τις τιµές των cookies που στάλθηκαν µε την HTTP αίτηση. Form, περιλαµβάνει τις τιµές των στοιχείων από µία φόρµα που στάλθηκαν στο σώµα της HTTP αίτησης. QueryString, περιλαµβάνει τις τιµές των µεταβλητών που στάλθηκαν ως ερώτηση στην HTTP αίτηση. ServerVariables, περιλαµβάνει τις τιµές προκαθορισµένων µεταβλητών του περιβάλλοντος που στέλνονται συνήθως µε τις κεφαλίδες της HTTP αίτησης. ClientCertificate, περιλαµβάνει τις τιµές των πεδίων που αποθηκεύτηκαν στο πιστοποιητικό χρήστη. Παράδειγµα χρήσης Σε µία HTTP GET αίτηση όπου περνάει παραµέτρους µε τη µορφή της ερώτησης όπως http://www.teipir.gr/page1.asp?name=tester το αρχείο page1.asp µπορεί να διαθέτει τον ακόλουθο κώδικα ώστε να µπορεί να λαµβάνει την τιµή της παραµέτρου name <% var thename = Request.QueryString( name ) Response.Write(theName) %> Το αντικείµενο Απόκρισης Η απόκριση που θα στείλει ο εξυπηρετητής στον χρήστη µοντελοποιείται σε ένα αντικείµενο που ονοµάζεται αντικείµενο Απόκρισης. Αυτό το αντικείµενο παρέχει µεθόδους ώστε να είναι δυνατό να προσθέσουµε δυναµικό περιεχόµενο στην απόκριση που θα στείλουµε στον χρήστη, να στείλουµε πρόσθετο ή διαφορετικό περιεχόµενο ή να ελέγξουµε την σύνδεση µε τον χρήστη. Το µόνο σύνολο δεδοµένων (collection) που διαθέτει το αντικείµενο Απόκρισης είναι το Cookies, όπου ο προγραµµατιστής µπορεί να θέσει τιµές σε cookies που θέλει να στείλει στον χρήστη. Το αντικείµενο Απόκρισης διαθέτει κάποιες µεταβλητές (properties) τα οποία συµπληρώνονται από τον προγραµµατιστή όπου χρειάζεται είναι τα ακόλουθα Charset, ορίζει το σύνολο χαρακτήρων στο στο αντίστοιχο πεδίο επικεφαλίδας της HTTP απόκρισης. ContentType, ορίζει τον τύπο περιεχοµένου στο αντίστοιχο πεδίο επικεφαλίδας της HTTP απόκρισης. Τηλεµατικές Εφαρµογές - καθ. Γιάννης Αγγελόπουλος 20