Δημοσιεύτηκε: 09 Αύγ 2011, 23:48
από Star_Light
Μέρος 2ο

================================================================================================================

Λοιπον ξεκινάω ένα καινούργιο ποστ για την συνέχεια του οδηγού ελπίζοντας πως θα διευκολύνει οσους τον διαβάσουν.
Συνεχίζουμε απο το 2.2 των περιεχομένων που αναφέρεται στα πρωτόκολλα αυτου του επιπέδου... φυσικά εδω θα γίνει λόγος μονο για το ARP και οχι και για το RARP που ειναι το αντιστροφό του. Πανω - κατω πιστεύω οποιος καταλάβει πως δουλεύει το ARP δεν θα αντιμετωπίσει σοβαρο θέμα και στην κατανόηση του RARP αν θέλει να το ψάξει περαιτέρω μονος του. Πάμε λοιπον

2.2

Eκείνο που μας ενδιαφέρει πρωτίστως σε ενα υποδίκτυο σύμφωνα και με τα όσα έχουν προαναφερθεί είναι η φυσική διεύθυνση. Για αυτη την διεύθυνση γίνεται όλη η "φασαρία" μιας και με βάση αυτη την διεύθυνση οι υπολογιστές επικοινωνούν μέσα στο τοπικό δίκτυο.Ένας υπολογιστής πρέπει να ξέρει την φυσικη διεύθυνση της κάρτας δικτύου του υπολογιστή στον οποίο θέλει να στείλει δεδομένα. Για να απεικονισθούν επομένως οι IP διευθύνσεις οι οποίες έρχονται απο το Network Layer ή και γενικοτερα οι IP των υπολογιστών του φυσικού δικτύου στις αντίστοιχες φυσικές χρησιμποιείται ενα πρωτόκολλο το οποιο ονομάζεται ARP και επειδή οπως έχουμε ξαναπει του καθενός το όνομα στην Πληροφορική ειτε αυτο ειναι τεχνολογία , είτε ειναι πρωτόκολλο(καλη ωρα) είτε ειναι εντολη και στον προγραμματισμό ειτε το οτιδήποτε ειναι ουσιαστικά κατι που περιγράφει την λειτουργία του για αυτο αν νεω είμαστε εξικοιωμένοι με κάποια πράγματα ξαφνικα δούμε κατι καινουργιο καλο ειναι να μην ψαρώσουμε :D . Επομενως ARP => Address Resolution Protocol , πρωτόκολλο ανάλυσης διευθύνσεων.

ΕΡΩΤΗΣΗ 1 -> Ποια όμως ειναι η λειτουργία-δουλεία του & γιατι θεωρείται τοσο σημαντικό?

Η κυρια λειτουργία του ειναι να απεικονίζει διευθύνσεις 3ου επιπέδου (δηλαδη επιπέδου δικτύου σε διευθύνσεις 2ου επιπέδου δηλαδη επιπέδου πρόσβασης δικτύου. Απο IP->MAC και διατηρεί αυτες τια αντιστοιχίες σε εναν πίνακα (για καθε υπολογιστή) του τοπικού δικτύου που ονομάζεται ARP cache δεν θα μπορούσαμε να κάνουμε αυτη τη διαδικασία χειροκίνητα οταν προστίθονται νέες συσκευές στο δίκτυο γιατι θα αποτελούσε μεγάλη φασαρία, απο οσο πρόσεξα υπάρχει γενικά μια μικρή διχογνωμία στο αν το ARP ειναι πρωτόκολλο 3ου ή 2ου επιπέδου (σε ενα βιβλίο που έχω εγω επισημαίνει πως ειναι επιπέδου Internet) ενώ στην τεκμηρίωση της Wikipedia για το OSI model το βάζει στο 2ο επίπεδο. Τελοςπαντων δεν θα μας απασχολήσει τοσο αυτο οσο το να καταλάβουμε ακριβως τι δουλειά κάνει και με τι πραγματεύεται. ;) Επίσης έχουμε πει πως η δρομολόγηση σε αυτο το επίπεδο γίνεται με βάση τις φυσικές διευθύνσεις και αυτο δεν γίνεται για χάρη γούστου ούτε επειδη έτσι το όρισε απλα καποιος και πρέπει ολοι μετα να το ακολουθούμε "τυφλα". Καταρχήν για να γίνει η δρομολόγηση χρειάζονται διευθύνσεις και αν υποθέσουμε οτι οι μόνες διευθύνσεις που γνωρίζουμε ειναι οι IP διευθύνσεις βγάζοντας τελειως τις MAC (αρα και το πρωτόκολλο ARP) απο το παιχνίδι τοτε τι θα γινότανε? Τοτε εκεινο που θα γινότανε λοιπον θα ηταν το οτι (εφοσον) δεν θα υπήρχε το πρωτόκολλο ARP το κάθε μηχάνημα θα έπρεπε να παραλάβει το πακέτο απο το φυσικό μέσο και να το επεξεργαστεί ως...... το επίπεδο δικτύου κατι που σημαίνει περιττό κόστος και extra CPU processing για να μεταδόσει και να αναλύσει την IP!!!! Για να διαπιστώσει αν η IP διεύθυνση ταυτίζεται με την δική του. Επειδή λοιπον κατι τετοιο αποτελεί περιττη επεξεργασία ξαναβάζουμε το ARP στο παιχνίδι για να διαπιστώσουμε άμεσα αν κάποιο πακέτο μας ανήκει.(Έχει εμας σαν τελικό προορισμό).

