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



Σχετικά έγγραφα
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Άσκηση 1. Απάντηση Άσκησης 1

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

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

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. 3 η Γραπτή Εργασία ΠΛΗ 23 Ακαδημαϊκό Έτος ( Τόμος Β Κεφάλαια 1 4 ) Ημερομηνία Παράδοσης 25.3.

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

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

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


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

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

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

Ημερομηνία Παράδοσης: 4/4/2013

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Τα συγκεντρωτικά ερωτήματα αφορούν στην ομαδοποίηση των δεδομένων και στη. χρήση συναρτήσεων ομαδοποίησης κατά την εκτέλεση ενός ερωτήματος προβολής

Εφαρμογή Τελών Ακινήτων

ΓΕΝΙΚΟ ΝΟΣΟΚΟΜΕΙΟ ΡΟΔΟΥ ΤΜΗΜΑ ΟΡΓΑΝΩΣΗΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΝΟΣΗΛΕΙΑΣ ΑΣΘΕΝΩΝ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΕΚΔΟΣΗ 1.0

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

Οδηγίες Χρήσης της MySQL

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

ΚΕΦΑΛΑΙΟ Web Services

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

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

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Εγχειρίδιο διαχείρισης χρηστών και λιστών διανομής για τον Υπεύθυνο Φορέα του Δικτύου "Σύζευξις" -1-

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Εξοικείωση με τις εντολές ipconfig και ping

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

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

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

Οδηγίες εγκατάστασης εφαρµογής διαβίβασης εντολών Χ.Α.Α. µέσω της EUROCORP Χρηµατιστηριακής Σελίδα 1 από 11

Προετοιμασία σύνδεσης του modem. Εγκατάσταση του Modem

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

ΕΡΩΤΗΜΑΤΟΛOΓΙΟ ΣΧΟΛΕIΟΥ: ΕΓΧΕΙΡIΔΙΟ ΔΙΕΥΘΥΝΤΉ/ΝΤΡΙΑΣ. Doc.: CY7_CBA_ScQPrincipalManual.docx. Δημιουργήθηκε από: ETS, Core Α Contractor

Αναγγελία Εισιτηρίων - εξιτηρίων ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Αναγγελία Εισιτηρίων - Εξιτηρίων. Σελίδα 1

Epsilon Net PYLON Platform

ΠΡΟΓΡΑΜΜΑ ΑΠΟΜΑΚΡΥΣΜΕΝΗΣ ΕΙΣΑΓΩΓΗΣ ΒΑΘΜΟΛΟΓΙΩΝ ΑΠΟ ΔΙΔΑΣΚΟΝΤΕΣ

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

Συνεργείο Αυτοκινήτων

Γνωρίστε το Excel 2007

Με την είσοδο στο eδαπυ, ο χρήστης επιλέγει από αριστερά τις Ενέργειες.

Υποβολή Αναλώσιµων Υλικών ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Υποβολή Αναλώσιμων Υλικών. Σελίδα 1

Εγχειρίδιο Εφαρμογής Συμβούλων Υποστήριξης / Ενημέρωσης

Οδηγός χρήσης. EurobankTrader Mobile (για κινητά τηλέφωνα)

Δίκτυα Υπολογιστών Ενότητα 10: Ethernet και ARP

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

ΓΕΝΙΚΟ ΝΟΣΟΚΟΜΕΙΟ ΡΟΔΟΥ ΤΜΗΜΑ ΟΡΓΑΝΩΣΗΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΑΤΟΜΙΚΩΝ ΣΥΝΤΑΓΟΛΟΓΙΩΝ ΦΑΡΜΑΚΕΙΟΥ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΕΚΔΟΣΗ 1.

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Α2Α

Οδηγίες χρήσης Πώς να χρησιμοποιήσετε το FastBanner

Οδηγίες Χρήσης της MySQL

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

ARTius με PostgreSQL

Εγχειρίδιο Χρήσης Φορέα Πιστοποίησης

Διαχείριση Αξιόγραφων

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb)

ΕΡΓΑΣΤΗΡΙΟ FRONT PAGE 3

Καταχώρηση Αποδείξεων

Αν παρ όλα αυτά αντιμετωπίζετε πρόβλημα, επικοινωνήστε με το Κέντρο Δικτύου της ΑΣΠΑΙΤΕ Τηλ , , ,

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

Θεματογράφος (ή ο βοηθός του Καθηγητή)

Εφαρμογή Διαχείρισης Ψηφιακής Πληροφορίας ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε

6 Εισαγωγή στο Wordpress 3.x

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Απομακρυσμένη Πρόσβαση και Εντολές Ελέγχου και Υποστήριξης

ΣΥΝ ΕΣΗ Η/Υ ΣΤΟ LAN TOY ΙΟΝΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ WINXP(ΕΛΛΗΝΙΚΑ)

4.1 Άνοιγμα υπάρχοντος βιβλίου εργασίας

Οδηγός Χρήσης της Υπηρεσίας Τηλεομοιότυπου (RightFax Fax Service) Web Utility. (διαδικτυακή εφαρμογή)

Πίνακας Περιεχομένων

Εργαστήριο Wireshark: HTTP

Στο grid διαχείρισης φακέλων εμφανίζονται οι εξής πληροφορίες:

ΗΜΥ Εργαστηριακή Άσκηση 2

Σχολή Κοινωνικών Επιστημών Τμήμα Πολιτισμικής Τεχνολογίας Και Επικοινωνίας

Οδηγίες Διαχείρισης Web Portal ΤΕΑ-ΕΑΠΑΕ για τις Κατασκηνώσεις 2019 Διαδικασία Κράτησης θέσεως Κατασκήνωσης

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

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

