Δίκτυα Υπολογιστών


Theory Notes

Το διαδίκτυο αποτελείται από 3 επίπεδα ή κύκλους από nodes.

Ο πιο μέσα κύκλος, ο πυρήνας του διαδικτύου, ονομάζεται το backbone και περιλαμβάνει τις γραμμές οι οποίες μας παρέχουν long-distance high-bandwidth. Αυτές οι γραμμές είναι φτιαγμένες με το πιο γρήγορο fiber optic connection που είναι διαθέσιμο.

Ο δεύτερος κύκλος αποτελείται από τους Internet Service Providers(ISPs). Που επικοινωνούν με τα άτομα που παρέχουν τις γραμμές του backbone και με την σειρά τους τις παρέχουν σε εμάς τους Users.

Ο τρίτος κύκλος είμαστε εμείς οι End-Users.



Packet Switches

To διαδίκτυο είναι ένα packed-switched data network, το οποίο σημαίνει ότι τα μυνήματα που στέλνονται μέσω του διαδικτύου διαχωρίζονται σε πακέτα, δηλαδή μικρά κομμάτια δεδομένων, τα οποία ενώνονται πάλι στο τέλος του προορισμού τους.

Το format των πακέτων αυτών ακολουθεί το standard γνωστό ώς IP Protocol(IP) και περιλαμβάνει μία IP διεύθυνση η οποία καθορίζει τον προορισμό του.

Κάθε packet switch έχει πολλαπλές συνδέσεις πάνω του. Για κάθε μία από αυτές τις συνδέσεις έχει και ένα output buffer, το οποίο αποθηκέυει πακέτα τα οποία το router πάει να στείλει σε μία σύνδεση.

Αυτός ο buffer παίζει σημαντικό ρόλο στο packet switching. Αν για παράδειγμα έρθει ένα πακέτο στον buffer το οποίο πρέπει να διαβιβαστεί σε μία σύνδεση αλλά αυτή η σύνδεση είναι απασχολημένη, γιατί πχ στέλνει άλλο πακέτο, τότε πρέπει να περιμένει.

Αυτό σημαίνει ότι ο output buffer έχει το πρόβλημα του queuing delay. Μάλιστα επειδή το ο χώρος στον buffer είναι συγκεκριμένος όταν θα έρθει ένα πακέτο στον buffer και "δει" ότι ο buffer είναι γεμάτος με άλλα πακέτα τότε θα συμβεί το λεγόμενο packet loss.



Circuit Switching

Υπάρχουν δύο θεμελιώδεις προσεγγίσεις στο να μεταφέρουμε δεδομένα μέσω ενός δικτύου από συνδέσεις και switches:

  • Packet Switching
  • Circuit Switching

Σε Circuit Switching διαδίκτυα, οι πόροι που χρειάζονται σε ένα path(δλδ buffers, link transmission rate) ώστε να παρέχουν επικοινωνία με το τελικό σύστημα δεσμεύονται για όλη τη διάρκεια της επικοινωνίας.

Ενώ σε Packet Switching διαδίκτυα, οι πόροι δεν δεσμεύονται για όλη την διάρκεια αντιθέτως χρησιμοποιούν τους πόρους κατα βούληση και γι αυτό μερικές φορές πρέπει να περιμένουν όπως είδαμε πριν.

Ένα παράδειγμα για να γίνει καλύτερη η κατανόηση της διαφοράς τους:

Έστω ότι έχουμε δύο εστιατόρια.

Για το 1ο εστιατόριο είναι απαρέτητο να έχουμε κάνει κράτηση τραπεζιού για να παμε ενώ το 2ο δεν χρειάζεται να κάνουμε κράτηση αλλά δεν υποστηρίζει κι όλας.

Άρα στο 1ο εστιατόριο πρέπει να μπούμε στον κόπο να πάρουμε τηλέφωνο και να κρατήσουμε τραπέζι για να πάμε να φάμε. Το θετικό όμως είναι πως όταν πάμε εκεί δεν θα χρειάζεται να περιμένουμε, θα κάτσουμε κατευθείαν.

Στο 2ο εστιατόριο μπορούμε να πάμε κατευθείαν στο εστιατόριο όποτε θέλουμε χώρις να μπούμε σε κανένα κόπο επικοινωνίας με το εστιατόριο. Παρόλα αυτά όμως ίσως να πρέπει να περιμένουμε μέχρι να έρθει η σειρά μας να μπούμε μέσα.

Σε περίπτωση αυτή το 1ο εστιατόριο ήταν Circuit Switching ενώ το 2ο εστιατόριο ήταν Packet Switching.



