Δημοσιεύτηκε: 25 Σεπ 2011, 23:32
από Star_Light
Μέρος 2ο
=========================================================================================================

Συνεχίζουμε τον οδηγό με πρακτική και τεχνική ενασχόληση απο το Τερματικό μας. Οι 3 εντολές που θα ακολουθήσουν ουσιαστικά αποτελούν τα βασικα βοηθητικά προγραμματα του TCP/IP .

4.1

Το 1ο βοηθητικό πρόγραμμα που θα εξετάσουμε ειναι το ping. Η ονομασία του βασίζεται στην sonar τεχνολογία που χρησιμοποιείται απο τα υποβρύχια και γενικοτερα απο τα πλοία που θέλουν να εντοπίσουν αλλα αντικείμενα. Packet INternet Groper. Με λιγα λογια το ping σε ενα δικτυο χρησιμεύει ωστε να μπορέσει κάποιος να τεστάρει αν ενας υπολογιστής "ζει" ή οχι στο δίκτυο. Συνεχίζει δηλαδη ή οχι να ειναι ενεργό μέλος του δικτύου. Το ping προσφέρει επιλογές που το κάνουν αρκετα χρήσιμο για την αντιμετώπιση προβλημάτων σε ενα δίκτυο. Η μορφή μιας απλής εντολής ping χωρις ορίσματα ειναι :

Κώδικας: Επιλογή όλων
ping <IP_address>


πχ

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


για να δω αν το ρουτεράκι μου ειναι εντάξει.

[i] Το βοηθητικό πρόγραμμα ping στέλνει ενα μήνυμα στον δέκτη χρησιμοποιώντας την αίτηση ICMP echo , αν ο υπολογιστής υπάρχει && λειτουργεί αποκρίνεται με ενα ICMP echo Reply.

Τις διάφορες επιλογές και τα flags του προγράμματος ping μπορεί κάποιος να τα βρεί απο το manual της εντολής

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


Δεν θα αναφερθώ αλλο στις εντολές μιας και ειναι εύκολο κάποιος να τις βρεί και να τις υλοποιήσει. Θα σταθώ ομως σε 5 βασικές επισημάνσεις σχετικά με το ping.

1. -> Αν το ping λειτουργεί σωστά δεν σημαίνει πως ολα τα προβληματα σε ενα δικτυο ειναι λυμένα. Με το ping μπορεις να καταλάβεις οτι δεν έχεις προβλήματα με τους προσαρμογείς , το 2ο επίπεδο γενικότερα τα καλώδια τους δρομολογητές κτλπ. Αυτο ομως δεν σημαίνει πως δεν έχεις προβλήματα με υψηλότερα επίπεδα πχ ΜΕΤΑΦΟΡΑΣ και TCP / UDP :)

2. ->

Κώδικας: Επιλογή όλων
ping με IP Vs ping με hostname


Αν μπορείς να κάνεις ping σε έναν υπολογιστή με την λογική του διεύθυνση αλλα οχι με το hostname του τοτε το πρόβλημα μπορει να βρίσκεται στην επίλυση των ονομάτων (DNS) .

3. ->
Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ ping 192.168.1.254
PING 192.168.1.254 (192.168.1.254) 56(84) bytes of data.
64 bytes from 192.168.1.254: icmp_req=1 ttl=64 time=0.965 ms
64 bytes from 192.168.1.254: icmp_req=2 ttl=64 time=6.64 ms
64 bytes from 192.168.1.254: icmp_req=3 ttl=64 time=4.89 ms
64 bytes from 192.168.1.254: icmp_req=4 ttl=64 time=2.88 ms
^C
--- 192.168.1.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.965/3.845/6.642/2.130 ms


Αν οι απαντήσεις του ping επιστρέφουν με μια τιμή στο πεδίο TTL (Time to Live) κοντα στο 0 αυτο μπορεί να ειναι μια ένδειξη οτι μερικά πακέτα χάνονται ή δεν φτάνουν.

4. ->

Αν σε ενα σύστημα που δουλεύει σε Windows (στο οποιο το ping στέλνει προκαθορισμενα 4 πακέτα ICMP ) κάποια δεν λαμβάνονται πχ τα 2 δεν φτάνουν αυτο δεν σημαινει 100% πρόβλημα στην σύνδεση αλλα στο ιδιο το πρωτόκολλο το οποιο δεν έχει σχεδιασθεί για να εγγυάται την παράδοση αλλα μπορει γενικότερα να ειναι και μια ένδειξη οτι το δίκτυο έχει πολλη κίνηση :)