ΕΡΩΤΗΣΗ 2 -> Γιατι ο πίνακας ARP (ARP cache) θεωρείται αναγκαίος?

O πίνακας αυτος πάλι δεν υπάρχει για χάρη γούστου ή σε στυλ ξέρεις πρέπει να έχεις εναν πίνακα ARP :D . Σε αυτο το σημείο πρέπει να τονίσω πως μια απο τις καλύτερες πηγές για να διαβάσει κάποιος για δίκτυα είναι στα έγγραφα RFC. Τα έγγραφα αυτα ουσιαστικά περιέχουν το μεγαλύτερο μέρος της τεκμηρίωσης του TCP/IP , η βιβλιοθήκη των RFC εγγράφων ουσιαστικά περιλαμβάνει αναφορές απο ομάδες εργασίας κτλπ. Μπορεί κάποιος να τα παραλληλίσει με την τεκμηρίωση ας πούμε του GCC για τις βασικές βιβλιοθήκες της C. Σε αυτον εδω το συνδεσμο λοιπον -> http://tools.ietf.org/html/rfc1180 τονίζει στην παράγραφο 4 οτι δεν μπορεί να χρησιμοποιήσεις εναν standard αλγόριθμο (δεν υπάρχει κάποιος τέτοιος) για να μεταφράσεις ( με την εννοια του αντιστοιχίσεις εδω μια IP σε μια MAC) δεν υπάρχει δηλαδη κάποια στανταρ σύνδεση μεταξύ τους :) , για αυτο το λογο ακριβώς μπορεί κάποιος να καταλάβει το πόσο σημαντική είναι η παρουσία αυτου του πίνακα στις επικοινωνίες εντος του τοπικού δικτύου. Επίσης κρατά τις αντιστοιχίσεις μεταξύ IP και MAC διευθύνσεων ωστε όταν χρειαστεί να στείλει κάτι σε έναν υπολογιστή μιας συγκεκριμένης IP να κοιτάξει τον πίνακα ωστε να δεί σε ποια MAC αντιστοιχεί αυτη η IP.

Πάμε τωρα να δούμε ενα πολυ απλό παράδειγμα (το βασίκο) για το πώς γίνεται η επικοινωνία μεσω του ARP (θα μπορούσα να συμπεριλάβω και παραδείγματα για την επικοινωνία μεταξύ 2 host οι οποίοι βρίσκονται σε διαφορετικά υποδίκτυα και επικοινωνούν μεσω ενος δρομολογητή αλλα το παράδειγμα αυτο ειναι πιο "προχωρημένο" και είτε μπορω να το προσθέσω στο μέλλον είτε μπορείτε να το ψάξετε και μόνοι σας αφου καταλάβετε τα βασικά ή και όχι ομως ανάλογα τον καθένα :) ) Προς το παρον θα δούμε ενα απλο παράδειγμα το οποίο αναφέρεται σε 2 host οι οποίοι βρίσκονται στο ιδιο τοπικό δίκτυο (και έτσι δεν χρειάζονται τον δρομολογητή για να επικοινωνήσουν -μπορούν να το κάνουν απευθείας).

Aς υποθέσουμε λοιπον οτι 2 υπολογιστές Α & Β με IP διευθύνσεις 128.6.4.100 & 128.6.4.12 αντίστοιχα θέλουν να επικοινωνήσουν μεταξυ τους.
Τα βήματα θα είναι τα ακόλουθα :

===============================================================================================================

ΒΗΜΑ 1


Αρχικά θα γίνει έλεγχος αν οι 2 βρίσκονται στο ίδιο δίκτυο (πράγμα που συμβαίνει λογω της κλασης C την οποια θα εξηγήσουμε παρακάτω) οποτε και μπορούν να επικοινωνήσουν απευθείας μεσω του τοπικού δικτύου (ethernet).

