اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

دستور ping به همراه 12 مثال عملی

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    دستور ping به همراه 12 مثال عملی

    Ping (پینگ) یک ابزار عمومی و محبوب بین کاربران کامپیوتر است که جهت چک کردن در دسترس بودن یک سیستم در سطح اینترنت استفاده میشود. کارکرد آن به گونه ای است که یک سری از پیام های ECHO_REQUEST مربوط به پروتکل ICMP (مخفف Internet Control Message Protocol) به هاست مقصد و دریافت جواب این پیام ها یا ECHO_RESPONSE کار می کند.

    شما با استفاده از Ping می توانید بررسی کنید که آیا دو کامپیوتر می توانند به همدیگر دسترسی داشته باشند یا نه. به صورت کلی تر با این دستور می فهمیم :
    • آیا یک هاست در دسترس هست یا نه
    • اندازه گیری کنیم که چقدر طول می کشد که یک پکت از کامپیوتر ما به هاست مقصد برسد و سپس پاسخ آن برگردد که به آن RTP یا round-trip time می گویند.
    • درصد packet loss را فهمید که خود یک معیار جهت فهمیدن کیفیت شبکه می باشد.
    دستور ping






    خروجی این دستور یک لیست از پاسخ و زمانی که طول کشیده، پکت آخر از سیستم ما به هاست مقصد برود و برگردد، میباشد. همچنین یک خروجی آماری شامل تعداد پکت هایی که ارسال شده، تعداد پکت هایی که برگشته و درصد از دست رفتن پکت ها (packet lost) در شبکه، حداقل و حداکثر و میانگین RTT (زمان رفت و برگشت) را میبینید. همچنین اگر دسترسی به هاست غیرممکن باشد یا هاست فعال نباشد یک error دریافت می کنیم.


    همچنین توصیه میشود مطالعه کنید.

    Fping - یک ابزار Ping قدرتمند در Linux

    دستور netstat برای مدیریت شبکه در لینوکس


    در این مقاله ما به توضیح 12 مثال عملی دستور ping به منظور تست و بررسی در دسترس بودن یک هاست روی شبکه خواهیم پرداخت.



    آموزش مثال های کاربردی دستور Ping

    1 - شما میتوانید یک تست ساده پینگ را به منظور بررسی اینکه آیا هاست مقصد www.google.com در دسترس هست یا خیر اجرا کنید. شما همچنین میتوانید به جای آدرس دامین همانند زیر از ip address استفاده کنید.
    کد PHP:
    ping www.google.com
    OR
    ping 216.58.212.78 

    نمونه خروجی :
    کد PHP:
    # ping www.google.com
    PING www.google.com (216.58.208.3656(84bytes of data.
    64 bytes from fra15s12-in-f4.1e100.net (216.58.208.36): icmp_seq=1 ttl=50 time=77.0 ms
    64 bytes from fra15s12
    -in-f4.1e100.net (216.58.208.36): icmp_seq=2 ttl=50 time=76.8 ms
    64 bytes from fra15s12
    -in-f4.1e100.net (216.58.208.36): icmp_seq=3 ttl=50 time=76.9 ms
    64 bytes from fra15s12
    -in-f4.1e100.net (216.58.208.36): icmp_seq=4 ttl=50 time=77.0 ms
    64 bytes from fra15s12
    -in-f4.1e100.net (216.58.208.36): icmp_seq=5 ttl=50 time=76.9 ms
    ^C
    --- www.google.com ping statistics ---
    5 packets transmitted5 received0packet losstime 4005ms
    rtt min
    /avg/max/mdev 76.878/76.979/77.069/0.310 ms 
    در بالا میبینید که دستور ping موفقیت آمیز بوده و هیچ packet loss ای هم رخ نداده است. یک نکته مهم این است که باید به time آخر خروجی ping توجه داشته باشیم چون این زمان سرعت پاسخگویی و دسترسی از سیستم ما به سیستم مقصد را نشان می دهد، فرض کنید که سیستم مقصد یک سرور مهم می باشد بنابراین مهم هست که این زمان پایین باشد.

    فرض کنید سرور مقصد یک وبسایت هست که با هر درخواست ما چندین درخواست به دیتابیس ارسال می شود و خروجی که در UI نمایش می دهد شامل حجم زیادی از دیتا می باشد، در این صورت اگر این زمان بالا باشد زمان زیادی طول می کشد که آن حجم دیتا به مرورگر ما برسد و باعث می شود که وبسایت بی کیفیت داشته باشیم.



    2 - شما میتوانید تعداد ECHO_REQUEST های ارسال شده تا قبل از اینکه دستور ping بسته شود را مشخص کنید که میتوانید با استفاده از آپشن -c همانند زیر این کار را انجام دهید. (در این چنین شرایطی تست پینگ بعد از ارسال 5 پکت متوقف خواهد شد)
    کد PHP:
    # ping -c 5 www.google.com
    PING www.google.com (216.58.208.3656(84bytes of data.
    64 bytes from fra15s12-in-f4.1e100.net (216.58.208.36): icmp_seq=1 ttl=50 time=76.8 ms
    64 bytes from fra15s12
    -in-f4.1e100.net (216.58.208.36): icmp_seq=2 ttl=50 time=76.8 ms
    64 bytes from fra15s12
    -in-f4.1e100.net (216.58.208.36): icmp_seq=3 ttl=50 time=84.7 ms
    64 bytes from fra15s12
    -in-f4.1e100.net (216.58.208.36): icmp_seq=4 ttl=50 time=76.8 ms
    64 bytes from fra15s12
    -in-f4.1e100.net (216.58.208.36): icmp_seq=5 ttl=50 time=76.8 ms

    --- www.google.com ping statistics ---
    5 packets transmitted5 received0packet losstime 4007ms
    rtt min
    /avg/max/mdev 76.800/78.422/84.763/3.189 ms 


    3 - با پارامتر -i تعیین میکنیم که بین هر دو درخواست برای ارسال چند ثانیه صبر کند، به صورت پیشفرض این زمان 1 ثانیه هست.
    کد PHP:
    # ping -i 3 -c 5 www.google.com 


    4 - برای تشخیص response شبکه خود تحت شرایط لود بالا شما میتوانید یک flood ping را با استفاده از آپشن -f اجرا کنید که request ها را تا حد ممکن سریع ارسال میکند. تنها با استفاده از دسترسی root می توان این کار را انجام داد، یا در غیر این صورت با استفاده از دستور sudoاین کامند را باید اجرا کرد.
    کد PHP:
    # sudo ping -f www.google.com
    OR
    # sudo ping -f -i 3 www.google.com 


    5 - شما می توانید با استفاده از پارامتر -b پینگ یک آی پی broadcast را فعال کنید.
    کد PHP:
    ping -b 192.168.43.255 


    6 - برای اینکه تعداد هاپ های شبکه (TTL یا Time To Live که در حقیقت نشان دهنده تعداد روترهای بین شما و مقصدیست که آنرا ping میکنید) که مشخص کننده تعداد روتر هایست که از آنها عبور میکنیم تا به مقصد برسیم را محدود کنیم، از پارامتر -t استفاده می کنیم، که می توان به آن هر عددی از 1 تا 255 را داد. سیستم عامل های متفاوت مقادیر پیش فرض متفاوتی را تعریف میکنند. به طور مثال سیستم های لینوکسی مقدار پیش فرض 64 و سیستم های ویندوزی مقدار پیش فرض 128 را برای TTL اختصاص داده اند. به ازای عبور از هر یک روتر یک عدد از این مقدار پیش فرض کم میشود. مثلا در صورتی که به هنگام ping یک سیستم لینوکسی شما مقدار TTL 55 را دریافت کردید این بدان معناست که بین سیستم شما و سیستم مقصد 9 روتر قرار دارد. (64-55=9)

    هر router ی که پکت را دریافت کند یک عدد از مقدار اولیه TTL کم میکند و اگر همچنان مقدار این TTL بزرگتر از 0 باشد روتر پکت را به next hop (روتر بعدی) ارسال میکند و این انتقال تا زمانی ادامه دارد که TTL به صفر نرسد و در صورتیکه TTL 0 شود روتر آخر به دلیل اینکه پکت از بین رفته یک ICMP Response به کامپیوتر شما برخواهد گرداند. برای این کار فرض کنید ما TTL را عدد 50 می دهیم، بعد از اجرای دستور بعد از اینکه پکت به روتر اول می رسد، روتر یک عدد از این عدد کم می کند و TTL پکت برابر با 49 می شود. به همین ترتیت این پکت بیشتر از 50 روتر را نمی تواند بگذراند چون بعد از صفر شدن TTL پکت از بین می رود، و روتر آخر پاسخ را به سیستم فرستنده می فرستد.

    مثلا در تصویر زیر مقدار واقعی TTL از عدد 10 که ما تعریف کردیم فراتر رفته و در نتیجه تست ping ما fail شده است، که در حقیقت تعداد روترهای بین ما و گوگل بیشتر از 10 تا بوده است که 10 امین روتر به دلیل اینکه مقدار TTL 0 را دریافت کرده پکت را Drop میکند.
    کد PHP:
    # ping -t 10 www.google.com 
    ping command






    7 - مقدار سایز پکت برای یک تست ping باید کافی باشد، به هر حال شما میتوانید با توجه به رفع نیازهای خاص تست خود آنرا تغییر دهید. شما میتوانید با استفاده از آپشن -s سایز payload (به واحد بایت) را مشخص کنید. که در نتیجه آن مقدار 8 بایت به مقدار سایز کل پکت در هدر ICMP اضافه میشود.
    کد PHP:
    ping -s 1000 www.google.com 


    8 - میتوان از قابلیت preload استفاده کرد. با پارامتر -l کامند ping تعدادی پکت ارسال می کند و منتظر جواب نمیماند. برای اینکه بیشتر از 3 پکت ارسال گردد باید از دسترسی root استفاده کرد یا از Sudo .
    کد PHP:
    sudo ping -l 5 www.google.com 


    9 - همچنین امکان تعریف مدت زمان انتظار برای دریافت یک response (به ثانیه) با استفاده از آپشن -w همانند زیر را خواهید داشت.
    کد PHP:
    ping -W 10 www.google.com 


    10 - با استفاده از پارامتر –w میتوان timeout کامند را تعیین کرد بدون اینکه به این توجه شود که چه تعداد پکت ارسال شده یا دریافت شده.
    کد PHP:
    ping -w 10 www.google.com 


    11 - با استفاده از پارامتر –d میتوان مد debug را فعال کرد که اطلاعات مفیدی برای دیباگ IP به ما میدهد.
    کد PHP:
    ping -d www.google.com 
    نکته : دقت کنید که کرنل لینوکس از این آپشن پشتیبانی نمیکند.



    12 - با پارامتر –v در مد verbose کامند را اجرا می کنیم که در این حالت جزییات زیادی در خروجی مشاهده می کنیم.
    کد PHP:
    ping -v www.google.com 

    نکته : تا اینجا گفتیم که از Ping برای تست کردن اتصال به اینترنت استفاده می کنیم ولی شاید بهتر باشد که بگوییم از Ping برای تست کردن فعال یا غیر فعال بودن هاست مقصد استفاده می شود، یعنی وقتی یک IP را با دستور Ping تست می کنیم، در واقع تست می کنیم که این کامپیوتر فعال هست یا نه. به عنوان یک ادمین شبکه باید در کنار Ping از ابزارهای دیگری مانند traceroute اطلاع داشته باشید، البته ابزارهای پیچیده تری مانند MTR (یک ابزار مانیتورینگ جدید برای شبکه) وجود دارند که قابلیت های ترکیبی از این دو را به ما میدهد.

    برای دریافت لیست وسیعی از ابزارهای شبکه پیشنهاد میشود پست زیر را مطالعه فرمایید.

    یک راهنمای sysadmin ی لینوکس برای مدیریت، ترابل شوت و دیباگ شبکه

    دستور ip برای تنظیمات اینترفیس شبکه به همراه 10 مثال عملی



    خلاصه

    Ping یک متد بسیار رایج برای ترابل شوت دسترسی هاست ها روی یک شبکه میباشد، در این مقاله ما 12 مثال عملی از دستور ping را به منظور تست کردن در دسترس بودن یک دیوایس شبکه شرح دادیم. نظرات و سوالات خود را در همینجا با ما مطرح کنید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-02-2021, 04:15 PM.
    اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X