Προγραµµατισµός ικτύων Ε-01

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

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

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

2η Προγραµµατιστική Εργασία

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

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

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

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

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

6.1 Επεκτείνοντας το δίκτυο 6.2 Επιλεγόμενες τηλεφωνικές γραμμές modems Πλεονεκτήματα Μειονεκτήματα Βασική χρήση

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

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

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

ιαδίκτυα & Ενδοδίκτυα Η/Υ

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

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

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

7.9 ροµολόγηση. Ερωτήσεις

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

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

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

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

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας

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

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας

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

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

Φύλλο Εργασίας 1 ου Κεφαλαίου

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

Πρωτόκολλο TCP Διάλεξη Ι

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

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

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

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

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

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

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

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

Προγραµµατισµός ικτύων Ε-01

SOS Ερωτήσεις Δίκτυα Υπολογιστών ΙΙ

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

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

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

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

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα.

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

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

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

ΠΡΩΤΟΚΟΛΛΟ TCP/IP ΜΑΚΡΟΠΟΥΛΟΣ ΝΙΚΟΛΑΟΣ

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

Κατανεµηµένασυστήµατα αρχείων

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

Διάλεξη 1: Εισαγωγή στον Κατανεμημένο Υπολογισμό. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

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

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

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

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

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

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

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

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

Σκοπιµότητα των firewalls

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

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

1.1 Επαναλήπτες (repeaters ή regenerators)

Προσοµοίωση λειτουργίας επιπέδων OSI

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

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

Δίκτυα Η/Υ ςτην Επιχείρηςη

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

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

3.3.2 Το πρωτόκολλο δυναμικής διευθέτησης υπολογιστή DHCP

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

Plugwise Business ιαχείριση και Εξοικονόµηση ενέργειας στο Εργασιακό περιβάλλον.

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

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

Ενεργοποίηση του πρωτοκόλλου IPv6

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

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

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

ΔΙΚΤΥΑ Η/Υ Ι. Εισαγωγή στα Δίκτυα Επικοινωνιών. Διδάσκων: Γεώργιος Ν. Μπάρδης

Outlook Express-User Instructions.doc 1

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

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

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

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

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

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

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

Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP);

Network Address Translation (NAT)

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

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

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

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

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

Νέες Επικοινωνιακές Τεχνολογίες

Κεφάλαιο > Ε Π Α Ν Α Λ Η Ψ Η Επικοινωνιακό Υποδίκτυο / TCP / UDP. Σελ

Transcript:

Προγραµµατισµός ικτύων Ε-01 8η ιάλεξη ιδάσκων: Νίκος Ντάρµος <ntarmos@cs.uoi.gr> [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων

Στο σηµερινό µάθηµα... ιαχείριση λαθών. Πύλες και Σήραγγες.

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών

Ανεξαρτήτως πρωτοκόλλου Ανεξαρτήτως πρωτοκόλλου

ιαχείριση λαθών Ανεξαρτήτως πρωτοκόλλου Το ιαδίκτυο είναι κατά ϐάση µία υποδοµή «best effort». Συνδέσεις µπορεί να διακοπούν. Κόµβοι µπορεί να καταρρεύσουν Πελάτες/εξυπηρετητές µπορεί να αποχωρήσουν χωρίς προειδοποίηση. Η διαδροµή ανάµεσα σε δύο οποιουσδήποτε αποµακρυσµένους κόµβους µπορεί να αλλάξει ανά πάσα στιγµή. Τα χαρακτηριστικά τις διαδροµής (εύρος Ϲώνης, ϕόρτος, κτλ.) αλλάζουν ανά πάσα στιγµή. Υπάρχουν πάντα και εναλλακτικές διαδροµές... Το πρωτόκολλο UDP προσφέρει κι αυτό best effort υπηρεσίες επικοινωνίας. Τα πρωτόκολλα TCP και SCTP προσφέρουν «αξιόπιστη» επικοινωνία, αλλά και πάλι υπάρχει η πιθανότητα σφαλµάτων. Σφάλµατα σε επίπεδο δικτύου αναφέρονται από το πρωτόκολλο ICMP.

ιαχείριση λαθών Ανεξαρτήτως πρωτοκόλλου Σε προγραµµατιστικό επίπεδο αντιλαµβανόµαστε τα σφάλµατα από: Την τιµή επιστροφής των συναρτήσεων που χρησιµοποιούµε. Επιστρέφεται -1 από τις συναρτήσεις και η καθολική µεταβλητή errno παρέχει λεπτοµέρειες για το σφάλµα. Σήµατα που παραδίδονται στην διεργασία µας. SIGPIPE: προσπάθεια Ε/Ε σε κλειστό socket descriptor.

ιαχείριση λαθών Ανεξαρτήτως πρωτοκόλλου Λάθη σε τοπικό επίπεδο EBADF/ENOTSOCK: προσπάθεια Ε/Ε σε εσφαλµένο descriptor (ανύπαρκτο ή που δεν ανήκει σε socket). EINTR: η κλήση διακόπηκε (συνήθως λόγω παράδοσης κάποιου σήµατος στη διεργασία). ENOBUFS: δεν υπάρχει χώρος στους buffers του πυρήνα για τα δεδοµένα. EPIPE: προσπάθεια Ε/Ε σε κλειστό socket descriptor. EFAULT/EINVAL: λάθος δείκτης σε κάποιο από τα ορίσµατα των συναρτήσεων. EMFILE/ENFILE: αδυναµία δηµιουργίας νέου socket λόγω πλήρους πίνακα descriptors διεργασίας/συστήµατος. EACCES/EPERM: αδυναµία ολοκλήρωσης λειτουργίας λόγω ανεπαρκών δικαιωµάτων χρήστη.

ιαχείριση λαθών Ανεξαρτήτως πρωτοκόλλου Λάθη ανεξάρτητα πρωτοκόλλου EHOSTUNREACH: αδυναµία πρόσβασης στον αποµακρυσµένο κόµβο. ENETUNREACH: αδυναµία πρόσβασης στο αποµακρυσµένο δίκτυο. EHOSTDOWN: ο αποµακρυσµένος κόµβος είναι κλειστός. ENETDOWN: το αποµακρυσµένο δίκτυο είναι κλειστό. EAFNOTSUPPORT: δεν υποστηρίζεται η Ϲητούµενη οικογένεια διευθύνσεων (IPv4, IPv6 κτλ.) EAGAIN: το socket είναι σε κατάσταση non-blocking Ε/Ε και η κλήση ϑα µπλόκαρε ή ο πυρήνας δε µπορούσε να ολοκληρώσει την λειτουργία την παρούσα στιγµή. EADDRINUSE: η διεύθυνση χρησιµοποιείται ήδη. EADDRNOTAVAIL: η Ϲητούµενη διεύθυνση δεν είναι διαθέσιµη στον τοπικό κόµβο.

ιαχείριση λαθών Ανεξαρτήτως πρωτοκόλλου Ανταλλαγή δεδοµένων Συνήθως ο πυρήνας του λειτουργικού συστήµατος διατηρεί buffers α για τα εισερχόµενα και εξερχόµενα δεδοµένα για κάθε socket. Οι κλήσεις αποστολής δεδοµένων γράφουν δεδοµένα στους buffers εξόδου. Οι κλήσεις λήψης δεδοµένων διαβάζουν δεδοµένα από τους buffers εισόδου. Ο πυρήνας µπορεί να µην στείλει όλα τα δεδοµένα από τους buffer εξόδου. Επειδή είναι ενεργοποιηµένος ο αλγόριθµος Nagle. Επειδή υπάρχει περιορισµός υλικού στην κάρτα δικτύου. Επειδή έπρεπε να διακόψει την αποστολή για να κάνει κάποια άλλη λειτουργία. Αντίστοιχα, µπορεί να µην επιστρέψει όλα τα δεδοµένα κατά την ανάγνωσή τους. Επειδή δεν έχουν ϕτάσει ακόµα όλα τα Ϲητούµενα δεδοµένα. Επειδή ϐρίσκεται σε ϕάση ανασύνθεσης των εισερχόµενων πακέτων. Πρέπει να ελέγχουµε την τιµή επιστροφής των κλήσεων Ε/Ε και να τις επαναλαµβάνουµε αν χρειαστεί! α Υπενθύµιση: ϱυθµίζουµε το µέγεθός τους µε τις επιλογές SO_SNDBUF και SO_RCVBUF.

ιαχείριση λαθών Ανεξαρτήτως πρωτοκόλλου Ανταλλαγή δεδοµένων ιαφορετικά συστήµατα έχουν διαφορετική αναπαράσταση δεδοµένων. ιαφορετικά µεγέθη ϐασικών τύπων δεδοµένων. ιαφορετική σειρά αναπαράστασης (big/little-endian). ιαφορετικές απαιτήσεις «ευθυγράµµισης». Πρέπει να φροντίζουµε τα δεδοµένα να είναι µεταφέρσιµα! Με χρήση συναρτήσεων µετατροπής (htons(3), ntohs(3),...) Με µετατροπή τους προς/από συµβολοσειρές. Με χρήση κάποιας «εξωτερικής αναπαράστασης», όπως το πρότυπο XDR α. Πολλές φορές ενδέχεται να µεταφέρουµε πολλαπλά αντικείµενα (αρχεία, δοµές δεδοµένων, κτλ.) από την ίδια σύνδεση. Πρέπει να φροντίζουµε να διαχωρίζουµε τα δεδοµένα! Μεταφορά τµηµάτων σταθερού µεγέθους. «Μαγικές ακολουθίες» δεδοµένων για οριοθέτηση. Πρωτόκολλα που προδιαγράφουν ή καθορίζουν το µέγεθος των δεδοµένων. α xdr(3), RFCs 1832 & 4506

ιαχείριση λαθών Ανεξαρτήτως πρωτοκόλλου Εργαλεία αποσφαλµάτωσης Μπορούµε να εξετάσουµε ϐήµα/βήµα και να αποσφαλµατώσουµε τον κώδικά µας µε χρήση του gdb(1) (Gnu Debugger). Μπορούµε να εξετάσουµε τις κλήσεις συστήµατος που κάνει το πρόγραµµά µας µε τα εργαλεία truss(1)/ktrace(1)/strace(1). Αν έχουµε πρόσβαση root, µπορούµε να ελέγξουµε τα δεδοµένα που µεταφέρονται στο δίκτυο µε το εργαλείο tcpdump(1). Μπορούµε να «µιλάµε» απευθείας µε τις εφαρµογές µας µε χρήση του προγράµµατος telnet(1). Μπορούµε να δηµιουργήσουµε εύκολα δοκιµαστικούς πελάτες ή εξυπηρετητές µε χρήση του εργαλείου nc(1) (netcat). Μπορούµε να εξετάσουµε όλα τα sockets του συστήµατος µε τις εντολές netstat(1) και lsof(1).

Ανεξαρτήτως πρωτοκόλλου

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Γενικά Κυριότερα προβλήµατα: Απώλεια πακέτων. Καθυστέρηση στην παράδοση. Παράδοση διπλότυπων. Ελλειψη ελέγχου ϱοής. Η υλοποίηση του πρωτοκόλλου στην διεπαφή των BSD sockets παρέχει έλεγχο λαθών µόνο σε τοπικό επίπεδο. Αν απαιτείται αξιοπιστία, η εφαρµογή πρέπει να υλοποιεί το δικό της µηχανισµό ανίχνευσης σφαλµάτων και ανάνηψης. Συνήθως απαιτείται να έχουµε καλέσει connect(2) για το UDP socket για να µπορούµε να λάβουµε τα µηνύµατα λάθους ICMP.

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Απώλεια πακέτων Σε επικοινωνία πάνω από δίκτυα ευρείας περιοχής ή υπερφορτωµένα τοπικά δίκτυα, υπάρχει πιθανότητα κάποιο πακέτο να µην παραδοθεί ποτέ. Τι γίνεται αν αυτό είναι το µοναδικό πακέτο αίτησης/απάντησης; Τι γίνεται αν είναι το τελευταίο και ο παραλήπτης περιµένει κάποιο προκαθορισµένο αριθµό πακέτων/«µαγική» αλληλουχία bytes; Η εφαρµογή πρέπει να θέτει χρονικούς περιορισµούς στις κλήσεις Ε/Ε. Πώς ξέρουµε αν κάποιο εξερχόµενο πακέτο χάθηκε ή απλά έχει καθυστερήσει; Πώς ξέρουµε αν κάποιο εισερχόµενο πακέτο χάθηκε, έχει καθυστερήσει ή αν δεν στάλθηκε ποτέ (κατάρρευση άλλου άκρου επικοινωνίας);

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Αποστολή δεδοµένων Ακόµα κι αν οι send(2)/sendto(2)/sendmsg(2) επιτύχουν, δεν υπάρχει εγγύηση παράδοσης των δεδοµένων. Επιπλέον λάθη που µπορεί να συµβούν: EACCESS: προσπάθεια αποστολής σε διεύθυνση broadcast χωρίς να έχει ενεργοποιηθεί η επιλογή SO_BROADCAST. EMSGSIZE: προσπάθεια αποστολής µηνύµατος µεγαλύτερου µεγέθους από το υποστηριζόµενο. ECONNREFUSED: το τελευταίο µήνυµα πήρε ICMP απάντηση «destination unreachable» οπότε το αποµακρυσµένο άκρο δεν δέχεται συνδέσεις/δεδοµένα.

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Λήψη δεδοµένων Καθώς το UDP δεν προβλέπει κάποιο µηχανισµό ελέγχου ϱοής, υπάρχει πιθανότητα υπερχείλισης των buffers στον παραλήπτη. Και οι buffers του αποστολέα µπορεί να υπερχειλίσουν αλλά τότε ϑα επιστρέψει σφάλµα η send(2)/sendto(2)/sendmsg(2). Μοναδική λύση: µεγαλύτεροι buffers... Με τις επιλογές SO_SNDBUF/SO_RCVBUF επιπέδου SOL_SOCKET. Αν δεχόµαστε δεδοµένα από πολλούς αποστολείς, πρέπει επίσης να ελέγχουµε κάθε µήνυµα για τον αποστολέα του!

Ανεξαρτήτως πρωτοκόλλου

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Γενικά Κυριότερα προβλήµατα: Αδυναµία σύνδεσης. Τερµατισµός/κατάρρευση σύνδεσης κατά την επικοινωνία. Ελεγχος δεδοµένων. Το πρωτόκολλο εγγυάται την αξιόπιστη λειτουργία ακόµα και πάνω από αναξιόπιστα δίκτυα. Αυτό δε σηµαίνει ότι πάντα θα εκτελούνται οι ζητούµενες λειτουργίες! Σηµαίνει όµως ότι το σύστηµα θα µας ειδοποιεί σε περιπτώσεις σφαλµάτων!

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Αδυναµία σύνδεσης Κυριότερα προβλήµατα: EADDRINUSE: η διεύθυνση χρησιµοποιείται ήδη. ENOTCONN: προσπάθεια Ε/Ε σε συνδεσµοστραφές socket για το οποίο δεν έχει κληθεί ακόµα η connect(2). EISCONN: προσπάθεια σύνδεσης ήδη συνδεδεµένου socket. ETIMEDOUT: παρήλθε το ανώτατο χρονικό όριο πραγµατοποίησης σύνδεσης. ECONNREFUSED: αδυναµία σύνδεσης το αποµακρυσµένο άκρο δεν δέχεται συνδέσεις. EINPROGRESS: το socket είναι σε κατάσταση non-blocking και η σύνδεση δε µπορεί να ολοκληρωθεί άµεσα. EINTR: η κλήση σύνδεσης διακόπηκε από κάποιο σήµα. Η σύνδεση ϑα ολοκληρωθεί στο παρασκήνιο. EALREADY: κάποια προηγούµενη προσπάθεια σύνδεσης δεν έχει ολοκληρωθεί ακόµα. EAGAIN: επιλέχθηκε αυτόµατη ανάθεση αριθµού τοπικής ϑύρας και δεν υπάρχει κάποια διαθέσιµη ϑύρα στον τοπικό κόµβο. EACCES: προσπάθεια σύνδεσης σε διεύθυνση broadcast σε socket το οποίο δεν ϐρίσκεται στην κατάλληλη κατάσταση λειτουργίας.

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Αδυναµία αποδοχής σύνδεσης Κυριότερα προβλήµατα: EWOULDBLOCK: το socket είναι σε κατάσταση non-blocking Ε/Ε και δεν υπάρχουν αιτήσεις σύνδεσης προς αποδοχή. EINVAL: κλήση της accept(2) σε συνδεσµοστραφές socket για το οποίο δεν έχει κληθεί ακόµα η listen(2). ECONNABORTED: λήφθηκε νέα σύνδεση αλλά τερµατίστηκε πριν αφαιρεθεί από την ουρά αναµονής (πριν κληθεί η accept(2).

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Ανταλλαγή δεδοµένων Κάποιο από τα δύο άκρα επικοινωνίας ενδέχεται να αποχωρήσει ή να καταρρεύσει κατά την διάρκεια ανταλλαγής δεδοµένων. Στην περίπτωση κατάρρευσης ή τερµατισµού της αποµακρυσµένης διεργασίας, ο αποµακρυσµένος πυρήνας ϑα εκκινήσει τη διαδικασία αποσύνδεσης. Θα στείλει µήνυµα FIN. Ο τοπικός πυρήνας ϑα απαντήσει µε µήνυµα ACK. Τα δύο άκρα ϑα περάσουν σε κατάσταση FIN_WAIT_2 και CLOSE_WAIT αντίστοιχα. Το ίδιο όµως δεν γίνεται και στο shutdown(2); Αν γίνει προσπάθεια επικοινωνίας σε αποσυνδεδεµένο socket οι κλήσεις Ε/Ε ϑα αποτυγχάνουν. Αρχικά επιστρέφουν ECONNRESET: το αποµακρυσµένο άκρο της επικοινωνίας έκλεισε. Αν το λάθος αγνοηθεί, µετέπειτα κλήσεις ϑα επιστρέψουν EPIPE ή σήµα SIGPIPE.

Ανεξαρτήτως πρωτοκόλλου ιαχείριση λαθών: Ανταλλαγή δεδοµένων Στη περίπτωση κατάρρευσης του αποµακρυσµένου κόµβου, δεν αποστέλλεται κάποιο µήνυµα. Οι κλήσεις Ε/Ε του τοπικού κόµβου ϑα αποτυγχάνουν µε λάθη ETIMEDOUT, EHOSTUNREACH ή ENETUNREACH. Μπορούµε να ϑέσουµε χρονικά όρια για να αποφύγουµε µεγάλες καθυστερήσεις. Μπορούµε να ενεργοποιήσουµε την επιλογή SO_KEEPALIVE για να ανιχνεύσει το επίπεδο των sockets την κατάρρευση της σύνδεσης. Για να αποφευχθούν τέτοια προβλήµατα, καλό είναι οι πελάτες/εξυπηρετητές µας να «τερµατίζουν µε χάρη» (graceful termination). Για παράδειγµα, κατά το κλείσιµο/επανεκκίνηση του τοπικού κόµβου. Συνήθως αυτό γίνεται µε χειριστές για τα σήµατα SIGTERM (στέλνεται κατά το κλείσιµο του υπολογιστή) και SIGINT (στέλνεται όταν πατήσουµε Ctrl+c).

Σήραγγες Πύλες Σύγκριση Πύλες και σήραγγες

Σήραγγες Πύλες Σύγκριση Σήραγγες

Σήραγγες επιπέδου µεταφοράς Σήραγγες Πύλες Σύγκριση Εκτός από τη γνωστή µας οικογένεια πρωτοκόλλων TCP/IP, υπάρχουν/έχουν υπάρξει και άλλες. WAP. Appletalk. DECNET. IBM SNA. Novell IPX. X.25. Πως µπορούµε να διασυνδέσουµε τέτοια διαφορετικά δίκτυα; Παράδειγµα: έστω ένα µικρό δίκτυο στο οποίο συνυπάρχουν: Κάποιοι υπολογιστές Macintosh που χρησιµοποιούν Appletalk για να επικοινωνήσουν. Κάποιοι προσωπικοί υπολογιστές (PCs) που χρησιµοποιούν TCP/IP. Σύνδεση ISDN µε τον πάροχο υπηρεσιών διαδικτύου η οποία χρησιµοποιεί X.25.

Σήραγγες επιπέδου µεταφοράς Σήραγγες Πύλες Σύγκριση Την «µετάφραση» αναλαµβάνουν ειδικά ϱυθµισµένοι δροµολογητές, οι οποίοι δηµιουργούν «σήραγγες». Ουσιαστικά, χειριζόµαστε τα πακέτα του επιπέδου µεταφοράς ως πακέτα υψηλότερων επιπέδου. Κάθε επίπεδο στη στοίβα OSI προσθέτει τη δική του κεφαλίδα, «ενθυλακώνοντας» έτσι τα πακέτα υψηλότερων επιπέδων. Στις σήραγγες χρησιµοποιούµε πακέτα του τελικού πρωτοκόλλου επιπέδου µεταφοράς για να «ενθυλακώσουµε» πακέτα του αρχικού πρωτοκόλλου επιπέδου µεταφοράς. Ο δροµολογητής παραλήπτης πρέπει να είναι κι αυτός κατάλληλα ϱυθµισµένος για να ανασυνθέσει τα αρχικά πακέτα.

Σήραγγες επιπέδου εφαρµογών Σήραγγες Πύλες Σύγκριση Η τεχνική αυτή µπορεί επίσης να χρησιµοποιηθεί όταν οι δροµολογητές δε µπορούν να ϱυθµιστούν για να δηµιουργούν σήραγγες για πρωτόκολλα επιπέδου µεταφοράς. Παράδειγµα: επικοινωνία µε πρωτόκολλο IPX ανάµεσα σε κόµβους που χρησιµοποιούν TCP/IP. Ο χρήστης µπορεί να δηµιουργήσει µία δική του ϐιβλιοθήκη η οποία µεταφράζει τις κλήσεις συστήµατος της οικογένειας πρωτοκόλλων IPX σε αντίστοιχες κλήσεις TCP/IP. Η ίδια τεχνική µπορεί να εφαρµοστεί και στην περίπτωση που δύο αποµακρυσµένες εφαρµογές ϑέλουν να επικοινωνήσουν αλλά δεν µπορούν να συνδεθούν απευθείας η µία στην άλλη ή ακόµα και για λόγους ασφάλειας, ελέγχου, κτλ. Παράδειγµα: κρυπτογραφηµένη σύνδεση στον εξυπηρετητή SMTP. Για να στείλουµε κάποιο e-mail ο πελάτης µας πρέπει να συνδεθεί µε τον εξυπηρετητή SMTP zeus.cs.uoi.gr στη ϑύρα 25. Ωστόσο ο εξυπηρετητής δε διαθέτει υπηρεσίες κρυπτογράφησης για τη ϑύρα αυτή. ηµιουργούµε µία σήραγγα µέσω του πρωτοκόλλου SSH από τη ϑύρα 2000 στον τοπικό υπολογιστή στην ϑύρα 25 του εξυπηρετητή: me@mypc:~$ ssh -L 2000:zeus.cs.uoi.gr:25 scylla.cs.uoi.gr Τώρα τα δεδοµένα που γράφω στη ϑύρα 2000 του τοπικού υπολογιστή µετατρέπονται σε δεδοµένα SSH, µεταφέρονται στον scylla.cs.uoi.gr και από εκεί στη ϑύρα 25 του zeus.cs.uoi.gr. Κάτι αντίστοιχο συµβαίνει και όταν συνδεόµαστε σε κάποιον εξυπηρετητή παγκόσµιου ιστού µέσω SSL.

Σήραγγες Πύλες Σύγκριση Πύλες

Πύλες επιπέδου εφαρµογών Σήραγγες Πύλες Σύγκριση Πολλές ϕορές το πρόβληµα ϐρίσκεται στο επίπεδο εφαρµογών. Ο υπολογιστής του πελάτη δεν διαθέτει το κατάλληλο λογισµικό. Ο υπολογιστής του πελάτη δεν διαθέτει τις ελάχιστες απαιτήσεις εκτέλεσης κάποιου προγράµµατος. Η πολιτική ασφαλείας του συστήµατος/δικτύου δεν επιτρέπουν την πρόσβαση σε κάποιες διευθύνσεις/θύρες. Τι µπορούµε να κάνουµε σε αυτές τις περιπτώσεις; Παράδειγµα: σύνδεση σε υπηρεσία FTP µέσω ϕυλλοµετρητή παγκόσµιου ιστού. Ο ϕυλλοµετρητής µου χρησιµοποιεί µόνο το πρωτόκολλο HTTP. Θέλω µέσω αυτού να αποκτήσω πρόσβαση σε µία υπηρεσία FTP.

Πύλες επιπέδου εφαρµογών Σήραγγες Πύλες Σύγκριση Τη «µετάφραση» αναλαµβάνουν ειδικά προγράµµατα λογισµικού τα οποία ονοµάζονται «πύλες επιπέδου εφαρµογών». Τα προγράµµατα αυτά χρησιµοποιούν και τα δύο πρωτόκολλα ανάµεσα στα οποία µεταφράζουν. Μεταφράζουν κάθε αίτηµα του πελάτη στο πρωτόκολλο που χρησιµοποιεί ο εξυπηρετητής. Μεταφράζουν κάθε απάντηση του εξυπηρετητή στο πρωτόκολλο που χρησιµοποιεί ο πελάτης. Υπάρχει περίπτωση η πύλη να χρησιµοποιεί το ίδιο πρωτόκολλο µε τον πελάτη και τον εξυπηρετητή. Προσφέρει απλά ένα ενδιάµεσο ϐήµα ανάµεσα στον πελάτη και τον εξυπηρετητή. Γιατί χρειάζεται κάτι τέτοιο; Ασφάλεια (ο πελάτης δεν αποκτά πρόσβαση απευθείας στον εξυπηρετητή). Απόδοση (παράδειγµα: web proxies). Αξιοπιστία (παράδειγµα: διαµοιρασµός ϕόρτου σε πολλαπλούς εξυπηρετητές).

Σήραγγες Πύλες Σύγκριση Σύγκριση

Σήραγγες ή πύλες; Σήραγγες Πύλες Σύγκριση Οι πύλες: + εν απαιτούν ϱύθµιση του λειτουργικού συστήµατος ή των δικτυακών συσκευών. + εν απαιτούν αλλαγές στα προγράµµατα πελάτη και εξυπηρετητή. + Επιτρέπουν στα διάφορα συστήµατα να συνεχίσουν να λειτουργούν όπως και πριν, χωρίς να απαιτεί από τους χρήστες ή τους διαχειριστές να κάνουν κάποια αλλαγή ή να µάθουν κάποια νέα τεχνολογία/διεπαφή. Απαιτούν µία νέα, διαφορετική πύλη για κάθε Ϲεύγος πρωτοκόλλων. Ισως αυξήσουν τις απαιτήσεις σε υλικό, δικτυακούς πόρους, άδειες λογισµικού κτλ. για τον κόµβο που ϑα εκτελεί τον κώδικα της πύλης. Οι σήραγγες: + Είναι διαφανείς προς τις εφαρµογές, αφού λειτουργούν σε χαµηλότερο επίπεδο. + εν απαιτούν αλλαγές όταν χρειασθεί η προσθήκη κάποιας νέας υπηρεσίας (στο επίπεδο εφαρµογών). Απαιτούν την παρέµβαση στο λειτουργικό σύστηµα και τις ϱυθµίσεις των συσκευών του δικτύου που ϑα συµµετέχουν στη «σήραγγα». Σε περίπτωση αλλαγής στα υποστηριζόµενα πρωτόκολλα ϑα απαιτηθεί και αλλαγή στο λογισµικό των πελατών/εξυπηρετητών.

Στο επόµενο µάθηµα... Broadcast/multicast. SCTP multihoming/multistreaming. RAW sockets. Πρόσβαση στο επίπεδο διασύνδεσης (datalink).