ΒΗΜΑ 2

O υπολογιστής Α θα εξετάσει τον ARP cache του για να δει αν υπάρχει για την συγκεκριμένη διεύθυνση του Β καταχώρηση για την φυσική διεύθυνση. Αν υπάρχει θα ανακτήσει απο εκει απευθείας την φυσικη διεύθυνση και η επικοινωνια θα ειναι δυνατη με τον Β στα πλαίσια του τοπικού δικτύου (ξανατονίζω η επικοινωνία στο τοπικό γίνεται μεσω των MAC). Σε αντίθετη περίπτωση προχωράμε στο βήμα 3

ΒΗΜΑ 3

O Α χρειάζεται τοτε να δημιουργήσει ενα ARP request το οποιο είναι ενα IP packet (για αυτο και παραπάνω είπαμε πως θα δείτε αυτο το πρωτόκολλο σαν πρωτόκολλο επιπέδου Internet κατα τα αλλα η δουλειά που κάνει ειναι για ενα φυσικό-τοπικό δίκτυο είτε για το ίδιο είτε για διαφορετικό -επικοινωνία υπολογιστών που ανήκουν σε διαφορετικά υποδίκτυα). Aυτο το ερώτημα θα γίνει broadcast (κατι που σημαίνει πως θα το ακούσουν ολοι οι υπολογιστές του τοπικού δικτύου) αλλα θα απαντηθεί απο τον υπολογιστή ο οποίος θα αναγνωρίσει την IP διευθυνσή του. Στο ARP reply που θα ακολουθήσει ο Β θα δώσει την φυσικη του διεύθυνση στον Α και στην συνέχεια

ΒΗΜΑ 4

o Α θα ανανεώσει τον ARP cache του με την αντιστοίχηση της IPβ -> MACβ (του Β δηλαδη) , αν ομως αυτη η εγγραφή δεν χρησιμοποιηθεί για κάποιο μεγάλο συνήθως χρονικό διάστημα αυτόματα διαγράφεται.

ΠΡΟΣΟΧΗ!!! Τα παραπάνω αποτελούν έναν αλγόριθμο ως προς την παρουσίαση του πρωτοκόλλου ARP / δεν έχουν καμια σχέση με αλγόριθμο ο οποίος αντιστοιχεί IP's σε MAC's (οχι Macdonalds :lol: :lol: )

===============================================================================================================

EΡΩΤΗΣΗ 3 -> Ποια η μορφή των πακέτων ARP request & ARP reply του παραπάνω παραδείγματος?


Έστω λοιπον οι IPα=128.6.4.100 IPβ=128.6.4.12 καθως και MACα = 06:00:30:00:4F:C2 οι διευθύνσεις IPv4 των Α & Β καθως και η MAC του Α αντίστοιχα
η μορφή των πακέτων αίτησης και απάντησης του ARP θα έχει την εξής μορφή :

Spoiler: show
Κώδικας: Επιλογή όλων


ARP request A->B

====================================================

IP αποστολέα  : 128.6.4.100

MAC αποστολέα : 06:00:30:00:4F:C2

IP προορισμού : 128.6.4.12

MAC προορισμού :    X   ?     (Ζητούμενο)   // Τα πακέτα ARP έχουν και άλλα πεδία τα οποία δεν βάζω εδω για λόγους απλότητας


====================================================

ΑRP reply  B->A

====================================================

IP αποστολέα : 128.6.4.12  //Πλέον ο αποστολέας ειναι ο Β  :)

MAC αποστολέα : 06:00:39:00:25:A5 // Αυτό που ζητούσαμε

IP προορισμού : 128.6.4.100

MAC προορισμού : 06:00:30:00:4F:C2

====================================================




ΑΚριβώς αυτη η εγγραφή (Βήμα 4) =>

Spoiler: show
Κώδικας: Επιλογή όλων

            IP              MAC
       128.6.4.12      06:00:39:00:25:A5


Λίγο πριν κλείσω την παράγραφο θα αναφέρω και την περίπτωση στην οποία ένα πακέτο έρχεται απο πηγή που βρίσκεται εκτος τοπικού δικτύου με προορισμό το τοπικό δίκτυο και συγκεκριμένα έναν υπολογιστή Α (ενω ακριβώς πριν μιλήσαμε για την επικοινωνία 2 υπολογιστών μέσα στο ίδιο τοπικό δίκτυο). Επομένως σε αυτη την περίπτωση έχουμε την άφιξη του μηνύματος στον δρομολογητή(πύλη τοπικού δικτύου) με IP την IP του Α.