Επίπεδα πρωτοκόλλου

Για να παρέχουν μία οργανωμένη δομή στο σχέδιο των network protocols οι network designers οργανώνουν τα πρωτόκολλα καθώς και το hardware και software που εφαρμόζουν τα πρωτόκολλα αυτά σε layers.

Κάθε πρωτόκολλο ανήκει και σε ένα Layer. Μας ενδιαφέρει να μάθουμε τις υπηρεσίες που προσφέρει ένα layer στο ανώτερο layer το λεγόμενο service model ενός layer.

Κάθε layer λοιπόν παρέχει τις υπηρεσίες τους με:

  1. Εκτελώντας ορισμένες ενέργειες μέσα στο ίδιο το Layer
  2. Χρησιμοποιόντας τις υπηρεσίες του Layer που βρίσκεται ακριβώς από κάτω του.

Ένα πρωτόκoλλο layer μπορεί να υλοποιηθεί σε software, σε hardware ή σε συνδυασμό των δύο.

  • Application Layer

To application layer του διαδικτύου περιλαμβάνει πολλά πρωτόκολλα όπως HTTP protocol, SMTP protocol και FTP protocol.

Ένα application layer protocol κατανέμεται σε πολλαπλά end systems. Με την εφαρμογή σε ένα end system να χρησιμοποιεί το πρωτόκολλο ώστε να ανταλλάξει πακέτα πληροφοριών με μία εφαρμογή σε ένα άλλο end system. Αυτά τα πακέτα πληροφοριών θα τα αποκαλούμε messages.

  • Transport Layer

To transport layer του διαδικτύου μεταφέρει application layer messages μεταξύ endpoint εφαρμογών. Υπάρχουν δύο γνωστά transport protocols το TCP και UDP.

Το TCP προσφέρει την σιγουριά ότι το message θα φτάσει στον προορισμό του και αντίστοιχη ταχύτητα πομπού/δέκτη.

Το UDP δεν προσφέρει σιγουριά για το αν ένα message θα φτάσει στον προορισμό του και δεν προσφέρει αντίστοιχη ταχύτητα πομπού/δέκτη.

  • Network Layer

To network layer του διαδικτύου μεταφέρει network layer πακέτα γνωστά ως datagrams από έναν εξυπηρετητή σε έναν άλλο. Αυτό το layer περιλαμβάνει το γνωστό IP protocol.

Υπάρχει μόνο ένα IP protocol και όλα τα κομμάτια του διαδικτύου που έχουν network layer πρέπει να χρησιμοποιούν το IP protocol.

  • Link Layer

To network layer του διαδικτύου δρομολογεί ένα datagram μέσω μιάς σειράς δρομολογητών μεταξύ του source και του destination. Ορισμένα link layer protocols είναι τo Ethernet, WiFi και DOCSIS protocol.

Ένα datagram συνήθως για να ταξιδέψει από τον source στο destination περνάει από διάφορα links, το οποίο σημαίνει ότι ένα datagram μπορεί να περαστεί από διάφορα link layer protocols σε διαφορετικά links κατά την δρομολόγηση του.

Τα link layer πακέτα τα ονομάζουμε frames.

  • Physical Layer

To physical layer του διαδικτύου μεταφέρει μεμονομένα bits μέσα σε ένα frame από ένα node στο επόμενο. Τα protocols σε αυτό το layer εξαρτόνται από τα links.

Για παράδειγμα, το Ethernet έχει πολλά physical layer protocols ένα χάλκινο καλώδιο, ένα άλλο ομοαξονικό καλώδιο, ένα άλλο με ίνες κτλ.



Διαδικασία μεταξύ των διαφόρων Layers

Όλα αρχίζουν από όταν μία end-user εφαρμογή στέλνει δεδομένα σε μία άλλη. Τα δεδομένα αυτά αρχικά, περνάνε από και τα 7 Layers προς τα κάτω (Application -> Physical).

Κατά την διάρκεια αυτή, το πρωτόκολλο σε κάθε Layer χειρίζεται τα δεδομένα αυτά προσθέτωντας διάφορα headers πληροφοριών, κάνοντας μετατροπές σε άλλα formats, συνδυάζοντας πακέτα για να φτιαχτούν μεγαλύτερα πακέτα κτλ.

Μέχρι που το πακέτο φτάνει στο Physical Layer από το οποίο μέσω καλλωδίων μεταφέρεται στον υπολογιστή παραλήπτη.

