ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Java Socket Programming



Σχετικά έγγραφα
Δίκτυα Υπολογιστών Ενότητα 5: User Datagram Protocol - UDP

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

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

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

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

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

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Κεφάλαιο 7.3. Πρωτόκολλο TCP

7.2.2 Σχέση OSI και TCP/IP

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

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

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

3.3 Πρωτόκολλα ανεύρεσης και απόδοσης διευθύνσεων, Address Resolution Protocol (ARP) και Dynamic Host Configuration Protocol (DHCP)

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26

Δίκτυα και Διαδίκτυο

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

Δίκτυα Θεωρία

Η απάντηση αυτή λαμβάνει 5 μονάδες. Και αφού βέβαια ο εξεταζόμενος γράψει το γράμμα της σωστής απάντησης μόνο.

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

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

Επίπεδο δικτύου IP Forwading κτλ

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

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

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

Κεφάλαιο 2. Υπολογιστές και Τεχνολογία Επικοινωνιών Παρελθόν - Παρόν - Μέλλον

Συνεχής ροή πολυµέσων

7.4 Πρωτόκολλο UDP. 3. Στη περίπτωση που ένα μήνυμα χωράει σε ένα τμήμα, χρησιμοποιούμε το πρωτόκολλο TCP.

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Μετάδοσης Δεδομένων. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

Εργαστήριο «Δίκτυα Υπολογιστών Ι»

ΔΙΑΓΩΝΙΣΜΑ ΤΕΛΙΚΗΣ ΕΠΑΝΑΛΗΨΗΣ ΣΤΙΣ ΕΝΟΤΗΤΕΣ

Επαναληπτικές Ασκήσεις Μαθήματος

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

Δίκτυα Υπολογιστών. Δίκτυα υπολογιστών και το Διαδίκτυο Εισαγωγή. Κ. Βασιλάκης

Δίκτυα Θεωρία

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

α. Συνόδου β. Μεταφοράς γ. Δικτύου δ. Διασύνδεσης δεδομένων ε. Φυσικού Επιπέδου (Μονάδες 5)

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

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

Μάθημα 6: Αρχιτεκτονική TCP/IP

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

Β1. Σε ένα τοπικό δίκτυο τοπολογίας Ethernet-TCP/IP το επίπεδο πρόσβασης δικτύου περιλαμβάνει:

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

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

Εισαγωγή στο TCP/IP. Π. Γαλάτης

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

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

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ

2 η Σειρά Ασκήσεων Data Link Layer

AEI Πειραιά Τ.Τ. Τμ. Μηχ/κων Αυτοματισμού ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

Δίκτυα Υπολογιστών Ενότητα 9: Dynamic Host Configuration Protocol- DHCP

Ειδικά Θέματα Προγραμματισμού

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

Κινητές Επικοινωνίες & Τηλεπικοινωνιακά Δίκτυα

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

Πρωτόκολλα Διαδικτύου. Άγγελος Ρούσκας Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς

Εργαστήριο Δικτύων Υπολογιστών

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

7.5 Πρωτόκολλο IP. & Ερωτήσεις

Ενότητα 3. Στρώµα Ζεύξης: Αρχές Λειτουργίας & Το Υπόδειγµα του Ethernet

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη 16 Νοεμβρίου 2013

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

Network Address Translation (NAT)

Περίληψη. Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων.

Δίκτυα Η/Υ Θεωρία. Διάλεξη 2η

Δίκτυα ΙΙ. Κεφάλαιο 7

ΤΕΙ Στερεάς Ελλάδας Τμ. Ηλ.γων Μηχ/κων ΤΕ. Δίκτυα Υπολογιστών. Διάλεξη 1: Εισαγωγή στα δίκτυα υπολογιστών και βασικές αρχές

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ

α. Το μέγιστο μήκος δεδομένων του ωφέλιμου φορτίου του πλαισίου Ethernet είναι 1500 οκτάδες. ΣΩΣΤΟ

Δίκτυα Υπολογιστών Ι

Δίκτυα Υπολογιστών I

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

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας

Επίπεδο Δικτύου: Διαδικτύωση

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

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

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

Τεχνολογία Πολυμέσων. Ενότητα # 17: Πρωτόκολλα μετάδοσης Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Ως Διαδίκτυο (Internet) ορίζεται το παγκόσμιο (διεθνές) δίκτυο ηλεκτρονικών υπολογιστών (international network).

Διδάσκων: Παναγιώτης Ανδρέου

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΙΚΤΥΩΝ

Θέματα Συστημάτων Πολυμέσων. Ενότητα # 11: RTSP Διδάσκων: Γεώργιος K. Πολύζος Τμήμα: Μεταπτυχιακό Πρόγραμμα Σπουδών «Επιστήμη των Υπολογιστών»

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

Με λίγα λόγια, το TCP/IP καθορίζει τον τρόπο που πακετάρονται και μεταφέρονται τα δεδομένα της σύνδεσής μας.

Εισαγωγή στο πως λειτουργεί το διαδίκτυο

ίκτυα - Internet Μάθηµα 3ο Ενότητα Β: Το Πρότυπο ΤCP/IP Eισαγωγή - Επικοινωνία µεταξύ δύο Υπολογιστών Παρασκευή 10 NOE 2006 ιευθύνσεις

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΓΙΑ ΕΠΙΚΟΙΝΩΝΙΑ ΠΕΛΑΤΩΝ ΜΕΣΩ ΙΑ ΙΚΤΥΟΥ

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Προγραμματισμός Διαχείρισης Συστημάτων ΙΙ

Εισαγωγή στο διαδίκτυο

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Java Socket Programming Μόσχογλου Στυλιανός 6978 9 Ιουνίου, 212

1 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Τιμή σ εκείνους όπου στην ζωή των ώρισαν και φυλάγουν Θερμοπύλες. Ποτέ από το χρέος μη κινούντες δίκαιοι κ ίσιοι σ όλες των τες πράξεις, αλλά με λύπη κιόλας κ ευσπλαχνία γενναίοι οσάκις είναι πλούσιοι, κι όταν είναι πτωχοί, πάλ εις μικρόν γενναίοι, πάλι συντρέχοντες όσο μπορούνε πάντοτε την αλήθεια ομιλούντες, πλην χωρίς μίσος για τους ψευδομένους. Κ. Π. Καβάφης

2 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Περιεχόμενα Περιεχόμενα... 2 Λίστα Σχημάτων... 5 Εισαγωγή... 8 Σύντομη Περιγραφή... 8 Πρωτόκολλο UDP... 1 Δομή UDP πακέτου... 1 Μορφή στο IPv4... 12 Μορφή στο IPv6... 13 Εφαρμογές... 14 Διαφορές UDP και TCP... 14 Audio Streaming... 16 Πρωτόκολλα... 17 RTSP... 17 RTP... 18 RTCP... 18 TCP... 19 Unicast... 2 Multicast... 21 IP multicast... 21 Peer-to-Peer... 22 Εξοπλισμός... 23 Χαρακτηριστικά σύνδεσης... 23 Port Forwarding... 24 Απενεργοποίηση Firewall... 26 Η εφαρμογή και οι μέθοδοί της... 28 Imports... 29 Η κλάση app... 29 Η μέθοδος main... 31 Η μέθοδος in... 32 Η μέθοδος echo... 33 Η μέθοδος temperature... 34

3 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Η μέθοδος throughput... 34 Η μέθοδος image... 35 Η μέθοδος playmusic... 35 Η μέθοδος music... 36 Η μέθοδος fetchdpcm... 36 Η μέθοδος fetchaqdpcm... 37 Η μέθοδος app... 38 Η μέθοδος resizebuffer... 38 Η μέθοδος setcode... 38 Περί συνόδων και μετρήσεων... 4 1 η Σύνοδος... 42 Echo EXXXX... 42 Ρυθμαπόδοση EXXXX... 43 Συχνότητα Echo EXXXX... 45 Κατανομή πιθανότητας EXXXX... 46 Συχνότητα ρυθμαπόδοσης ΕΧΧΧΧ... 47 Echo E... 49 Ρυθμαπόδοση E... 5 Audio Streaming... 52 Εικόνες από την Ιθάκη... 69 Συλλογή Θερμοκρασιών... 7 2 η Σύνοδος... 71 Echo EXXXX... 71 Ρυθμαπόδοση EXXXX... 72 Συχνότητα Echo EXXXX... 74 Κατανομή πιθανότητας EXXXX... 75 Συχνότητα ρυθμαπόδοσης ΕΧΧΧΧ... 76 Echo E... 78 Ρυθμαπόδοση E... 79 Audio Streaming... 81 Εικόνες από την Ιθάκη... 98 Συλλογή Θερμοκρασιών... 99

4 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Ο κώδικας... 1 Αντί επιλόγου... 11