Ας υποθέσουμε τωρα οτι ο δρομολογητής R δεν γνωρίζει την MAC του Α ωστε να προωθήσει το μήνυμα- πακέτο. Πρίν στείλει το πακέτο θα στείλει ενα ARP μήνυμα. Και έχουμε και λέμε (πάλι) :lol:

BHMA 1
O R λοιπον παίρνει πρέφα :D οτι δεν γνωρίζει την MAC του Α και κατ επέκτασην ο πίνακας δεν έχει εγγραφή. Κάνει λοιπον ένα ARP μήνυμα - πακέτο broadcast.

ΒΗΜΑ 2
Ένα broadcast το ακούνε όλοι αλλα φυσικά θα απαντήσει εκείνος που θα αναγνωρίσει την IP του ενω οι άλλοι το απορρίπτουν και έτσι λοιπον δίνει την MAC του οπως ακριβώς και στο ΒΗΜΑ 3 σε πιο πάνω παράδειγμα με τους 2 υπολογιστές μεσα στο ίδιο τοπικό.

ΒΗΜΑ 3

Τέλος γίνεται ενημέρωση του πίνακα με την αντίστοιχη εγγραφή.

Nα θυμάστε οτι ο δρομολογητής δεν είχε καμία άλλη εναλλακτική ως προς την επικοινωνία του με τον Β πέρα απο την χρησιμοποιήση της IP του Β ακριβώς και μέχρι να γίνει η επίλυση.

Επίσης να θυμάστε πως μια MAC δεν βγαίνει ποτε εκτός τοπικού δικτύου , μεταξύ διαφορετικών τοπικών δικτύων εφαρμόζονται αλγοριθμοι δρομολόγησης και γίνεται επικοινωνία σε επίπεδο δικτύου (IP) . Μολις το πακέτο φτάσει σε κάποια πύλη (gateway) απο εκει και μετα αρχίζει το παιχνιδι με τις φυσικές MAC διευθύνσεις .

2.3 Πάμε τωρα να δούμε την σύνθεση / δομή που θα έχει ενα πακέτο (frame) το οποίο μεταδίδεται σε αυτο το επίπεδο.

Spoiler: show
Κώδικας: Επιλογή όλων

=========+====================+====================+=========+=========+======
1.FLAG    2.ΔΙΕΥΘΥΝΣΗ ΠΑΡΑΛΗΠΤΗ 3.ΔΙΕΥΘΥΝΣΗ ΑΠΟΣΤΟΛΕΑ 4.ΜΗΚΟΣ  5.DATA   6.CRC       
=========+====================+====================+=========+=========+======



Λοιπον ελπίζω να ειναι κατανοητή η δομή του παραπάνω πλαισίου που ταξιδεύει μεσα απο το καλωδιο του EThernet που εχουμε στο σπίτι μας. Πάμε να πούμε 2-3 πράγματα επιγγραματικά ομως για καθενα απο αυτά. Καταρχην

1. FLAG => Είναι μια σημαία , δηλαδή μια σειρά απο bit τα οποία σημειώνουν την αρχή του πλαισίου.

2.ΔΙΕΥΘΥΝΣΗ ΠΑΡΑΛΗΠΤΗ => Η διεύθυνση του παραλήπτη (για τον οποίο προορίζεται το πλαίσιο) και μαλιστα η φυσική διεύθυνση του παραλήπτη.

3. ΔΙΕΥΘΥΝΣΗ ΑΠΟΣΤΟΛΕΑ => To ιδιο με πάνω αλλα το αντίστροφο :D η φυσική διεύθυνση αυτου που στέλνει το πλαίσιο.

4. ΜΗΚΟΣ => Ένα πεδίο το οποίο υπάρχει για να δείχνει το μέγεθος του πεδίου των δεδομένων.

5. DATA => Tα δεδομένα που μεταδίδονται με το πλαίσιο.

και τέλος

6. CRC => ΠΟυ οπως είπαμε και στην παράγραφο με τα υπο-επίπεδα χρησιμοποιείται για το άθροισμα ελέγχου και τον έλεγχο λαθών γενικότερα μπορεί να το δείτε και σαν Frame Check Sequence καπου αλλού ή σε κάποιο βιβλίο ειναι ακριβώς το ίδιο πράγμα διοτι χρησιμοποιείται ακριβως για τον ίδιο σκοπό. Στο σημείο ομως αυτο πιστεύω πως δεν θα είχε νόημα (ιδιαίτερο η όλη παράγραφος) αν δεν μιλούσα για την λειτουργία/τεχνική του Bit Stuffing η οποία ειναι μια γενικότερη λειτουργία του DLL :) (Data Link Layer) , πάμε να πούμε μερικά πραγματα λοιπον γύρω απο αυτο και στην συνέχεια να δώσω και παράδειγμα.