Αφότου καταφέρει και φτάσει στον προορισμό του, περνάει πάλι από τα 7 Layers αλλά από κάτω προς τα πάνω (Physical -> Application). Τώρα όμως τα protocols σε κάθε Layer κάνουν την αντίστροφη διαδικασία.

Αφαιρούνται τα headers, τα δεδομένα μετατρέπονται πάλι στο αρχικό τους format κτλ.

Τέλος τα δεδομένα φτάνουν στο Application Layer όπου πλέον μπορούμε να επεξεργαστούμε εμείς τα δδεδομένα αυτά.



Routers

To Router είναι μία συσκευή η οποία ανήκει στο Network Layer του OSI. Ο σκοπός του είναι να συνδέσει δύο ή περισσότερα networks ώστε τα πακέτα να μετακινούνται με άνεση μεταξύ τους.

Όταν ένα router λάβει ένα πακέτο από ένα network, το οποίο έχει προορισμό μία συσκευή σε ένα άλλο network τότε το router καθορίζει τον καλύτερο τρόπο για να φτάσει το πακέτο στον προορισμό του.



Routing Table

Κάθε router έχει μία λίστα από networks στα οποία έχει πρόσβαση μέσω των interfaces του. Η λίστα αυτή ονομάζεται Routing Table.

Όταν ένα πακέτο φτάνει σε ένα από τα interfaces του router, το router εξετάζει το destination IP του ερχόμενου πακέτου και κοιτάει το Routing Table ώστε να αποφασίσει ποιο από τα interfaces θα πρέπει να χρησιμοποιηθεί για να στείλει το πακέτο και αφότου το βρει απλά το στέλνει στο σωστό interfaces.

Γενικά το routing table μπορεί να είναι απλό αλλά και περίπλοκο.

  • Απλή περίπτωση: Σε αυτή την περίπτωση το routing table δημιουργήτε χειροκίνητα με static routes. Το μόνο που πρέπει να γνωρίζουμε είναι η IP address, subnet mask και την gateway address.

  • Περίπλοκη περίπτωση: Σε αυτή την περίπτωση χρησιμοποιούνται πολλαπλά routers και χρησιμοποιούνται ειδικά routing protocols για να δημιουργήσουν δυναμικά routes. Αυτά τα protocols είναι φτιαγμένα ώστε να βρίσκουν την τοπολογία των networks.



DHCP

Γενικά κάθε συσκευή στο TCP/IP network πρέπει να έχει μία μοναδική IP address. Οπότε όταν μια συσκευή συνδεθεί στο διαδίκτυο θα πρέπει να του δοθεί μία σωστή IP address η οποία προφανώς είναι στο σωστό εύρος των addresses για το subnet αλλά και να μην χρισημοποιείται.

Αυτή η δουλειά μπορεί να γίνει manually αλλά όταν έχουμε πολλές συσκευές σε ένα δίκτυο τότε γίνεται κουραστική.

Για αυτό υπάρχει και το DHCP (Dynamic Host Configuration Protocol). Το DHCP αυτοματοποιεί την όλη διαδικασία και δεσμεύει μία IP address για κάθε συσκευή.

Πως λειτουργεί:

  1. Όταν ένας υπολογιστής αρχίζει το DHCP client λογισμικό στέλνει ένα ειδκικό πακέτο γνωστό ως DHCP Discover message.

  2. Ο DHCP server λαμβάνει αυτό το πακέτο και απαντάει στέλνοντας ένα DHCP Offer message. Αυτό περιλαμβάνει την IP address την οποία μπορεί να χρησιμοποιήσει ο υπολογιστής.

  3. Ο υπολογιστής λαμβάνει αυτό το μύνημα και στέλνει ένα άλλο με όνομα DHCP Request message. Σε αυτό το βήμα η IP που στάλθηκε στον υπολογιστή δεν χρησιμοποιείται. Απλά στέλνει μύνημα ότι είναι έτοιμος να πάρει αυτή την IP address.

  4. Ο server λαμβάνει το προηγούμενο μύνημα και μαρκάρει την IP αυτή ως δεσμευμένη στον συγκεκριμένο υπολογιστή και του στέλνει το DHCP Ack message.

  5. Τέλος, όταν ο υπολογιστής λάβει το μύνημα αυτό έχει πλέον μία σωστή IP address.



Multiplexing

Demultiplexing

SOON!