5 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Λίστα Σχημάτων Σχήμα 1 Ιεράρχηση TCP/IP & OSI μοντέλου... 11 Σχήμα 2 Δομή UDP πακέτων... 11 Σχήμα 3 Μορφή UDP στο IPv4... 12 Σχήμα 4 Μορφή στο IPv6... 13 Σχήμα 5 Χαρακτηριστικά DSL γραμμής... 23 Σχήμα 6 Στοιχεία ποιότητας γραμμής... 23 Σχήμα 7 Στοιχεία ποιότητας γραμμής... 24 Σχήμα 8 Διαχείριση NAT στο router... 25 Σχήμα 9 Εύρεση εσωτερικής IP μέσω command prompt... 26 Σχήμα 1 Απενεργοποίηση Firewall... 26 Σχήμα 11 Παράμετροι σύνδεσης, 1 η Σύνοδος... 42 Σχήμα 12 Χρόνος απόκρισης συστήματος για ΕΧΧΧΧ, 1 η Σύνοδος... 43 Σχήμα 13 Ρυθμαπόδοση ανά 8sec για ΕΧΧΧΧ, 1 η Σύνοδος... 43 Σχήμα 14 Ρυθμαπόδοση ανά 16sec για ΕΧΧΧΧ, 1 η Σύνοδος... 44 Σχήμα 15 Ρυθμαπόδοση ανά 32sec για ΕΧΧΧΧ, 1 η Σύνοδος... 44 Σχήμα 16 Συχνότητα για EXXXX, 1 η Σύνοδος... 45 Σχήμα 17 Εκτίμηση πιθανότητας για EXXXX, 1 η Σύνοδος... 46 Σχήμα 18 Συχνότητα ρυθμαπόδοσης για ΕΧΧΧΧ ανά 8sec, 1 η Σύνοδος... 47 Σχήμα 19 Συχνότητα ρυθμαπόδοσης για ΕΧΧΧΧ ανά 16sec, 1 η Σύνοδος... 48 Σχήμα 2 Συχνότητα ρυθμαπόδοσης για ΕΧΧΧΧ ανά 32sec, 1 η Σύνοδος... 48 Σχήμα 21 Χρόνος απόκρισης συστήματος για Ε, 1 η Σύνοδος... 49 Σχήμα 22 Ρυθμαπόδοση ανά 8sec για Ε, 1 η Σύνοδος... 5 Σχήμα 23 Ρυθμαπόδοση ανά 16sec για Ε, 1 η Σύνοδος... 5 Σχήμα 24 Ρυθμαπόδοση ανά 32sec για Ε, 1 η Σύνοδος... 51 Σχήμα 25 Song DPCM, διαφορές δειγμάτων, 1 η Σύνοδος... 52 Σχήμα 26 Song DPCM, τιμές δειγμάτων, 1 η Σύνοδος... 53 Σχήμα 27 Song AQ-DPCM, διαφορές δειγμάτων, 1 η Σύνοδος... 53 Σχήμα 28 Song AQ-DPCM, τιμές δειγμάτων, 1 η Σύνοδος... 54 Σχήμα 29 Song AQ-DPCM, μέση τιμή δειγμάτων ανά πακέτο, 1 η Σύνοδος... 54 Σχήμα 3 Song AQ-DPCM, τιμές βημάτων κβάντισης, 1 η Σύνοδος... 55 Σχήμα 31 Sound DPCM, διαφορές δειγμάτων, 1 η Σύνοδος... 55 Σχήμα 32 Sound DPCM, τιμές δειγμάτων, 1 η Σύνοδος... 56 Σχήμα 33 Sound AQ-DPCM, διαφορές δειγμάτων, 1 η Σύνοδος... 56 Σχήμα 34 Sound AQ-DPCM, τιμές δειγμάτων, 1 η Σύνοδος... 57 Σχήμα 35 Sound AQ-DPCM, μέση τιμή δειγμάτων ανά πακέτο, 1 η Σύνοδος... 57 Σχήμα 36 Sound AQ-DPCM, τιμές βημάτων κβάντισης, 1 η Σύνοδος... 58 Σχήμα 37 Song DPCM, κατανομή τιμών διαφορών, 1 η Σύνοδος... 58 Σχήμα 38 Song DPCM, προσέγγιση pdf τιμών διαφορών, 1 η Σύνοδος... 59 Σχήμα 39 Song DPCM, κατανομή τιμών δειγμάτων, 1 η Σύνοδος... 6

6 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Σχήμα 4 Song DPCM, προσέγγιση pdf τιμών δειγμάτων, 1 η Σύνοδος... 6 Σχήμα 41 Song AQ-DPCM, κατανομή τιμών διαφορών, 1 η Σύνοδος... 61 Σχήμα 42 Song AQ-DPCM, προσέγγιση pdf τιμών διαφορών, 1 η Σύνοδος... 62 Σχήμα 43 Song AQ-DPCM, κατανομή τιμών δειγμάτων, 1 η Σύνοδος... 63 Σχήμα 44 Song AQ-DPCM, προσέγγιση pdf τιμών δειγμάτων, 1 η Σύνοδος... 63 Σχήμα 45 Sound DPCM, κατανομή τιμών διαφορών, 1 η Σύνοδος... 64 Σχήμα 46 Sound DPCM, κατανομή τιμών δειγμάτων, 1 η Σύνοδος... 65 Σχήμα 47 Sound DPCM, προσέγγιση pdf τιμών δειγμάτων, 1 η Σύνοδος... 65 Σχήμα 48 Sound AQ-DPCM, κατανομή τιμών διαφορών, 1 η Σύνοδος... 66 Σχήμα 49 Sound AQ-DPCM, κατανομή τιμών δειγμάτων, 1 η Σύνοδος... 67 Σχήμα 5 Sound AQ-DPCM, προσέγγιση pdf τιμών δειγμάτων, 1 η Σύνοδος... 67 Σχήμα 51 Sound AQ-DPCM, δείγματα, συχνοτική απόκριση, 1 η Σύνοδος... 68 Σχήμα 52 Sound DPCM, δείγματα, συχνοτική απόκριση, 1 η Σύνοδος... 68 Σχήμα 53 Εικόνα μικρής ανάλυσης, 1 η Σύνοδος... 69 Σχήμα 54 Εικόνα μεγάλης ανάλυσης, 1 η Σύνοδος... 69 Σχήμα 55 Παράμετροι σύνδεσης, 2 η Σύνοδος... 71 Σχήμα 56 Χρόνος απόκρισης συστήματος για ΕΧΧΧΧ, 2 η Σύνοδος... 72 Σχήμα 57 Ρυθμαπόδοση ανά 8sec για ΕΧΧΧΧ, 2 η Σύνοδος... 72 Σχήμα 58 Ρυθμαπόδοση ανά 16sec για ΕΧΧΧΧ, 2 η Σύνοδος... 73 Σχήμα 59 Ρυθμαπόδοση ανά 32sec για ΕΧΧΧΧ, 2 η Σύνοδος... 73 Σχήμα 6 Συχνότητα για EXXXX, 2 η Σύνοδος... 74 Σχήμα 61 Εκτίμηση πιθανότητας για EXXXX, 2 η Σύνοδος... 75 Σχήμα 62 Συχνότητα ρυθμαπόδοσης για ΕΧΧΧΧ ανά 8sec, 2 η Σύνοδος... 76 Σχήμα 63 Συχνότητα ρυθμαπόδοσης για ΕΧΧΧΧ ανά 16sec, 2 η Σύνοδος... 77 Σχήμα 64 Συχνότητα ρυθμαπόδοσης για ΕΧΧΧΧ ανά 32sec, 2 η Σύνοδος... 77 Σχήμα 65 Χρόνος απόκρισης συστήματος για Ε, 2 η Σύνοδος... 78 Σχήμα 66 Ρυθμαπόδοση ανά 8sec για Ε, 2 η Σύνοδος... 79 Σχήμα 67 Ρυθμαπόδοση ανά 16sec για Ε, 2 η Σύνοδος... 79 Σχήμα 68 Ρυθμαπόδοση ανά 32sec για Ε, 2 η Σύνοδος... 8 Σχήμα 69 Song DPCM, διαφορές δειγμάτων, 2 η Σύνοδος... 81 Σχήμα 7 Song DPCM, τιμές δειγμάτων, 2 η Σύνοδος... 82 Σχήμα 71 Song AQ-DPCM, διαφορές δειγμάτων, 2 η Σύνοδος... 82 Σχήμα 72 Song AQ-DPCM, τιμές δειγμάτων, 2 η Σύνοδος... 83 Σχήμα 73 Song AQ-DPCM, μέση τιμή δειγμάτων ανά πακέτο, 2 η Σύνοδος... 83 Σχήμα 74 Song AQ-DPCM, τιμές βημάτων κβάντισης, 2 η Σύνοδος... 84 Σχήμα 75 Sound DPCM, διαφορές δειγμάτων, 2 η Σύνοδος... 84 Σχήμα 76 Sound DPCM, τιμές δειγμάτων, 2 η Σύνοδος... 85 Σχήμα 77 Sound AQ-DPCM, διαφορές δειγμάτων, 2 η Σύνοδος... 85 Σχήμα 78 Sound AQ-DPCM, τιμές δειγμάτων, 2 η Σύνοδος... 86 Σχήμα 79 Sound AQ-DPCM, μέση τιμή δειγμάτων ανά πακέτο, 2 η Σύνοδος... 86 Σχήμα 8 Sound AQ-DPCM, τιμές βημάτων κβάντισης, 2 η Σύνοδος... 87

