2ο Εργαστή ριο › modules › document › file.php › CS190...Α. Το Wireshark...

6
Εργ. Δίκτυα Υπολ. Ι – Τμήμα Μηχανικών Πληροφορικής & Υπολογιστών ΠαΔΑ Σελίδα | 1 2ο Εργαστήριο Στοχος Εισαγωγή στο επίπεδο Εφαρμογής (Application) του μοντέλου πρωτοκόλλων του TCP/IP. Μελέτη του πρωτοκόλλου επιπέδου Εφαρμογής HTTP. Σήμαντικα σήμεια γνώ σής Α. Το Wireshark είναι λογισμικό ανάλυσης πρωτοκόλλων επικοινωνίας δικτύων υπολογιστών. Διατίθεται υπό τη γενική άδεια δημόσιας χρήσης GNU και είναι ελεύθερο λογισμικό ανοιχτού κώδικα. Με αυτό θα εστιάσουμε στη διαδικασία της ενθυλάκωσης της πληροφορίας που στέλνει μια εφαρμογή σε μια άλλη εφαρμογή μέσω δικτύου, αλλά και στη διαδικασία της απενθυλάκωσης της στο Λειτουργικό Σύστημα (ΛΣ) του παραλήπτη. Το λογισμικό Wireshark ανήκει στην οικογένεια εργαλείων υπό το όνομα packet sniffer, καθότι είναι ικανό να συλλαμβάνει (“sniffs”) όλα τα μηνύματα που διακινούνται στο φυσικό μέσο. Η γενική λειτουργία ενός packet sniffer παρουσιάζεται στην Εικόνα 1. Εικόνα 1. Γενική λειτουργία ενός packet sniffer Ο ιστότοπος του λογισμικού: https://www.wireshark.org/#download Β. Αρχιτεκτονική Πελάτη – Εξυπηρετητή (Client-Server) Τα πρωτόκολλα επιπέδου Application συνήθως ακολουθούν δύο βασικές αρχές σχεδίασης ή αρχιτεκτονικές. Την αρχιτεκτονική Client - Server και την αρχιτεκτονική Peer-to-Peer. Θα επικεντρωθούμε μόνο στην αρχιτεκτονική Client - Server . Server ονομάζεται μια εφαρμογή (και όχι ένας Η/Υ) η οποία εξυπηρετεί αιτήσεις άλλης ή άλλων εφαρμογών. Καταχρηστικά χρησιμοποιείται ο όρος για να περιγραφεί ένας Η/Υ, στο λειτουργικό σύστημα του οποίου λειτουργούν εφαρμογές Server. Κάθε πρωτόκολλο επιπέδου Application περιέχει οδηγίες για τη λειτουργία του server και τη λειτουργία του client. Μεταξύ άλλων, ορίζονται τα μηνύματα που μπορεί να ανταλλάξουν καθώς και η σειρά αποστολής τους. Καμιά έκπληξη δεν μπορεί να συμβεί σε έναν διάλογο μεταξύ δύο

Transcript of 2ο Εργαστή ριο › modules › document › file.php › CS190...Α. Το Wireshark...

Page 1: 2ο Εργαστή ριο › modules › document › file.php › CS190...Α. Το Wireshark είναι λογισμικό ανάλʑσης πρʙʐοκόλλʙν επικοινʙνίας

Εργ. Δίκτυα Υπολ. Ι – Τμήμα Μηχανικών Πληροφορικής & Υπολογιστών ΠαΔΑ

Σ ε λ ί δ α | 1

2ο Εργαστή ριο

Στο χος

Εισαγωγή στο επίπεδο Εφαρμογής (Application) του μοντέλου πρωτοκόλλων του TCP/IP. Μελέτη

του πρωτοκόλλου επιπέδου Εφαρμογής HTTP.

Σήμαντικα σήμει α γνώ σής

Α. Το Wireshark είναι λογισμικό ανάλυσης πρωτοκόλλων επικοινωνίας δικτύων υπολογιστών.

Διατίθεται υπό τη γενική άδεια δημόσιας χρήσης GNU και είναι ελεύθερο λογισμικό ανοιχτού

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

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

της στο Λειτουργικό Σύστημα (ΛΣ) του παραλήπτη.

Το λογισμικό Wireshark ανήκει στην οικογένεια εργαλείων υπό το όνομα packet sniffer, καθότι είναι

ικανό να συλλαμβάνει (“sniffs”) όλα τα μηνύματα που διακινούνται στο φυσικό μέσο. Η γενική