Οδηγός Σύνδεσης στο Ασύρματο Δίκτυο cs-wifi του Τμήματος Πληροφορικής του Πανεπιστημίου Κύπρου για Windows 7, CentOS 6, Mac OS, IOS, και Android

Pylon Entry. Είδη. Στη διαδικασία αυτή περιγράφεται η Δημιουργία Μεταβολή Διαγραφή - Αναζήτηση ενός είδους

Γενικά. Change Reference

Υπηρεσία διαμοιρασμού αρχείων

Εργαστηριακή Άσκηση 5 Πρωτόκολλο IP

Είσοδος στον δικτυακό τόπο

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Οδηγός γρήγορης εγκατάστασης. (Για Windows και MAC) Ασύρματη κάμερα IP HD περιστροφής / κλισης για εσωτερικούς χώρους v3.14

Ανάλυση και έλεγχος δικτύου με χρήση του εργαλείου Wireshark

Διαχείριση Βάσης Δεδομένων (dbadmin)

Vodafone Business Connect

Πλοήγηση www / Με τον Internet Explorer

Οδηγός Χρήσης Εφαρμογής Ανάρτησης μέσω Διαδικτύου. (Έκδοση: 9.0)

BibConvert μετατροπές LOM

Διαχείριση Επιλογών Διαμόρφωσης

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

Αγαπητή κυρία/αγαπητέ κύριε, Στόχος του συγκεκριμένου εγγράφου είναι να σας ενημερώσει σχετικά με τη λειτουργία του νέου Συστήματος Κεντρικής

XAMPP Apache MySQL PHP javascript xampp

Εγχειρίδιο του πίνακα χαρακτήρων

1. Απαιτήσεις εργασίας

ΕΓΚΑΤΑΣΤΑΣΗ ΣΥΝ ΕΣΗΣ DIAL-UP ΣΕ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ WINDOWS XP

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

ΥΠ.ΕΣ. - Δ.Μ.Η.Ε.Σ. ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΛΗΞΙΑΡΧΕΙΟΥ V 1.2

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence

Transcript:

4 η Γραπτή Εργασία ΠΛΗ 23 Ακαδημαϊκό Έτος 2012-2013 ( Τόμος Β, Κεφάλαια 4 8 και Τόμος Γ ) Ημερομηνία Παράδοσης 08.05.2013 ΕΝΔΕΙΚΤΙΚΕΣ ΑΠΑΝΤΗΣΕΙΣ Άσκηση 1 Επέκταση συστήματος διαχείρισης φιλοδωρημάτων καφετέριας με χρήση XML/XSL Στην Άσκηση αυτή ζητείται να προσθέσετε κάποιες λειτουργίες στο σύστημα που αναπτύχθηκε στα πλαίσια της 3 ης Εργασίας. Μπορείτε να χρησιμοποιήσετε είτε το σύστημα που αναπτύξατε εσείς, είτε το σύστημα των υποδειγματικών απαντήσεων. Υποθέστε ότι ένας χρήστης θέλει να εξάγει, για ένα συγκεκριμένο αριθμό ημερών, το σύνολο των φιλοδωρημάτων με τις λεπτομέρειές τους (ποσό, ημερομηνία-ώρα, όνομα και επώνυμο σερβιτόρου), ώστε να επεξεργαστεί τα δεδομένα αυτά με κάποιο πρόγραμμα λογιστικών φύλλων. Η εξαγωγή θα γίνεται με χρήση XML αρχείων που περιέχουν κατάλληλα δομημένα τα δεδομένα αυτά. Για το σκοπό αυτό θα πρέπει: (a) (Ερώτηση 1) Να περιγράψετε τη δομή του XML αρχείου, ορίζοντας το κατάλληλο σχήμα με χρήση DTD. Επίσης, να παρουσιάσετε ένα παράδειγμα ενός σωστά δομημένου και έγκυρου XML αρχείου. (b) (Ερώτηση 2) Στην αρχική σελίδα της εφαρμογής φιλοδωρημάτων, θα πρέπει να προστεθεί μία επιλογή με την οποία θα εμφανίζεται, για μία χρονική περίοδο που θα ορίζει ο χρήστης, το XML αρχείο σε νέο παράθυρο (θα δημιουργείται δυναμικά) μορφοποιημένο κατάλληλα με XSL. Η λίστα των φιλοδωρημάτων θα περιλαμβάνει το όνομα και επώνυμο του σερβιτόρου, το ποσό και την ημερομηνία ώρα. Τα φιλοδωρήματα να εμφανίζονται από το πιο πρόσφατο στο πιο παλιό. Ακόμη, στο τέλος του αρχείου θα πρέπει να εμφανίζεται ο ημερήσιος μέσος όρος των φιλοδωρημάτων (για την επιλεγμένη περίοδο) στο παραγόμενο XML. Ο υπολογισμός του μέσου όρου προτείνεται να γίνει server side, από την PHP. (c) (Ερώτηση 3) Πριν την εμφάνιση των XML αρχείων με τη χρήση XSL, θα πρέπει να προστεθεί έλεγχος του παραγόμενου XML με βάση το DTD του (a). Σε περίπτωση λάθους, θα πρέπει να εμφανίζεται αντίστοιχο μήνυμα στο χρήστη. Τέλος, στην κορυφή της τροποποιημένης σελίδας (b) θα πρέπει να εμφανίζεται ο συνολικός αριθμός των φιλοδωρημάτων που εμφανίζονται στο XML. Η λειτουργία αυτή θα πρέπει να υλοποιηθεί είτε με συνάρτηση της XSL, είτε με χρήση DOM. Για την ανάγνωση ενός XML αρχείου, η PHP προσφέρει διάφορες βιβλιοθήκες (http://gr.php.net/manual/en/refs.xml.php). DOMDocument (http://gr.php.net/manual/en/class.domdocument.php). SimpleXML (http://gr.php.net/manual/en/book.simplexml.php). 1

Η βιβλιοθήκη DOM δίνει τη δυνατότητα ελέγχου του XML αρχείου με βάση το DTD για την εγκυρότητα ή όχι της δομής: http://php.net/manual/en/domdocument.validate.php Επίσης, για έλεγχο της εγκυρότητας του XML με βάση το DTD στην SimpleXML, δείτε εδώ: http://www.phpbuilder.com/columns/adam_delves20060719.php3 Εναλλακτικά, ο έλεγχος μπορεί να γίνει με JavaScript όπως περιγράφεται εδώ : http://www.w3schools.com/dtd/dtd_validation.asp Οι βιβλιοθήκες DOMDocument και SimpleXML της PHP, υποστηρίζουν Ελληνικούς χαρακτήρες με χρήση της κωδικοποίησης UTF-8. Αν χρησιμοποιείτε διαφορετική κωδικοποίηση, χρήσιμη θα σας φανεί η συνάρτηση iconv(). Παραδοτέα: Ο DTD ορισμός της δομής και τουλάχιστον ένα XML αρχείο που θα λειτουργεί σωστά με την εφαρμογή σας (a). Ο HTML/PHP κώδικας της εφαρμογής που υλοποιεί τα (b) και (c). Τα XSL αρχεία (b), (c). Screenshots από τη λειτουργία της εφαρμογής. Στόχος: Η κατανόηση και η πρακτική εφαρμογή των τεχνικών προγραμματισμού εφαρμογών παγκόσμιου ιστού με χρήση XML, DTD, DOM, XSL. Απαραίτητες γνώσεις: Για την καλύτερη κατανόηση των εννοιών και των προγραμματιστικών τεχνικών, είναι χρήσιμη η παρακολούθηση των παρουσιάσεων web casts No 8 11, καθώς και η μελέτη του «UNIT23 - Book2 - HT2» και του νέου ΕΔΥ με hypertext υλικό για «Μετασχηματισμό XML αρχείων με χρήση XSL, μέσω PHP» από το 2 ο CD του ΕΔΥ. Επίσης, βοηθητική είναι και η χρήση των σχετικών χρήσιμων δικτυακών τόπων από τη σελίδα της Θ.Ε. 2

(a) Ερώτηση 1. ΑΠΑΝΤΗΣΕΙΣ ΑΣΚΗΣΗΣ 1 Το DTD αρχείο είναι το εξής: <!DOCTYPE tips [ <!ELEMENT tips (tip*)> <!ELEMENT tip (f_name, l_name, amount, date)> <!ELEMENT f_name (#PCDATA)> <!ELEMENT l_name (#PCDATA)> <!ELEMENT amount(#pcdata)> <!ELEMENT date (#PCDATA)> ]> Το παραπάνω DTD δηλώνει ότι το root element θα είναι το tips, το οποίο μπορεί να έχει κανένα, ένα ή περισσότερα παιδιά, συγκεκριμένα το element tip. Δηλαδή, θεωρούμε ένα σύνολο φιλοδωρημάτων που έχει καθένα φιλοδώρημα ξεχωριστά. Εν συνεχεία, δηλώνεται ότι το κάθε element tip θα έχει παιδιά τα εξής elements: f_name, l_name, amount, date. Το κάθε ένα από αυτά τα elements θα είναι της μορφής περιεχομένου (#PCDATA). Το XML αρχείο που θα χρησιμοποιήσουμε, έχει την παρακάτω δομή: <?xml version="1.0" encoding="utf-8" standalone="true"?> -<tips> -<tip> <f_name/> <l_name/> <amount/> <date/> </tip> </tips> (b) Ερώτηση 2 Στη σελίδα της εφαρμογής όταν εισάγεται ο χρήστης και στη σελίδα όπου παρουσιάζεται η λίστα με τα φιλοδωρήματα, έχει προστεθεί μία φόρμα στην οποία ο χρήστης μπορεί να εισάγει το χρονικό διάστημα για το οποίο θέλει να εμφανίσει τα φιλοδωρήματα και ένα button που αναγράφει XML και μόλις το πατά ο χρήστης εμφανίζεται σε νέο παράθυρο το XML αρχείο μορφοποιημένο με XSL. Στη λίστα εμφανίζονται τα φιλοδωρήματα με το ονοματεπώνυμο αυτού που τα καταχώρησε και την ημερομηνία που έγινε η καταχώρηση. Το button για την XML το εμφανίζουμε στο αρχείο view_tip.php: 3

<img src='images/xml.jpg' alt='xml' title='xml' style='padding:0;margin:0;float:center;' onclick='checkentryform();' onmouseover='this.style.cursor="pointer"'/> Ο κώδικας για όλη τη φόρμα είναι ο εξής: <form name="date_tip" method="post" action="xml_tips.php" enctype="multipart/form-data"> <table align= 'center' border="0" cellspacing="1" style="border-collapse: collapse; color:#000000" bordercolor="#111111" width="60%"> <tr> <th colspan='5'><h3> Επιλέξτε χρονικό διάστημα </h3><br></th> </tr> <tr> <th colspan='5'> Παρακαλώ εισάγετε την ημερομηνία στη μορφή "2013-04- 22"<br></th> </tr> <tr> <td align='center'>από</td> <td><?php echo"<input type='date' name='date_f' >";?></td> <td></td> <td align='center'>μέχρι</td> <td><?php echo"<input type='date' name='date_l' >";?> </td> </tr> <tr> <td align='center' colspan='5'><br> <img src='images/xml.jpg' alt='xml' title='xml' style='padding:0;margin:0;float:center;' onclick='checkentryform();' onmouseover='this.style.cursor="pointer"'/> </td> </tr> </table> </form> Εικόνα 1. Φόρμα συμπλήρωσης για εμφάνιση XML Για την checkentry() ο κώδικας είναι ο εξής: 4

<script> function checkentryform() { var cform = document.forms.date_tip; var errstr = ''; //alert(cform.date_l.value); // Ημερομηνία: Έλεγχος για να μην είναι κενό το πεδίο if ( cform.date_f.value==''){ errstr = errstr+'το πεδίο Aπό δεν μπορεί να είναι κενό.\n'; cform.date_f.style.backgroundcolor="#ff6347"; } if ( cform.date_l.value==''){ errstr = errstr+'το πεδίο Μέχρι δεν μπορεί να είναι κενό.\n'; cform.date_l.style.backgroundcolor="#ff6347"; } var loc=13; var str="./logged_in.php?menu="+loc+"&p1="+cform.date_f.value+"&p2="+cform.date_l.value; window.open(str); // για να ανοίξει σε νέο παράθυρο } </script> //document.forms.date_tip.submit(); Έτσι, όταν πατάμε το κουμπί, εμφανίζεται ένα νέο παράθυρο με τα φιλοδωρήματα, με τη μορφή που έχει δοθεί από το παρακάτω XSL αρχείο: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" > <xsl:output method = "html"></xsl:output> <xsl:template match="/" > <p align="center"><b>φιλοδωρήματα</b></p> <xsl:if test="count(/tips/tip) > 0"> <TABLE border="0" cellpadding="2" cellspacing="2" align="center"> <TR><TD align="center" bgcolor="#ccffff"><b>όνομα</b></td> <TD align="center" bgcolor="#ccffff"><b>επώνυμο</b></td> <TD align="center" bgcolor="#ccffff"><b>ποσό</b></td> <TD align="center" bgcolor="#ccffff"><b>ημερομηνία</b></td></tr> <xsl:for-each select="tips/tip"> <TR><TD valign="top" bgcolor="#ccffff"><xsl:value-of select="f_name" /></TD> <TD valign="top" bgcolor="#ccffff"><xsl:value-of select="l_name" /></TD> <TD valign="top" bgcolor="#ccffff"><xsl:value-of select="amount" /></TD> <TD valign="top" bgcolor="#ccffff"><xsl:value-of select="date" /></TD></TR> </xsl:for-each> 5

</TABLE> <br/> <p align="center"><font color="red"><b><xsl:value-of select="count(/tips/tip)"/> φιλοδωρήματα συνολικά</b></font></p> </xsl:if> </xsl:template> </xsl:stylesheet> Αφού πατηθεί το κουμπί XML, ελέγχουμε αν ο χρήστης έχει εισάγει χρονικό διάστημα για την εμφάνιση των φιλοδωρημάτων μέσω XML. Το αρχείο tips_xsl.xsl δηλώνει ότι τα φιλοδωρήματα θα εμφανίζονται σε έναν πίνακα όπου κάθε στήλη θα αντιστοιχεί στο όνομα του σερβιτόρου, στο ποσό του φιλοδωρήματος και στην ημερομηνία που καταχωρήθηκε. Αυτό θα γίνεται για όλα τα φιλοδωρήματα που υπάρχουν στο χρονικό διάστημα που δηλώθηκε, γι αυτό χρησιμοποιείται η for-each. Τέλος, έχει προστεθεί ένας μετρητής count(/tips/tip) ο οποίος μετράει πόσες φορές θα εμφανιστεί το element reminder στο XML, δηλαδή, όσα φιλοδωρήματα θα υπάρχουν γι αυτό το χρονικό διάστημα (Ερώτημα 3). Πατώντας το κουμπί «XML», εμφανίζεται η παρακάτω εικόνα (Εικόνα 2) σε νέο παράθυρο: 6

Εικόνα 2. Εμφάνιση XML Για να εμφανίσουμε τα φιλοδωρήματα για το χρονικό διάστημα που έχουμε επιλέξει, θέτουμε τις ημερομηνίες του χρονικού διαστήματος ως παράμετρο στο URL και παίρνουμε με $_GET τις ημερομηνίες από το URL: $d1= $_GET['p1']; $d2= $_GET['p2']; 7

Στη συνέχεια δημιουργούμε ένα query: $query_tip = "SELECT t1.id_tip, t1.amount, t1.date_time, t1.kod_user, t2.kod_user, t2.f_name, t2.l_name from tip as t1 INNER JOIN user as t2 on t1.kod_user=t2.kod_user WHERE date_time>='$d1' AND date_time<='$d2 23:59:59' ORDER BY date_time DESC"; Για να εμφανίσουμε τον ημερήσιο μέσο όρο των φιλοδωρημάτων, αρκεί να δημιουργήσουμε το εξής query: $query_avg = "SELECT *, count( * ), sum( amount ), avg( amount ) FROM tip WHERE date_time>='$d1' AND date_time<='$d2 23:59:59' GROUP BY DATE_FORMAT( date_time, '%d')"; Για να δημιουργήσουμε το συνολικό ημερήσιο μέσο όρο, θα αθροίσουμε τους μέσους όρους που θα έχουν προκύψει από το παραπάνω query και θα τους διαιρέσουμε με τον αριθμό των ημερών που έχουν γίνει καταχωρήσεις μέσα στο ζητούμενο χρονικό διάστημα. Έτσι ο κώδικας θα είναι ως εξής: $avg_t += $avg; $mo= $avg_t/$j; $hmo = number_format($mo, 2); // για να κρατήσουμε μέχρι 2 δεκαδικά ψηφία ( c ) Ερώτηση 3 Εν συνεχεία, δημιουργούμε το αρχείο xml_tips.php όπου χτίζουμε αρχικά το XML μας με βάση το DTD. Η υλοποίηση ελέγχου επικύρωσης της δομής του αρχείου που εμφανίζεται σύμφωνα με το DTD που έχουμε ορίσει στο πρώτο ερώτημα γίνεται με τον παρακάτω κώδικα: if ($create_xml) { $xsl_filename = "tips_xsl.xsl"; $doc = new DOMDocument(); $xsl = new XSLTProcessor(); $doc->load($xsl_filename); $xsl->importstylesheet($doc); $doc->loadxml($create_xml); if(!$doc->validate()){ echo "<p>το αρχείο δεν είναι έγκυρο σύμφωνα με το DTD<p>"; 8

} else { $tip = $doc->getelementsbytagname('tip'); //Το $tip είναι ένα DOMNodeList echo $xsl->transformtoxml($doc); } } Δημιουργούμε ένα νέο αντικείμενο της κλάσης Dom Document ($doc = new DOMDocument();) και κάνουμε validate ((!$doc->validate()). Αν δεν είναι σωστό, τότε εμφανίζεται μήνυμα λάθους στο χρήστη για τη μορφή του DTD. Επίσης, στον κώδικα χρησιμοποιούμε τη συνάρτηση getelementsbytagname η οποία επιστρέφει μια λίστα των στοιχείων tips που υπάρχουν στο αρχείο που δημιουργήθηκε. 9

Άσκηση 2 Απόδοση του πρωτοκόλλου HTTP και Caching Εισαγωγή Σκοπός της παρούσας άσκησης, είναι η μέτρηση της απόδοσης του πρωτοκόλλου HTTP αλλά και των διαδικασιών caching που πραγματοποιούν οι browsers που χρησιμοποιούμε καθημερινά. Ερώτηση 1 Για την εκτέλεση της Ερώτησης 1 θα πρέπει να χρησιμοποιήσετε το εργαλείο Wireshark, το οποίο είναι δωρεάν διαθέσιμο στο http://www.wireshark.org/download.html για λειτουργικά συστήματα Windows/Linux/Mac. To Wireshark είναι ένα εργαλείο το οποίο συλλαμβάνει και εμφανίζει την κίνηση του δικτύου στον υπολογιστή σας. Για τη χρήση του εργαλείου Wireshark θα πρέπει να επιλέξετε την κατάλληλη διεπαφή που χρησιμοποιείται για την πρόσβασή σας από τη διαθέσιμη λίστα του εργαλείου, όπως εμφανίζεται στην παρακάτω εικόνα: Επίσης, για τους σκοπούς της παρούσας ερώτησης, στο πεδίο του φίλτρου σύλληψης το οποίο εμφανίζεται στην παρακάτω εικόνα θα πρέπει να συμπληρώσετε την IP διεύθυνση του διακομιστή που σας ζητείται στα παρακάτω ερωτήματα στο πεδίο ip.addr, καθώς και το όρισμα http (ακριβώς όπως παρουσιάζεται στην εικόνα παραπάνω), ώστε το Wireshark να καταγράφει μόνο κίνηση που αφορά το διακομιστή της άσκησης, καθώς και το πρωτόκολλο HTTP. Εκκινήστε το εργαλείο Wireshark, εκκινήστε τη σύλληψη κίνησης στη διεπαφή (interface) του δικτύου σας και ρυθμίστε το φίλτρο να εμφανίζει μόνο την HTTP κίνηση από και προς το διακομιστή με διεύθυνση 150.140.8.26 (όπως περιγράφηκε παραπάνω). - Σε περίπτωση που είστε σε περιβάλλον Linux, χρησιμοποιείστε τον telnet client όπως στην 3 η Γραπτή Εργασία για την αποστολή http εντολών, όπως αυτές περιγράφονται παρακάτω. - Σε περίπτωση που είστε σε περιβάλλον Windows, θα χρησιμοποιήσετε το εργαλείο PuTTY. Κατεβάστε το εργαλείο PuTTY από εδώ: http://www.putty.org/. Στη ρύθμιση Connection > Telnet επιλέξτε Passive για Telnet negotiation mode. Στην επιλογή Window, πληκτρολογήστε ένα μεγάλο αριθμό (π.χ. 1000) στο Lines of scrollback. Στη σελίδα Session, επιλέξτε Telnet για Connection type. 10

Πληκτρολογήστε για hostname ru6.cti.gr και 80 στο πεδίο port. Επιλέξτε Never για Close window on exit. (Καλό είναι σε αυτό το σημείο να σώσετε τις ρυθμίσεις αυτές ώστε να μην κάνετε την ίδια διαδικασία κάθε φορά. Απλά δώστε κάποιο όνομα στο πεδίο Saved sessions, και πατήστε save. Πλέον μπορείτε να φορτώσετε τις ρυθμίσεις επιλέγοντας το όνομα που δώσατε, και πατώντας Load.) Τέλος, πατήστε Open. α) Στο παράθυρο του telnet client που χρησιμοποιείτε (telnet ή putty) γράψτε το παρακάτω και πατήστε enter δύο φορές: GET /eap/image.jpg HTTP/1.1 host: www.ru6.cti.gr Cache-Control: no-cache Παρατηρήστε την κίνηση που καταγράφει το Wireshark. Στη συνέχεια επαναλάβετε τα παραπάνω αλλά με την αντικατάσταση του header Cache-Control με το If-Modified-Since, όπως φαίνεται παρακάτω. Δηλαδή, δώστε: GET /eap/image.jpg HTTP/1.1 host: www.ru6.cti.gr If-Modified-Since: Sun, 12 Mar 2012 13:34:54 GMT Και στη συνέχεια επαναλάβετε με το παρακάτω αίτημα: GET /eap/image.jpg HTTP/1.1 host: www.ru6.cti.gr If-Modified-Since: Sun, 12 Mar 2005 13:34:54 GMT Παρατηρήστε την καταγραφή του Wireshark. Καταγράψτε και συγκρίνετε τους χρόνους ολοκλήρωσης των αιτημάτων που εκτελέσατε. Παραθέστε χαρακτηριστικά screenshots από το Wireshark και εξηγείστε που οφείλονται οι διαφορές που παρατηρείτε. β) Στη συνέχεια επισκεφθείτε από το φυλλομετρητή σας τη σελίδα http://ru6.cti.gr/ru6/. Εκτελέστε hard refresh (Ctrl + F5) και καταγράψτε με τη βοήθεια του Wireshark το χρόνο ολοκλήρωσης του αιτήματος. Κάντε το ίδιο εκτελώντας απλή ανανέωση της σελίδας (F5). Παραθέστε χαρακτηριστικά screenshots από το Wireshark και εξηγείστε που οφείλονται οι διαφορές που παρατηρείτε. ΠΡΟΣΟΧΗ: Για την εκτέλεση των ερωτήσεων, θα πρέπει να βεβαιωθείτε πως η λειτουργία του caching στο φυλλομετρητή σας δεν είναι απενεργοποιημένη. Ερώτηση 2 α) Περιγράψτε τι είναι και πώς χρησιμοποιείται το πεδίο επικεφαλίδας ETag του πρωτοκόλλου HTTP. β) Περιγράψτε τι είναι και πώς χρησιμοποιείται το πεδίο επικεφαλίδας Expires του πρωτοκόλλου HTTP. 11

Ερώτηση 3 Υποθέστε ότι προσπελαύνετε καθημερινά την ίδια σελίδα από τον υπολογιστή σας. Έχετε παρατηρήσει ότι στις τελευταίες 60 φορές που αναζητήσατε τη σελίδα, 15 φορές χρειάστηκαν από περίπου 0,5 sec για να «κατεβεί», 12 φορές χρειάστηκαν από περίπου 1,5 sec, 9 φορές χρειάστηκαν από περίπου 3,5 sec, και τέλος, τις υπόλοιπες φορές, η σελίδα έκανε χρόνο περίπου 5 sec για να «κατεβεί». Γνωρίζετε ότι η σελίδα μπορεί να βρεθεί είτε στον υπολογιστή σας, είτε στον υπολογιστή του τοπικού δικτύου που ανήκετε, είτε στη μνήμη cache που χρησιμοποιεί ο ISP με τον οποίο συνδέεστε στο Internet, είτε τέλος από τον web server της σελίδας. Αν γνωρίζετε ότι α) το πλήθος των μεταβάσεων με επιστροφή που χρειάζονται για να «κατεβεί» η σελίδα είναι Ν = 30, β) το RTT από το PC σας ως την cache του υπολογιστή τοπικού δικτύου έχει μετρηθεί 20 msec και γ) το μέγεθος της σελίδας είναι 200Kbytes, τότε σας ζητούνται τα παρακάτω: α) Ποια είναι η πιθανότητα η σελίδα που ζητήσατε να βρίσκεται: (i) στο PC σας; (ii) στον ενδιάμεσο υπολογιστή του τοπικού σας δικτύου; (iii) στην cache του ISP; (iv) στον web server; β) Πώς μεταβάλλονται οι παραπάνω πιθανότητες σε περίπτωση που για ένα διάστημα η cache του ISP ήταν εκτός λειτουργίας λόγω αναβάθμισης; γ) Ποιο είναι το ελάχιστο bandwidth (δηλαδή το bottleneck) της σύνδεσης από το PC σας ως την cache του υπολογιστή τοπικού δικτύου; δ) Θεωρώντας ότι το bandwidth που βρήκατε στο (γ) είναι το ελάχιστο σε όλη τη διαδρομή από το PC σας ως τον Web Server, ποιο είναι το RTT από το PC σας ως τον Web Server; (Παρατήρηση: τηρήστε ακρίβεια 2 δεκαδικών στις πράξεις.) Στόχος: Βασικός στόχος της συγκεκριμένης άσκησης είναι η μέτρηση της απόδοσης του πρωτοκόλλου Internet HTTP, η κατανόηση της διαδικασίας caching, αλλά και η κατανόηση στοιχείων που έχουν να κάνουν με διάφορους τρόπους αποθήκευσης δεδομένων από τους φυλλομετρητές. Απαραίτητες γνώσεις: Για την καλύτερη κατανόηση των εννοιών, είναι χρήσιμη η μελέτη των Κεφαλαίων 5 και 6 του Τόμου Β και η αξιοποίηση των σχετικών Παράλληλων Κειμένων και των Χρήσιμων Δικτυακών Τόπων από τη σελίδα της Θ.Ε. 12