5. ->

Το ping δείχνει 2 πράγματα. Αν ένας κόμβος είναι προσβάσιμος / ενεργός και υπάρχει ΚΑΙ το lag (τον χρονο δηλαδη απόκρισης). Δεν έχει καμια σχέση με τις ταχύτητες σύνδεσης επειδη πολλοι μπερδεύονται.

Οπως και άλλα πολλα προγράμματα ετσι και το ping προσφέρει διαφορες επιπλεον επιλογές στην γραμμή εντολών , αυτές οι επιλογές διαφέρουν αναλογα την υλοποιήση και το λειτουργικό σύστημα.

4.2

Το επόμενο βοηθητικό πρόγραμμα το οποίο θα εξετάσουμε στο επίπεδο που βρισκόμαστε ειναι το route. ΟΠως είδαμε και πιο πάνω καθε υπολογιστής ή δρομολογητής περιέχει εναν πίνακα δρομολόγησης το πρόγραμμα / εντολή route δείχνει και χειρίζεται τον IP πινακα δρομολόγησης.

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

Έτσι και εδω το πρωτο πράγμα που μπορει να μας λύσει τα χέρια ειναι το manual :)

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


Kαι θα ακολουθήσουν μερικά παραδείγματα εξόδων της εντολής route .


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

Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
default oxygen.lan 0.0.0.0 UG 100 0 0 eth0


Το απλο αυτο παράδειγμα έχει να κάνει με το δικο μου δίκτυο. Δεν υπάρχουν και πολλα που μπορω να εξετάσω εδω :D (Αν υπάρχουν και άλλες γραμμές σαν την 1η τοτε αυτο δείχνει πως υπάρχουν και άλλα υποδίκτυα ή υπολογιστές προορισμού).
Το δικτυό μου λοιπον ειναι το 192.168.1.0 (δίκτυο προορισμού) με eth0 interface και gateway το oxygen.lan (μπορεί καποιος να παρατηρήσει στα Flags το G ) και mask 0.0.0.0 . Το πεδίο Genmask ειναι πολυ σημαντικό οπως θα δούμε και με ενα παράδειγμα πιο κάτω διοτι έχει την μάσκα δικτύου η οποία δείχνει στον δρομολογητή σε ποιο δίκτυο θα πρεπει να προωθήσει το πακέτο που έλαβε με βάση την διευθυνσή του . To Metric ειναι η απόσταση (σε όρους hops- μεταπηδήσεων). Το Metric χρησιμοποιείται για να καθοριστεί η καλύτερη δρομολόγηση για εναν προορισμό. Το μικρότερο νούμερο ειναι συνήθως και καλύτερο (πιο γρήγορο) , είναι συσχετισμένο με ένα κόστος όταν υλοποιείται η διαδικασία της δυναμικής δρομολόγησης.

Με την

Κώδικας: Επιλογή όλων
route -n


μπορεί καποιος να βρεί την IP του default gateway (δηλαδή προς ποιον κόμβο πρεπει να στείλω το πακέτο για να φτάσει στο εν λογω υποδίκτυο)

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 192.168.1.254 0.0.0.0 UG 100 0 0 eth0
kostas@kostas-SSL:~$


Το πεδίο link-local που βλέπουμε καθως δίνουμε την εντολή route χωρις το flag -n έχει IP διεύθυνση
169.254.0.0 (στην ουσία αυτη η IP βρίσκεται στο εύρος των ιδιωτικών διευθύνσεων και χρησιμοποιείται κυριως για
μηδενική διαμόρφωση).

Έστω τωρα μια άλλη έξοδος της route :

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

Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 10 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 10 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.1 0.0.0.0 UG 10 0 0 eth0


Η έξοδος αυτη δεν έχει κάποια σημαντική διαφορά με την ακριβώς προηγούμενη. Το μονο ειναι μια extra γραμμή με διεύθυνση
127.0.0.1 και Interface αυτής lo . Ο βρόγχος loopback χρησιμοποιείται για εσωτερικό έλεγχο στο τοπικό μας σύστημα.