7 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Σχήμα 81 Song DPCM, κατανομή τιμών διαφορών, 2 η Σύνοδος... 87 Σχήμα 82 Song DPCM, προσέγγιση pdf τιμών διαφορών, 2 η Σύνοδος... 88 Σχήμα 83 Song DPCM, κατανομή τιμών δειγμάτων, 2 η Σύνοδος... 89 Σχήμα 84 Song DPCM, προσέγγιση pdf τιμών δειγμάτων, 2 η Σύνοδος... 89 Σχήμα 85 Song AQ-DPCM, κατανομή τιμών διαφορών, 2 η Σύνοδος... 9 Σχήμα 86 Song AQ-DPCM, προσέγγιση pdf τιμών διαφορών, 2 η Σύνοδος... 91 Σχήμα 87 Song AQ-DPCM, κατανομή τιμών δειγμάτων, 2 η Σύνοδος... 92 Σχήμα 88 Song AQ-DPCM, προσέγγιση pdf τιμών δειγμάτων, 2 η Σύνοδος... 92 Σχήμα 89 Sound DPCM, κατανομή τιμών διαφορών, 2 η Σύνοδος... 93 Σχήμα 9 Sound DPCM, κατανομή τιμών δειγμάτων, 2 η Σύνοδος... 94 Σχήμα 91 Sound DPCM, προσέγγιση pdf τιμών δειγμάτων, 2 η Σύνοδος... 94 Σχήμα 92 Sound AQ-DPCM, κατανομή τιμών διαφορών, 2 η Σύνοδος... 95 Σχήμα 93 Sound AQ-DPCM, κατανομή τιμών δειγμάτων, 2 η Σύνοδος... 96 Σχήμα 94 Sound DPCM, δείγματα, συχνοτική απόκριση, 2 η Σύνοδος... 97 Σχήμα 95 Sound AQ-DPCM, δείγματα, συχνοτική απόκριση, 2 η Σύνοδος... 97 Σχήμα 96 Εικόνα μικρής ανάλυσης, 2 η Σύνοδος... 98 Σχήμα 97 Εικόνα μεγάλης ανάλυσης, 2 η Σύνοδος... 98

8 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Εισαγωγή Η παρούσα εργασία έγινε στα πλαίσια του μαθήματος «ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ», του τμήματος Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών, του Αριστοτελείου Πανεπιστημίου Θεσσαλονίκης. Αφορά στην υλοποίηση δικτυακού προγραμματισμού (socket programming) μέσω της γλώσσας java. Επιβλέπων και διδάσκων καθηγητής είναι ο κ. Δημήτριος Μητράκος. Παρακάτω, ακολουθεί μια σύντομη περιγραφή του τι ακριβώς γίνεται στην εργασία. Σύντομη Περιγραφή Η παρούσα εργασία στοχεύει στην εξοικείωση του προγραμματιστή με το δικτυακό περιβάλλον και το πώς ακριβώς συντελείται η επικοινωνία δυο υπολογιστών στα σύγχρονα τηλεπικοινωνιακά δίκτυα (xdsl). Επιγραμματικά, θα μπορούσαμε να α- ναφέρουμε ότι η εργασία καλύπτει τους εξής άξονες: Εκμάθηση του πρωτόκολλου επικοινωνίας UDP (User Datagram Protocol) για την επικοινωνία δύο ή περισσότερων υπολογιστών. Εισαγωγή στους μηχανισμούς μετάδοσης ψηφιακού ήχου σε real time (πραγματικού χρόνου) καταστάσεις, διαμέσου της μεταγωγής πακέτων. Εκτίμηση της ποιότητας της επικοινωνίας των υπολογιστών μέσω δικτύου, με τη λήψη στατιστικών μετρήσεων τιμών ορισμένων παραμέτρων. Θα πρέπει να σημειωθεί εδώ πως η εργασία θα υλοποιηθεί σε java. Άλλες εξίσου αποδοτικές γλώσσες, που διαθέτουν πληθώρα βιβλιοθηκών για τη διαδικτυακή επικοινωνία είναι η ruby on rails, η python, κ.λπ. Ωστόσο, επελέγη η java μιας και είναι η κατεξοχήν γλώσσα write once, run many. Δηλαδή, εφόσον καταλήξουμε στο τελικό πρόγραμμα, αυτό θα τρέχει χωρίς να υποστεί κάποια τροποποίηση σε όλους τους υπολογιστές, οικιακούς και μη, ανεξαρτήτως λειτουργικού συστήματος. Επίσης, θα πρέπει να ληφθεί υπόψη ότι η java διαθέτει και αρκετές έτοιμες βιβλιοθήκες για το δικτυακό προγραμματισμό και τη διαχείριση αρχείων που κάνουν πολύ πιο εύκολη τη ζωή του προγραμματιστή. Λακωνικά, μιας και βρισκόμαστε στο εισαγωγικό κομμάτι, αξίζει να αναφέρουμε ότι η εφαρμογή μας πραγματοποιεί απομακρυσμένη σύνδεση με τον server του εργαστηρίου Ithaki. Μέσω αυτής της σύνδεσης του πελάτη (client), δηλαδή αυτού που συνδέεται στον server, με τον ίδιο τον server, θα προκύψουν τα αποτελέσματα, βάσει των αξόνων της εργασίας, όπως έχουν οριστεί ανωτέρω. Για την πραγματοποίηση αυτής της εργασίας, απαιτείται από τη μεριά του χρήστη καταρχάς σύνδεση σε ευρυζωνικό δίκτυο (xdsl), ενός router (το μέσο της σύνδεσης), αλλά και η χρήση θηρών (ports) των δυο υπολογιστών μέσω της δημιουργίας συνδέσμων (sockets). Αξίζει τέλος να επισημανθεί πως η επικοινωνία και η αποστολή δεδομένων μεταξύ

9 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν των δυο υπολογιστών (πελάτη-server) συντελείται μέσω πακέτων. Τα πακέτα είναι ουσιαστικά κατακερματισμένα δεδομένα, που βοηθούν στην αποδοτικότερη αποστολή των δεδομένων. Το πώς ακριβώς συμβαίνει αυτό, αν και έχει αναλυθεί ενδελεχώς στην προηγούμενη εργασία για το μάθημα ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι, θα α- ναλυθεί στη συνέχεια. Όπως αναφέρθηκε, απαραίτητο συστατικό για την επικοινωνία των υπολογιστών στην παρούσα εργασία είναι η χρησιμοποίηση του πρωτόκολλου UDP. Εκτός από το UDP, αναφέρουμε ενδεικτικά ότι υπάρχουν και άλλα πρωτόκολλα επικοινωνίας, όπως το TCP. Κάτωθι, αναλύεται επακριβώς η λειτουργία του UDP. Επίσης, επιχειρείται μια σύγκριση με τον κύριο ανταγωνιστή του, το TCP.

1 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Πρωτόκολλο UDP Το πρωτόκολλο User Datagram Protocol (UDP) είναι ένα από τα βασικά πρωτόκολλα που χρησιμοποιούνται στο διαδίκτυο. Μία εναλλακτική ονομασία του πρωτοκόλλου είναι Universal Datagram Protocol. Διάφορα προγράμματα χρησιμοποιούν το πρωτόκολλο UDP για την αποστολή σύντομων μηνυμάτων (γνωστών και ως datagrams) από τον έναν υπολογιστή στον άλλον μέσα σε ένα δίκτυο υπολογιστών. Ένα από τα κύρια χαρακτηριστικά του UDP είναι ότι δεν εγγυάται αξιόπιστη επικοινωνία. Τα πακέτα UDP που αποστέλλονται από έναν υπολογιστή μπορεί να φτάσουν στον παραλήπτη με λάθος σειρά, διπλά ή να μην φτάσουν καθόλου εάν το δίκτυο έχει μεγάλο φόρτο. Αντιθέτως, το πρωτόκολλο TCP διαθέτει όλους τους απαραίτητους μηχανισμούς ελέγχου και επιβολής της αξιοπιστίας και συνεπώς μπορεί να εγγυηθεί την αξιόπιστη επικοινωνία μεταξύ των υπολογιστών. Η έλλειψη των μηχανισμών αυτών από το πρωτόκολλο UDP το καθιστά αρκετά πιο γρήγορο και αποτελεσματικό, τουλάχιστον για τις εφαρμογές εκείνες που δεν απαιτούν αξιόπιστη επικοινωνία. Οι εφαρμογές audio και video streaming χρησιμοποιούν κατά κόρον πακέτα UDP. Για τις εφαρμογές αυτές είναι πολύ σημαντικό τα πακέτα να παραδοθούν στον παραλήπτη σε σύντομο χρονικό διάστημα, ούτως ώστε να μην υπάρχει διακοπή στην ροή του ήχου ή της εικόνας. Κατά συνέπεια προτιμάται το πρωτόκολλο UDP διότι είναι αρκετά γρήγορο, παρόλο που υπάρχει η πιθανότητα μερικά πακέτα UDP να χαθούν. Στην περίπτωση που χαθεί κάποιο πακέτο, οι εφαρμογές αυτές διαθέτουν ειδικούς μηχανισμούς διόρθωσης και παρεμβολής, ούτως ώστε ο τελικός χρήστης να μην παρατηρεί καμία αλλοίωση ή διακοπή στην ροή του ήχου και της εικόνας λόγω του χαμένου πακέτου. Σε αντίθεση με το πρωτόκολλο TCP, το UDP υποστηρίζει broadcasting, δηλαδή την αποστολή ενός πακέτου σε όλους τους υπολογιστές ενός δικτύου, και multicasting, δηλαδή την αποστολή ενός πακέτου σε κάποιους συγκεκριμένους υπολογιστές ενός δικτύου. Η τελευταία δυνατότητα χρησιμοποιείται πολύ συχνά στις εφαρμογές audio και video streaming ούτως ώστε μία ροή ήχου ή εικόνας να μεταδίδεται ταυτόχρονα σε πολλούς συνδρομητές. Μερικές σημαντικές εφαρμογές που χρησιμοποιούν πακέτα UDP είναι οι εξής: Domain Name System (DNS), IPTV, Voice over IP (VoIP), Trivial File Transfer Protocol (TFTP) και τα παιχνίδια που παίζονται ζωντανά μέσω του Διαδικτύου. Δομή UDP πακέτου Η δομή ενός πακέτου UDP περιγράφεται αναλυτικά στο αντίστοιχο πρότυπο IETF RFC 768. Στην σουίτα πρωτοκόλλων του Διαδικτύου, το UDP βρίσκεται ανάμεσα στο επίπεδο δικτύου (network layer) και στο επίπεδο συνόδου (session layer) ή εφαρμογών (application layer). Η θέση του, ανάλογα με το ποια από τις δυο γνωστές