ΑΠΑΝΤΗΣΕΙΣ ΑΣΚΗΣΗΣ 2 Ερώτηση 1 α) Αν τα κάνατε όλα σωστά, τότε το wireshark θα καταγράψει την παρακάτω κίνηση: Η κίνηση του κάθε αιτήματος καταλαμβάνει δύο γραμμές. Η πρώτη αφορά το αίτημα και η δεύτερη την απάντηση. Αν μετρήσουμε τους χρόνους ολοκλήρωσης του κάθε αιτήματος, βρίσκουμε πως για το πρώτο αίτημα χρειάστηκαν 56,0052 55,7665 = 0,2387 sec, για το δεύτερο 107,6283 107,6215 = 0,0068 sec, και για το τρίτο 125,8848 125,6851 = 0,1997 sec. Όπως μπορούμε να παρατηρήσουμε από το παραπάνω στιγμιότυπο, οι διαφορές αφορούν το αποτέλεσμα των αιτημάτων GET που αποστέλλονται στο διακομιστή. Συγκεκριμένα, ενώ κατά το πρώτο αίτημα τo status code της απάντησης είναι 200 OK, που σημαίνει πως το περιεχόμενο του αιτήματος GET ολοκληρώθηκε με επιτυχία (δλδ. έγινε λήψη του περιεχομένου της σελίδας που ζητήθηκε), κατά το δεύτερο αίτημα το αποτέλεσμα του ίδιου αιτήματος GET είναι το status code 304 Not Modified, που σημαίνει πως το περιεχόμενο του αιτήματος GET δεν έχει τροποποιηθεί από την τελευταία του προσπέλαση. Προφανώς, με την προϋπόθεση πως η cache του φυλλομετρητή είναι ενεργή, ο διακομιστής αποκρίθηκε με το HTTP response 304 Not Modified από την ημερομηνία που έθεσε το αίτημα, με αποτέλεσμα να φορτωθεί από την cache. Η μεγάλη διαφορά στους χρόνους ολοκλήρωσης του ίδιου αιτήματος είναι απόρροια αυτής της λειτουργίας caching, με τη φόρτωση από την cache να είναι αισθητά ταχύτερη από τη φόρτωση από το διακομιστή. Στο τρίτο αίτημα, που η προϋπόθεση της μη τροποποίησης από την ημερομηνία που ορίζει το αίτημα δεν καλύπτεται, η ζητούμενη εικόνα φορτώνεται πάλι από το διακομιστή, με αποτέλεσμα να απαιτείται πάλι μεγαλύτερος χρόνος, παρόμοιος με του πρώτου αιτήματος. β) Κατά την πρώτη προσπέλαση της σελίδας http://ru6.cti.gr/ru6/ με hard refresh, το εργαλείο Wireshark καταγράφει την παρακάτω κίνηση: 13

