پینگ چیست و چه کاربردی دارد؟
پینگ را نمی توان در دسته ی عوامل کارایی دانست. همان طورکه گفته شد، پینگ ابزاری برای اندازه گیری تأخیر اتصال بین کامپیوتر شما و سرور از راه دور است. پینگ می گوید ارسال هر پکت (بسته) داده از کامپیوتر شما به سرور و دریافت پاسخ آن، چقدر طول می کشد. قطعا تاکنون این رخداد را تجربه کرده اید که پس از کلیک روی لینکی، صفحه ی وب به صورت آنی بارگذاری نمی شود. درواقع، تأخیری کوتاه بین کلیک و بازشدن صفحه وجود دارد که البته برخی مواقع کوتاه نیست و حتی شاید یک دقیقه طول بکشد. کامپیوتر باید درخواست بارگذاری صفحه را به سرور ارسال و پاسخ آن را دریافت کند. رفت وآمد پکت داده به زمان نیاز دارد و پینگ زمان مذکور را اندازه گیری می کند.
پینگ اهمیت زیادی در بازی های آنلاین دارد و نشان دهنده ی زمانی است که طول می کشد تا حرکت شما در بازی، در سرور اصلی ثبت و اجرا شود. به عنوان مثال، اگر بازی آنلاینی را با پینگ ۲۰ میلی ثانیه اجرا کنید، دستورها و حرکت های شما تقریبا بدون وقفه و آنی اجرا می شوند. اگر پینگ به رقمی مثلا ۲۰۰ میلی ثانیه ای برسد، حرکت ها با تأخیر زیادی اجرا می شوند و نمی توانید با بازدهی و قدرت لازم بازی کنید. به همین دلیل، پینگ هر کاربر به صورت آنی هنگام انجام بازی آنلاین به او نمایش داده می شود تا سرعت و بازدهی خود را تخمین بزند. درنهایت، پینگ کمتر به معنای سرعت بیشتر خواهد بود و کاهش پینگ از اقدام هایی است که اغلب کاربران دنیای اینترنت به دنبال آن هستند.
پینگ برای چه چیزی استفاده می شود؟
پینگ صرفا ابزاری برای اندازه گیری «عملکرد» نیست. ویژگی بخصوص پینگ اندازه گیری زمان تاخیر اتصال بین کامپیوتر شما با دستگاه مقصد (Remote Device) است. پینگ مدت زمان ارسال بسته (Packet) از رایانه شما، رسیدن آن به دستگاه مقصد و ارسال مجدد آن به رایانه شما را مشخص می کند.
آیا تا کنون به این نکته توجه کرده اید که وقتی در یک وب سایت بر روی لینکی کلیک می کنید، صفحه ی مقصد بلافاصله باز نمی شود؟ در این حالت یک وقفه ی زمانی -که زمان تاخیر است- وجود دارد. درخواست مشاهده ی صفحه ی جدید باید از سوی رایانه ی شما ارسال شود و سپس صفحه مورد نظر برای شما بارگذاری می گردد. زمان کوتاهی برای ارسال هر بسته ی داده ای (Packet Data) از کامپیوتر شما به کامپیوتر مقصد طول خواهد کشید. پینگ به شما اجازه می دهد این زمان را اندازه گیری کنید.
این موضوع در هنگام اجرای بازی های آنلاین بیشتر قابل درک است. مثلا اگر شما قصد انجام یک بازی آنلاین را دارید که نیاز به پینگ ۲۰ میلی ثانیه دارد، زمان تاخیرتان باید بسیار کوتاه باشد. در این صورت اعمالی که در بخش های مختلف بازی انجام می دهید تقریبا بلافاصله انجام خواهند شد. اگر پینگ شما بالاتر و مثلا ۲۰۰ میلی ثانیه است، اعمالی که در بازی انجام می دهید با یک فاصله ی زمانی انجام می شوند و در نتیجه شما نسبت به سایر افرادی که به طور همزمان با آنها بازی می کنید، عقب می مانید.
این که چرا در بازی های آنلاین چند نفره، زمان پینگ خیلی مهم است اینجا مشخص می شود. پینگ به شما کمک می کند تا میزان کیفیت اتصال خود را در شبکه بسنجید و عملکرد و کارایی مورد انتظار سرور را دریابید. هر چه پینگ کوتاه تر باشد بهتر است و به معنی زمان تاخیر کمتر است، در نتیجه اتصالی پرسرعت تر بین رایانه ی شما و سرور برقرار می شود. این موضوع قابل تعمیم به تمام فعالیت های آنلاین شماست خواه انجام یک بازی آنلاین باشد و خواه مرور یک وب سایت.
گاهی اوقات ممکن است پینگ فقط به صورت «تاخیر زمانی» به نمایش درآید. ولی در بازی های آنلاین برای اینکه مشخص شود پینگ شما چقدر خوب است معمولا به صورت یک رنگ برای شما نمایان خواهد شد که شامل سه رنگ سبز (خوب)، زرد (متوسط) و قرمز (ضعیف) است.
پینگ چگونه کار می کند؟
در ادامه به صورت خیلی ساده طرز کار پینگ را با هم مرور می کنیم:
- رایانه ی شما بسته های داده ای کوچکی -که در قوانین شبکه، بسته (Packet) نامیده می شوند- را به رایانه ی مقصد ارسال می کند.
- رایانه ی مقصد بسته ی ارسالی شما که نیاز به پاسخ دارد را دریافت می کند.
- رایانه ی مقصد یک بسته به رایانه ی شما ارسال می کند.
و این مراحل برای هر پینگ تکرار می شود. پینگ به شما اجازه می دهد مدت زمان رفت و برگشت بسته ها را بین رایانه ی خود و رایانه ی مقصد، اندازه بگیرید. به عنوان مثال همانطور که در تصویر زیر می بینید ما از Command Prompt ویندوز برای ارسال پینگ به گوگل (www.Google.com) استفاده می کنیم. این دستور ۴ بسته یا ۴ دستور پینگ جداگانه را ارسال می کند. برای ۳ پینگ اول، زمان ۱۰ میلی ثانیه و برای پینگ آخر ۱۲ میلی ثانیه است. به زبان ساده تر این یعنی برای ارسال ۳ بسته ی اول به گوگل و دریافت آن توسط رایانه ی ما، مدت زمان ۱۰ میلی ثانیه صرف شده در حالیکه برای بسته ی آخر، همین مراحل ۱۲ میلی ثانیه به طول انجامیده است. اما چرا پینگ چهارم بیشتر طول کشید؟ خب دلایل زیادی می تواند داشته باشد. ممکن است سرورهای گوگل اینکار را آهسته تر انجام داده باشند، امکان دارد روتر اینترنتی ای که بین ما و سرورهای گوگل قرار دارد بیشتر از حد معمول مشغول باشد، میزان ورودی اطلاعات توسط وای فای ما ممکن است نوسان داشته باشد و دلایل فراوان دیگر. البته برخی از این نوسانات رایج و طبیعی هستند.
هر پینگ یک درخواست ICMP Echo است
هرگاه شما یک پینگ ارسال می کنید، رایانه ی شما یک درخواست ICMP Echo ارسال می کند. IMCP که مخفف Internet Control Message Protocol به معنای «پروتکل کنترل پیام اینترنت» است و این پروتکل اساسا در میان دستگاه هایی که به یکدیگر شبکه شده اند استفاده می شود. در نتیجه دستگاه های مذکور می توانند با یکدیگر ارتباط داشته باشند. هر بسته، درخواست یک Echo می کند یا به بیانی دیگر، یک پاسخ ارسال می کند. به طور کلی هنگامی که سرور مقصد پینگی دریافت می کند، یک پیام مختص خود را به رایانه ی مبدا ارسال می نماید. وقتی شما دستور ping را اجرا می کنید در هر سطر یک پینگ و پاسخ آن را مشاهده خواهید نمود.
به هر حال همه ی سرورها و رایانه ها قابلیت پاسخ به یک بسته ی درخواست ICMP echo را ندارند و این ویژگی ممکن است در آن ها تعبیه نشده باشد. بنابرین در چنین شرایطی وقتی سرور قادر به پاسخ دادن به درخواست شما در لحظه ی ارسال پینگ نباشد، با پیام «Request timed out» به معنی «درخواست به پایان رسیده است» روبرو خواهید شد. متاسفانه امروزه از پروتکل ICMP برای حملات تکذیب سرور (DDoS attacks) نیز استفاده می شود.
مشاهده ی بسته های از بین رفته
پینگ می تواند به شما کمک کند تا بسته هایی که از بین رفته اند را نیز ببینید. برای مثال فرض کنید دستور ping را اجرا کرده اید و با یکسری پاسخ های مختلف و خطوط «Request timed out» روبرو شده اید. این یعنی برخی از بسته ها توسط رایانه مقصد دریافت نشده اند، یا پاسخ های سرور به رایانه ی شما ارسال نشده. برخی بسته ها نیز ممکن است در طول مسیر ارسال و دریافت از بین بروند.
واضح است که از بین رفتن بسته ها باید جایی بین شما و رایانه ی مقصد اتفاق افتاده باشد، مثلا در شبکه ی رایانه های مقصد، یا جایی در روتر مابین رایانه ی شما و رایانه ی مقصد، و یا خدمات دهنده ی اینترنت (ISP) شما. حتی ممکن است در شبکه ی خانگی شما این بسته ها از بین رفته باشند. اگر در هنگام وبگردی یا انجام بازی های آنلاین با مشکل روبرو می شوید -بخصوص وقتی برای رفتن به یک صفحه ی وب جدید چند بار بر روی لینک آن کلیک می کنید و صفحه ی مورد نظر بالا نمی آید- می توانید از دستور پینگ استفاده نمایید تا بفهمید آیا بسته های داده ای به سمت سرور ارسال می شوند یا خیر. هنگامی که از بین رفتن بسته های داده ای برای شما رخ می دهد برای نتیجه گیری بهتر در مورد کارکرد درست شبکه، می توانید چندین بار دستور پینگ را برای سرور های مختلف اجرا نمایید.
پینگ همچنین مقدار از بین رفتن بسته ها را مشخص می کند. برای مثال بسته ی اولی به سرور رسیده و پاسخ آن برای ما ارسال می شود و سه بسته ی دیگر از بین می روند، در این حالت دستور پینگ نشان می دهد که ۷۵ درصد بسته ها و در واقع سه چهارم آن ها از بین رفته اند.
آیا پینگ صفر امکانپذیر است؟
همانطور که گفتیم هرچه پینگ کوتاه تر باشد بهتر است. پینگ صفر یعنی رایانه ی ما به صورت بی وقفه با رایانه ی مقصد در ارتباط باشد.
با توجه به قوانین فیزیک، حتی بخش بسیار کوچکی از یک داده، که بتوان آن را بسته نامید، برای انجام مسیر رفت و برگشت زمانی را نیاز خواهد داشت. حتی اگر داده های شما در کابل های فیبر نوری ارسال و دریافت شوند، با محدودیت سرعت نور مواجه هستند. از سویی دیگر نیز به دلیل وجود روترهای واسطه که بسته های داده ای را دریافت کرده و آنها را به اتصالات دیگر می فرستند باز هم در رفت و آمد بسته ها محدودیت ایجاد می شود.
اگر شما قصد اجرای دستور پینگ را در سرور محلی (Localhost) بر روی رایانه خود داشته باشید، در واقع شما از رایانه خود خواسته اید تا بسته ها را از خودش به خودش ارسال کند و در این حالت شما زمان پینگ را صفر میلی ثانیه خواهید دید. به عبارتی این یعنی رایانه ها می تواند با خودشان به صورت بلادرنگ ارتباط داشته باشند. البته در این شرایط نیز باز هم نمی توان زمان صفر مطلق را برای انجام پینگ انتظار داشت، چرا که برای اجرای دستور توسط نرم افزار مربوطه زمانی هر چند بسیار کوتاه، نیاز خواهد بود. اما به هر حال این زمان آنقدر کم است که می توانیم از آن چشم پوشی کرده و زمان صفر میلی ثانیه برای ارتباط رایانه با خودش را در نظر بگیریم.