11 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν σουίτες πρωτοκόλλων χρησιμοποιείται (OSI ή TCP/IP), παρουσιάζεται επακριβώς στο κάτωθι σχήμα. Σχήμα 1 Ιεράρχηση TCP/IP & OSI μοντέλου Κάθε πακέτο UDP έχει μία κεφαλίδα (header) που αναφέρει τα χαρακτηριστικά του. Η κεφαλίδα περιλαμβάνει μονάχα 4 πεδία, τα οποία είναι πολύ λίγα εάν συγκριθούν με άλλα πρωτόκολλα, όπως το TCP. Δύο από τα τέσσερα πεδία είναι προαιρετικά (φαίνονται χρωματισμένα με ροζ). Σχήμα 2 Δομή UDP πακέτων Ακολουθεί μία συνοπτική εξήγηση των πεδίων: Source port Η πόρτα του αποστολέα από την οποία προήλθε το πακέτο. Εάν ο παραλήπτης επιθυμεί να στείλει κάποια απάντηση, θα πρέπει να την στείλει στην πόρτα αυτήν. Το συγκεκριμένο πεδίο δεν είναι υποχρεωτικό και στις περιπτώσεις που δεν χρησιμοποιείται θα πρέπει να έχει την τιμή μηδέν.

12 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Destination port Η πόρτα του παραλήπτη στην οποία θα πρέπει να παραδοθεί το πακέτο. Length Το πεδίο αυτό έχει μέγεθος 16-bit και περιλαμβάνει το μέγεθος του πακέτου σε bytes. Το μικρότερο δυνατό μέγεθος είναι 8 bytes, αφού η κεφαλίδα αυτή καθ' αυτή καταλαμβάνει τόσο χώρο. Θεωρητικά, το μέγεθος του UDP πακέτου δεν μπορεί να ξεπερνάει τα 65.527 bytes, αλλά πρακτικά το όριο μειώνεται στα 65.57 bytes λόγω διαφόρων περιορισμών που εισάγει το πρωτόκολλο IPv4 στο επίπεδο δικτύου. Checksum Ένα πεδίο 16-bit το οποίο χρησιμοποιείται για επαλήθευση της ορθότητας του πακέτου στο σύνολό του, δηλαδή τόσο της κεφαλίδας όσο και των δεδομένων. Στην συνέχεια το πακέτο UDP περνάει στο επίπεδο δικτύου, το οποίο αναλαμβάνει να το μεταδώσει στο δίκτυο υπολογιστών. Το επίπεδο αυτό τοποθετεί μία ακόμη κεφαλίδα στο πακέτο, η οποία διαφέρει ανάλογα με την έκδοση του πρωτοκόλλου που χρησιμοποιείται στο επίπεδο δικτύου (IPv4 ή IPv6). Μορφή στο IPv4 Παρουσιάζεται συνοπτικά στο παρακάτω σχήμα: Source Address, Destination Address Σχήμα 3 Μορφή UDP στο IPv4 Οι διευθύνσεις IP του αποστολέα και του παραλήπτη αντίστοιχα.

13 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Zeros Μία ακολουθία μηδενικών, η οποία δεν παίζει κανέναν ρόλο κατά την μετάδοση του πακέτου. Protocol Ένας χαρακτηριστικός αριθμός που αντιστοιχεί στο πρωτόκολλο που χρησιμοποιείται. Για το UDP η τιμή που παίρνει το πεδίο αυτό είναι 17. UDP Length Το συνολικό μέγεθος του πακέτου UDP. Μορφή στο IPv6 Παρουσιάζεται συνοπτικά στο παρακάτω σχήμα: Source Address, Destination Address Σχήμα 4 Μορφή στο IPv6 Οι διευθύνσεις IP του αποστολέα και του παραλήπτη αντίστοιχα, οι οποίες όμως στην περίπτωση αυτή είναι τύπου IPv6, δηλαδή πολύ μεγαλύτερες (IPv4-32bit, IPv6-128bit).

14 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν UDP Length Το συνολικό μέγεθος του πακέτου UDP, όπως και προηγουμένως. Zeros Μία ακολουθία μηδενικών, η οποία δεν παίζει κανέναν ρόλο κατά την μετάδοση του πακέτου. Next Header Το πεδίο αυτό παίρνει μία τιμή που είναι χαρακτηριστική για το πρωτόκολλο που χρησιμοποιείται. Στην περίπτωση του UDP, η τιμή αυτή είναι 17. Τέλος, αξίζει να σημειωθεί ότι στην περίπτωση IPv6 το πεδίο checksum του UDP πακέτου δεν είναι πλέον προαιρετικό, αλλά θα πρέπει υποχρεωτικά να συμπληρωθεί. Εφαρμογές Όπως αναφέρθηκε και προηγουμένως, οι εφαρμογές που χρησιμοποιούν το πρωτόκολλο UDP θα πρέπει να μπορούν να δεχτούν κάποια απώλεια πακέτων ή διάφορα σφάλματα στα πακέτα τα οποία στέλνουν. Μερικές εφαρμογές, όπως για παράδειγμα το Trivial File Transfer Protocol (TFTP), υλοποιούν δικούς τους μηχανισμούς διασφάλισης της αξιοπιστίας της επικοινωνίας. Πάντως, τις περισσότερες φορές οι εφαρμογές που χρησιμοποιούν το UDP δεν επιβάλλουν επιπρόσθετους μηχανισμούς αξιοπιστίας, διότι θα παρεμποδίζονται από αυτούς και χειροτερεύει η απόδοσή τους. Κλασικό παράδειγμα τέτοιων προγραμμάτων είναι οι εφαρμογές πραγματικού χρόνου (πχ. media streaming, παιχνίδια στο διαδίκτυο, VoIP κ.λπ.). Στην περίπτωση πάντως που μία εφαρμογή χρειάζεται αξιόπιστη μετάδοση δεδομένων, δηλαδή η πλειοψηφία των εφαρμογών του διαδικτύου, θα προτιμήσει να χρησιμοποιήσει το πρωτόκολλο TCP αντί του UDP. Σε ένα τυπικό δίκτυο υπολογιστών, η κίνηση που προέρχεται από την μετάδοση UDP πακέτων ανέρχεται σε ένα αρκετά μικρό ποσοστό. Παρόλα αυτά όμως, το πρωτόκολλο αυτό το χρησιμοποιούν πολύ σημαντικές εφαρμογές, στην σωστή λειτουργία των οποίων βασίζεται το διαδίκτυο. Τέτοιες εφαρμογές είναι για παράδειγμα οι εξής: Domain Name System (DNS), Simple Network Management Protocol (SNMP), Dynamic Host Configuration Protocol (DHCP) και το Routing Information Protocol (RIP). Διαφορές UDP και TCP Το πρωτόκολλο TCP λειτουργεί εγκαθιδρύοντας συνδέσεις μεταξύ του αποστολέα και του παραλήπτη των πακέτων. Από την στιγμή που μία σύνδεση εγκαθιδρυθεί με επιτυχία, όλα τα δεδομένα αποστέλλονται από τον έναν υπολογιστή στον άλλο με

15 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν την μορφή πακέτων χρησιμοποιώντας την σύνδεση αυτή. Τα κύρια χαρακτηριστικά του TCP είναι τα εξής: Αξιοπιστία - Το TCP χρησιμοποιεί διάφορους μηχανισμούς, ούτως ώστε να διασφαλιστεί ότι τα πακέτα που μεταδίδονται από τον αποστολέα θα φτάσουν σίγουρα στον παραλήπτη και στη σωστή σειρά. Οι μηχανισμοί αυτοί περιλαμβάνουν την επιβεβαίωση λήψης πακέτου από τον παραλήπτη, την επαναποστολή πακέτων που χάθηκαν και τον καθορισμό ενός ελάχιστου χρονικού διαστήματος μέσα στο οποίο κάθε αποστελλόμενο πακέτο θα πρέπει να έχει παραληφθεί (timeout). Στην περίπτωση που χαθεί κάποιο πακέτο, ο αποστολέας προσπαθεί και πάλι να το ξαναστείλει. Επίσης, εάν ο παραλήπτης διαπιστώσει ότι ένα πακέτο δεν του έχει έρθει, τότε θα ζητήσει από τον αποστολέα να του το ξαναστείλει. Σειρά πακέτων - Εάν δύο πακέτα αποσταλούν σε μία σύνδεση το ένα μετά το άλλο, τότε το πρωτόκολλο TCP εγγυάται ότι θα φτάσουν στον παραλήπτη με την ίδια σειρά με την οποία στάλθηκαν. Στην περίπτωση που λείπει ένα πακέτο και έρθουν μελλοντικά πακέτα, τότε αυτά κατακρατούνται στην προσωρινή μνήμη (buffer) μέχρις ότου φτάσει το πακέτο που λείπει. Τότε αναδιατάσσονται και εμφανίζονται με την σωστή σειρά στον παραλήπτη. Βαρύτητα - Το πρωτόκολλο TCP θεωρείται ιδιαίτερα βαρύ, δεδομένου του γεγονότος ότι χρειάζονται τουλάχιστον 3 πακέτα για την εγκαθίδρυση της σύνδεσης, πριν ακόμη μεταδοθεί οποιοδήποτε πακέτο δεδομένων. Επίσης, οι μηχανισμοί αξιοπιστίας που υλοποιεί το κάνουν ακόμη πιο βαρύ, πράγμα που έχει φυσικά σημαντικό αντίκτυπο στην ταχύτητα μετάδοσης δεδομένων. Το UDP είναι ένα πιο απλό και ελαφρύ πρωτόκολλο, στο οποίο δεν υπάρχει η έννοια της σύνδεσης. Κάθε πακέτο UDP διανύει το δίκτυο ως μία ξεχωριστή αυτόνομη μονάδα και όχι ως μία σειρά πακέτων σε μία σύνδεση, όπως στο TCP. Τα κύρια χαρακτηριστικά του UDP είναι τα εξής: Αναξιόπιστο - Κατά την αποστολή ενός πακέτου, ο αποστολέας δεν είναι σε θέση να γνωρίζει εάν το πακέτο θα φτάσει σωστά στον προορισμό του ή εάν θα χαθεί μέσα στο δίκτυο. Δεν έχει προβλεφθεί η δυνατότητα επιβεβαίωσης λήψης πακέτου από τον παραλήπτη, ούτε η επαναμετάδοση ενός χαμένου πακέτου. Δεν υπάρχει σειρά - Τα πακέτα UDP, σε αντίθεση με το TCP, δεν αριθμούνται και κατά συνέπεια δεν υπάρχει κάποια συγκεκριμένη σειρά με την ο- ποία θα πρέπει να φτάσουν στον παραλήπτη. Ελαφρύ - Το πρωτόκολλο αυτό καθ' αυτό είναι πολύ ελαφρύ σε σύγκριση με το TCP, διότι δεν εφαρμόζει όλους τους μηχανισμούς αξιόπιστης επικοινω-