Κατά την επόμενη προσπέλαση (refresh) της συγκεκριμένης σελίδας (με την προϋπόθεση πως το caching του φυλλομετρητή είναι ενεργοποιημένο), το Wireshark καταγράφει την παρακάτω κίνηση: Όπως μπορούμε να παρατηρήσουμε από την καταγραφή του Wireshark, κατά την πρώτη προσπέλαση της σελίδας απαιτήθηκε χρόνος περίπου ίσος με 0,118 sec (76,808 sec 76,690 sec) για την ολοκλήρωση του αιτήματος, ενώ για την ολοκλήρωση της δεύτερης προσπέλασης (ανανέωση) απαιτήθηκε χρόνος περίπου ίσος με 0,075 sec (40,613 sec 40,538 sec). Προφανώς, με την προϋπόθεση πως η cache του φυλλομετρητή είναι ενεργή, κατά τη δεύτερη προσπέλαση της ίδιας σελίδας βρέθηκε ένα έγκυρο περιεχόμενο αυτής στην cache, με αποτέλεσμα ο διακομιστής να αποκρίνεται με το HTTP response 304 Not Modified και τον συνολικό χρόνο της φόρτωσης να είναι αρκετά μικρότερος. Ερώτηση 2 α) Το ETag (entity tag) είναι ένα αναγνωριστικό που αποδίδεται από τον web server σε κάθε πόρο ενός URL. Στο πρωτόκολλο HTTP, το πεδίο επικεφαλίδας ETag στην απόκριση του web server παρέχει την τρέχουσα τιμή του ETag του αιτούμενου πόρου. Το ETag είναι ένας από τους μηχανισμούς του πρωτοκόλλου HTTP που χρησιμοποιείται για επικύρωση της cache και για την πραγματοποίηση υπό όρους αιτημάτων από τους clients. Γενικά, το ETag χρησιμοποιείται για τη σύγκριση εκδόσεων των αιτούμενων πόρων, καθώς εάν ένας πόρος αλλάξει, θα του ανατεθεί ένα νέο ETag από τον web server. Δηλαδή, ένας client ο οποίος διατηρεί μία ή περισσότερες εκδόσεις ενός πόρου, μπορεί να επιβεβαιώσει πως μία από αυτές τις εκδόσεις είναι η τρέχουσα, στέλνοντας μία λίστα των ETag του πόρου αυτού στον web server, ο οποίος με τη σειρά του μπορεί να πληροφορήσει τον client εάν η έκδοση του πόρου που διατηρεί δεν έχει τροποποιηθεί με αποτέλεσμα να χρησιμοποιηθεί η έκδοση του πόρου αυτού που βρίσκεται στην cache και να μη ληφθεί εκ νέου. β) Το πεδίο επικεφαλίδας Expires είναι ένας άλλος μηχανισμός ελέγχου της cache που προσφέρει το πρωτόκολλο HTTP. Το πεδίο Expires περιλαμβάνει την ημερομηνία και ώρα μετά την οποία η απόκριση θεωρείται πως έχει λήξει. 14