Ουσιαστικά το bit stuffing ειναι μια διαδικασία πλαισίωσης. Με λίγα λογια οριοθετούμε το πλαίσιο ωστε να γνωρίζει ο δέκτης που αρχίζει και που τελειώνει. Πάμε να δούμε ενα βασικό παράδειγμα :

Spoiler: show
Κώδικας: Επιλογή όλων
Έστω η κωδικοποίηση :

x1: 00111   x2: 11110
x3: 10010   x4: 10011
x5: 11110

και θέλουμε να μεταδώσουμε την x1x2x3x4x5 ακολουθία

Βήμα 1o => Οριοθετούμε το πλαίσιο (και σε αρχή και σε τέλος)

αυτο γίνεται ξεκινώντας με τα FLAGS σε αρχή και τέλος πχ

01111110 ........ 01111110  // Tα FLAGS αυτα ορίζονται απο το πρωτόκολλο HDLC

Βήμα 2ο => ανάμεσα τωρα(απο τις οριοθετήσεις) θα βάλουμε την  ακολουθία που πρόκειται να μεταδοθεί

=> Flagαρχής->01111110  x1->00111 x2->11110 x3->10010 x4->10011 x5->11110 Flagτελους->01111110

Βήμα 3ο (Ακολουθεί η εξηγησή του) => Παίζουμε με bit stuffing.


δηλαδη απλά έβαλα ανάμεσα στα 2 flags (αρχής και τέλους) την ακολουθία που πρέπει να μεταδώσω δεν έκανα τιποτε αλλο.

Υπάρχουν όμως μερικά προβληματάκια στα παραπάνω. Καταρχήν το πρωτόκολλο HDLC (High Level Data Link Control έχει προκαθορισμένα flags για να οριοθετεί το πλαίσιο. Τα flags αυτα (τέλους + αρχής) ουσιαστικά ειναι ίδια και περιγράφονται απο το byte -> 01111110 , μπορεί να εμφανισθεί οποιαδήποτε ακολουθία απο bit στα δεδομένα αλλα θέλουμε να αποφύγουμε το παραπάνω byte flag για να μην νομίσει ο δέκτης προώρα οτι το πακέτο τελειώνει και έτσι δεν λάβει το σωστό πακέτο. Πέρα απο το παραπάνω πρόβλημα το οποίο μεταξυ μας δεν ειναι πρόβλημα αλλα προβλημα αρχίζει να γίνεται μολις εμφανίζεται το byte flag μέσα στα δεδομένα μας και αυτο φυσικά διορθώνεται με το bit stuffing δηλαδη μετα απο 5 άσσους βάζεις ενα "0" . Πέρα απο αυτό υπάρχει και ενα άλλο πρόβλημα. Το πρωτόκολλο HDLC το οποίο ειναι ενα πρωτόκολλο προσανατολισμένο σε δυαδικά ψηφία ορίζει και μια ακολουθία τερματισμού όταν υπάρξει λάθος στο πακέτο , η ακολουθία αυτή είναι -> 0 και 7 άσσοι -> 01111111. Και αυτη η περίπτωση θα αντιμετωπισθεί με bit stuffing ΑΛΛΑ αν το bit stuffing μπει μετα τον 6 άσσο πέφτουμε πάνω στο flag byte που ορίζει το HDLC επομένως η προσθήκη του "0" θα γίνει πάλι απο τον 5 άσσο και μετα (ακριβως μετα τον 5ο άσσο). ΣΥμφωνα λοιπον με όσα γράφτηκαν η ζητούμενη ακολουθία θα είναι :

Spoiler: show
Κώδικας: Επιλογή όλων

FLAG αρχής -> 01111110 x1-> 00111 x2-> 11"0"11 x3->01001 x4->01001 x5-> 1111"0"10 FLAGτελους-> 01111110


Τέλος ο δέκτης ο οποίος γνωρίζει το πρωτόκολλο αφαιρεί το "0" που ακολουθείται απο 5 ψηφία (αφαίρεση της προσθήκης) ωστε να ανακτήσει το αρχικό πακέτο. Μπορεί κάποιος να αναρωτηθεί αν θα αλλοιωθεί η πληροφορία με αυτον τον τρόπο. Όχι διοτι η δουλειά αυτη γίνεται μονο για λόγους πλαισίωσης και για λόγους που αναφέρθηκαν και πιο πανω , αν προσέξετε άλλωστε πχ στο x5 τμημα της δεδομένης μεταδιδόμενης ακολουθίας μολις ο δέκτης βγάλει το "0" θα μείνουν οι άσσοι και γενικότερα η "δομη" του τμήματος οπως πριν. Αυτο που λεω μπορει να φαίνεται αυτονόητο αλλα καμια φορα χρειάζεται να το σκεφτεί κάποιος για να μην μπερδευτεί φυσικα αν δεν χρειάζεται σε κάποιον μπορει να το αγνοήσει. :)

