ICMP (Internet Control Message Protocol)

Introduction to ICMP (Internet Control Messesage Protocol)

IP (Internet Protocol) एक network layer protocol है। किसी भी network में data को deliver (Logical Addressing) करने की जिम्मेदारी IP (Internet Protocol) की होती है। इस काम के लिए IP TCP और UDP जैसे transport layer protocols को use करता है। TCP और IP मिलकर TCP/IP protocol suit का निर्माण करते है।

किसी भी data को source से destination तक deliver करने के लिए Internet Protocol द्वारा पूरा प्रयास किया जाता है। लेकिन internet protocol में ऐसी कुछ limitations है जिससे इसकी performance कम हो जाती है। इनके बारे में निचे दिया जा रहा है।

Limitations of IP (Internet Protocol)

Internet protocol की 2 महत्वपूर्ण कमियों के बारे में निचे दिया जा रहा है। ICMP की जरुरत को समझने के लिए आपका इन limitations को ठीक से समझना आवश्यक है।

  • No Error Reporting - यदि किसी error की वजह से कोई packet router द्वारा discard हो जाए तो इसके लिए internet protocol में ऐसा कोई mechanism नहीं है जिससे की sender को इस error के बारे में report किया जा सके। कुछ common errors के उदाहरण निचे दिए जा रहे है।
    • मान लीजिये यदि router को destination तक data पहुँचाने के लिए कोई router नहीं मिल रहा है तो ऐसी situation में router packet को discard कर देगा।
    • मान लीजिये की internet में travel करते करते किसी packet का life time पूरा हो गया है और packet में time to live field की value zero हो गयी है तो ऐसी situation में ये packet discard कर दिया जाएगा।
    • मान लीजिये destination तक सभी packets निर्धारित समय में नहीं पहुँचे है तो ऐसी परिस्थिति में सम्पूर्ण data को discard कर दिया जाएगा।
  • No Communication - कई बार ऐसा हो सकता है की एक device को दूसरे device से communicate करने की आवश्यकता हो तो ऐसी situation के लिए भी internet protocol में ऐसा कोई mechanism नहीं है जिससे devices आपस में communicate कर सके। जिनमें devices को communication की आवश्यकता होती है ऐसी कुछ common situations के बारे में निचे दिया जा रहा है।
    • कई बार data send करने से पहले एक host को ये determine करना होता है की destination host alive है या नहीं।
    • कई बार आपको भी किसी host के बारे में information प्राप्त करने की आवश्यकता हो सकती है।

Internet Protocol की इन कमियों को दूर करने के लिए ICMP (Internet Control Message Protocol) को design किया गया है। ICMP और IP दोनों एक साथ काम करते है। ICMP IP का supporting protocol है। ICMP में message mechanism होता है जिससे hosts को error और status के बारे में notify किया जाता है।

Types of ICMP (Internet Control Message Protocol) Messages

ICMP messages के द्वारा error reporting और devices का status share करता है। ICMP द्वारा create किये जाने वाले messages को 2 categories में divide किया गया है।

Error Reporting Messages