λειτουργία ενός packet sniffer παρουσιάζεται στην Εικόνα 1.

Εικόνα 1. Γενική λειτουργία ενός packet sniffer

Ο ιστότοπος του λογισμικού: https://www.wireshark.org/#download

Β. Αρχιτεκτονική Πελάτη – Εξυπηρετητή (Client-Server)

Τα πρωτόκολλα επιπέδου Application συνήθως ακολουθούν δύο βασικές αρχές σχεδίασης ή

αρχιτεκτονικές. Την αρχιτεκτονική Client - Server και την αρχιτεκτονική Peer-to-Peer. Θα

επικεντρωθούμε μόνο στην αρχιτεκτονική Client - Server. Server ονομάζεται μια εφαρμογή (και όχι

ένας Η/Υ) η οποία εξυπηρετεί αιτήσεις άλλης ή άλλων εφαρμογών. Καταχρηστικά χρησιμοποιείται

ο όρος για να περιγραφεί ένας Η/Υ, στο λειτουργικό σύστημα του οποίου λειτουργούν εφαρμογές

Server.

Κάθε πρωτόκολλο επιπέδου Application περιέχει οδηγίες για τη λειτουργία του server και τη

λειτουργία του client. Μεταξύ άλλων, ορίζονται τα μηνύματα που μπορεί να ανταλλάξουν καθώς

και η σειρά αποστολής τους. Καμιά έκπληξη δεν μπορεί να συμβεί σε έναν διάλογο μεταξύ δύο

Page 2: 2ο Εργαστή ριο › modules › document › file.php › CS190...Α. Το Wireshark είναι λογισμικό ανάλʑσης πρʙʐοκόλλʙν επικοινʙνίας

Εργ. Δίκτυα Υπολ. Ι – Τμήμα Μηχανικών Πληροφορικής & Υπολογιστών ΠαΔΑ

Σ ε λ ί δ α | 2

εφαρμογών. Ευρέως γνωστά και πολυχρησιμοποιούμενα πρωτόκολλα είναι τα HTTP, DNS, FTP,

TELNET, SMTP, SSH.

Συνήθως, ο διάλογος – δηλαδή, η ανταλλαγή μηνυμάτων– μεταξύ εφαρμογών ενός πρωτοκόλλου

υλοποιείται με clear text μηνύματα.

Κάθε πρωτόκολλο επιπέδου Application πρέπει να επιλέγει ένα πρωτόκολλο επιπέδου Transport

για την αποστολή των μηνυμάτων του. Οι βασικές επιλογές είναι δύο. UDP ή TCP. Για παράδειγμα

το πρωτόκολλο επιπέδου εφαρμογής HTTP ορίζει πως για το επίπεδο Transport θα χρησιμοποιείται

το TCP.

Η μεριά που εκκινεί μια επικοινωνία μεταξύ εφαρμογών είναι πάντα η μεριά του client, αλλά η

επικοινωνία είναι αμφίδρομη. Ας υποθέσουμε μια επικοινωνία μεταξύ ενός HTTP client (Mozilla

Firefox) και ενός HTTP server (Apache HTTP Server) και ας ανατρέξουμε στην απεικόνιση της ροής

πληροφορίας εντός των δύο Η/Υ.

1. Αποστολή αίτησης από client στον server: HTTP (client) → TCP → IPv4 → Ethernet → Φυσικό

Μέσο

2. Λήψη αίτησης του client από τον server: Φυσικό Μέσο → IPv4 → TCP → HTTP (server)

3. Αποστολή απάντησης από server στον client: HTTP (server) → TCP → IPv4 → Ethernet →

Φυσικό Μέσο

4. Λήψη απάντησης του server από τον client: Φυσικό Μέσο → IPv4 → TCP → HTTP (client)

5. ... και η ίδια ιστορία συνεχίζεται μέχρι να μην υπάρχουν άλλα μηνύματα προς την άλλη

μεριά

Γ. Μηχανισμός διευθύνσεων εφαρμογών

Ας ξεχάσουμε προσωρινά το πρόβλημα της εύρεσης ενός Η/Υ στο Internet ή ακόμη και στο ίδιο

φυσικό μέσο ώστε να παραδοθεί σε μια εφαρμογή του ένα μήνυμα και ας επικεντρώσουμε την

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

ένα ΛΣ. Γιατί, αν πιστεύετε ότι κάποια τυχαία χρονική στιγμή θα τρέχει μόνο μια δικτυακή