2.4

* H παρουσίαση του 2.4 θα γίνει σε επόμενο ποστ για να μικρύνουμε λιγο το μέγεθος του οδηγου Βλέπε Σελ.2 *

2.5

Πάμε τωρα να δούμε τι είναι το NAT το οποίο πολυ συχνά θα δείτε και σαν προδιαγραφή σε κάποιον δρομολογητή. Σε εμπορικές διαφημίσεις μπορεί να δει κάποιος για μια συσκευή οτι διαθέτει και μια προδιαγραφή (ανάμεσα στα άλλα τεχνικά χαρακτηριστικά) γνωστη ως NAT. Τί ειναι τελικα το NAT και ποια η ακριβής υπηρεσία του ?

Για εγκυκλοπαιδικους λόγους το NAT είναι μια τεχνολογία η οποία αναπτύχθηκε απο την Cisco . To ΝΑΤ ουσιαστικά προσφέρει (οπως αλλωστε το λέει και το ονομα του) την υπηρεσία της μετάφρασης των διευθύνσεων του δικτύου. Έχουμε ξανατονίσει την σχέση μεταξύ ονόματος και λειτουργίας στην ΠΛηροφορική (αλλα και οχι μονο) ένα βήμα για να προσεγγίσουμε κατι το οποίο δεν γνωρίζουμε καθολου χωρις να "ψαρώσουμε" ειναι να σκεφτούμε το ονομά του. :) Πάμε ομως να δούμε και ενα παράδειγμα για να καταλάβουμε καλυτερα την συγκεκριμένη προδιαγραφή. Έστω μια συσκευή ΝΑΤ με κάποια IP.
και 3 υπολογιστές Α , Β , Γ στο τοπικό δίκτυο (πίσω απο αυτην την συσκευή) με αντίστοιχες IP διευθύνσεις 192.168.32.10 , 192.168.32.12 . 192.168.32.15 Καταρχήν πισω απο την συσκευή το τοπικό δίκτυο μπορει να χρησιμοποιήσει οποιονδήποτε χώρο διευθύνσεων οπως θα έχετε καταλάβει ως τωρα αλλα και απο το παραδειγμά μας.

ΕΡΩΤΗΣΗ 1 => Με ποιά IP διεύθυνση θα συνδεθεί στο Ίντερνετ ο υπολογιστής Α? Με ποιά ο Β και με ποιά ο Γ?

Αυτό εξαρτάται απο το NAT table της συσκευής. :)

Εικόνα

To NAT στην ουσία αντιστοιχεί IP διευθύνσεις απο αυτο το ιδιωτικό εύρος.
Ειδικά στο SNAT (Static NAT) ο ΗΥ με IP 192.168.32.10 πάντα θα μεταφράζεται σε 213.18.123.110
O πίνακας του ΝΑΤ αποτελείται απο 2 καταχωρήσεις. Μετάφραση εσωτερικών και εξωτερικών διευθύνσεων επομενως γινεται αντιληπτό πως η κάθε καταχώρηση έχει 2 μέρη την τοπική και την παγκόσμια διεύθυνση.

ΜΙα συσκευή NAT έχει αρκετά πλεονεκτήματα ενα απο τα οποία έχει να κάνει με την ασφάλεια επειδή ουσιαστικά μπορεί να εμποδίσει μια εξωτερική επίθεση να μάθει πληροφορίες για το εσωτερικό δίκτυο. Μια πρώτη γραμμή άμυνας λοιπον και περιμετρικά ενος δικτύου είναι αυτο ακριβώς.
Στο έξω ίντερνετ η συσκευή NAT δείχνει σαν κάθε υπολογιστής συνδεδεμένος στο ίντερνετ. Επομένως η συσκευή ΝΑΤ ειναι ουσιαστικά ενας μεσάζων μεταξύ του Ιντερνετ και του τοπικού δικτύου. Πράγμα που περιορίζει τις διευθύνσεις που απαιτούνται απο μια εταιρεία , μονο η ίδια η συσκευή ΝΑΤ όπως είδαμε και παραπάνω μπορει να είναι προσπελάσιμη απο το Ίντερνετ. Η διαμόρφωση λοιπον λιγότερων διευθύνσεων μαζι με την ασφάλεια που προσφέρουν οι συσκευές ΝΑΤ τις έχουν κανει αρκετα δημοφιλείς σε τοπικά και εταιρικά δίκτυα.

