2.ΓΕΝΙΚΗ ΠΕΡΙΓΡΑΦΗ ΤΩΝ ΠΡΩΤΟΚΟΛΛΩΝ TCP\IP
α) το πρωτόκολλο εφαρμογής, όπως το ταχυδρομείο, β) ένα πρωτόκολλο, όπως το
TCP, που παρέχει υπηρεσίες που απαιτούνται από πολλές εφαρμογές, γ) το IP, που
παρέχει τη βασική υπηρεσία διαβίβασης των datagrams στον προορισμό τους, δ)
τα απαραίτητα πρωτόκολλα για τη διαχείρηρση ενός συγκεκριμένου φυσικού μέσου,
όπως το Ethernet ή μια γραμμή σημείου-προς-σημείο.
Το TCP/IP είναι μια σουίτα πρωτοκόλλων οργανωμένη σε επίπεδα. Για να
κατανοήσουμε τη σημασία αυτού, είναι χρήσιμο να δοθεί ένα παράδειγμα. Μια
τυπική κατάσταση e_mai η αποστολή ταχυδρομείου. Αρχικά, υπάρχει το πρωτόκολλο
για το μήνυμα, το οποίο ορίζει το σύνολο των εντολών που μια μηχανή θα στέλνει
σε κάποια άλλη, π.χ. εντολές για τον καθορισμό του αποστολέα του μηνύματος, του
παραλήπτη και το τέλος του κειμένου του μηνύματος. Το πρωτόκολλο αυτό υποθέτει
βέβαια, ότι υπάρχει τρόπος αξιόπιστης επικοινωνίας μεταξύ των δυο υπολογιστών.
Το ταχυδρομείο, όπως άλλα πρωτόκολλα εφαρμογών απλά καθορίζει άνα σετ εντολών
και μηνυμάτων για αποστολή. Είναι σχεδιασμένο να χρησιμοποιείται μαζί με τα TCP
και IP. Το TCP είναι υπεύθυνο για το πέρασμα των εντολών στο άλλο άκρο.
Κρατάει λογαριασμό του τι αποστέλλεται και επανεκπέμπει οτιδήποτε δεν πέρασε.
Αν ένα μήνυμα είναι πολύ μεγάλο για ένα datagram π.χ. το κείμενο του
ταχυδρομείου, το TCP θα το χωρίσει σε πολλαπλά datagrams και θα φροντίσει ώστε
να φτάσουν σωστά. Εφόσον αυτές οι λειτουργίες απαιτούνται για πολλές εφαρμογές,
ομαδοποιούνται σε ένα ξεχωριστό πρωτόκολλο αντί να αποτελούν μέρος των
προδιαγραφών για την αποστολή ταχυδρομείου. Μπορούμε να σκεφτούμε ότι το TCP
φτιάχνει μια βιβλιοθήκη ρουτινών που οι εφαρμογές μπορούν να χρησιμοποιούν, όταν
χρειάζονται, αξιόπιστες επικοινωνίες με άλλο υπολογιστή. Όμοια το TCP καλεί τις
υπηρεσίες του IP. Αν και οι υπηρεσίες που παρέχει το TCP απαιτούνται από πολλές
εφαρμογές, υπάρχουν ακόμα μερικά είδη εφαρμογών που δεν τις χρειάζονται.
Σίγουρα όμως υπάρχουν και υπηρεσίες που απαιτούνται από όλες τις εφαρμογές. Οι
υπηρεσίες αυτές ομαδοποιούνται στο IP. Όπως και με το TCP, μπορούμε να
σκεφτούμε το IP σαν μια βιβλιοθήκη ρουτινών που καλεί το TCP και που είναι
επίσης διαθέσιμη σε εφαρμογές που δεν χρησιμοποιούν το TCP. Η στρατηγική αυτή
της οικοδόμησης πολλαπλών επιπέδων του πρωτοκόλλου καλείται "layering". Έτσι,
μπορούμε να θεωρήσουμε τα διάφορα προγράμματα εφαρμογών στη θέση του
ταχυδρομείου και τα TCP, IP σαν ξεχωριστά επίπεδα, κάθε ένα από τα οποία καλεί
τις υπηρεσίες του αμέσως πιο χαμηλού επιπέδου. Γενικά οι TCP/IP εφαρμογές έχουν
τέσσερα επίπεδα: To TCP/IP είναι βασισμένο στο "catenet model" (περιγράφεται με
λεπτομέρεια στο IEN 48). Το μοντέλο αυτό υποθέτει ότι υπάρχει ένας μεγάλος
αριθμός ανεξάρτητων δικτύων συνδεδεμένων μεταξύ τους με gateways. Ο χρήστης
πρέπει να μπορεί να προσπελάσει υπολογιστές ή άλλα αγαθά σε οποιοδήποτε από αυτά
τα δίκτυα. Τα datagrams περνούν συχνά από δεκάδες διαφορετικά δίκτυα πριν
φτάσουν στον τελικό τους προορισμό. Η διαδρομή που χρειάζεται για να επιτευχθεί
αυτό, πρέπει να είναι αόρατη στο χρήστη.
Όσον αφορά το χρήστη, το μόνο που χρειάζεται να γνωρίζει για την προσπέλαση ενός
άλλου συστήματος είναι η Internet διεύθυνσή του. Αυτή είναι μια διεύθυνση με
την εξής μορφή: 128.6.4.194. Στην πραγματικότητα, η διεύθυνση είναι ένας
32-bit αριθμός, αν και γράφεται σαν τέσσερα δεκαδικά ψηφία χωρισμένα μεταξύ τους
με μια τελεία, που ο καθένας αντιστοιχεί σε 8 bits της διεύθυνσης. (Για τέτοιες
ομάδες των 8 bits χρησιμοποιείται ο όρος "octets". O όρος "byte" δεν
χρησιμοποείται, επειδή το TCP/IP υποστηρίζεται από μερικούς υπολογιστές που
έχουν μήκος byte διαφορετικό των 8 bits). Γενικά, η δομή της διεύθυνσης δίνει
πληροφορίες για το πως θα φτάσουμε στο σύστημα. Για παράδειγμα, το 128.6 είναι
το νούμερο του δικτύου που έχει ανατεθεί στο Rutgers University. To Rutgers
χρησιμοποιεί το επόμενο octet, για να δηλώσει σε ποιό από τα Ethernets του
πανεπιστημίου γίνεται αναφορά. Για παράδειγμα, 128.6.4 είναι το Ethernet που
χρησιμοποιείται από το Computer & Science Dept. Το τελευταίο octet επιτρέπει
μέχρι και 254 συστήματα σε κάθε Ethernet. (Είναι 254, γιατί το 0 και το 255 δεν
επιτρέπονται, για λόγους που θα συζητηθούν αργότερα).
Φυσικά, αναφερόμαστε συνήθως σε συστήματα, με όνομα, παρά με τη διεύθυνση
Internet. Όταν δίνουμε ένα όνομα, το λογισμικό του δικτύου συμβουλεύεται μια
βάση δεδομένων και βρίσκει την αντίστοιχη διεύθυνση Internet. (Το RFC 882
περιγράφει την τεχνολογία των name servers που χρησιμοποιούνται για το χειρισμό
του εντοπισμού των διευθύνσεων).
Το TCP/IP είναι χτισμένο με τεχνολογία "χωρίς σύνδεση" (connectionless). Η
πληροφορία μεταφέρεται σαν μια ακολουθία datagrams. Το datagram είναι μια ομάδα
δεδομένων που στέλνεται σαν ξεχωριστό μήνυμα. Κάθε ένα από τα datagrams,
στέλνεται ατομικά μέσω του δικτύου. Αφού επιτευχθεί εγκατάσταση σύνδεσης, η
πληροφορία διασπάται σε datagrams, τα οποία αντιμετωπίζονται από το δίκτυο
απολύτως ξεχωριστά. Για παράδειγμα, υποθέστε ότι θέλετε να μεταφέρετε ένα
αρχείο 15000 octets. Τα περισσότερα δίκτυα δεν μπορούν να χειριστούν ένα
datagram 15000 octets. Έτσι, τα πρωτόκολλα θα το διασπάσουν π.χ. σε 30
datagrams των 500 octets. Κάθε ένα από αυτά τα datagrams θα σταλεί στο άλλο
άκρο. Στο σημείο αυτό θα επανασυνδεθούν για να διαμορφώσουν το πρωτότυπο αρχείο
των 15000 octets. Όσο όμως τα datagrams αυτά είναι σε μεταφορά, το δίκτυο δεν
γνωρίζει ότι υπάρχει κάποια σύνδεση μεταξύ τους. Έτσι, είναι πολύ πιθανόν να
φτάσει το datagram 14, πριν το 13. Είναι επίσης πιθανό, ότι κάπου στο δίκτυο θα
συμβεί κάποιο λάθος και κάποιο datagram δεν θα περάσει καθόλου. Στην περίπτωση
αυτή το datagram πρέπει να σταλεί ξανά.
Σημειώστε, ότι οι όροι "datagram" και "packet" φαίνονται να έχουν την ίδια
έννοια. Τεχνικά, το datagram είναι ο σωστός όρος που πρέπει να χρησιμοποιείται
όταν περιγράφεται το TCP/IP. Το datagram είναι μια μονάδα δεδομένων με την
οποία ασχολούνται τα πρωτόκολλα. Το πακέτο είναι κάτι φυσικό, που παρουσιάζεται
στο Ethernet ή κάποιο καλώδιο. Στις περισσότερες περιπτώσεις το πακέτο απλώς
περιέχει ένα datagram κι έτσι η διαφορά είναι πολύ μικρή. Μπορεί όμως και να
διαφέρουν. 'Οταν το TCP/IP χρησιμοποιείται πάνω το Χ,25 το Χ.25 interface
διασπά τα datagrams σε 128-byte πακέτα. Αυτό δεν το βλέπει το IP, επειδή τα
πακέτα συντίθεται ξανά σε ένα datagram στην άλλη άκρη πριν τα επεξεργαστεί το
TCP/IP. 'Ετσι στην περίπτωση αυτή 1 IP datagram θα μεταφέρεται από πολλά
πακέτα. Στις περισσότερες περιπτώσεις βέβαια, υπάρχουν αρκετά πλεονεκτήματα
στην αποστολή ενός datagram / πακέτο και έτσι οι διακρίσεις τείνουν να
εξαλειφθούν.
[TABLE OF TOPICS ]
[TABLE OF INDEX ]
2.1 TO ΕΠΙΠΕΔΟ TCP
Υπάρχουν δυο διαφορετικά πρωτόκολλα που χειρίζονται τα TCP/IP datagrams. Tο TCP
(Transmission control protocοl ) είναι υπεύθυνο για τη διάσπαση του μηνύματος σε
datagrams και την επανασύνδεσή τους στο άλλο άκρο επαναστέλλοντας οτιδήποτε έχει
χαθεί και ταξινομώντας τα στη σωστή σειρά. Το IP (Internet protocol) είναι
υπεύθυνο για τη δρομολόγηση των datagrams. 'Ισως φαίνεται ότι το TCP κάνει όλη
τη δουλειά. Στα μικρά δίκτυα, αυτό πράγματι συμβαίνει. Παρ' όλα αυτά στο
Internet, το να φτάσει απλώς ένα datagram στον προορισμό του μπορεί να είναι μια
δύσκολη δουλειά. Το datagram συνήθως πρέπει να περάσει από πολλά διαφορετικά
είδη δικτύων όπου απαιτείται χειρισμός των ασυμβατοτήτων μεταξύ των διαφορετικών
μέσων μετάδοσης. Σημειώστε ότι το Interface μεταξύ του TCP και IP είναι σχετικά
απλό. Το TCP απλά παραδίδει στο IP ένα datagram και τον προορισμό του. Το IP
δεν γωνρίζει πως το datagram αυτό συνδέεται με το προηγούμενο ή το επόμενό του.
Μέχρι εδώ έχουμε μιλήσει για τις διευθύνσεις του Internet, αλλά όχι για το πως
κρατιέται λογαριασμός των πολλαπλών συνδέσεων σε ένα σύστημα. Σίγουρα δεν είναι
αρκετό να φτάσει ένα datagram στο σωστό προορισμό. Το TCP πρέπει να γνωρίζει
ποιας σύνδεσης είναι μέρος, το συγκεκριμένο datagram. Η διαδικασία αυτή
αναφέρεται σαν "απόπλεξη" (Demultiplexing). Στην πραγματικότητα, υπάρχουν πολλά
επίπεδα απόπλεξης στο TCP/IP. Οι πληροφορίες που χρειάζονται για να γίνει η
απόπλεξη αυτή περιέχεται σε μια σειρά επικεφαλίδων (headers). Η επικεφαλίδα
είναι απλώς μερικά επιπλέον octets που προσαρτούνται στην αρχή των datagrams από
ένα πρωτόκολλο. Αμέσως παρακάτω, φαίνεται πως ακριβώς προσαρτούνται
επικεφαλίδες σε ένα μήνυμα που περνά μέσα από ένα τυπικό TCP/IP δίκτυο.
'Εστω ότι έχουμε ένα αρχείο που πρέπει να το στείλουμε σε έναν άλλο υπολογιστή:
********************************************
Το TCP χωρίζει το αρχείο σε κομμάτια ώστε να μπορεί να τα χειριστεί (Για να
γίνει αυτό πρέπει το TCP να γνωρίζει το μεγαλύτερο μήκος datagram που μπορεί να
χειριστεί το συγκεκριμένο δίκτυο. Στην πραγματικότητα τα TCP στις δύο άκρες
δηλώνουν το μεγαλύτερο datagram που μπορούν να χειριστούν και επιλέγεται το
μικρότερο από τα δύο).
*** *** *** *** *** *** *** *** *** *** *** ***
Το TCP βάζει μια επικεφαλίδα στην αρχή του κάθε datagram . Η επικεφαλίδα αυτή
περιέχει τουλάχιστον 20 octets, αλλά τα πιο σημαντικά είναι ο αριθμός της πόρτας
πηγής και προορισμού και ο αριθμός σειράς (source and destination port number -
sequence number) Τα port numbers χρησιμοποιούνται για την ταυτοποίηση των
διαφόρων συνδιαλέξεων. Ας υποθέσουμε ότι 3 διαφορετικοί άνθρωποι μεταφέρουν
αρχεία. Το ΤCP αναθέτει τα port number 1000, 1001, και 1002 στις μεταφορές
αυτές. 'Οταν αποστέλεται ένα datagram, τα νούμερα αυτά αποτελούν τα source port
numbers. Φυσικά το TCP στo άλλo άκρo, έχει αναθέσει ένα δικό του port number
για την συνδιάλεξη. Το TCP στο σύστημα αποστολής του αρχείου πρέπει να γνωρίζει
το port number που χρησιμοποιείται στo άλλo άκρo, το οποίο και τοποθετεί στο
πεδίο πόρτας προορισμού ( destination port field ). Φυσικά, αν από το άλλο άκρο
σταλεί πίσω ένα datagram τα source και destination ports θα αντιστραφούν. Κάθε
datagram έχει ένα sequence number. Αυτός ο αριθμός χρησιμοποιείται ώστε το άλλο
άκρο να παίρνει τα datagrams στη σωστή σειρά και να εξασφαλίζεται ότι δεν
υπάρχουν απώλειες. Το TCP δεν αριθμεί τα datagrams αλλά τα octets. Έτσι αν
υπάρχουν 500 octets δεδομένων σε κάθε datagram, το πρώτο datagram θα έχει αριθμό
0 το δεύτερο 500, το επόμενο 1000 κ.ο.κ. Τέλος, θα αναφερθεί το checksum. Το
checksum είναι ένας αριθμός που υπολογίζεται προσθέτοντας όλα τα octets σε ένα
datagram. Το αποτέλεσμα μπαίνει στην επικεφαλίδα. Το TCP στο άλλο άκρο
υπολογίζει ξανά το checksum. Αν τα δύο checksum δεν συμφωνούν, τότε κάτι έχει
συμβεί στο datagram κατά τη διάρκεια της μεταφοράς και απορρίπτεται από το
λαμβάνων σύστημα. Στο παρακάτω σχήμα φαίνεται η τελική μορφή του datagram.
Αν θεωρήσουμε "Τ" τη συντομογραφία της επικεφαλίδας του TCP το αρχείο μας θα
έχει τελικά τη μορφή:
Τ*** Τ*** T*** T*** T*** T*** T*** T*** T*** T***
Σημειώνεται, ότι υπάρχουν καμμάτια της επικεφαλίδας που δεν έχουν περιγραφεί.
Γενικά, αυτά έχουν να κάνουν με την διαχείρηση της σύνδεσης. Για να
εξασφαλιστεί το γεγονός ότι το datagram έχει φτάσει στον προορισμό του, ο λήπτης
στέλνει ένα "acknowledgment" (επιβεβαίωση). Αυτό είναι ένα datagram του οποίου
το πεδίο "acknowledgment number" είναι συμπληρωμένο. Για παράδειγμα, στέλνοντας
ένα πακέτο με ackn. 1500, σημαίνει ότι έχουν φτάσει όλα τα data εως το octet με
νούμερο 1500. Αν ο αποστολέας δεν πάρει acknowlwdgment μέσα σε ένα συγκεκριμένο
χρονικό διάστημα, αποστέλει ξανά τα δεδομένα. Το πεδίο window χρησιμοποιείται
για να ελέγχεται τα πόσα δεδομένα μπορεί να βρίσκονται υπό μεταφορά ταυτόχρονα.
Προφανώς, είναι μη πρακτικό να περιμένουμε acknowledgment για κάθε datagram που
έχει αποσταλεί για να στείλουμε το επόμενο. Kάτι τέτοιο θα επιβράδυνε πολύ την
όλη διαδικασία. Σίγουρα όμως δεν θα μπορούσαμε να στέλναμε συνεχώς δεδομένα
διότι ένας γρήγορος αποστολέας θα ξεπερνούσε τη δυνατότητα ενός αργού παραλήπτη
να απορροφήσει τα δεδομένα. Έτσι κάθε άκρο δηλώνει πόσα νέα δεδομένα μπορεί να
απορροφήσει βάζοντας το νούμερο των octets στο πεδίο "window". Όσο ο
υπολογιστής λαμβάνει δεδομένα, το ποσό του χώρου που μένει ελεύθερος στο
παράθυρό του μειώνεται. Όταν φτάσει στο μηδέν, ο αποστολέας πρέπει να
σταματήσει. Όταν ο λήπτης επεξεργάζεται τα δεδομένα αυξάνει το παράθυρό του,
δηλώνοντας ότι είναι έτοιμος να δεχτεί νέα δεδομένα. Συχνά το ίδιο datagram
μπορεί να χρησιμοποιηθεί για να επιβεβαιώσει τη λήψη ενός συνόλου δεδομένων και
να δώσει την άδεια για επιπρόσθετα νέα δεδομένα. Το πεδίο urgent επιτρέπει στο
ένα άκρο να πεί στο άλλο να προχωρήσει στην επεξεργασία ενός συγκεκριμένου
octet. Είναι επίσης χρήσιμο για το χειρισμό ασύγχρονων γεγονότων π.χ. διακοπή
της εξόδου με την πληκτρολόγηση control χαρακτήρα ή άλλης εντολής. Τα άλλα
πεδία δεν θα μελετηθούν διότι κάτι τέτοιο ξεφεύγει από τους σκοπούς του κειμένου
αυτού.
[TABLE OF TOPICS ]
[TABLE OF INDEX ]
2.2 TO ΕΠΙΠΕΔΟ IP
Το TCP στέλνει καθένα από τα datagrams στο IP. Πρέπει βέβαια να πληροφορήσει το
IP για την Internet διεύθυνση του υπολογιστή στο άλλο άκρο. Σημειώστε ότι η
διεύθυνση αυτή είναι η μόνη που ενδιαφέρει το IP. Το IP δεν ενδιαφέρεται για το
τι περιέχει το datagram ή η επικεφαλίδα TCP. Η δουλειά του IP είναι απλά να
εξασφαλίσει το μονοπάτι ώστε το datagram να φτάσει στο άλλο άκρο. Το IP
προσθέτει τις δικές του επικεφαλίδες ώστε το datagram να προωθηθεί από άλλα
ενδιάμεσα συστήματα. Η επικεφαλίδα αυτή περιέχει βασικά τις Internet
διευθύνσεις του συστήματος πηγής και προορισμού (32 bits π.χ. 128.6.4.194), τον
αριθμό πρωτοκόλλου και ένα ακόμη checksum. Η Internet διεύθυνση είναι απλά η
διεύθυνση της μηχανής που στέλνει τα δεδομένα. (Είναι απαραίτητη ώστε το άλλο
άκρο να γνωρίζει από που ήρθε το datagram ). Η διεύθυνση προορισμού είναι η
διεύθυνση στην οποία θέλουμε να φτάσουν τα δεδομένα. (Είναι απαραίτητη ώστε τα
ενδιάμεσα συστήματα να γνωρίζουν που πρέπει να πάει το datagram ). Ο αριθμός
πρωτοκόλλου πληροφορεί το IP στο άλλο άκρο ότι πρέπει να στείλει το datagram στο
TCP. (Μπορεί να υπάρχουν και άλλα πρωτόκολλα εκτός του TCP που χρησιμοποιούν το
IP οπότε το IP πρέπει να πληροφορηθεί σε ποιο πρωτόκολλο θα στείλει τοdatagram). Τέλος, το checksum επιτρέπει στο IP στο άλλο άκρο, να επαληθεύσει
ότι το header δεν καταστράφηκε κατά τη μετάδοση. Σημειώστε, ότι το TCP και το
IP έχουν διαφορετικά checksums. Το IP πρέπει να μπορεί να εξακριβώσει ότι η
επικεφαλίδα δεν καταστράφηκε, αλλιώς υπάρχει περίπτωση να στείλει ένα μήνυμα σε
λάθος μέρος. Όταν το IP προσαρτήσει την επικεφαλίδα του, το μήνυμα θα δείχνει
όπως παρακάτω:
Αν συμβολίσουμε την επικεφαλίδα του IP με Ι, το αρχείο θα έχει τη μορφή:
ΙΤ*** IΤ*** ΙT*** ΙT*** ΙT*** ΙT*** ΙT*** ΙT*** ΙT*** ΙT***
Και εδώ, η επικεφαλίδα αποτελείται από μερικά επιπλέον πεδία που δεν έχουμε
συζητήσει. Τα περισσότερα από αυτά ξεφεύγουν από το σκοπό του κειμένου. Τα
πεδία "flags" και "fragment effect" χρησιμοποιούνται όταν ένα datagram πρέπει να
χωριστεί σε κομμάτια. Αυτό μπορεί να συμβεί όταν τα datagrams προωθούνται σε
ένα δίκτυο, το οποίο δεν μπορεί να χειριστεί τόσο μεγάλα datagrams. Το πεδίο
"time to live" περιέχει έναν αριθμό που μειώνεται κάθε φορά που ένα datagram
περνά μέσα από ένα σύστημα. Όταν γίνεται 0, το datagram εξαλείφεται. Αυτό
γίνεται σε περίπτωση που για κάποιο λόγο εμφανιστεί βρόγχος μέσα στο δίκτυο.
Κάτι τέτοιο είναι βέβαια απίθανο, αλλά τα καλά σχεδιασμένα δίκτυα είναι
φτιαγμένα ώστε να μπορούν να αντιμετωπίσουν και απίθανες καταστάσεις. Στο
σημείο αυτό αναφέρεται, ότι είναι πιθανόν να μην χρειαστούν περισσότερες
επικεφαλίδες. Εαν ο υπολογιστής σας συνδέεται απευθείας μέσω τηλεφωνικής
γραμμής με τον υπολογιστή προορισμού, μπορεί να στείλει απευθείας τα datagrams
στη γραμμή (αν και στην πραγματικότητα θα έπρεπε να χρησιμοποιείται ένα σύγχρονο
πρωτόκολλο σαν το HDLC, όπου θα πρόσθετε τουλάχιστον λίγα octets στην αρχή και
το τέλος).
[TABLE OF TOPICS ]
[TABLE OF INDEX ]
2.3 ΕΠΙΠΕΔΟ ETHERNET
Τα περισσότερα δίκτυα στις μέρες μας χρησιμοποιούν το Ethernet. Για το λόγο
αυτό, θα περιγράψουμε τις επικεφαλίδες του Ethernet. Δυστυχώς, το Ethernet έχει
τις δικές του διευθύνσεις. Αυτοί που σχεδίασαν το Ethernet ήθελαν να βεβαιωθούν
ότι ποτέ δυο μηχανές δεν θα μπορούσαν να έχουν την ίδια διεύθυνση Ethernet.
Επιπλέον, δεν ήθελαν ο χρήστης να έχει καμμιά σχέση με την ανάθεση διευθύνσεων.
Ετσι κάθε Ethernet controller έρχεται από το εργοστάσιο με ενσωματωμένη τη δική
του διέυθυνση. Για να σιγουρευτούν ότι ποτέ δεν θα χρειαζόταν να
ξαναχρησιμοποιήσουν κάποιες διευθύνσεις οι σχεδιαστές του Ethernet. διέθεσαν 48
bits για την διευθύνσεις αυτές. Το Ethernet είναι ένα μέσο μετάδοσης. Όταν
λοιπόν, ένα πακέτο στέλνεται πάνω στο Ethernet, κάθε μηχανή του δικτύου μπορεί
να δει το πακέτο. Έτσι, απαιτέιται μια επικεφαλίδα Ethernet ώστε να
εξασφαλιστεί ότι τοπακέτο θα φτάσει στη σωστή μηχανή . Κάθε πακέτο Ethernet
έχει μια επικεφαλίδα 14 octets που περιέχει τη διεύθυνση Ethernet πηγής και
προορισμού καθώς και έναν type code.
Υποτίθεται ότι κάθε μηχανή προσέχει τα πακέτα που στο πεδίο προορισμού έχουν τη
δική τους διεύθυνση (είναι βέβαια πολύ πιθανό να υπάρξουν υποκλοπές, πράγμα που
κάνει τις Ethernet επικοινωνίες να μην είναι και τόσο ασφαλείς). Σημειώστε, ότι
δεν υπάρχει καμμιά σχέση μεταξύ Internet και Ethernet διευθύνσεων. Κάθε μηχανή
πρέπει να διαθέτει έναν πίνακα για να συμβουλεύεται ποιά Ethernet διεύθυνση
ανταποκρίνεται σε ποια Internet. (Θα περιγράψουμε αργότερα πως κατασκευάζεται ο
πίνακας αυτός). Εκτός από τις διευθύνσεις η επικεφαλίδα περιέχει και τον type
code pou επιτρέπει σε πολλές διαφορετικές οικογένειες πρωτοκόλλων να
χρησιμοποιηθούν στο ίδιο δίκτυο. Έτσι, μπορούν να χρησιμοποιηθούν ταυτόχρονα το
TCP/IP, Decnet, Xerox NS, κ.λ.π. Κάθε ένα από αυτά θέτει μια διαφορετική τιμή
στο πεδίο type. Τέλος, υπάρχει το checksum. O Ethernet controller υπολογίζει
ένα checksum για όλο το πακέτο. Όταν το άλλο άκρο λάβει το πακέτο,
ξαναυπολογίζει το checksum και απορρίπτει το πακέτο αν το αποτέλεσμα διαφωνεί με
το αρχικό. Το checksum τοποθετείται στο τέλος του πακέτου και όχι στην
επικεφαλίδα. Το τελικό αποτέλεσμα για το μήνυμα είναι το παρακάτω:
Αν συμβολίσουμε την επικεφαλίδα του Ethernet με Ε και το checksum του Ethernet
με C το αρχείο έχει τη μορφή:
ΕΙΤ*** C EΙΤ***C EΙT***C EΙT***C EΙT***C EΙT***C
Όταν τα πακέτα αυτά λαμβάνονται στο άλλο άκρο, όλες οι επικεφαλίδες αφαιρούνται.
Το Ethernet interface αφαιρεί την επικεφαλίδα Ethernet και το checksum, κοιτάει
το type code και αν είναι αυτό που αντιστοιχεί στο IP, ο Ethernet device driver
δίνει το datagram στο IP. To IP αφαιρεί την IP επικεφαλίδα και κοιτάει το πεδίο
πρωτοκόλλου. Αν ο τύπος πρωτοκόλλου είναι TCP, δίνει το datagram στο TCP. To
TCP τώρα κοιτάει τον αριθμό σειράς και τον χρησιμοποιεί μαζί με άλλες
πληροφορίες για να συνδυάσει όλα τα datagrams στο πρωτότυπο αρχείο.
Εδώ τελειώνει η αρχική περίληψη του TCP/IP. Υπάρχουν ακόμα μερικές σημαντικές
έννοιες τις οποίες δεν συζητήσαμε και γι αυτό θα επανέλθουμε προσθέτοντας
επιπλέον πληροφορίες (για πιο λεπτομερείς περιγραφές αυτών που συζητήθηκαν,
βλέπε RFC 739 για το TCP, RFC 791 για το IP και RFC 894 καιRFC 826 για την αποστολή
IP πάνω από Ethernet).
[TABLE OF TOPICS ]
[TABLE OF INDEX ]