εφαρμογή σε ένα ΛΣ, τότε κάνετε λάθος. Πώς θα είναι γνωστό ποια εφαρμογή στέλνει το μήνυμα

προς ποια εφαρμογή;

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

ΛΣ, για όσο διάστημα τρέχει, θα της αποδίδεται ένας μοναδικός ακέραιος αριθμός στο εύρος από

0 μέχρι 65535. Δηλαδή ένας αριθμός μήκους 16 bits. Μάλιστα, για να είμαστε πιο ακριβείς, για

κάθε ένα από τα πρωτόκολλα επιπέδου Transport, δύο βασικά υπάρχουν, TCP και UDP, θα υπάρχει

ένα τέτοιο εύρος τιμών. Συνεπώς, η διεύθυνση TCP:14567 είναι διαφορετική από την UDP:14567.

Αυτή η διεύθυνση θα ονομάζεται port number.

Το εύρος αυτών των αριθμών (0 ... 65535) ελέγχεται πλήρως από τα δύο αυτά πρωτόκολλα. Το TCP

και το UDP, δηλαδή.

Page 3: 2ο Εργαστή ριο › modules › document › file.php › CS190...Α. Το Wireshark είναι λογισμικό ανάλʑσης πρʙʐοκόλλʙν επικοινʙνίας

Εργ. Δίκτυα Υπολ. Ι – Τμήμα Μηχανικών Πληροφορικής & Υπολογιστών ΠαΔΑ

Σ ε λ ί δ α | 3

Παράδειγμα: Ενας χρήστης “τρέχει” το Mozilla Firefox. Δηλαδή ένα λογισμικό τύπου client που

ακολουθεί τις νόρμες του πρωτοκόλλου HTTP. Περιμένετε! Δεν έχει επιχειρηθεί ακόμη δικτυακή

κίνηση. Δεν υπάρχει λόγος απόδοσης ενός port number στην εφαρμογή. Μόλις επιχειρήσετε να

“δείτε” μια ιστοσελίδα, τότε το TCP –θυμίζουμε ότι το πρωτόκολλο HTTP ορίζει ρητά πως οι

εφαρμογές που ακολουθούν τους κανόνες του, μπορούν να στέλνουν τα μηνύματά τους ΜΟΝΟ με

τη χρήση του πρωτοκόλλου TCP του επιπέδου Transport– θα δεσμεύσει και θα αποδώσει ένα port

number στην δικτυακή εφαρμογή Mozilla Firefox. Έστω το port number TCP:43000. Δεν θα υπάρχει

άλλη δικτυακή εφαρμογή στο ίδιο ΛΣ που να χρησιμοποιεί αυτό το port number, τουλάχιστον όχι

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

Mozilla Firefox.

Θυμηθείτε ότι:

α) την επικοινωνία ξεκινά πάντα μια εφαρμογή client και

β) ότι κατά τη διαδικασία της ενθυλάκωσης, το αρχικό μήνυμα της εφαρμογής θα αποσταλεί στο

επίπεδο Transport προς διεκπεραίωση και τελικά θα πλαισιωθεί από καινούργια πληροφορία που

αφορά στο επίπεδο Transport. Μία από τις καινούργιες πληροφορίες που θα εισαχθούν είναι το

port number της εφαρμογής client που στέλνει το μήνυμα. Για το παράδειγμά μας το TCP:43000. Το

πεδίο θα ονομάζεται Source Port Number.

Ποια εφαρμογή θα είναι παραλήπτης του μηνύματος; Πώς γίνεται να γνωρίζουμε ποιο port number

έχει επιλεγεί για μια εφαρμογή που “τρέχει” σε ένα ΛΣ ενός Η/Υ που μπορεί να βρίσκεται ακριβώς

δίπλα μας ή στο άλλο άκρο του κόσμου; Δεν έχει βρεθεί καλύτερη λύση από τη λύση των Well

Known Ports. Το εύρος τιμών από 0 μέχρι 1023 χρησιμοποιείται μόνο για γνωστές υπηρεσίες. Έτσι,

το TCP:80 έχει συμφωνηθεί ότι θα χρησιμοποιείται από HTTP servers.

Αρά, στο παράδειγμά μας, κατά τη διαδικασία της ενθυλάκωσης του αρχικού μηνύματος της

εφαρμογής στο επίπεδο Transport, άλλη μία από τις καινούργιες πληροφορίες που θα εισαχθούν