Ώστοσο η ασφάλεια δεν υπάρχει παντοτε 100% και αυτος είναι ενας βασικός κανόνας ασφάλειας ακομη και οι πολυ ασφαλείς συσκευές ΝΑΤ μπορούν να παραβιαστούν.


3

Και σε αυτο το σημείο ήρθε η ώρα να διερευνήσουμε λιγο και το δικό μας σύστημα ως προς όλα αυτα που έχουμε πει μεχρι τωρα. Καταρχήν σε αυτη την παράγραφο θα εξετάσουμε 2 εντολές βασικά (τις οποίες μπορούμε να χρησιμοποιήσουμε για να δούμε στοιχεία για το τοπικό μας δίκτυο) και αυτες είναι οι

Spoiler: show
Κώδικας: Επιλογή όλων
arp / ifconfig


οι περισσότεροι που είστε αρκετό καιρό χρήστες κάποιας διανομής linux θα τις γνωρίζετε αρκετά καλα. Στο σημείο αυτο και μονο!!! Για όσους έχουν τα Windows σαν dual boot να πω πως η αντίστοιχη εντολή της ifconfig στα παράθυρα ειναι η /ipconfig.

Για την εντολή arp μπορεί κάποιος να ανατρέξει και στο manual της

Κώδικας: Επιλογή όλων
http://www.kernel.org/doc/man-pages/online/pages/man7/arp.7.html


Ωστόσο αν θέλουμε να δούμε τι flags μπορεί να πάρει θα δώσουμε απο το τερματικό την παρακάτω εντολή

