Ασκήσεις κεφαλαίου
Ερωτήσεις
Ποιες υπηρεσίες παρέχει το επίπεδο μεταφοράς;
Γιατί είναι πιθανό ο παραλήπτης να απορρίψει ένα τμήμα TCP θεωρώντας το αναξιόπιστο;
Ποιους ελέγχους λαμβάνει υπόψη του το TCP για να αποφασίσει για το μέγεθος τμήματος που πρέπει να μεταδώσει;
Σε ποια ζητήματα διαφέρει το TCP από το UDP;
Σε ποιες εφαρμογές εφαρμόζεται το πρωτόκολλο UDP;
Ποιες είναι οι φάσεις για να ξεκινήσει την μεταφορά δεδομένων το TCP από την προέλευση στο προορισμό;
Άσκηση
Μια ροή δεδομένων στο TCP έχει γεμίσει τον ενταμιευτή εξόδου με 3600 bytes και πρέπει να μεταφερθούν μέσω μιας εγκατεστημένης σύνδεσης σε ένα εξυπηρετητή. Αν το Παράθυρο Συμφόρησης=1400 bytes, το πεδίο της επικεφαλίδας Παράθυρο=1200 bytes, η MTU=1500 bytes και η επικεφαλίδα ορίζεται σε 20 bytes, απαντήστε στα παρακάτω:
- Θα χρειαστεί να τεμαχίσει τα δεδομένα το TCP; Αν ναι, ποιο είναι το μέγεθος του τμήματος που θα αποφασίσει να στείλει το ΤCP;
- Αν κατά την επιβεβαίωση της λήψης του πρώτου τμήματος αλλάξει το μέγεθος του παράθυρου σε 2440 bytes και το παράθυρο συμφόρησης σε 3200 bytes, πόσα πρέπει να είναι και ποιο το μέγεθος των τμημάτων που ακολουθούν;
Άσκηση
Κατά την εγκατάσταση σύνδεσης ο αποστολέας έχει δημιουργήσει ένα αρχικό Αριθμό Σειράς = 4567802006.Όταν ο αποστολέας παραλάβει το αρχικό τμήμα συγχρονισμού και επιστρέψει την επιβεβαίωση, ποιες τιμές θα περιλαμβάνουν τα πεδία ACK και Αριθμός Επιβεβαίωσης;Σχετίζεται ο Αριθμός Σειράς που στέλνει ο παραλήπτης με το δικό του τμήμα συγχρονισμού και αν ναι, ποια είναι η τιμή του;
Ερωτήσεις
Πώς γίνεται ο έλεγχος ροής δεδομένων στο TCP;
Τι είναι το Παράθυρο Συμφόρησης και για ποιο λόγο χρησιμοποιείται;
Αναφέρετε τους παράγοντες με βάση τους οποίους το TCP αποφασίζει για το μέγεθος του επόμενου τμήματος δεδομένων που πρόκειται να στείλει.
Άσκηση
Κατά την εγκατάσταση μιας σύνδεσης, μεταφέρονται με τα τμήματα συγχρονισμού και από τις δυο άκρες οι εξής πληροφορίες:
Πελάτης: [Αριθμός Σειράς: 4567802006, Παράθυρο:65535, Μέγιστο Μήκος Τμήματος:1536]
Εξυπηρετητής: [Αριθμός Σειράς: 3277203904, Παράθυρο:4580, Μέγιστο Μήκος Τμήματος:1245]
Περιγράψτε τις επικεφαλίδες στα τμήματα επιβεβαίωσης που αποστέλλονται και από τις δυο πλευρές.
Ερώτηση
Πώς τερματίζεται μια σύνδεση που έχει σταλεί ένα τμήμα FIN από το πελάτη, αλλά η επικοινωνία έχει διακοπεί από την πλευρά του εξυπηρετητή;
Εργαστηριακή άσκηση
Έλεγχος και δημιουργία TCP/UDP συνδέσεων με τη χρήση εντολής netstat, τη βοήθεια της εντολής ping και εργαλείων του λειτουργικού συστήματος.
Στην άσκηση θα μελετηθούν οι βασικές έννοιες όπως:
- Τα πρωτόκολλα TCP/UDP
- Οι θύρες επικοινωνίας (Ports)
- Οι Διευθύνσεις IP
- Το πρωτόκολλο ICMP και σύστημα DNS.
- Η έννοια των υποδοχών (sockets) και η έννοια της σύνδεσης.
Στόχοι είναι:
- η αναγνώριση της σχέσης των διεργασιών που δημιουργούνται από τις εφαρμογές με τη σύνδεση τους με τα αντίστοιχα sockets.
- η απόκτηση της ικανότητας χρησιμοποίησης εντολών σε γραμμή τερματικού του λειτουργικού συστήματος και γενικότερα εργαλείων για τον έλεγχο της δικτυακής επικοινωνίας στο επίπεδο μεταφοράς.
Περιγραφή ομαδοσυνεργατικών δραστηριοτήτων
Βήμα 1: Κατανόηση Εντολής netstat.
Ξεκινάμε την οθόνη εξομοίωσης γραμμής εντολών των Windows εκτελώντας την εντολή cmd.exe και μέσα από την οθόνη εκτελούμε την εντολή netstat -o. H εντολή εμφανίζει σε μορφή λίστας όλες τις ενεργές συνδέσεις των πρωτοκόλλων TCP/UDP με τις αντίστοιχες πληροφορίες για τα socket προέλευσης και προορισμού. Την παράμετρο “-ο” την εισάγουμε για να μας εμφανιστεί στο τέλος κάθε γραμμής της λίστας ο μοναδικός αριθμός (ProcessID-PID) που αντιστοιχεί στην διεργασία που εκτελείται αυτή τη στιγμή στην μνήμη RAM του υπολογιστή και έχει δημιουργηθεί από κάποια εφαρμογή. Αν εξερευνήσουμε τη λίστα θα δούμε ότι στη στήλη Κατάσταση (Status) εμφανίζεται η πληροφορία Εγκατεστημένη “Established”, δηλαδή έχει γίνει η σύνδεση μεταξύ των δύο άκρων.
Οι τιμές για την πληροφορία Κατάστασης (State) είναι:
- SYN_SEND: Σηματοδοτεί την έναρξη σύνδεσης.
- SYN_RECEIVED: Ο Εξυπηρετητής μόλις παρέλαβε το μήνυμα έναρξης σύνδεσης.
- ESTABLISHED: Ο πελάτης παρέλαβε από το Εξυπηρετητή το δικό του μήνυμα SYN και η σύνδεση εγκαταστάθηκε.
- LISTEN: Ο εξυπηρετητή είναι σε ακρόαση, έτοιμος να δεχτεί συνδέσεις.
- FIN_WAIT_1: Σηματοδοτεί ότι έχει γίνει αποστολή τμήματος για τερματισμό της σύνδεσης.
- TIME_WAIT: Ο πελάτης μπαίνει σε κατάσταση αναμονής μετά την κατάσταση αποστολής τμήματος για τερματισμό της σύνδεσης.
- CLOSE_WAIT: Ο εξυπηρετητής μπαίνει σε κατάσταση αναμονής μόλις παραλάβει το μήνυμα FIN από τον πελάτη και ενημερώσει το επίπεδο εφαρμογής για τερματισμό της σύνδεσης.
- FIN_WAIT_2: Ο πελάτης παρέλαβε την επιβεβαίωση μετά την αποστολή του τμήματος τερματισμού FIN που είχε στείλει στον εξυπηρετητή.
- LAST_ACK: Ο εξυπηρετητής είναι στην κατάσταση μετά από αποστολή στο πελάτης το δικό του τμήμα τερματισμού FIN.
- CLOSED: O εξυπηρετητής παρέλαβε την επιβεβαίωση ACK από τον πελάτη και η σύνδεση έκλεισε.
Αν θέλουμε να εμφανίζονται πάντα στις στήλες προέλευσης και προορισμού οι IP διευθύνσεις και οι αριθμοί πόρτας χρησιμοποιούμε την παράμετρο -n, δηλαδή netstat -n.
H εντολή netstat από προεπιλογή εμφανίζει μόνο τις συνδέσεις TCP. Αν θέλουμε να εμφανιστούν όλες οι συνδέσεις χρησιμοποιούμε την παράμετρο -a (netasta -a), ενώ αν θέλουμε να δούμε μόνο τις UDP συνδέσεις χρησιμοποιούμε την παράμετρο -p [πρωτόκολλο], π.χ. netstat -p udp.
Βήμα 2: Διερεύνηση Σύνδεσης
Μπορούμε να βρούμε ποιες διεργασίες PID αντιστοιχούν στις συνδέσεις χρησιμοποιώντας τον διαχειριστή εργασιών Task Manager των Windows.
Επίσης μπορούμε να ελέγξουμε την διεύθυνση IP του προορισμού χρησιμοποιώντας την εντολή ping με την παράμετρο -a (π.χ. Ping -a 77.234.41.63), ώστε να γίνει αίτημα στην υπηρεσία ονοματοδοσίας DNS για να μας επιστρέψει το πλήρες όνομα που αντιστοιχεί στο τερματικό κόμβο που παρέχει τη συγκεκριμένη υπηρεσία. Εναλλακτικά μπορεί να χρησιμοποιηθεί ή η παράμετρος -f στην εντολή netstat (netstat -f -o).
Βήμα 3: Εκκίνηση μιας νέας σύνδεσης
Για να δημιουργήσουμε μια νέα TCP σύνδεση ξεκινάμε ένα φυλλομετρητή, για παράδειγμα τον Firefox. Καλύτερα είναι να ξεκινήσουμε την εφαρμογή σε ασφαλή κατάσταση και η αρχική σελίδα να είναι κενή. Αυτό συμβαίνει επειδή συνήθως οι φυλλομετρητές φορτώνουν πρόσθετα και γραμμές εργαλείων με συνδέσεις σε διάφορους δικτυακούς τόπους και επίσης οι δημοφιλείς ιστοσελίδες περιέχουν διαφημίσεις και συνδέσμους σε τρίτους δικτυακούς τόπους.
Αν εκτελέσουμε την εντολή netstat -o βλέπουμε ότι μια καινούργια διεργασία PID έχει δημιουργηθεί από την εφαρμογή του firefox. Αν τώρα στο φυλλομετρητή δώσουμε την διεύθυνση του πανελλήνιου σχολικού δικτύου www.sch.gr και εκτελέσουμε την εντολή netstat -n -o θα δούμε την νέα διεύθυνση IP στο socket προορισμού. Χρησιμοποιώντας την εντολή ping με την διεύθυνση IP του www.sch.gr (ping -a 194.63.235.170) διασταυρώνουμε τη σύνδεση με το σχολικό δίκτυο.
(c) Αμπατζόγλου Ιωάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ηλεκτρονικών ΠΕ1708