ΕΡΩΤΗΣΗ 4 Γιατί έχω IP 129.168.0.0 ενω η μάσκα 255.255.255.0 είναι μάσκα κλάσης C ας πούμε? Συμφωνα με την ανάλυση
που έχει προηγηθεί σε προηγούμενους οδηγούς η IP διεύθυνση απο μόνη της δεν δείχνει τίποτα για το τοπικό μας δίκτυο.
Η συγκεκριμένη διεύθυνση (χωρίς την μάσκα) δεν λέει τιποτα αν κάποιος την κοιτάξει. Μην την θεωρήσει κάποιος σαν κλάσης Β ας πούμε
ενω η μάσκα ειναι κλάσης C και μπερδευτεί! Η μάσκα δείχνει πόσα bit της IP χρησιμοποιούνται για τους host σε ένα δίκτυο.
Άλλωστε έχω πει πως η μάσκα αποτελεί ενα "manual" - "χάρτη" για το διάσβασμα μιας IP διεύθυνσης.

Πάντως λογω του οτι οι κλάσεις φεύγουν απο την "μόδα" σιγα σιγα και πέρα απο το CIDR αλλα και την επερχόμενη είσοδο στο IPv6
συχνά μπορεί (σίγουρα) θα δείτε και μια IP κάπως ετσι -> 192.168.0.0/24 αυτο σημαίνει πως 24 bit μάσκας χρησιμοποιούνται για το δίκτυο
ενω τα αλλα 8 για τους host .

Το πεδίο Use χρησιμοποιείται για να δείξει ποσα πακέτα έχουν σταλθεί μεσω του αντίστοιχου μονοπατιού.


4.3

Τέλος πάμε να πούμε και μερικά πραγματάκια για το βοηθητικό πρόγραμμα traceroute se Linux OS ή tracert σε Windows συστήματα.

Πάμε να το καλέσουμε απο την γραμμή εντολών

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ traceroute www.google.gr
traceroute to www.google.gr (74.125.39.104), 30 hops max, 60 byte packets

1 oxygen.lan (192.168.1.254) 0.797 ms 1.025 ms 3.079 ms
2 62.169.255.45 (62.169.255.45) 27.106 ms 29.005 ms 30.879 ms
3 62.169.192.70 (62.169.192.70) 32.367 ms 33.749 ms 34.672 ms
4 62.169.192.5 (62.169.192.5) 37.355 ms 38.393 ms 40.055 ms
5 te2-1.atene2.ate.seabone.net (213.144.178.145) 45.761 ms 46.416 ms 46.806 ms
6 72.14.216.181 (72.14.216.181) 85.373 ms 85.375 ms 72.14.198.233 (72.14.198.233) 84.709 ms
7 216.239.47.128 (216.239.47.128) 87.836 ms 97.385 ms 63.128 ms
8 72.14.232.78 (72.14.232.78) 89.400 ms 92.075 ms 72.14.232.76 (72.14.232.76) 86.604 ms
9 209.85.254.114 (209.85.254.114) 91.124 ms 209.85.254.116 (209.85.254.116) 93.776 ms 94.610 ms
10 * 209.85.249.166 (209.85.249.166) 99.373 ms *
11 fx-in-f104.1e100.net (74.125.39.104) 86.781 ms 90.489 ms 91.327 ms



Όπως όλοι μπορούμε να δούμε το πρόγραμμα ουσιαστικά δείχνει την διαδρομή που παίρνουν τα datagrams σε επίπεδο δικτύου.
Η διαδρομή αυτή φυσικά δεν ειναι μοναδική και δεν υπάρχει καμια εγγύηση οτι θα είναι στάνταρ και μοναδική. Απλά ειναι μια διαδρομή .
Το παραπάνω πρόγραμμα θα μπορούσα φυσικά να το καλέσω και με μια IP διεύθυνση .Δεν γνωρίζω απέξω τις IP των server της google :P
αλλα γνωρίζω με ποια εντολή μπορω να τις ανακτήσω.

Κώδικας: Επιλογή όλων
kostas@kostas-SSL:~$ host www.google.gr


οπότε μετα

Κώδικας: Επιλογή όλων
traceroute <IP_address>


Το traceroute ωστόσο ειναι αργό πρόγραμμα καθως οπως θα δείτε και μονοι σας πρέπει να περιμένει σε κάθε δρομολογητή μερικα δευτερόλεπτα!

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