Spoiler: show
Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ arp --help
Usage:
  arp [-vn]  [<HW>] [-i <if>] [-a] [<hostname>]             <-Display ARP cache
  arp [-v]          [-i <if>] -d  <host> [pub]               <-Delete ARP entry
  arp [-vnD] [<HW>] [-i <if>] -f  [<filename>]            <-Add entry from file
  arp [-v]   [<HW>] [-i <if>] -s  <host> <hwaddr> [temp]            <-Add entry
  arp [-v]   [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub          <-''-
            -a                 display (all) hosts in alternative (BSD) style
        -s, --set                set a new ARP entry

....
[spoiler]

Ειναι το output της εντολής που έδωσα. (Ένα μέρος του για την ακρίβεια) Το οποίο μας δείχνει μερικά flags που μπορούμε να δώσουμε
σαν ορίσματα στην εντολή αναλογα με το τι θέλουμε να κάνουμε κάθε φορα.

Άν δώσουμε την εντολή λοιπόν με το όρισμα --all
τοτε θα μας δείξει το ARP cache για το οποίo λόγος έχει γίνει στην 2.2 παράγραφο . Πάμε λοιπον να δώσω αυτη την εντολή απο το δικο μου
τερματικό :

[spoiler]
Κώδικας: Επιλογή όλων
  kostas@kostas-SSL:~$ arp --all
oxygen.lan (192.168.1.254) at 00:1d:1e:01:43:4d [ether] on eth0


Θα μου δείξει λοιπον οπως έχουμε εξηγήσει και πιο πάνω οτι αυτη τη στιγμή στο ARP cache του υπολογιστή μου βρίσκεται το entry IP/MAC
του ρουτερ μου (μονο το ρουτερ εχω συνδεδεμένο με τον υπολογιστή μου στο τοπικό μου δίκτυο και κανεναν αλλον υπολογιστή) , επομένως υπάρχει αυτη η εγγραφή. Παρόμοια μπορώ να δώσω την arp και με όρισμα --set

Spoiler: show
Κώδικας: Επιλογή όλων

kostas@kostas-SSL:~$ arp --set
arp: need host name
kostas@kostas-SSL:~$



Εδώ βέβαια έπρεπε να δώσω και ενα hostname. Eδω ουσιαστικά θα πρόσθετα ενα μόνιμο στοιχείο στο ARP cache με μη αυτόματο τρόπο.Το οποίο θα παρέμενε μόνιμα σε κάθε επανεκκίνηση του υπολογιστή μου.


Πάμε τώρα να δούμε και μια άλλη εντολή η οποία χρησιμοποιείται και αυτη για να μας δώσει πληροφορίες για το τοπικό μας δίκτυο καθως και για την διαμόρφωση του διαδικτυακού μας interface. Η εντολή αυτη οπως πολλοι θα καταλάβατε ειναι η ifconfig

ΑΠο το τερματικό για βοήθεια μπορώ να δώσω τις :

Spoiler: show
Κώδικας: Επιλογή όλων

kostas@kostas-SSL:~$ man ifconfig
kostas@kostas-SSL:~$
kostas@kostas-SSL:~$ ifconfig --help


οπως δηλαδη και πριν μια για το manual που παρέχει γενικότερη τεκμηρίωση και μια για τα flags συγκεκριμενα που χρησιμοποιεί η εντολή. Αν δωσω την εντολή μονη της (χωρίς ορίσματα)

Spoiler: show
Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ifconfig
eth0      1->Link encap:Ethernet  2->HWaddr 1c:6f:63:4b:b1:10 
          3->inet addr:192.168.1.90  4->Bcast:192.168.1.255  5->Mask:255.255.255.0
          inet6 addr: fe80::1e6f:65ff:fe4b:b110/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  6->MTU:1500  Metric:1
          RX packets:18068 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16308 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:18816320 (18.8 MB)  TX bytes:4125726 (4.1 MB)
          Interrupt:42 Base address:0xe000

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:720 (720.0 B)  TX bytes:720 (720.0 B)


Στο 1-> Μου δείχνει οτι ουσιαστικα το δίκτυο μου ειναι ενα Ethernet δίκτυο
στο 2-> Έχει την MAC διεύθυνση του υπολογιστη μου του προσαρμογέα του δικτύου μου
στο 3-> Έχει την IP διεύθυνση του προσαρμογέα στο 4-> την διεύθυνση broadcast (πακέτο τέτοιας διεύθυνσης μέσα σε ένα δίκτυο οπως έχουμε πει και οταν έλεγα για το ARP μεταδίδεται και προορίζεται για όλους τους υπολογιστές μεσα στο τοπικό)
και τελος στο 5-> είναι η προκαθορισμένη μάσκα για δίκτυα κλάσης C. Επίσης στο 2ο interface (το κυρίως ειναι το eth0) μου εχει και το lo (το οποίο ειναι για εσωτερικούς ελέγχους του TCP/IP στο συστημά μας και για το οποίο θα μιλήσουμε σε επόμενη παρουσίαση. Και τέλος το 6-> MTU στο οποίο θα παραμείνω λιγο για να δώσω μια συνοπτική εξήγηση.

MTU

Καταρχήν στα δίκτυα είναι πολυ σημαντικό το μέγεθος του πλαισίου ή του πακέτου γενικότερα για την μετάδοση των δεδομένων σε οποιοδήποτε δίκτυο.
Για αυτο τον λογο λοιπον υπάρχουν ορισμένοι συγκεκριμένοι κανόνες που "μανατζάρουν" αυτο το μέγεθος των data packets. Αυτο γίνεται κυρίως μέσω μια τεχνικής στα δίκτυα των τηλεπικοινωνιών την οποία ονομάζουμε κατακερματισμό το ισοδυναμο αγγλικο terminology για αυτον τον ορο ειναι το fragmentation . Μεσω λοιπον του fragmentation μπορεις να μανατζάρεις και να ελένξεις το μέγεθος ενος πακέτου γλιτώνοντας έτσι απο συμφόρηση μέσα στο δίκτυο αλλα και καθυστερήσεις στην μετάδοση 2 σοβαρούς παράγοντες οι οποίοι επηρεάζουν το QoS (Quality of service) την ποιοτητα δηλαδη της υπηρεσίας που υπόσχεται το εκάστοτε δίκτυο στον πελάτη του. Το πως θα γίνει τωρα αυτη η διαδικασία (κατακερματισμός) φαίνεται στο IP datagram , το IP datagram ειναι απλα το πακέτο του επιπέδου δικτύου. Το ίδιο πακέτο στο επιπεδο που βρισκόμαστε ("ξαλαφρωμενο" βέβαια απο το IP Header) έχουμε δει οτι λέγεται frame δηλαδη πλαίσιο. Στο IP datagram λοιπον υπάρχουν πεδία που υποδεικνύουν δυνατότητες σχετικές με τον κατακερματισμό αυτες τις δυνατότητες θα τις δούμε σε επόμενη παρουσίαση.

Τώρα ! Το MTU σημαίνει μέγιστη μονάδα μετάδοσης => Maximum Trasfer (ή και Transmission) μπορειτε να το δείτε Unit -οτι ακριβως λεει και το ονομα του δηλαδη- τυπικό παράδειγμα σε μένα είναι το 1500 bytes MTU κατι που σημαίνει πως δεδομένα με μήκος μεγαλύτερο απο 1500 κατατέμνονται σε μικρότερο πακέτα τα οποία στέλνονται διαδοχικά (λογω της διαδικασίας του fragmentation) στην γραμμή επικοινωνίας.


Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Μη εμπορική χρήση-Παρόμοια διανομή 3.0 Ελλάδα