Διάφορες εντολές στο CMD

  • ipconfig and ping

    Αυτά τα δύο μας βοηθούν στην ανάλυση, ρύθμιση και στην δοκιμή των IPV4 και IPV6 συνδέσεων.

    Η εντολή ipconfig εμφανίζει πληροφορίες σχετικά με τον προσαρμογέα δικτύου μας, δηλαδή τις ρυθμίσεις TCP/IP.

    Η εντολή ping χρησιμοποιείται για τον έλεγχο της συνδεσιμότητας με άλλους host, μας ενημερώνει μέσω των αποτελεσμάτων της εάν ένας remote host είναι "ζωντανός" στο δίκτυο.

Γράψτε στο CMD:

ipconfig

Το αποτέλεσμα που εμφανίζεται στην οθόνη είναι η IP διεύθυνση, η μάσκα υπόδικτύου και το default gateway του adapter μας.

Παρόλα αυτά το ipconfig από μόνο του δεν μας δείχνει πολλά. Αν για παράδειγμα θέλουμε να δούμε την MAC address μας πρέπει να χρησιμοποιήσουμε άλλη εντολή.

Για να εμφανίσουμε περισσότερα δεδομένα γράφουμε στο CMD:

ipconfig /all

Τώρα βλέπουμε περισσότερες λεπτομέρειες όπως το MAC address μας.

Όπως γνωρίζουμε ο υπολογιστής μας παίρνει αυτόματα μία νέα IP διεύθυνση όταν συνδέεται στο διαδίκτυο.

Γράψτε στο CMD:

ipconfig /release

Με αυτή την εντολή αφαιρέσαμε την IP διεύθυνση που πήρε ο υπολογιστής μας αυτόματα από τον DHCP server. Με αποτέλεσμα να μην έχουμε πρόσβαση στο διαδίκτυο.

Για να αποκτήσουμε μία καινούρια IP διεύθυνση γράφουμε την ακόλουθη εντολή:

ipconfig /renew

Τώρα γράψτε:

ping 127.0.0.1

Μόλις κάναμε ping στο localhost μας.

Μπορούμε όμως να κάνουμε και ping μία IP που δεν βρίσκεται στο τοπικό μας διαδίκτυο. Για παράδειγμα:

ping www.google.com

Αν είμαστε και οι δύο σνδεδεμένοι στο διαδίκτυο τότε το ping θα στείλει x αριθμό πακέτων και θα πάρει πίσω τον ίδιο αριθμό απαντήσεων.

Σε περίπτωση όπου ο υπολογιστής που κάνουμε ping ειναι εκτός σύνδεσης τότε θα λάβουμε μία από τις ακόλουθες απαντήσεις Request timed out, Destination host unreachable.

Μπορούμε να διαλέξουμε πόσα πακέτα θα στείλουμε γράφοντας την ακόλουθη εντολή:

ping -n 13 www.google.com

Αυτή την φορά θα σταλθούν 13 πακέτα, οπότε θα λάβουμε και 13 απαντήσεις.

  • netstat

    Γενικώς χρησιμοποιείται για δούμε διάφορες πληροφορίες σχετικά με την συνδεση μας στο διαδίκτυο.

Γράψτε στο CMD:

netstat

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

Από μόνο του χωρίς καμία παράμετρο θα εμφανίσει τις ενεργές συνδέσεις TCP του υπολογιστή μας. Γενικά όμως μπορούμε να μάθουμε πολλά περισσότερα από το netstat άμα του περάσουμε κάποιες παραμέτρους.

Με παραμέτρους μπορεί να μας δείξει τις θύρες στις οποίες ακούει ο υπολογιστής, τα στατιστικά στοιχεία Ethernet, τον πίνακα δρομολόγησης IP, τα στατιστικά στοιχεία IPv4 (για τα πρωτόκολλα IP, ICMP, TCP και UDP) και τα στατιστικά στοιχεία IPv6 (για τα πρωτόκολλα IPv6, ICMPv6, TCP over IPv6 και UDP over IPv6).

netstat -a

Με την παράμετρο -a θα εκτυπώσει στην οθόνη όλες τις ενεργές συνδέσεις TCP καθώς και όλες τις θύρες που ακούει ο υπολογιστής μας για TCP και UDP.


netstat -e

Με την παράμετρο -e θα εκτυπώσει στην οθόνη στατιστικά στοιχεία για Ethernet σύνδεση όπως τον αριθμό bytes και πακέτων που στάλθηκαν αλλά και λήφθηκαν.


netstat -r

Με την παράμετρο -r θα εκτυπώσει στην οθόνη τον πίνακα δρομολόγησης IP.

  • nslookup

    Εμφανίζει πληροφορίες που μπορούμε να χρησιμοποιήσουμε για τη διάγνωση του DNS.

Γράψτε στο CMD:

nslookup www.google.com