είναι το port number της εφαρμογής server που πρέπει να λάβει το μήνυμα. Για το παράδειγμά μας

το TCP:80. Το πεδίο θα ονομάζεται Destination Port Number.

Μιας και η επικοινωνία είναι αμφίδρομη, στην απάντηση που θα στείλει ο HTTP server στον HTTP

client, για την αίτηση που του έστειλε μόλις, ποιες τιμές θα έχουν τα Source Port Number και

Destination Port Number;

Αξίζει να σημειωθεί ότι όλη η τεχνολογία πίσω από τη λειτουργία ενός δικτύου, όπως του Internet,

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

ανταλλάξουν μηνύματα μεταξύ τους ακόμα και στην περίπτωση που δεν εκτελούνται στο ΛΣ του

ίδιου Η/Υ.

Page 4: 2ο Εργαστή ριο › modules › document › file.php › CS190...Α. Το Wireshark είναι λογισμικό ανάλʑσης πρʙʐοκόλλʙν επικοινʙνίας

Εργ. Δίκτυα Υπολ. Ι – Τμήμα Μηχανικών Πληροφορικής & Υπολογιστών ΠαΔΑ

Σ ε λ ί δ α | 4

Wireshark - HTTP, διαδικασι α

Τεχνικό κείμενο (RFC) για το πρωτόκολλο HTTP: https://tools.ietf.org/html/rfc2616

Η διεπαφή του Wireshark είναι χωρισμένη σε τρία μέρη: Στο επάνω μέρος, το πρώτο μέρος δηλαδή,

είναι η λίστα όλων των μηνυμάτων όλων των πρωτοκόλλων που κατεγράφησαν. Αν επιλέξετε κάτι

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

η ανάλυση τους, αν πατήσετε το [>]. Στο τρίτο μέρος φαίνεται το bit stream που αντιστοιχεί σε κάθε

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

μέρους είναι το 16δικό θεσιακό σύστημα αρίθμησης, ώστε να πιάνει λιγότερο χώρο. Αρά για να

ακριβολογούμε, το HEX stream.

Εστιάστε στο δεύτερο μέρος της διεπαφής του Wireshark. Θα εντοπίσετε 5 γραμμές. Η πρώτη

γραμμή ξεκινάει με την λέξη FRAME, αγνοήστε την. Στη δεύτερη γραμμή εμφανίζεται το πλαίσιο

(FRAME) του πρωτοκόλλου του επιπέδου Data Link στο οποίο ενθυλακώνεται ένα πακέτο του

πρωτοκόλλου του επιπέδου Internet και εμφανίζεται στην τρίτη γραμμή, στο οποίο ενθυλακώνεται

ένα Segment του πρωτοκόλλου του επιπέδου Transport και εμφανίζεται στην τέταρτη γραμμή, στο

οποίο ενθυλακώνεται ένα μήνυμα του πρωτοκόλλου του επιπέδου Application και εμφανίζεται

στην πέμπτη γραμμή.

Στο λειτουργικό σύστημα Windows, βρείτε και εκκινήστε το “Wireshark”. Η εικόνα που θα έχει η

διεπαφή είναι η παρακάτω (Εικόνα 2):

Εικόνα 2. Εικόνα διεπαφής Wireshark

Επιλέξτε το δικτυακό interface που θα εμφανίζει κίνηση. Στην Εικόνα 2 είναι το Ethernet interface.

Στην εργαλειοθήκη, εντοπίστε το μπλε πτερύγιο του καρχαρία. Επιλέγοντάς το, εκκινείτε την

καταγραφή της κίνησης στο Ethernet interface. Ακριβώς δίπλα στο πτερύγιο υπάρχει ένα γκρι,

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

Θα γίνει κόκκινο, άρα και επιλέξιμο, αμέσως μετά την έναρξη της καταγραφής της κίνησης.

Βήμα 1: Ανοίξτε έναν περιηγητή ιστού (web browser) σε private mode, πληκτρολογήστε την

διεύθυνση http://195.251.123.101 και πατήστε enter.

Βήμα 2: Τερματίστε την εκτέλεση του περιηγητή ιστού κλείνοντας τον (ΕΧΙΤ)

Page 5: 2ο Εργαστή ριο › modules › document › file.php › CS190...Α. Το Wireshark είναι λογισμικό ανάλʑσης πρʙʐοκόλλʙν επικοινʙνίας

Εργ. Δίκτυα Υπολ. Ι – Τμήμα Μηχανικών Πληροφορικής & Υπολογιστών ΠαΔΑ

