Το λήμμα παραθέτει τις πηγές του αόριστα, χωρίς παραπομπές.Βοηθήστε συνδέοντας το κείμενο με τις πηγές χρησιμοποιώντας παραπομπές, ώστε να είναι επαληθεύσιμο. Η σήμανση τοποθετήθηκε στις 21/03/2021.
Το πρωτόκολλο Internet Control Message Protocol (ICMP) είναι ένα από τα βασικά πρωτόκολλα τουδιαδικτύου. Χρησιμοποιείται κυρίως από ταλειτουργικά συστήματατωνηλεκτρονικών υπολογιστών ενός δικτύουγιατην ανταλλαγή μηνυμάτων λάθους, όπως για παράδειγμα την έλλειψη κάποιας υπηρεσίας από έναν server ή την απουσία ενός υπολογιστή από το δίκτυo.
Το πρωτόκολλο ICMP διαφέρει από τα πρωτόκολλα TCPκαιUDP διότι συνήθως δεν χρησιμοποιείται από τις εφαρμογές που εκτελούνται σε κάποιον υπολογιστή, αλλά από το λειτουργικό του σύστημα. Εξαίρεση σε αυτό τον κανόνα αποτελεί το εργαλείο ping, το οποίο στέλνει μηνύματα ICMP Echo Request σε κάποιον υπολογιστή του δικτύου γιανα διαπιστώσει εάν ο υπολογιστής αυτός υπάρχει ή όχι και επίσης πόσο χρόνο χρειάζεται το μήνυμα να φτάσει σε αυτόν. Εάν ο υπολογιστής αυτός υπάρχει, θα απαντήσει με μηνύματα Echo Response.
Το πρωτόκολλο ICMP έχει τυποποιηθεί στα έγγραφα RFC 792καιRFC 1122. Η έκδοση του πρωτοκόλλου που χρησιμοποιείται πιο συχνά είναι η έκδοση 4, η οποία ονομάζεται και ICMPv4 και αποτελεί μέρος του IPv4. Το IPv6 διαθέτει ένα αντίστοιχο πρωτόκολλο το οποίο ονομάζεται ICMPv6.
Τα μηνύματα ICMP κατασκευάζονται στο επίπεδο δικτύου και αποτελούν κανονικά πακέτα IP. Όπως καιτο πρωτόκολλο UDP, το ICMP δεν εγγυάται ότι το πακέτο θα φτάσει αξιόπιστα στον προορισμό του. Μερικές από τις πιο συνηθισμένες δικτυακές εφαρμογές χρησιμοποιούν πακέτα ICMP, όπως για παράδειγμα η εντολή traceroute. Η εντολή αυτή χρησιμοποιείται γιατην εύρεση όλων των κόμβων ενός δικτύου από τους οποίους πρέπει να περάσει ένα πακέτο γιανα φτάσει στον τελικό προορισμό του. Αυτό που κάνει ουσιαστικά είναι να στέλνει πακέτα UDP με συγκεκριμένο χρόνο ζωής (TTL - Time To Live) καινα περιμένει πακέτα ICMP πουνα περιέχουν μήνυμα σφάλματος "ο χρόνος ζωής τελείωσε" (Time To Live exceeded in transit) ή "ο προορισμός δεν βρέθηκε" (Destination unreachable). Στο σημείο αυτό αξίζει να αναφερθεί ότι ο χρόνος ζωής (TTL - Time To Live) ενός πακέτου είναι ο μέγιστος αριθμός των κόμβων του δικτύου από τους οποίους θα πρέπει να περάσει έως ότου φτάσει στον προορισμό του. Εάν ένα πακέτο κατά την πορεία τουστο δίκτυο περάσει από περισσότερους κόμβους απ' ό,τι αναγράφεται στο πεδίο TTL, τότε το πακέτο αυτομάτως απορρίπτεται καιο υπολογιστής ο οποίος διαπίστωσε το σφάλμα στέλνει ένα ICMP μήνυμα σφάλματος στον υπολογιστή που δημιούργησε το πακέτο. Τέλος, η εντολή ping χρησιμοποιεί επίσης το πρωτόκολλο ICMP γιατην λειτουργία της και συγκεκριμένα τα ICMP μηνύματα "Echo request" και "Echo reply".
Στο σχήμα που ακολουθεί φαίνεται η κεφαλίδα (header) ενός πακέτου ICMP. Μεγκρι χρώμα απεικονίζεται η κεφαλίδα που προκύπτει από το πρωτόκολλο IP καιμε πράσινο χρώμα η κεφαλίδα που προκύπτει από το πρωτόκολλο ICMP. Ακολουθεί επεξήγηση των πεδίων της ICMP κεφαλίδας. Τα πεδία της IP κεφαλίδας εξηγούνται στο άρθρο γιατοIP - Internet Protocol.
+
Bits 0–3
4–7
8–15
16–18
19–31
0
Version
IHL
TOS/DSCP/ECN
Total Length
32
Identification
Flags
Fragment Offset
64
Time to Live
Protocol
IP Header Checksum
96
Source Address
128
Destination Address
160
Type
Code
Checksum
192
ID
Sequence
Type
Ο κωδικός του τύπου μηνύματος ICMP, όπως αναφέρθηκε παραπάνω.
Code
Το πεδίο αυτό χρησιμοποιείται ως επέκταση του προηγούμενου. Για παράδειγμα εάν το πεδίο Type περιέχει την τιμή 3 (Destination Unreachable), τότε το πεδίο αυτό μπορεί να περιέχει έναν κωδικό από το 1 έως το 15 που να δίνει τον λόγο γιατον οποίο ο υπολογιστής που ψάχνουμε είναι εκτός δικτύου.
Checksum
Το πεδίο αυτό χρησιμοποιείται γιατον έλεγχο σφαλμάτων κατά την μετάδοση του πακέτου.
ID
Η τιμή ID του πακέτου, η οποία επιστρέφεται στον υπολογιστή που δημιούργησε το πακέτο στην περίπτωση που έχουμε απάντηση ECHO REPLY.
Sequence
Αυτό το πεδίο περιέχει την τιμή σειράς του πακέτου και επιστρέφεται στον υπολογιστή που δημιούργησε το πακέτο στην περίπτωση που έχουμε απάντηση ECHO REPLY.