16 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν νίας που υπάρχουν στο δεύτερο. Αυτό έχει ως συνέπεια να είναι αρκετά πιο γρήγορο. Datagrams - Κάθε πακέτο UDP ονομάζεται επίσης και "datagram", θεωρείται δε ως μεμονωμένη οντότητα που θα πρέπει να μεταδοθεί ολόκληρη. Κατά συνέπεια δεν υφίσταται η έννοια της διοχέτευσης πακέτων μέσα σε ένα κανάλι/σύνδεση. Audio Streaming To audio streaming ανήκει στην ευρύτερη κατηγορία ονόματι streaming media. Η γενικευμένη αυτή κατηγορία, πέρα από το audio streaming (μετάδοση ήχου), περιλαμβάνει και το video streaming (μετάδοση video). Πιο συγκεκριμένα, πρόκειται για πολυμέσα (εικόνα, ήχος, βίντεο) τα οποία συνεχώς λαμβάνονται και παρουσιάζονται στον τελικό χρήστη (end-user), ενώ ταυτόχρονα αποστέλλονται μέσω ενός streaming provider (αναμεταδότη). Σύμφωνα με την ιδέα του streaming, ο browser (φυλλομετρητής) ή ένα plug-in (επιπρόσθετη εφαρμογή) μπορεί να αρχίσει να αναπαράγει τα δεδομένα που λαμβάνονται, πριν γίνει η τελική λήψη του αρχείου. Κλασικό παράδειγμα αποτελεί η internet tv (διαδικτυακή τηλεόραση). Επίσης, ένα άλλο κλασικό παράδειγμα είναι και οι πίνακες μετοχών στα χρηματιστήρια, που μεταδίδουν σε ζωντανή ροή (streaming) τις τιμές των μετοχών. Η ιδέα του streaming δεν είναι πρόσφατη. Μας πηγαίνει αρκετά πίσω, στα μισά του προηγούμενου αιώνα, όταν υπήρξαν και οι ιδέες ζωντανής, συνεχούς ροής δεδομένων. Ωστόσο, εκείνη την εποχή κάτι τέτοιο απαιτούσε εξαιρετικά προηγμένη τεχνολογία αλλά και μεγάλη επένδυση σε χρήματα. Η ιδέα αυτή άρχισε να καλλιεργείται ακόμη περισσότερο στα μέσα της δεκαετίας του 8, με την εμφάνιση των πρώτων προσωπικών υπολογιστών. Η ουσιαστική είσοδός τους όμως στην αγορά συντελέστηκε από τα μέσα της δεκαετίας του 9 και έπειτα. Οι λόγοι που συνέβη ήταν οι εξής: Πολύ μεγαλύτερο εύρος ζώνης (bandwidth) στο internet. Ουσιαστικά αυξήθηκαν οι ταχύτητες, με αποτέλεσμα η όλη ιδέα της αναπαραγωγής εν μέσω κατεβάσματος (downloading) να είναι πλέον εφικτή. Σκεφτείτε ότι μία εικόνα (frame) ενός video, σε αρκετά χαμηλή ανάλυση, είναι μερικά kb s. Αν σκεφτούμε ότι ανά δευτερόλεπτο απαιτείται αρκετά μεγάλος αριθμός σε frames για τη μετάδοση συνεχούς ροής video, καταλαβαίνετε γιατί χρειαζόμαστε αποκλειστικά ευρυζωνικές συνδέσεις στο διαδίκτυο (xdsl). Καθιέρωση συγκεκριμένων πρωτόκολλων στο internet, όπως TCP/IP, HTML, HTTP. Πριν από αυτά, δεν υπήρχε καν το θεωρητικό υπόβαθρο για το πώς μπορεί να στηθεί μια τέτοια πλατφόρμα. Η είσοδος του πρωτόκολλου HTTP σε συνδυασμό με την HTML, αλλά και της θεωρίας TCP/IP για την επικοινω-

17 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν νία του φυσικού δικτυακού υλικού του υπολογιστή με τις αντίστοιχες εφαρμογές, οδήγησε σε ένα ολοκληρωμένο σύστημα, έτοιμο πλέον να υποδεχτεί τις απαιτήσεις του streaming. Εμπορευματοποίηση του διαδικτύου. Οι διαφημιστικές εταιρίες που έλαβαν ενεργό ρόλο στην εξάπλωση του διαδικτύου, έψαχναν τρόπους διεύρυνσης των εσόδων τους. Η ιδέα αλλά και η υλοποίηση του streaming ήταν πολύ έ- ξυπνη, καθώς πλέον ο χρήστης παράλληλα με την αναπαραγωγή του βίντεό του ή του τραγουδιού του, έβλεπε και τις διαφημίσεις. Πρωτόκολλα Η υλοποίηση του streaming επιτυγχάνεται με την χρήση συγκεκριμένων πρωτόκολλων. Ένα από τα πιο γνωστά που έχουν αναφερθεί και νωρίτερα είναι το UDP, που ανήκει στην κατηγορία των datagram protocols. Σύμφωνα με την αρχή λειτουργίας του, το προς μετάδοση αρχείο τεμαχίζεται σε μια σειρά από μικρά πακέτα. Αυτό είναι απλό και αποδοτικό. Ωστόσο, δεν υπάρχει μηχανισμός μέσα στο συγκεκριμένο πρωτόκολλο που να εγγυείται τη σίγουρη μετάδοση των πακέτων στον παραλήπτη, χωρίς σφάλματα. Επαφίεται στην εφαρμογή που τρέχει ο λήπτης ο εντοπισμός χαμένων ή κατακερματισμένων αρχείων. Εφόσον εντοπιστούν αυτά, είναι και πάλι ευθύνη της εκάστοτε εφαρμογής η επαναφορά της χαμένης πληροφορίας μέσω τεχνικών επιδιόρθωσης σφαλμάτων (error correction). Όλη αυτή η διαδικασία συμβαίνει καθώς σε περίπτωση που δεδομένα χαθούν και δεν αναπληρωθούν, το stream, η συνεχής αυτή ροή δηλαδή, υπάρχει μεγάλη πιθανότητα να σταματήσει. Ανάμεσα σε άλλα, πολύ γνωστά είναι τα εξής πρωτόκολλα: RTSP (Real Time Streaming Protocol) RTP (Real (Time) Transport Protocol) RTCP (Real Time Transport Control Protocol) TCP (Transmission Control Protocol) Unicast Multicast IP Multicast Peer-to-Peer (P2P) RTSP To Real Time Streaming Protocol (RTSP) είναι ένα δικτυακό πρωτόκολλο σχεδιασμένο για την διεκπεραίωση ψυχαγωγικών και τηλεπικοινωνιακών συστημάτων και για τον έλεγχο των διακομιστών (servers) του εκάστοτε τύπου streaming. Το πρωτόκολλο χρησιμοποιείται για την εγκαθίδρυση και τον έλεγχο συνεδριών (sessions) μεταξύ των δυο τελικών χρηστών (server-user). Οι πελάτες αυτών των servers έχουν τη δυνατότητα να χρησιμοποιούν VCR-like εντολές, όπως play και pause, ώστε