Σ ε λ ί δ α | 5

Βήμα 3: Επιλέξτε το κουμπί της παύσης καταγραφής στο wireshark. Το κόκκινο τετράγωνο δίπλα

στο πτερύγιο του καρχαρία.

Βήμα 4: Στο πλαίσιο κειμένου “Apply a display Filter”, ακριβώς κάτω από την εργαλειοθήκη,

πληκτρολογήστε τα εξής:

http and (ip.src ==195.251.123.101 or ip.dst == 195.251.123.101)

Αυτό το κάνουμε για να περιορίσουμε την εμφάνιση του αριθμού των πληροφοριών που

κατεγράφησαν.

Βήμα 5: Θα πρέπει να εντοπίσετε 4 γραμμές στο πρώτο μέρος της διεπαφής του wireshark (Eικόνα

3). Επιλέξτε αυτή που αναφέρει στην στήλη info το GET / HTTP/1.1

Σημείωση: Αν ο περιηγητής ιστού δεν ανοίξει σε private mode και επαναλάβετε την διαδικασία,

τότε υπάρχει μεγάλη πιθανότητα να μην καταγράφει η HTTP κίνηση που ενδιαφέρει. Αυτό θα

συμβεί επειδή κάθε περιηγητής ιστού συντηρεί μνήμη cache ώστε να μην ζητά κατ’ επανάληψη μια

σελίδα που έχει μόλις ζητήσει.

Εικόνα 3. [Wireshark] Καταγραφή κίνησης με φίλτρο

Ερώτή σεις

1. Τι κάνει το φίλτρο που εφαρμόσατε στο λογισμικό Wireshark;

2. Στον περιηγητή ιστού, στο πλαίσιο κειμένου για την επιλογή του Uniform Resource Locator

(URL), χρησιμοποιήθηκε αριθμητική διεύθυνση αντί ενός ονόματος όπως συνηθίζεται.

Προσπαθήστε να εξηγήσετε.

3. Ποια είναι η χρήση του πρωτοκόλλου HTTP του επιπέδου εφαρμογής;

4. Ποιο λογισμικό είναι ο HTTP client; Ποιο ο HTTP server;

5. Για κάθε επίπεδο της συλλογής πρωτοκόλλων του TCP/IP καταγράψτε τα πρωτόκολλα που

πήραν μέρος στην επικοινωνία του HTTP client με τον HTTP server.

Page 6: 2ο Εργαστή ριο › modules › document › file.php › CS190...Α. Το Wireshark είναι λογισμικό ανάλʑσης πρʙʐοκόλλʙν επικοινʙνίας

Εργ. Δίκτυα Υπολ. Ι – Τμήμα Μηχανικών Πληροφορικής & Υπολογιστών ΠαΔΑ

Σ ε λ ί δ α | 6

6. Καταγράψτε την source και την destination IP διεύθυνση της επικοινωνίας.

7. Καταγράψτε το source και το destination port που χρησιμοποιήθηκαν για το HTTP request

που εστάλη στον HTTP server.

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

εφαρμογής HTTP;

9. Σε ποιο port number αναμένει requests ένας HTTP server;

10. Καταγράψτε τα source και destination port που χρησιμοποιήθηκαν για να στείλει ο HTTP

server το reply στον ΗΤΤP client.

11. Το μήνυμα που στέλνει ένας HTTP client σε έναν HTTP server ονομάζεται HTTP request.

Καταγράψτε τα πεδία του HTTP request.

12. Το μήνυμα που στέλνει ένας ΗΤΤP server σε έναν ΗΤΤP client ονομάζεται ΗΤΤP reply.

Εντοπίστε την απάντηση του ΗΤΤP server και καταγράψτε τα πεδία του ΗΤΤP reply.

13. Γιατί υπάρχουν δύο ερωτήσεις requests προς τον HTTP server αφού κάνατε μία αίτηση.

14. Το caching που αναφέρεται παραπάνω, βλέπε “Σημείωση”, μπορεί να ελεγχθεί μέσω HTTP

μηνυμάτων (HTTP header fields). Βρείτε ποια μηνύματα του HTTP server μπορούν να σταματήσουν

το caching στον HTTP client.

15. Είναι στην ευχέρειά σας να επαναλάβετε τα παραπάνω βήματα και να μελετήσετε τα

πρωτόκολλα επιπέδου Application DNS, TELNET, FTP, SMTP, SSH.