Έτσι, εάν είναι γνωστή η ημερομηνία λήξης ενός αιτούμενου πόρου και εφόσον η ημερομηνία αυτή δεν έχει παρέλθει, μπορεί να χρησιμοποιηθεί η έκδοση του πόρου αυτού που βρίσκεται στην cache, χωρίς να πρέπει να ληφθεί εκ νέου από τον web server. Βασική διαφορά του πεδίου επικεφαλίδας Expires από το ETag είναι πως στην περίπτωση του Expires δεν χρειάζεται ο client να επικοινωνήσει εκ νέου με τον web server για επικύρωση της cache όπως στην περίπτωση του ETag ( όπου ο client πρέπει να επικοινωνήσει με τον web server για να γίνει ο έλεγχος του ETag) γεγονός που καθιστά τη χρήση caching ακόμα πιο αποδοτική. Ερώτηση 3 α) Ζητούνται τα h PC, h lan, h isp και h serv που είναι οι πιθανότητες να βρίσκεται η σελίδα στο PC του χρήστη, στον ενδιάμεσο υπολογιστή, στην cache του ISP και στον web server αντίστοιχα. Μας δίνονται δεδομένα από τα οποία μπορούμε να πάρουμε εύκολα τα P PC, P lan, P isp, P serv, δηλαδή, στο ιεραρχικό σύστημα caching της άσκησης, τις πιθανότητες επιτυχούς ανεύρεσης της σελίδας στο PC του χρήστη, στον ενδιάμεσο υπολογιστή του τοπικού δικτύου, στην μνήμη cache του ISP και στον web server αντίστοιχα. Από τους χρόνους που δίνονται μπορούμε να συμπεράνουμε πως υπάρχουν 4 περιπτώσεις επιτυχούς ανεύρεσης της σελίδας, με χρόνους απόκρισης από περίπου 0,5 sec (15 φορές στις 60), 1,5 sec (12 φορές), 3,5 sec (9 φορές) και 5 sec (24 φορές που αντιστοιχούν στις υπόλοιπες περιπτώσεις), που αντιστοιχούν στην ανεύρεση της σελίδας από το PC του χρήστη, τον ενδιάμεσο υπολογιστή του LAN, την μνήμη cache του ISP και τον web server αντίστοιχα, αφού αναμένουμε οι χρόνοι απόκρισης να είναι μεγαλύτεροι όσο πιο απομακρυσμένο είναι το σημείο ανεύρεσης της σελίδας. Συνεπώς: P PC = 15/60 = 0,25 P lan = 12/60 = 0,2 P isp = 9/60 = 0,15 Προφανώς P no = 0/60 = 0 (πιθανότητα να μη βρεθεί η σελίδα), αφού όλες οι αιτήσεις ικανοποιούνται, οπότε: P no +P PC +P lan +P isp + P serv = 1 απ' όπου προκύπτει ότι: P serv = 24/60 = 0,4 Από τους τύπους που συνδέουν τα P με τα h στο ιεραρχικό σύστημα caching, ισχύει: h PC P 0, 25 PC P h (1 P ) 0,2 h (1 0,25) h 0,27 lan lan PC lan lan P h (1 P P ) 0,15 h (1 0,25 0,2) h 0,27 isp isp lan pc isp isp P h (1 P P P ) 0,4 h (1 0,15 0,2 0,25) h 1 serv serv isp lan PC serv serv Συνεπώς, οι ζητούμενες πιθανότητες είναι: i) h PC = 0,25 για το PC, ii) h lan = 0,27 για τον ενδιάμεσο υπολογιστή του τοπικού δικτύου iii) h isp = 0,27 για την μνήμη cache του ISP iv) h serv = 1 για τον web server 15