18 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν να επιτύχουν real-time (σε ζωντανό χρόνο) έλεγχο της αναπαραγωγής (playback) των αρχείων που βρίσκονται στον server. H μετάδοση του streaming δεν είναι εξ ολοκλήρου δουλειά του συγκεκριμένου πρωτόκολλου. Όπως θα δούμε και παρακάτω, οι περισσότεροι RTSP servers χρησιμοποιούν το πρωτόκολλο RTP (Real (Time) Transport Protocol), σε συνδυασμό με το RTCP (Real Time Control Protocol) για τη μετάδοση του streaming. To πρωτόκολλο RTSP αναπτύχθηκε από την Multipathy Multimedia Session Control Working Group (MMUSIC WG) της Internet Engineering Task Force (IETF) και δημοσιεύτηκε ως RFC 2326 το 1998. RTP To RTP (Real (Time) Transport Protocol) είναι ένα δικτυακό πρωτόκολλο που καθορίζει τη συγκεκριμένη μορφή (format) των πακέτων για τη μετάδοση και αποστολή αρχείων ήχου, εικόνων, βίντεο, μέσω IP δικτύων. Το RTP χρησιμοποιείται κατά κόρον σε ψυχαγωγικά αλλά και τηλεπικοινωνιακά συστήματα που έχουν να κάνουν με streaming, όπως η τηλεφωνία, η τηλεδιάσκεψη, η καλωδιακή τηλεόραση (cable tv), το VoIP, κ.λπ. To RTP χρησιμοποιείται, όπως θα δούμε και παρακάτω, σε συνδυασμό με το RTCP (Real Time Control Protocol). Ενώ το RTP μεταφέρει τη ροή του ήχου ή του βίντεο, το RTCP χρησιμοποιείται για την επίβλεψη των στατιστικών μεταφοράς αλλά και ποιότητας της παρεχόμενης υπηρεσίας (Quality of Service, QoS) και βοηθάει στο συγχρονισμό πολλαπλών streams. To RTP αποστέλλεται αλλά και λαμβάνεται μέσω θυρών (ports) των οποίων ο αριθμός είναι άρτιος. Το RTCP από την άλλη χρησιμοποιεί τον αμέσως επόμενο μεγαλύτερο περιττό ακέραιο ως θύρα (port) από αυτόν που χρησιμοποιεί το RTP. Όπως και αναφέρθηκε, το RTP είναι από τα βασικά θεμέλια του VoIP (Voice over IP) και υπό αυτό το πλαίσιο χρησιμοποιείται συχνά σε συνδυασμό με ένα signaling protocol που βοηθά στην εγκαθίδρυση συνδέσεων εντός του δικτύου. Το RTP αναπτύχθηκε από την Audio-Video Transport Working Group της Internet Engineering Task Force (IETF) και δημοσιεύτηκε το 1996 υπό το όνομα RFC 1889, το οποίο και αποτέλεσε πρόγονο του πλέον χρησιμοποιούμενου RFC 355, που με τη σειρά του δημοσιεύτηκε το 23. RTCP To RTCP (Real Time Control Protocol) είναι ένα αδελφό δικτυακό πρωτόκολλο με το RTP (Real (Time) Transport Protocol). Η βασική του λειτουργικότητα και δομή του καθορίζεται στο RFC 355, RTP. To RTCP παρέχει στατιστικά αλλά και πληροφορίες ελέγχου σχετικά με τη ροή του RTP. Συνοδεύει το RTP στην αποστολή και πακετοποίηση των αρχείων ήχου, εικόνας, βίντεο προς μετάδοση, αλλά δεν υποστηρίζει streaming το ίδιο από μόνο του. Τυπικά το RTP θα σταλεί σε πόρτα άρτιου αριθμού, με τα μηνύματα του RTCP να μεταφέρονται σε πόρτες του αμέσως επόμενου περιττού αριθμού, όπως αναφέρθηκε και προηγουμένως. Η βασική λειτουργία του RTCP είναι να παρέχει πληροφορίες σχετικά με την ποιότητα της υπηρεσίας (QoS), στέλ-

19 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν νοντας περιοδικά στατιστικά διαγράμματα και πληροφορίες στους συμμετέχοντες σε μια συνεδρία ροής δεδομένων (streaming). To RTCP συγκεντρώνει στατιστικά σχετικά με μια σύνδεση όπως τα μεταδιδόμενα συνολικά πακέτα, τα χαμένα πακέτα, το θόρυβο (αν υπάρχει), αλλά και τον χρόνο καθυστέρησης στη μετάδοση. Μια εφαρμογή μπορεί να χρησιμοποιήσει αυτές τις πληροφορίες για να ελέγξει την ποιότητα των υπηρεσιών που προσφέρει και ανάλογα να προβεί σε διαδικασίες για τη βελτίωσή τους, όπως περιορισμός της ροής, ή της χρησιμοποίησης κάποιου άλλου codec. Το RTCP από μόνο του δεν παρέχει κάποια κρυπτογράφηση στη ροή και δεν απαιτεί γενικά κάποιον έλεγχο. Τέτοιοι μηχανισμοί είναι δυνατό να υλοποιηθούν, για παράδειγμα, μέσω του Secure Real (Time) Transport Protocol (SRTP), όπως αυτό ορίζεται στο RFC 3711. TCP To TCP (Transmission Control Protocol) είναι ένα δικτυακό πρωτόκολλο που αντίστοιχη στην κατηγορία transport της σουίτας TCP/IP. To TCP παρέχει επικοινωνία σε ένα ενδιάμεσο επίπεδο μεταξύ μιας εφαρμογής και του IP (Internet Protocol). Δηλαδή, όταν μια εφαρμογή επιθυμεί να στείλει ένα αρκετά μεγάλο όγκο δεδομένων μέσω του internet χρησιμοποιώντας το IP, αντί να τεμαχίσουμε τα δεδομένα σε κομμάτια και επομένως να δημιουργήσουμε μια σειρά από διαφορετικά IP requests, η εφαρμογή μπορεί να εκδώσει απλώς μόνο ένα request στο TCP και να α- φήσει από εκεί και πέρα το TCP να αναλάβει από μόνο του τις λεπτομέρειες του IP. To IP λειτουργεί ανταλλάσσοντας κομμάτια πληροφοριών που ονομάζονται πακέτα, ως γνωστόν. Το πακέτο είναι μια σειρά από οκτάδες (octets, 8-bits) και αποτελείται από μια κεφαλίδα (header) που ακολουθείται από ένα σώμα (body). Η κεφαλίδα περιγράφει τον προορισμό του πακέτου και, προαιρετικά, τους routers που χρησιμοποιούνται για προώθηση μέχρι να φτάσει στον τελικό του προορισμό. Το σώμα περιέχει τα δεδομένα που μεταδίδει το IP. Εξαιτίας του συνωστισμού στο δίκτυο, της εξισορρόπησης του φόρτου κίνησης, ή άλλων απρόβλεπτων συμπεριφορών του δικτύου, τα IP πακέτα υπάρχει περίπτωση να χαθούν, να επικαλυφθούν, ή να παραδοθούν με σφάλματα. Το TCP εντοπίζει αυτά τα προβλήματα, απαιτεί επαναποστολή της χαμένης πληροφορίας, επαναπροσδιορίζει τα χαλασμένα πακέτα, και ακόμη βοηθάει στην ελαχιστοποίηση του συνωστισμού στο δίκτυο, μειώνοντας την εμφάνιση των υπόλοιπων προβλημάτων. Μόλις ο TCP δέκτης επανακατασκευάσει τη σειρά των οκτάδων που αρχικά μεταδόθηκαν, τις περνάνε πλέον στην εφαρμογή. Με αυτόν τον τρόπο, το TCP αποσπά από την εφαρμογή την περίπλοκη διαδικασία επικοινωνίας μέσω δικτύου. Το TCP χρησιμοποιείται κατά κόρον από τις πιο διάσημες εφαρμογές στο internet, όπως το World Wide Web (WWW), τα e-mails, το File Transfer Protocol (FTP), το μοίρασμα αρχείων μέσω P2P (θα το δούμε στη συνέχεια), κ.λπ. Το TCP μεγιστοποιεί την απόδοσή του όταν θέλουμε σίγουρη μετάδοση όλων των δεδομένων, παρά όταν θέλουμε εξοικονόμηση χρόνου. Εξαιτίας τούτου, το TCP πολλές φορές παρουσιάζει σχετικά μεγάλες καθυστερήσεις (στην τάξη των

2 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν δευτερολέπτων), καθώς αναμένει την επιδιόρθωση των χαλασμένων πακέτων ή την επαναποστολή των χαμένων πακέτων. Δεν ενδείκνυται για real-time (ζωντανού χρόνου) εφαρμογές, όπως το VoIP. Για τέτοιες εφαρμογές, πρωτόκολλα όπως το RTP που τρέχει σε συνεργασία με το UDP, όπως και είδαμε ανωτέρω, συνηθίζονται. Γενικά το TCP είναι ένα αξιόπιστο μέσω μετάδοσης του stream που εγγυάται ότι όλα τα bytes που θα ληφθούν θα είναι πανομοιότυπα με αυτά που εστάλησαν, και μάλιστα με τη σωστή σειρά. Μιας και η μετάδοση μέσω πακέτων όπως έχει προαναφερθεί δεν είναι απολύτως αξιόπιστη, μια τεχνική που είναι γνωστή ως positive acknowledgement (θετική αναγνωρισιμότητα) με επαναποστολή χρησιμοποιείται για να εγγυηθεί την αξιοπιστία της μεταφοράς των πακέτων. Αυτή η βασική τεχνική απαιτεί από το δέκτη (λήπτη) να αντιδρά με ένα μήνυμα αποδοχής (acknowledge message) καθώς λαμβάνει τα δεδομένα σε μορφή πακέτων (η αρχή του ACK/ΝACK που κάναμε στο μάθημα ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι ). Ο αποστολέας κρατάει ένα αρχείο όπου καταγράφει το κάθε πακέτο που στέλνει. Ο αποστολέας επίσης καταχωρεί ένα χρονικό περιθώριο από τότε που το πακέτο στάλθηκε και επαναστέλλει το πακέτο σε περίπτωση που αυτό το χρονικό περιθώριο περιέλθει, χωρίς να έχει σταλεί από τον δέκτη το αντίστοιχο μήνυμα αποδοχής πακέτου (ACK). Αυτό το χρονικό περιθώριο χρησιμοποιείται για τις περιπτώσεις όπου ένα πακέτο χάνεται κατά τη μεταφορά του ή μεταβιβάζεται κατακερματισμένο (corrupted). To TCP αποτελείται από μια σειρά από κανόνες: για το πρωτόκολλο, που χρησιμοποιείται σε συνεργασία με το IP, τα δεδομένα στέλνονται σε μια μορφή μονάδων μεταξύ των υπολογιστών. Ενώ ουσιαστικά το IP αναλαμβάνει την παράδοση των δεδομένων, το TCP ελέγχει τις μεμονωμένες μονάδες που απαρτίζουν τα δεδομένα προς αποστολή, τα οποία καλούνται και segments (τμήματα), ώστε ένα μήνυμα να διασπάται για την αποδοτικότερη διάδοσή του μέσω του δικτύου. Για παράδειγμα, όταν ένα HTML αρχείο αποστέλλεται από έναν web-server, το TCP του server τεμαχίζει τη σειρά των οκτάδων (octets) του αρχείου σε τμήματα (segments) και τα προωθεί το κάθε ένα ξεχωριστά προς το IP. Το επίπεδο του internet (Internet Layer) ενθυλακώνει κάθε TCP τεμάχιο σε ένα IP πακέτο, προσθέτοντας μια κεφαλίδα (header) που περιλαμβάνει μεταξύ άλλων και τη διεύθυνση IP του προορισμού. Παρόλο που κάθε πακέτο έχει την ίδια IP διεύθυνση προορισμού, μπορούν να διανεμηθούν (routed) μέσω διαφορετικών μονοπατιών (paths) εντός του δικτύου. Όταν το πρόγραμμα του δέκτη (client) λαμβάνει αυτά τα πακέτα, το TCP από τη μεριά του δέκτη πλέον αναλαμβάνει την επανακατασκευή της αρχικής πληροφορίας εκτελώντας την αντίστροφη διαδικασία και διασφαλίζει ότι όλα τα πακέτα έχουν ληφθεί, χωρίς σφάλματα και στη σωστή σειρά, καθώς τα στέλνει στην εφαρμογή που τα ζήτησε. Unicast To unicast (ή και broadcast) είναι ένα δικτυακό πρωτόκολλο που αναλαμβάνει την αποστολή των ίδιων αρχείων σε όλους τους πιθανούς προορισμούς. Αξίζει να σημειωθεί ότι συγκεκριμένες διαδικτυακές εφαρμογές που χρησιμοποιούνται μαζικά