ये वे messages होते है जिनसे ICMP errors को report करता है। Common error reporting messages की list निचे दी जा रही है।

  • Destination Unreachable (Code 3) - यदि कोई router किसी packet के लिए route नहीं ढूँढ पाता है तो ऐसी situation में packet को discard कर दिया जाता है और source को destination unreachable message send किया जाता है।
  • Source Quench (Code 4) - जैसा की आपको पता है IP में flow control नहीं है। Sending device को इस बारे में कोई जानकारी नहीं होती है की उसके द्वारा send किये गए data की speed forward करने वाले router और process करने वाले destination host के अनुसार है या नहीं। जब sending device की speed अधिक होती है तो IP कुछ packets को discard कर देता है। इस situation में ICMP flow control provide करता है और source device को source quench messages send करता है।
  • Redirect (Code 5) - क्योंकि routing एक dynamic process होती है और सिर्फ routers ही इसमें हिस्सा लेते है इसलिए एक host को सिर्फ एक ही router (gateway) के बारे में जानकारी होती है। इसलिए जब यह host कोई data send करेगा तो data उस router के through correct router तक जाएगा। इस situation में gateway router redirection message send करेगा ताकि host की routing information update की जा सके और host directly correct router को data send कर सके।
  • Time Exceeded (Code 11) - एक router किसी भी packet को forward करने के लिए routing table को use करता है। यदि routing table correct नहीं है और उसमे errors है तो ऐसी situation में packet loop में ही घूमता रहता है। इस situation से बचने के लिए हर packet में एक time to live field होता है। इस field की value हर router पर decrease होती जाती है। जैसे ही इस field की value zero होती है तो router द्वारा इस packet को discard कर दिया जाता है। इस situation में router source को Time Exceeded message send करता है।
  • Parameter Unintelligible (Code 12) - यदि कोई router या destination host packet के किसी field को empty पाता है तो उस packet को discard कर देता है और source को parameter unintelligible message send करता है।

Query Messages

ये वे messages होते है जिनसे ICMP किसी host के status के लिए query करता है। Common query messages की list उनके code के साथ निचे दी जा रही है।

  • Echo Request (Code 8) & Echo reply (code 0) - Query messages का ये pair network में problems को diagnose करने के लिए use किया जाता है। ये दोनों messages ये determine करते है की क्या दो hosts आपस में communicate कर सकते है?
  • Time-stamp Request (Code 13) & Time stamp Reply (Code 14) - किसी packet को एक host से दूसरे host तक travel करने में लगने वाले time को time stamp request & reply messages द्वारा पता किया जाता है।
  • Address Mask Request (Code 17) & Address Mask Reply (Code 18) - किसी host को खुद के IP address की जानकारी हो सकती है लेकिन ये जरुरी नहीं की उसे खुद के subnet mask की जानकारी हो। अपना subnet mask पता करने के लिए host router को address mask request भेजता है और router इस host का subnet mask address mask reply message के रूप में भेजता है। यदि host को router के address की जानकारी होती है तो वह सीधा ही router को request भेजता है नहीं तो यह request broadcast की जाती है।

ICMP (Internet Control Message Protocol) Message Format

अब तक आपने ICMP द्वारा send किये जाने वाले 2 तरह के messages के बारे में जाना है। आइये अब ICMP messages के format के बारे में जानने का प्रयास करते है। निचे ICMP message का format एक diagram के द्वारा show किया जा रहा है।

ICMP message format

हालाँकि हर message type के लिए ICMP header अलग होती है लेकिन शुरू के 3 field सभी messages में समान होते है। इन 3 fields की total size 4 byte होती है। इन fields के बारे में निचे detail से दिया जा रहा है।

  • Type - ये field message का type define करता है। उदाहरण के लिए किसी प्रकार की error report करते समय उस error से सम्बंधित code इस field में define किया जाता है। उसी प्रकार यदि query message है तो इस field में उस query का code आएगा।
  • Code - Query messages के लिए इस field की value zero होती है। Error messages के लिए ये field error के sub type को define करता है। उदाहरण के लिए यदि destination unreachable error आयी है तो code field ये बताएगा की किस तरह की destination unreachable error आयी है जैसे की network unreachable (code 0), host unreachable (code 1) या फिर protocol unreachable (code 2) error आदि। Errors के इन sub types को भी codes के द्वारा define किया जाता है।
  • Checksum - Header और data के द्वारा checksum calculate किया जाता है जिसे errors को detect करने के लिए use किया जाता है।
  • Rest of the Header - जैसा की आपको पता है ICMP message को IP datagram में encapsulate किया जाता है। ICMP message में rest of the header section remaining IP header को दर्शाता है।
  • Data - Error messages के सन्दर्भ में इस section में जिस packet के द्वारा error आयी है उस packet की complete information होती है।