(β) Στην περίπτωση που η cache του ISP καταργηθεί, οι πιθανότητες επιτυχούς ανεύρεσης της σελίδας μεταβάλλονται ως εξής: P PC = 15/60 = 0,25 P lan = 12/60 = 0,2 P isp = 0/60 = 0 και P serv =33/60=0,55 καθώς είναι προφανές πως εάν σε κάποιο επίπεδο δεν πραγματοποιείται caching, οι πιθανότητες επιτυχούς ανεύρεσης της σελίδας μεταφέρονται στα υψηλότερα επίπεδα της ιεραρχίας. Με τις νέες πιθανότητες, βρίσκουμε πως: h PC P 0, 25 PC P h (1 P ) 0,2 h (1 0,25) h 0,27 lan lan PC lan lan P h (1 P P ) 0 h (1 0,25 0,2) h 0 isp isp lan pc isp isp P h (1 P P P ) 0,55 h (1 0 0,2 0,25) h 1 serv serv isp lan PC serv serv (γ) Ισχύει από τη σχέση (5.1) του Τόμου Β : T r S C min N RTT P P όπου: T r είναι ο χρόνος απόκρισης και στην περίπτωσή μας ισούται με 1,5 sec για την απόκριση από τη μνήμη cache του υπολογιστή τοπικού δικτύου στο PC [δίνεται] S είναι το συνολικό μέγεθος της σελίδας: 200 Kbytes [δίνεται] N είναι το πλήθος μεταβάσεων με επιστροφή: 30 [δίνεται] RTT είναι ο χρόνος μετάβασης με επιστροφή από το PC ως την cache του υπολογιστή τοπικού δικτύου: 20 msec [δίνεται] P C + P S είναι ο συνολικός χρόνος επεξεργασίας: 0,5 sec όπως συνάγεται από το γεγονός ότι είναι ο συνολικός χρόνος «κατεβάσματος» της σελίδας από το PC [δίνεται] C min είναι η μικρότερη χωρητικότητα συνδέσμου, η οποία είναι το ζητούμενο της άσκησης. Η σχέση (*) δίνει: C S (*) 3 1.5sec 30 20 10 sec 0.5sec C min 200Kbytes C min 200Kbytes 1638400 bit 4096 kbps 0.4sec 0.4sec Επομένως, το ελάχιστο bandwidth (bottleneck) της σύνδεσης από το PC ως την cache του ISP είναι 4096 kbps. 16

(δ) Από τη σχέση (*) και δεδομένου ότι στην περίπτωση αυτή T r είναι ο χρόνος απόκρισης από το web server στο PC, έχουμε: S Tr N RTT PC PS C min 5sec 0.4sec 30 RTT 0.5sec RTT 0.136sec 136msec Επομένως, το RTT από το PC ως τον Web Server είναι 136 msec. 17

Κριτήρια αξιολόγησης Άσκηση 1 (Σύνολο) 70 Ερώτηση 1 15 Ερώτηση 2 30 Ερώτηση 3 25 Άσκηση 2 (Σύνολο) 30 Ερώτηση 1 10 Ερώτηση 2 5 Ερώτηση 3 15 Σύνολο 100 Ο συνολικός βαθμός θα διαιρεθεί δια 10, ώστε να προκύψει ο τελικός βαθμός της εργασίας. 18