21 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν στο internet είναι πολύ δαπανηρές σε περίπτωση που χρειαστεί να εφαρμόσουν το unicast, μιας και κάθε σύνδεση ενός πελάτη στο δίκτυο καταναλώνει υπολογιστικούς πόρους στη μεριά του server (αποστολέα), καθώς επίσης και απαιτείται τεράστιο bandwidth για την αποστολή ταυτόχρονα υπέρογκου όγκου δεδομένων προς όλους τους πελάτες (clients). Παράδειγμα τέτοιων απαιτητικών εφαρμογών αποτελούν οι ραδιοφωνικοί σταθμοί μέσω internet. Multicast To multicast είναι ένα δικτυακό πρωτόκολλο για την ταυτόχρονη αποστολή μηνυμάτων ή πληροφοριών σε ένα group υπολογιστών, με την χρησιμοποίηση μόνο μιας αποστολής όσον αφορά την πηγή. Τα αντίγραφα δημιουργούνται αυτόματα σε άλλα δικτυακά στοιχεία, όπως routers, και μόνο όταν η τοπολογία του δικτύου το απαιτεί. Το multicast χρησιμοποιείται κατά κόρον ως IP multicast, που συνήθως συμπεριλαμβάνεται σε IP εφαρμογές που αφορούν το streaming ή τη διαδικτυακή τηλεόραση (internet TV). Στο IP multicast η υλοποίηση του multicast επιτελείται στο επίπεδο του IP, όπου οι routers δημιουργούν μια βέλτιστη κατανομή μονοπατιών (paths) για τα datagrams που πρόκειται να μεταδοθούν προς μια multicast διεύθυνση. Στο επίπεδο του Data Link Layer, το multicast περιγράφει ένα-σε-πολλούς διανομή όπως το ethernet multicasting addressing, asynchronous transfer mode (ATM), point-to-multipoint virtual circuits (P2MP), κ.λπ. IP multicast To IP multicast είναι ένα δικτυακό πρωτόκολλο αδελφικό με το multicast. Συγκεκριμένα, είναι μια τεχνική για ένα-σε-πολλούς επικοινωνία μέσω μιας IP υποδομής σε ένα δίκτυο. Μπορεί να επεκταθεί σε ένα μεγαλύτερο αριθμό δεκτών χωρίς να απαιτεί από πριν τη γνώση του ποιου ή πόσοι δέκτες υπάρχουν. To multicast χρησιμοποιεί την υποδομή του δικτύου αποδοτικά απαιτώντας από την πηγή να στέλνει κάθε πακέτο μόνο μια φορά, ακόμη κι αν χρειάζεται να μεταδοθεί σε μεγάλο αριθμό δεκτών. Οι κόμβοι στο δίκτυο αναλαμβάνουν την αντιγραφή του πακέτου, ώστε να φτάσει τελικά στους πολλαπλούς δέκτες, μόνο όταν αυτό κρίνεται απαραίτητο. Το πιο κοινό transport layer πρωτόκολλο που χρησιμοποιεί multicast διευθυνσιοδότηση είναι το UDP (User Datagram Protocol). Από την φύση του, το UDP δεν είναι αξιόπιστο. Τα μηνύματα μπορεί να χαθούν ή να μεταδοθούν με σφάλματα. Αξιόπιστα πρωτόκολλα multicast όπως το Pragmatic General Multicast (PGM) έχουν αναπτυχθεί ώστε να εντοπίζουν τα χαμένα πακέτα αλλά και να απαιτούν την επαναποστολή τους. To IP multicast είναι ευρέως διαδεδομένο σε επιχειρήσεις, στα χρηματιστήρια, και σε εταιρείες που ασχολούνται με streaming, όπως η YouTube, κ.λπ. Επίσης, χρησιμοποιείται ευρέως και για διαδραστικές εφαρμογές στο IPTV.

22 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Peer-to-Peer To Peer-to-Peer (P2P) είναι ένα δικτυακό πρωτόκολλο που αναφέρεται σε ένα δίκτυο όπου κάθε υπολογιστής που ανήκει στο δίκτυο μπορεί να λειτουργήσει ως δέκτης (client) αλλά και ως αποστολέας (server) για τους υπόλοιπους υπολογιστές στο δίκτυο, επιτρέποντας κοινή χρήση σε αρχεία αλλά και περιφερειακές συσκευές χωρίς την ανάγκη για έναν κεντρικό server. Tα P2P δίκτυα μπορούν να υλοποιηθούν σε ένα σπίτι, μια επιχείρηση, ή και σε ολόκληρο το διαδίκτυο. Κάθε τύπος δικτύου α- παιτεί όλους τους υπολογιστές στο δίκτυο να χρησιμοποιούν το ίδιο ή έστω ένα παραπλήσιο πρόγραμμα ώστε να μπορούν να συνδεθούν το ένα με το άλλο και τελικά να υπάρχει αμοιβαία πρόσβαση σε αρχεία και άλλα χαρακτηριστικά που μπορούν να βρεθούν στους υπολογιστές. Τα P2P δίκτυα μπορούν να χρησιμοποιηθούν για το μοίρασμα αρχείων ήχου, βίντεο, ή και γενικότερα δεδομένων σε οποιαδήποτε ψηφιακή μορφή. To P2P είναι μια αρχιτεκτονική που διαμοιράζει τις λειτουργίες μεταξύ των υπολογιστών (peers) που συμμετέχουν στη διαδικασία. Οι peers έχουν τα ίδια δικαιώματα στην εφαρμογή. Κάθε υπολογιστής στο δίκτυο αναφέρεται και ως κόμβος (node). Ο ιδιοκτήτης κάθε υπολογιστή σε ένα P2P δίκτυο θα πρέπει να εγκαταλείψει ένα μέρος της κυριαρχίας του επί του υπολογιστή του όπως επεξεργαστική ισχύ, αποθηκευτικό χώρο, ή και μέρος της ευρυζωνικότητάς του. Αυτό, για να είναι άμεσα διαθέσιμος στους υπόλοιπους peers, χωρίς τον ενδιάμεσο έλεγχο από servers. Με βάση αυτό το μοντέλο, οι peers είναι ταυτόχρονα και προμηθευτές και καταναλωτές των πόρων που διαμοιράζονται, σε αντίθεση με το παραδοσιακό μοντέλο client-server όπου μόνο οι servers είναι οι προμηθευτές και οι clients είναι οι καταναλωτές. H πρώτη P2P εφαρμογή ήταν αυτής της κοινής χρήσης αρχείων Napster, που δημιουργήθηκε το 1999. Το Napster έχει εμπνεύσει νέες δομές και φιλοσοφίες σε πολλούς τομείς της ανθρώπινης διαδραστικότητας. Το διαδικτυακό P2P δεν περιορίζεται μόνο στην τεχνολογία. Καλύπτει επίσης ειδικές κοινωνικές διαδικασίες μέσω μιας P2P δυναμικής. Βάσει αυτού, πολλές κοινωνικές P2P διεργασίες λαμβάνουν χώρα πλέον στις σύγχρονες δυτικές κοινωνίες.

