Skip navigation

Το αυτοδύναμο πακέτο ΙΡ - Δομή πακέτου

Αυτοδύναμο πακέτο

Το πρωτόκολλο Διαδικτύου (Internet Protocol - IP) ενθυλακώνει τα πακέτα δεδομένων που του προωθούνται από το ανώτερο επίπεδο σε αυτοδύναμα πακέτα (datagrams). Στην επικεφαλίδα των πακέτων αυτών, σε αντίστοιχα πεδία, προσθέτει όλες τις απαραίτητες διαχειριστικές πληροφορίες ώστε να γίνει εφικτή η εύρεση του προορισμού και η επιτυχής δρομολόγηση από τα πρωτόκολλα δρομολόγησης. Οι σημαντικότερες από αυτές είναι η διεύθυνση IP προέλευσης (source IP) και η διεύθυνση IP προορισμού (destination IP), μήκους 32bit η καθεμιά, για τις οποίες έγινε λόγος στα προηγούμενα.

Δομή αυτοδύναμου πακέτου

Το πεδίο Έκδοση πρωτοκόλλου (version) μήκους 4 bit, δηλώνει την έκδοση του χρησιμοποιούμενου πρωτοκόλλου Διαδικτύου (4: IPv4, 6: IPv6). Στην περίπτωση του IPv6 η επικεφαλίδα διαφοροποιείται και έχει ελάχιστο μήκος 40 bytes.

Το πεδίο Μήκος επικεφαλίδας (Internet Header Length - IHL) μήκους 4 bit, εκφράζει το μήκος της επικεφαλίδας σε λέξεις των 32 bit (4άδες byte). Το ελάχιστο μήκος είναι 5 λέξεις ή 20 byte και το μέγιστο 15 λέξεις ή 60 byte (=15x4).

Ο Τύπος της Υπηρεσίας (Type of Service) μήκους 8 bit, περιγράφει πώς πρέπει να χειριστεί το πακέτο κάθε κόμβος δίνοντας προτεραιότητα στην ταχύτητα, εάν επιτρέπεται δηλαδή να καθυστερήσει ή όχι, στην αξιοπιστία ή στο ρυθμό διακίνησης (throughput). Σε νεώτερη αναθεώρηση, το RFC2474 αλλάζει τη σημασία του συγκεκριμένου πεδίου ώστε να υποστηρίζει ένα σύνολο διαφοροποιημένων υπηρεσιών και το ονομάζει Differentiated Services Code Point - DSCP (6 bit). Το RFC3168 χαρακτηρίζει τα υπόλοιπα δυο bit ως ρητή ειδοποίηση συμφόρησης, Explicit Congestion Notification - ECN (2 bit). Οι αλλαγές έχουν σκοπό να υποστηρίξουν υπηρεσίες με ιδιαίτερες απαιτήσεις, όπως μεταφορά φωνής σε πραγματικό χρόνο (VoIP). Για να είναι όμως αυτό εφικτό πρέπει να υποστηρίζεται και από το υπόλοιπο δίκτυο.

Το πεδίο Συνολικό μήκος (Total length) μήκους 16 bit, δίνει το συνολικό μήκος του αυτοδύναμου πακέτου (επικεφαλίδα + δεδομένα) σε byte. Μπορεί να πάρει τιμές από 20 που είναι το ελάχιστο μήκος της επικεφαλίδας χωρίς δεδομένα μέχρι 65535 (=16 άσοι). Αυτό σημαίνει ότι το μέγιστο μέγεθος αυτοδύναμου πακέτου IP που υποστηρίζει το πρωτόκολλο IPv4 είναι 65535 bytes.

Τα πεδία της δεύτερης λέξης των 32 bit του αυτοδύναμου πακέτου, χρησιμοποιούνται για την περίπτωση που απαιτείται διάσπαση ή κατάτμηση (fragmentation) του πακέτου IP. Όταν το πακέτο πρόκειται να διέλθει από δίκτυο το οποίο στο δεύτερο επίπεδο (ζεύξης δεδομένων) υποστηρίζει πλαίσια μικρότερου μεγέθους από το αυτοδύναμο πακέτο, τότε μοναδικός τρόπος για να εξυπηρετηθεί είναι να διασπαστεί σε μικρότερα τμήματα, να περάσουν από το δίκτυο και στον προορισμό να επανασυνδεθούν στο αρχικό πακέτο IP. Τα κομμάτια αυτά του αρχικού πακέτου, τα τμήματα, αποτελούν νέα αυτοδύναμα πακέτα. Για να μπορεί το πρωτόκολλο IP να γνωρίζει σε ποιο αρχικό πακέτο ανήκουν, χρησιμοποιεί το πεδίο Αναγνώριση (Identification), μήκους 16 bit, το οποίο είναι η ταυτότητα του πακέτου. Το πεδίο αυτό είναι διαφορετικό σε κάθε πακέτο, αλλά ίδιο στα πακέτα που είναι τμήματα του ίδιου αρχικού πακέτου. Για να μπορέσει ο υπολογιστής προορισμού να τα βάλει με τη σωστή σειρά χρησιμοποιείται το πεδίο Σχετική Θέση Τμήματος (Fragment Offset), μήκους 13 bit, η οποία δείχνει τη σχετική απόσταση του τμήματος από την αρχή του αρχικού πακέτου σε οκτάδες (8x) byte. Η Σχετική Θέση Τμήματος η οποία αναφέρεται και ως Δείκτης Εντοπισμού Τμήματος (ΔΕΤ), είναι ένας αριθμός Byte ο οποίος υπολογίζεται ως εξής:

