ICMP
ICMP: پروتکل icmp یا internet control message protocol جهت خطایابی در کامپیوتر ها ، روتر ها و host ها، بررسی وجود سیگنال و به طور کلی بررسی وضعیت ارتباطی بین روتر و سرور ها مورد استفاده قرار می گیرد.
در مدل ۵ لایه ای شبکه ،این پروتکل همانند پروتکل ip در لایه ی network (شبکه) قرار می گیرد ، اما نوع کارکرد آن شبیه پروتکل های لایه ی transport (انتقال) می باشد.
پروتکل icmp امکانات لازم در خصوص اشکال زدایی ، گزارش خطاها و همچنین مبادله ی اطلاعات محدود در بستر یک شبکه را ارائه می دهد.با توجه به اینکه icmp صرفا مسئول ارائه ی پیغام های کنترلی و گزارش خطاها و نهایتا ارائه ی فیدبک های لازم در جهت تحقق یک وضعیت خاص است ، حاوی هیچ گونه اطلاعاتی مبنی بر اعلام وصول بسته های اطلاعاتی (acknowledgment) نمی باشد.
ساختار پیغام های icmp که در datagram و در بالایip قرار می گیرند ، به صورت زیر می باشد:
type, code plus first 8 bytes of IP datagram causing error
* فیلد type : در این فیلد عددی قرار می گیرد که بیانگر نوع پیام می باشد و ساختار فیلدهای data و parameters بسته به عددی که در این فیلد قرار می گیرد ، متفاوت خواهد بود.
* فیلد code : گاهی خود پیغام به چند “زیرنوع” دیگر تقسیم می شود که کد زیرنوع در این فیلد قرار می گیرد.
* فیلد checksum :محتوای این فیلد برای سنجش اعتبار و سلامت بسته icmp مورد استفاده قرار می گیرد. تمام بسته icmp به صورت دو بایت دوبایت جمع شده و نهایتا از مکمل ۱ حاصل جمع ، عددی ۱۶ بیتی به دست می آید که درون این فیلد قرار می گیرد.
مشاهده ی انواع type و code در یک پیغام icmp :
|
مشاهده ی نوع و ساختار پیغام های icmp :
پیام های echo reply و echo request : پیام echo request وقتی صادر می شود که یک مسیریاب بخواهد بداند که آیا یک ماشین خاص در شبکه قابل دسترس و موجود است یا خیر. در پاسخ به دریافت echo request ، مقصد با ارسال پیام echo reply به آن پاسخ می دهد. با این پرسش و پاسخ ، یک ماشین می تواند از قابل دسترس بودن یک مسیریاب یا ماشین میزبان در شبکه مطلع شود.
پیام destination unreachable : این پیام زمانی صادر می شود که زیر شبکه یا یک مسیریاب نتواند آدرس مقصد را تشخیص بدهد و یا به هر دلیلی بسته توسط ماشین میزبان تحویل گرفته نشود. به عنوان مثال به علت بزرگ تر بودن اندازه ی بسته ها از حداکثر اندازه قابل انتقال (MTU) در مسیریاب و عدم اجازه ی به مسیریاب برای شکستن آن (fragmentation).
پیام source quench : این بسته زمانی برای یک ماشین ارسال می شود که از آن خواسته شود حجم ارسال بسته هایش را کاهش بدهد. چرا که در غیر اینصورت ازدحام پیش خواهد آمد. در مجموع هرگاه از یک ماشین ، میزبان تقاضای کاهش نرخ تولید و ارسال بسته های IP را داشته باشد این پیام را صادر می کند. اگر ماشین پس از طی مدت مشخصی این پیام را دریافت نکرد ، می تواند سرعت تولید بسته ها را به حالت اول برگرداند.
پیام time exceeded : این پیام زمانی صادر می شود که مهلت قانونی یک بسته منقضی شده باشد (یعنی TTL به صفر رسیده باشد) و یک مسیریاب مجبور به حذف آن شود; در چنین حالتی این پیام به آدرس فرستنده ی بسته ی IP برای آگاهی ارسال خواهد شد.
پیام parameter problem : این پیام زمانی صادر خواهد شد که مقدار نامعتبر در یکی از فیلدهای سرآیند در بسته ی IP قرار گرفته باشد و مسیریاب قادر به تشخیص و تفسیر سرآیند آن بسته ی IP نباشد.به عنوان مثال در فیلد version از بسته ی IP عدد ۵ قرار گرفته باشد و یا checksum با سرآیند تناقض داشته باشد.
Traceroute : این دستور جهت بررسی وضعیت کلیه ی روتر ها ی میانی تا مقصد و همچنین خود مقصد استفاده می شود. در این دستور تعدادی UDP segmet با تی تی ال ( time to live یا TTL ) های به ترتیب و صعودی و با شماره port های رندوم و نا مشخص از مبدا به سمت مقصد ارسال می شوند.
-
- first set has TTL =1
- second set has TTL=2, etc.
- unlikely port number
با توجه به اینکه با عبور packet (پکت) از هر روتر یک واحد از TTL آن کم می شود و پکت اول با TTL =1 ارسال می شود ، هنگام رسیدن به روتر اول TTL =0 شده و پکت دور ریخته می شود و پیغام icmp با مشخصات زیر به سمت فرستنده برگشت داده خواهد شد.
Type = 11 , Code = 3 , TTL expired
ضمنا این پیغام حاوی ip و نام آن روتر و همچنین ip فرستنده می باشد.به همین ترتیب packet های بعدی با TTL های بالاتر نیز ارسال خواهند شد تا packet با شماره n به روتر شماره ی n می رسد و با دور ریخته شدن packet ، پیغام TTL expired به سمت فرستنده ارسال می شود.در هر رفت و برگشت فرستنده با دریافت پیغام TTL expied می تواند زمان ارسال پکت تا روتر و برگشت آن ( round-trip time یا RTT ) را محاسبه کند.
این روند تا جایی ادامه پیدا می کند که packet به گره مقصد برسد. هنگام دریافت شدن packet در مقصد و با توجه به اینکه پورت packet نامشخص است پیغام icmp با مشخصات زیر از سمت گیرنده به فرستنده ارسال شده و بدین ترتیب ارسال packet با TTL بالاتر متوقف خواهد شد.
Type = 3 , Code = 3 , dest port unreachable