23 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Εξοπλισμός Χαρακτηριστικά σύνδεσης Κάτωθι, παραθέτουμε τα χαρακτηριστικά της σύνδεσής μας στο διαδίκτυο. Είναι απαραίτητο να αναφερθούν, καθώς μετέπειτα θα ακολουθήσουν αποτελέσματα μετρήσεων σε σχέση με τον απομακρυσμένο διακομιστή της Ιθάκης. Όπως είναι απολύτως φυσιολογικό, τα χαρακτηριστικά της σύνδεσής μας, όπως η ταχύτητά της, ο θόρυβος που υπεισέρχεται κατά τη μετάδοση των πληροφοριών, η εξασθένιση του σήματος με την απόσταση, είναι παράγοντες που θα επηρεάσουν τα αποτελέσματα. Η ονομαστική ταχύτητά μας στο διαδίκτυο είναι έως και 24mbps download, 1mbps upload. Παρακάτω, ακολουθούν οι ακριβείς μετρήσεις συγχρονισμού της γραμμής, τόσο για το download, όσο και για το upload. Όσον αφορά το router, πρόκειται για το μοντέλο της ZyXEL, P6-HW series. Σχήμα 5 Χαρακτηριστικά DSL γραμμής Παρατηρούμε ότι η ταχύτητα της γραμμής μας είναι σχεδόν 14mbps στο download (κατέβασμα), ενώ το upload (ανέβασμα) είναι περίπου στην τιμή της ονομαστικής του ταχύτητας, δηλαδή 1mbps. Πέρα από την ταχύτητα της σύνδεσής μας, παραθέτουμε κάτωθι τα αναλυτικά στοιχεία για το θόρυβο που εισέρχεται στη γραμμή, την εξασθένιση του σήματος. Αυτά έγιναν γνωστά ύστερα από ενδελεχή έλεγχο στα log files του router μας. Σχήμα 6 Στοιχεία ποιότητας γραμμής

24 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Σχήμα 7 Στοιχεία ποιότητας γραμμής Όπως παρατηρούμε και αναλυτικά στις δύο παραπάνω εικόνες, το noise margin downstream / upstream (SNR) είναι ο θόρυβος που εισέρχεται στη γραμμή. Αντίστοιχα, το attenuation (loop) upstream / downstream είναι η εξασθένιση του σήματος κατά μήκος της γραμμής. Γενικά, για τις γραμμές που τρέχουν σε ταχύτητες έως και 24mbps, οι τιμές είναι άνω του μέσου επιπέδου, άρα και δε θα επηρεαστούν οι μετρήσεις μας από εξωγενείς παράγοντες. Port Forwarding Αφού έχουμε αναλύσει τα χαρακτηριστικά της σύνδεσής μας, τώρα θα αναφερθούμε στην τροποποίηση του NAT 1 (Network Address Translation) του router μας. Ουσιαστικά, το NAT είναι μια λειτουργία που μας παρέχει το router έτσι ώστε τα πακέτα που λαμβάνουμε από τον έξω κόσμο με τη δυναμική (συνήθως) IP μας, να τα μεταφέρουμε στη συσκευή του εσωτερικού δικτύου που εμείς επιθυμούμε. Επί παραδείγματι, αν έχουμε πέντε συσκευές συνδεδεμένες στο router μας, όπως δυο υπολογιστές, εκτυπωτή, scanner, κινητό, το κάθε ένα από αυτά έχει μια εσωτερική διεύθυνση. Τροποποιώντας κατάλληλα το NAT, λέμε ουσιαστικά στο router πού να στείλει τι, αγνοώντας ταυτοχρόνως και το built in firewall του, καθώς κάνουμε port forwarding από έξω προς τα μέσα σε ports που μέχρι πρότινος ήταν κλειστές. Αξίζει σε αυτό το σημείο να σημειωθεί πως στο συγκεκριμένο router, το port forwarding δεν χρειάζεται. Είναι από τα λίγα συμβατικά routers που χρησιμοποιούν την τεχνολογία που χρησιμοποιεί κυρίως η CISCO και ονομάζεται stateful firewalling. Υπό αυτή τη λογική, το router κρατάει αναλυτικό log file των συνδέσεων που πραγματοποιούνται σε αυτό και του τι πακέτα αποστέλλονται και πού. Οι πόρτες by default, εκτός ορισμένων, είναι προσβάσιμες. Αν επιθυμεί ο διαχειριστής, μπορεί να γράψει δικό του script που να αποκλείει ή να ανοίγει συγκεκριμένες ports. Ουσιαστικά, πρόκειται για το αντίστοιχο port forwarding, αλλά σε αρκετά προχωρημένη και βελτιστοποιημένη εκδοχή του. Για τις απαιτήσεις της εργασίας και για καθαρά εκπαιδευτικούς σκοπούς, έχουμε γυρίσει τη λειτουργία του router σε κατάσταση stateless firewalling, όπου πλέον η λειτουργία του θα είναι όπως όλα τα συμβατικά και 1 Περισσότερες πληροφορίες για το NAT θα βρείτε στο άρθρο της Wikipedia, εδώ.

25 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν απαιτείται port forwarding. Παρακάτω, παρουσιάζεται στην εικόνα μια αποτύπωση του menu του router, μέσω του οποίου επιτυγχάνεται το port forwarding. Σχήμα 8 Διαχείριση NAT στο router Παρατηρούμε εδώ, πως το port forwarding για την εφαρμογή Computer Networks 2, ξεκινάει από την πόρτα 38 και φτάνει έως και την 3832. Αυτές είναι ουσιαστικά οι πόρτες στις οποίες κάνει listen o διακομιστής Ιθάκη και τις οποίες ο- φείλουμε εμείς να ανοίξουμε για να τον ακούσουμε. Ουσιαστικά από το παρακάτω προκύπτει ότι ο διακομιστής μπορεί να χτίσει μέχρι και 32 virtual threads για σύνδεση των φοιτητών στο εικονικό εργαστήριο. Πρέπει να σημειωθεί ότι σε κάθε νέο session με την Ιθάκη, κάθε φορά επιλέγεται κάποιο από τα ports που αναφέρθηκαν προηγουμένως ως server listening port. Τουτέστιν, ένα μεταξύ των 38 και 3832. Το ερώτημα όμως που στο οποίο φυσιολογικά θα οδηγηθεί ο αναγνώστης είναι: πώς ξέρουμε ότι η εσωτερική IP του συστήματος μας είναι 192.168.1.34, μιας και σε αυτή βλέπω ότι γίνεται το port forwarding; Η απάντηση σε τούτο το ερώτημα είναι απλή. Ανάλογα με το λειτουργικό σύστημα που έχουμε στη διάθεσή μας, μπορούμε να δούμε με τα αντίστοιχα εργαλεία που μας παρέχει το εκάστοτε λειτουργικό σε ποια εσωτερική IP αντιστοιχίζεται το μηχάνημά μας. Για την περίπτωσή μας, που χρησιμοποιούμε Windows 7, 64 bit, SP 1, αρκεί να ανοίξουμε ένα command prompt, και να πληκτρολογήσουμε ipconfig. Με την πληκτρολόγηση της συγκεκριμένης εντολής, παίρνουμε τα παρακάτω:

26 Δ ί κ τ υ α Υ π ο λ ο γ ι σ τ ώ ν Σχήμα 9 Εύρεση εσωτερικής IP μέσω command prompt Παρατηρούμε δηλαδή, ότι η εσωτερική IP σε περίπτωση που το notebook χρησιμοποιεί την ασύρματη κάρτα δικτύου (Wireless LAN adapter), είναι 192.168.1.34. Σε περίπτωση που χρησιμοποιείται η κάρτα δικτύου Ethernet (Ethernet adapter), η εσωτερική IP είναι 192.168.1.33. Καθότι εμείς είμαστε συνδεμένοι ασύρματα στο router, επιλέγουμε να κάνουμε port forwarding στη διεύθυνση που αντιστοιχεί στην ασύρματη κάρτα δικτύου. Πλέον, εφόσον έχουμε ολοκληρώσει τα διαδικαστικά περί του εξοπλισμού αλλά και παραμετροποίησής του, μπορούμε να προχωρήσουμε στο κυρίως μέρος και να αναλύσουμε την εφαρμογή αλλά και το τι ακριβώς πραγματοποιούν οι μέθοδοι που αυτή διαθέτει. Απενεργοποίηση Firewall Πέρα από τη διαδικασία του port forwarding που εξηγήθηκε αναλυτικά παραπάνω, θα πρέπει να απενεργοποιήσουμε και το firewall που διαθέτει το router μας. Το firewall ουσιαστικά λειτουργεί σα μια επιπρόσθετη ασφάλεια στο σύστημά μας. Προστατεύει το μέσο χρήστη από διάφορες κακόβουλες επιθέσεις. Ανάμεσα σε άλλα, από την υποκλοπή πληροφοριών από το σύστημα, την απομακρυσμένη πρόσβαση, κ.λπ. Κάτωθι, παρουσιάζεται η διαδικασία απενεργοποίησης μέσω του menu του router: Σχήμα 1 Απενεργοποίηση Firewall