\Delta ET = n*INT(\frac{MTU-IHL*4}{8})


όπου:

  • ΙΝΤ(): η συνάρτηση που επιστρέφει το ακέραιο μέρος
  • MTU (Maximum Transmission Unit): το μέγιστο μήκος δεδομένων του πλαισίου στο δίκτυο 2ου επιπέδου
  • IHL (Internet Header Length): το μήκος της επικεφαλίδας του πακέτου IP σε λέξεις των 32bit ή 4άδες byte
  • n: ο αριθμός του τμήματος (0 για το πρώτο τμήμα, 1 για το δεύτερο, κ.ο.κ.)

Στη διαδικασία της κατάτμησης σημαντικό ρόλο παίζουν και οι σημαίες MF και DF. Οι σημαίες είναι μεμονωμένα bit των οποίων η κατάσταση είναι 1 ή 0 και έχουν να δηλώσουν κάτι. Έτσι η σημαία MF (More Fragments), ύπαρξη περισσότερων τμημάτων, όταν είναι ενεργοποιημένη (1) δηλώνει ότι ακολουθούν και άλλα τμήματα ενώ όταν είναι απενεργοποιημένη (0) δηλώνει ότι είναι το τελευταίο τμήμα διασπασμένου πακέτου ή μεμονωμένο πακέτο. Εάν για οποιοδήποτε λόγο το αυτοδύναμο πακέτο δεν πρέπει να διασπαστεί τότε η σημαία DF (Don't Fragment), απαγόρευση διάσπασης, τίθεται σε τιμή (1). Έτσι κατά τη δρομολόγηση του πακέτου θα ακολουθηθεί διαδρομή με MTU που δεν απαιτεί διάσπαση ή αν αυτό δεν είναι δυνατό, το πακέτο θα απορριφθεί και ενδεχομένως να ειδοποιηθεί ο αποστολέας για την ενέργεια αυτή του δικτύου. Στο πρωτόκολλο IPv6 η διάσπαση των πακέτων διενεργείται μόνο από τον υπολογιστή προέλευσης με βάση το μικρότερο MTU της διαδρομής (Path MTU - PMTU) και όχι από τους ενδιάμεσους δρομολογητές.

Το πεδίο Χρόνος Ζωής (Time To Live - TTL) μήκους 8 bit, ξεκινά από τον αποστολέα με μια αρχική τιμή, συνήθως 64, και κάθε δρομολογητής, από τον οποίο διέρχεται το πακέτο, μειώνει την τιμή κατά ένα. Όταν η τιμή μηδενιστεί το πακέτο απορρίπτεται και επιστρέφεται στον αποστολέα διαγνωστικό μήνυμα σφάλματος υπέρβασης χρόνου (time exceeded). Κάθε διέλευση του πακέτου από κόμβο χαρακτηρίζεται αναπήδηση (hop). Έτσι το συγκεκριμένο πεδίο μπορεί να χαρακτηριστεί και αντίστροφος μετρητής αναπηδήσεων (hops). Πρακτικά λειτουργεί ως όριο απόρριψης του πακέτου όταν αυτό έχει καθυστερήσει, έχει χαθεί στη διαδρομή ή έχει συμβεί κάποιο σφάλμα με τη διεύθυνση προορισμού και περιφέρεται άσκοπα στο δίκτυο.

Το πεδίο αυτό χρησιμοποιεί η εντολή traceroute ή tracert για να ιχνηλατήσει τη διαδρομή, να καταγράψει δηλαδή τους ενδιάμεσους κόμβους από τους οποίους διέρχονται τα πακέτα προς ένα προορισμό. Στέλνει διαδοχικά πακέτα με TTL αρχικά 1 και στη συνέχεια το αυξάνει κατά ένα. Έτσι στο πρώτο πακέτο το πεδίο TTL με τιμή 1 αφού μειωθεί κατά 1 στον πρώτο κόμβο μηδενίζεται, ο κόμβος το απορρίπτει (drop), το αναφέρει και καταγράφεται ποιος είναι. Στο δεύτερο πακέτο το πεδίο TTL=2 μηδενίζεται στον δεύτερο κόμβο κ.ο.κ. μέχρι για κάποια τιμή TTL να καταφέρει να φτάσει στον προορισμό. Εν τω μεταξύ έχουν καταγραφεί όλοι οι ενδιάμεσοι κόμβοι στη διαδρομή προς τον προορισμό.

Το πεδίο πρωτόκολλο, μήκους 8 bit, περιέχει μια αριθμητική τιμή η οποία δηλώνει το πρωτόκολλο του επιπέδου μεταφοράς στο οποίο ανήκουν τα δεδομένα που περιέχει το πακέτο IP. Έτσι πληροφορείται το πρωτόκολλο IP στο απέναντι άκρο σε ποιο πρωτόκολλο του επιπέδου μεταφοράς να παραδώσει τα δεδομένα, στο TCP (6), στο UDP (17) ή αλλού. Αν υπάρχει πρόσβαση σε υπολογιστή με unix/linux, στο αρχείο /etc/protocols μπορείτε να δείτε την αντιστοιχία αριθμών και πρωτοκόλλων για το πεδίο αυτό. Το ίδιο σε υπολογιστή με windows στο %SystemRoot%\System32\drivers\etc\protocols.

Το Άθροισμα Ελέγχου της Επικεφαλίδας (Header Checksum), μήκους 16 bit, διασφαλίζει την ακεραιότητα των τιμών των πεδίων της επικεφαλίδας. Εφαρμόζεται μόνο στην επικεφαλίδα του πακέτου IP ενώ το ίδιο το πεδίο δεν συμμετέχει στον υπολογισμό θεωρώντας ότι περιέχει την τιμή 0. Ο έλεγχος ακεραιότητας της επικεφαλίδας θεωρείται επιβεβλημένος καθώς κατά τη διέλευση του πακέτου από διάφορους δρομολογητές αυτοί τροποποιούν πεδία της επικεφαλίδας με αυξημένη πιθανότητα να συμβούν σφάλματα.

Το πεδίο Επιλογές (Options) είναι προαιρετικό και χρησιμοποιείται για ειδικές λειτουργίες όμως όχι συχνά. Όταν υπάρχει, το πεδίο Συμπλήρωμα (Padding) συμπληρώνει το πεδίο Επιλογές με μηδενικά ώστε η επικεφαλίδα συνολικά να είναι ακέραιος αριθμός λέξεων των 32 bit.

Παράδειγμα κατάτμησης αυτοδύναμου πακέτου IP

Ένα αυτοδύναμο πακέτο IP προερχόμενο από ένα δίκτυο Token Ring πρόκειται να προωθηθεί στον υπολογιστή προορισμού ο οποίος βρίσκεται σε δίκτυο Ethernet. Τα δυο δίκτυα συνδέονται με έναν δρομολογητή IP. Στο δίκτυο Token Ring (2ο επίπεδο) το MTU = 4482 bytes, δηλαδή το πλαίσιο μπορεί να μεταφέρει δεδομένα μέγιστου μεγέθους 4482 byte. Από την άλλη μεριά το δίκτυο Ethernet έχει MTU = 1500 bytes, δηλαδή το πλαίσιό του μπορεί να μεταφέρει το πολύ 1500 bytes. Τα δεδομένα ενός πλαισίου Token Ring τα οποία είναι ένα πακέτο IP δεν “χωρούν” σε ένα πλαίσιο Ethernet. Συνεπώς το πακέτο IP πρέπει να διασπαστεί. Αυτό επιτρέπεται εφόσον το DF=0. Να περιγραφεί η διαδικασία κατάτμησης και επανασύνθεσης του αρχικού πακέτου.

Παράδειγμα κατάτμησης αυτοδύναμου πακέτου IP

Ένα αυτοδύναμο πακέτο IP (datagram) μεγέθους 2400 bytes με DF=0 και Αναγνώριση:0x4a28 πρόκειται να διέλθει από δίκτυο το οποίο υποστηρίζει μέγιστο μήκος δεδομένων πλαισίου (MTU) 1000 bytes. Το πακέτο θα κατατμηθεί; Σε περίπτωση κατάτμησης, υπολογίστε τον αριθμό των τμημάτων, το μήκος δεδομένων των τμημάτων και δώστε για κάθε τμήμα τα πεδία: Μήκος επικεφαλίδας, Συνολικό μήκος, Αναγνώριση, DF, MF και Σχετ. θέση τμήματος (Offset).


(c) Αμπατζόγλου Ιωάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ηλεκτρονικών ΠΕ1708