PING(8) iputils PING(8)

ping - ارسال بسته ICMP ECHO_REQUEST به میزبانهای شبکه

ping [-aAbBdCDfhHLnOqrRUvV346] [-c count] [-e identifier] [-F flowlabel] [-i interval] [-I interface] [-l preload] [-m mark] [-M pmtudisc_option] [-N nodeinfo_option] [-w deadline] [-W timeout] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp option] [hop...] {destination}

ping از دیتاگرام اجباری ECHO_REQUEST در پروتکل ICMP برای درخواست یک پاسخ ECHO_RESPONSE از یک میزبان یا دروازه (gateway) استفاده می‌کند. دیتاگرام‌های ECHO_REQUEST (یا همان “ping”ها) دارای یک سرآیند IP و ICMP هستند که پس از آن‌ها یک struct timeval و سپس تعداد دلخواهی بایت پرکننده (“pad”) برای تکمیل بسته قرار می‌گیرد.

ping هم با IPv4 و هم با IPv6 کار می‌کند. استفاده انحصاری از هر یک از آن‌ها را می‌توان با مشخص کردن -4 یا -6 اجبار کرد.

ping همچنین می‌تواند پرس‌وجوهای اطلاعات گره IPv6 یا همان Node Information Queries (RFC4620) را ارسال کند. ممکن است hopهای میانی مجاز نباشند، زیرا مسیریابی مبدا در IPv6 منسوخ شده است (RFC5095).

-3

دقت زمان رفت‌وبرگشت RTT (عدم گرد کردن زمان نتیجه به بالا).

-4

تنها استفاده از IPv4.

-6

تنها استفاده از IPv6.

-a

پینگ صوتی (پخش بوق صوتی هنگام دریافت پاسخ).

-A

پینگ تطبیقی. فاصله زمانی میان بسته‌ها با زمان رفت‌وبرگشت تطبیق می‌یابد، به طوری که عملاً بیش از یک کاوشگر بدون پاسخ (یا بیشتر، در صورت تنظیم preload) در شبکه وجود نداشته باشد. فاصله زمانی پیش‌فرض ۲ میلی‌ثانیه است؛ برای اطلاعات بیشتر گزینه -i را ببینید. در شبکه‌هایی با RTT پایین، این حالت اساساً معادل حالت سیلابی (flood) است.

-b

اجازه پینگ کردن یک نشانی پخشی (broadcast).

-B

اجازه ندادن به ping برای تغییر نشانی مبدا کاوشگرها. نشانی به همان نشانی انتخاب‌شده هنگام شروع ping مقید (bind) می‌شود.

-c count

توقف پس از ارسال count بسته ECHO_REQUEST. همراه با گزینه deadline، دستور ping منتظر دریافت count بسته ECHO_REPLY می‌ماند تا زمانی که مهلت زمانی سپری شود.

-C

فراخوانی فراخوان سیستمی connect() هنگام ایجاد سوکت.

-d

تنظیم گزینه SO_DEBUG روی سوکت مورد استفاده. در عمل، این گزینه سوکت توسط هسته لینوکس استفاده نمی‌شود.

-D

چاپ برچسب زمانی (زمان یونیکس + میکروثانیه مشابه gettimeofday) پیش از هر خط.

-e identifier

تنظیم فیلد شناسه (identification) در ECHO_REQUEST. مقدار 0 به معنای استفاده از raw socket است (روی ICMP datagram socket پشتیبانی نمی‌شود). مقدار این فیلد را می‌توان با گزینه -v چاپ کرد.

-f

پینگ سیلابی (Flood ping). به ازای هر بسته ECHO_REQUEST ارسالی یک نقطه “.” چاپ می‌شود، در حالی که به ازای هر ECHO_REPLY دریافتی یک نویسه پس‌بر (backspace) چاپ می‌شود. این کار نمایشی سریع از میزان بسته‌های از دست رفته را فراهم می‌کند. اگر فاصله زمانی (interval) داده نشود، آن را صفر قرار می‌دهد و بسته‌ها را با همان سرعتی که بازمی‌گردند یا ۱۰۰ بار در ثانیه (هرکدام که بیشتر باشد) ارسال می‌کند. تنها کاربر ارشد (super-user) مجاز است از این گزینه با فاصله زمانی صفر استفاده کند.

-F flow label

فقط IPv6. تخصیص و تنظیم برچسب جریان (flow label) ۲۰ بیتی (در مبنای ۱۶ یا هگز) روی بسته‌های echo request. اگر مقدار صفر باشد، هسته یک برچسب جریان تصادفی تخصیص می‌دهد.

-h

نمایش راهنما.

-H

اجبار به تحلیل نام DNS برای خروجی. برای مقصد عددی یا گزینه -f (که به طور پیش‌فرض این کار را انجام نمی‌دهند) مفید است. همچنین می‌تواند به دور زدن مشکلات تحلیل نام DNS کمک کند. گزینه -n را که پیش‌تر تعریف شده بازنویسی (override) می‌کند. همچنین متغیر محیطی IPUTILS_PING_PTR_LOOKUP را ببینید.

-i interval

انتظار به مدت interval ثانیه میان ارسال هر بسته. عدد اعشاری با استفاده از نقطه به عنوان ممیز مجاز است (صرف‌نظر از تنظیمات locale). حالت پیش‌فرض، انتظار به مدت یک ثانیه بین هر بسته در شرایط عادی، یا عدم انتظار در حالت سیلابی است. فقط کاربر ارشد می‌تواند فاصله زمانی را روی مقادیر کمتر از ۲ میلی‌ثانیه تنظیم کند. پینگ پخشی (broadcast) و چندپخشی (multicast) محدودیت حتی بالاتری برای کاربر عادی دارند: حداقل ۱ ثانیه است.

-I interface

پارامتر interface یا یک نشانی، یک نام رابط شبکه، یا یک نام VRF است. اگر interface یک نشانی باشد، نشانی مبدا را روی نشانی رابط مشخص‌شده تنظیم می‌کند. اگر interface یک نام رابط باشد، رابط مبدا را روی رابط مشخص‌شده تنظیم می‌کند. اگر interface یک نام VRF باشد، هر بسته با استفاده از جدول مسیریابی متناظر هدایت می‌شود؛ در این حالت، گزینه -I می‌تواند برای مشخص کردن نشانی مبدا تکرار شود. توجه: برای IPv6، هنگام پینگ به یک نشانی با محدوده محلی پیوند (link-local)، تعیین پیوند (با نماد '%' در destination، یا با این گزینه) می‌تواند استفاده شود اما دیگر الزامی نیست.

-l preload

اگر preload مشخص شود، ping این تعداد بسته را بدون انتظار برای دریافت پاسخ ارسال می‌کند. تنها کاربر ارشد می‌تواند preload بیشتر از ۳ را انتخاب کند.

-L

جلوگیری از لوپ‌بک بسته‌های چندپخشی (multicast). این فلگ فقط در صورتی اعمال می‌شود که مقصد پینگ یک نشانی چندپخشی باشد.

-m mark

استفاده از mark برای نشانه‌گذاری بسته‌های خروجی. این برای دلایل گوناگون درون هسته، مانند استفاده از مسیریابی مبتنی بر سیاست (policy routing) برای انتخاب پردازش خروجی خاص مفید است. مجوزهای CAP_NET_ADMIN یا CAP_NET_RAW (از نسخه 5.17 لینوکس) مورد نیاز است؛ socket(7) را ببینید.

-M pmtudisc_opt

انتخاب راهبرد کشف MTU مسیر (Path MTU Discovery). مقدار pmtudisc_option می‌تواند یکی از این موارد باشد: do (تنظیم فلگ DF اما مشمول بررسی‌های PMTU توسط هسته، بسته‌های بیش از حد بزرگ رد خواهند شد)، want (انجام کشف PMTU، قطعه‌بندی محلی هنگام بزرگ بودن اندازه بسته)، probe (تنظیم فلگ DF و نادیده گرفتن بررسی‌های PMTU، مفید برای کاوش)، یا dont (عدم تنظیم فلگ DF).

-N nodeinfo_option

فقط IPv6. ارسال پرس‌وجوهای اطلاعات گره IPv6 (RFC4620) به جای Echo Request. مجوز CAP_NET_RAW مورد نیاز است.

help

نمایش راهنما برای پشتیبانی NI.

name

پرس‌وجو برای نام‌های گره (Node Names).

ipv6

پرس‌وجو برای نشانی‌های IPv6. چندین فلگ مختص IPv6 وجود دارد.

ipv6-global

درخواست نشانی‌های سراسری (global-scope) در IPv6.

ipv6-sitelocal

درخواست نشانی‌های محلی سایت (site-local) در IPv6.

ipv6-linklocal

درخواست نشانی‌های محلی پیوند (link-local) در IPv6.

ipv6-all

درخواست نشانی‌های IPv6 روی سایر رابط‌ها.

ipv4

پرس‌وجو برای نشانی‌های IPv4. یک فلگ مختص IPv4 وجود دارد.

ipv4-all

درخواست نشانی‌های IPv4 روی سایر رابط‌ها.

subject-ipv6=ipv6addr

نشانی سابجکت IPv6.

subject-ipv4=ipv4addr

نشانی سابجکت IPv4.

subject-name=nodename

نام سابجکت. اگر شامل بیش از یک نقطه باشد، نام دامنه کاملاً واجد شرایط (FQDN) فرض می‌شود.

subject-fqdn=nodename

نام سابجکت. نام دامنه کاملاً واجد شرایط (FQDN) همواره فرض می‌شود.

-n

تنها خروجی عددی. هیچ تلاشی برای جستجوی نام‌های نمادین برای نشانی‌های میزبان انجام نخواهد شد (عدم تحلیل معکوس DNS). این حالت پیش‌فرض برای مقصد عددی یا گزینه -f است. گزینه -H را که پیش‌تر تعریف شده بازنویسی (override) می‌کند. همچنین متغیر محیطی IPUTILS_PING_PTR_LOOKUP را ببینید.

-O

گزارش پاسخ‌های معلق ICMP ECHO پیش از ارسال بسته بعدی. این گزینه همراه با برچسب زمانی -D برای ثبت خروجی در یک فایل عیب‌یابی و جستجو برای پاسخ‌های مفقود مفید است.

-p pattern

می‌توانید حداکثر ۱۶ بایت پرکننده (“pad”) برای پر کردن بسته‌ای که ارسال می‌کنید مشخص کنید. این گزینه برای عیب‌یابی مشکلات وابسته به داده در شبکه سودمند است. برای نمونه، -p ff باعث می‌شود بسته ارسالی با همه بیت‌های ۱ پر شود.

-q

خروجی ساکت. به جز خطوط خلاصه در زمان شروع و هنگام پایان، چیزی نمایش داده نمی‌شود.

-Q tos

تنظیم بیت‌های مربوط به کیفیت خدمات (Quality of Service) در دیتاگرام‌های ICMP. پارامتر tos می‌تواند عدد ده‌دهی (فقط در ping) یا هگزادسیمال باشد.

در RFC2474، این فیلدها به عنوان سرویس‌های متمایز (DS) ۸ بیتی تفسیر می‌شوند، متشکل از: بیت‌های ۰-۱ (۲ بیت کم‌ارزش‌تر) از داده‌های مجزا، و بیت‌های ۲-۷ (۶ بیت باارزش‌تر) از نقطه کد سرویس‌های متمایز (DSCP). در RFC2481 و RFC3168، بیت‌های ۰-۱ برای ECN استفاده می‌شوند.

از دید تاریخی (RFC1349، که توسط RFC2474 منسوخ شده)، این موارد به این صورت تفسیر می‌شدند: بیت ۰ (کم‌ارزش‌ترین بیت) برای رزرو (که در حال حاضر به عنوان کنترل ازدحام بازتعریف شده است)، بیت‌های ۱-۴ برای نوع سرویس (Type of Service) و بیت‌های ۵-۷ (باارزش‌ترین بیت‌ها) برای اولویت (Precedence).

-r

دور زدن جداول مسیریابی عادی و ارسال مستقیم به میزبانی روی یک رابط متصل‌شده. اگر میزبان روی شبکه‌ای که مستقیماً متصل است نباشد، خطایی بازگردانده می‌شود. این گزینه را می‌توان برای پینگ یک میزبان محلی از طریق رابطی که مسیری از آن عبور نمی‌کند استفاده کرد، به شرط آنکه گزینه -I نیز استفاده شده باشد.

-R

فقط در ping. ثبت مسیر (Record route). گزینه RECORD_ROUTE را در بسته ECHO_REQUEST قرار می‌دهد و بافر مسیر را روی بسته‌های بازگشتی نمایش می‌دهد. توجه داشته باشید که سرآیند IP تنها برای ۹ مسیر از این دست به اندازه کافی بزرگ است. بسیاری از میزبان‌ها این گزینه را نادیده می‌گیرند یا دور می‌اندازند.

-s packetsize

تعداد بایت‌های داده ارسالی را مشخص می‌کند. مقدار پیش‌فرض ۵۶ است که در ترکیب با ۸ بایت داده سرآیند ICMP به ۶۴ بایت داده ICMP تبدیل می‌شود. حداکثر مقدار مجاز ۶۵۵۰۷ برای IPv4 است (۶۵۴۶۷ در صورت استفاده از -R یا -T یا hopهای میانی) یا ۶۵۵۲۷ برای IPv6، اما بیشتر سیستم‌ها این مقدار را به عدد کوچک‌تر و وابسته به سیستم محدود می‌کنند.

-S sndbuf

تنظیم sndbuf سوکت. اگر مشخص نشود، به گونه‌ای انتخاب می‌شود که بیش از یک بسته را بافر نکند.

-t ttl

فقط در ping. تنظیم طول عمر (Time to Live) بسته IP.

-T timestamp option

تنظیم گزینه‌های ویژه برچسب زمانی IP. مقدار timestamp option می‌تواند یکی از موارد tsonly (فقط برچسب‌های زمانی)، tsandaddr (برچسب‌های زمانی و نشانی‌ها) یا tsprespec host1 [host2 [host3 [host4]]] (برچسب زمانی برای گام‌های از پیش تعیین‌شده) باشد.

-U

چاپ تاخیر کامل کاربر به کاربر (رفتار قدیمی). به طور معمول ping زمان رفت‌وبرگشت شبکه را چاپ می‌کند، که مثلاً به دلیل خطاهای DNS می‌تواند متفاوت باشد.

-v

خروجی با جزئیات کامل (Verbose). هنگام پینگ یک نشانی چندپخشی، پاسخ‌های تکراری (DUP) پنهان نمی‌شوند.

-V

نمایش نسخه و خروج.

-w deadline

تعیین یک مهلت زمانی، بر حسب ثانیه، پیش از خروج ping، صرف‌نظر از اینکه چه تعداد بسته ارسال یا دریافت شده باشد. در این حالت ping پس از ارسال count بسته متوقف نمی‌شود، بلکه یا تا انقضای deadline یا تا زمانی که به count کاوشگر پاسخ داده شود یا تا رسیدن نوعی اعلان خطا از شبکه منتظر می‌ماند.

-W timeout

زمان انتظار برای پاسخ، بر حسب ثانیه. این گزینه تنها در غیاب هرگونه پاسخ بر مهلت زمانی اثر می‌گذارد، در غیر این صورت ping به مدت دو RTT منتظر می‌ماند. عدد اعشاری با استفاده از نقطه به عنوان ممیز مجاز است (صرف‌نظر از تنظیمات locale). مقدار 0 به معنای مهلت زمانی نامحدود است.

هنگام استفاده از ping برای جداسازی خطا و عیب‌یابی، ابتدا باید آن را روی میزبان محلی اجرا کرد تا بررسی شود که رابط شبکه محلی فعال و در حال کار است. سپس، میزبان‌ها و دروازه‌ها در فاصله‌های دورتر و دورتر باید “پینگ” شوند. زمان‌های رفت‌وبرگشت و آمارهای گم شدن بسته‌ها محاسبه می‌شوند. اگر بسته‌های تکراری دریافت شوند، در محاسبه بسته‌های گم‌شده منظور نمی‌شوند، هرچند زمان رفت‌وبرگشت این بسته‌ها در محاسبه مقادیر کمینه/میانگین/بیشینه/mdev برای زمان‌های رفت‌وبرگشت به کار می‌رود.

انحراف معیار جامعه (mdev)، اساساً میانگینی از میزان فاصله RTT هر پینگ از میانگین RTT است. هرچه mdev بالاتر باشد، RTT متغیرتر است (در طول زمان). با متغیر بودن بالای RTT، در انتقال‌های حجیم داده با مشکلات سرعت مواجه خواهید شد (بیشتر از آنچه واقعاً نیاز است زمان می‌برند، زیرا این نوسان در نهایت باعث می‌شود فرستنده منتظر بسته‌های ACK بماند) و کیفیت VoIP شما متوسط تا ضعیف خواهد بود.

هنگامی که تعداد مشخص‌شده از بسته‌ها ارسال (و دریافت) شد یا اگر برنامه با SIGINT متوقف شود، خلاصه کوتاهی نمایش داده می‌شود. با ارسال سیگنال SIGQUIT می‌توان آمارهای کوتاه‌تر جاری را بدون پایان دادن به فرایند به دست آورد.

این برنامه برای استفاده در آزمون، سنجش و مدیریت شبکه در نظر گرفته شده است. به دلیل باری که می‌تواند بر شبکه تحمیل کند، استفاده از ping در حین عملیات عادی یا از طریق اسکریپت‌های خودکار عاقلانه نیست.

تنظیم متغیر محیطی IPUTILS_PING_PTR_LOOKUP روی 0، تحلیل معکوس DNS (جستجوی PTR) را به طور پیش‌فرض غیرفعال می‌کند. این تنظیم توسط گزینه -H یا -n بازنویسی (override) خواهد شد.

اگر ping هیچ بسته پاسخی دریافت نکند، با کد 1 خارج می‌شود. اگر هر دو مقدار count و deadline مشخص شده باشند، و تا زمان فرا رسیدن deadline کمتر از count بسته دریافت شده باشد، باز هم با کد 1 خارج خواهد شد. در صورت بروز خطاهای دیگر، با کد 2 خارج می‌شود. در غیر این صورت با کد 0 خارج خواهد شد. این امر استفاده از کد خروج را برای بررسی زنده بودن یا نبودن یک میزبان ممکن می‌سازد.

برای IPv6، هنگامی که نشانی مقصد دارای محدوده محلی پیوند (link-local) است و ping از ICMP datagram sockets استفاده می‌کند، رابط خروجی باید مشخص شود. هنگامی که ping از raw sockets استفاده می‌کند، مشخص کردن رابط خروجی اکیداً ضروری نیست اما باید برای جلوگیری از ابهام در صورت وجود چندین رابط خروجی ممکن انجام شود.

دو راه برای مشخص کردن رابط خروجی وجود دارد:

• با استفاده از نشانه‌گذاری %

نشانی مقصد با % و نام رابط خروجی یا ifindex پسوند می‌گیرد؛ برای نمونه:

ping fe80::5054:ff:fe70:67bc%eth0

ping fe80::5054:ff:fe70:67bc%2

• با استفاده از گزینه -I

هنگام استفاده از ICMP datagram sockets، این روش از نسخه‌های زیر در هسته لینوکس پشتیبانی می‌شود: 5.17، 5.15.19، 5.10.96، 5.4.176، 4.19.228، 4.14.265. همچنین روی musl libc پشتیبانی نمی‌شود.

یک سرآیند IP بدون گزینه‌ها ۲۰ بایت است. یک بسته ICMP ECHO_REQUEST شامل ۸ بایت اضافه سرآیند ICMP است که پس از آن مقدار دلخواهی داده قرار می‌گیرد. هنگامی که یک packetsize داده می‌شود، این نشان‌دهنده اندازه این بخش داده اضافی است (پیش‌فرض ۵۶ است). بنابراین مقدار داده دریافتی در داخل یک بسته IP از نوع ICMP ECHO_REPLY همواره ۸ بایت بیشتر از فضای داده درخواستی (سرآیند ICMP) خواهد بود.

اگر فضای داده حداقل به اندازه struct timeval باشد، ping از بایت‌های ابتدایی این فضا برای گنجاندن یک برچسب زمانی استفاده می‌کند که از آن در محاسبه زمان‌های رفت‌وبرگشت بهره می‌برد. اگر فضای داده کوتاه‌تر باشد، هیچ زمان رفت‌وبرگشتی ارائه نمی‌شود.

دستور ping بسته‌های تکراری و آسیب‌دیده را گزارش می‌کند. بسته‌های تکراری هرگز نباید رخ دهند، و به نظر می‌رسد ناشی از ارسال‌های مجدد نامناسب در سطح پیوند (link-level) باشند. بسته‌های تکراری ممکن است در موقعیت‌های مختلفی رخ دهند و به ندرت (در صورت وقوع) نشانه خوبی هستند، اگرچه وجود سطوح پایینی از تکرارها ممکن است همواره دلیلی برای هشدار نباشد.

بسته‌های آسیب‌دیده آشکارا دلیلی جدی برای هشدار هستند و اغلب نشان‌دهنده سخت‌افزار خراب در جایی در مسیر بسته ping هستند (در شبکه یا در میزبان‌ها).

برخلاف TCP و UDP که از درگاه (port) برای شناسایی یکتای گیرنده جهت تحویل داده استفاده می‌کنند، ICMP از فیلد شناسه (ID) برای شناسایی بهره می‌برد. بنابراین، اگر روی یک دستگاه به طور همزمان دو فرایند پینگ از یک شناسه یکسان استفاده کنند، پاسخ echo ممکن است به گیرنده نادرست تحویل داده شود. این یک مشکل شناخته‌شده به دلیل اندازه محدود فیلد ۱۶ بیتی شناسه است. این یک محدودیت تاریخی پروتکل است که در حال حاضر قابل رفع نیست، مگر اینکه شناسه‌ای را در بار مفید (payload) بسته پینگ کدگذاری کنیم. دستور ping خطای DIFFERENT ADDRESS را چاپ می‌کند و درصد بسته‌های گم‌شده منفی می‌شود.

دستور ping از PID برای به دست آوردن یک عدد یکتا استفاده می‌کند. مقدار پیش‌فرض /proc/sys/kernel/pid_max برابر ۳۲۷۶۸ است. در سیستم‌هایی که استفاده سنگینی از پینگ دارند و مقدار pid_max در آن‌ها بیشتر از ۶۵۵۳۵ باشد، تداخل‌ها حتماً رخ خواهند داد.

لایه (بین-)شبکه هرگز نباید با بسته‌ها بر اساس داده‌های موجود در بخش داده رفتار متفاوتی داشته باشد. متاسفانه، مشکلات وابسته به داده به درون شبکه‌ها رخنه کرده و برای دوره‌های طولانی ناشناخته باقی مانده‌اند. در بسیاری از موارد، الگوی خاصی که دچار مشکل می‌شود، چیزی است که “گذارها” (transitions) کافی ندارد، مانند همه یک‌ها یا همه صفرها، یا الگویی درست در لبه، مانند تقریباً همه صفرها. مشخص کردن یک الگوی داده مثلاً از همه صفرها در خط فرمان لزوماً کافی نیست، زیرا الگوی مورد نظر در سطح پیوند داده (data link) قرار دارد و رابطه میان آنچه تایپ می‌کنید و آنچه کنترلرها ارسال می‌کنند می‌تواند پیچیده باشد.

این بدان معناست که اگر با مشکلی وابسته به داده مواجه شدید، احتمالاً باید آزمایش‌های زیادی برای پیدا کردن آن انجام دهید. اگر خوش‌شانس باشید، ممکن است فایلی بیابید که یا از طریق شبکه شما ارسال نمی‌شود یا انتقال آن بسیار طولانی‌تر از سایر فایل‌های با اندازه مشابه طول می‌کشد. سپس می‌توانید این فایل را برای الگوهای تکراری بررسی کرده و آن‌ها را با استفاده از گزینه -p در ping بیازمایید.

مقدار TTL در یک بسته IP نشان‌دهنده حداکثر تعداد مسیریاب‌های IP است که بسته می‌تواند پیش از دور انداخته شدن از آن‌ها عبور کند. در عملکرد فعلی، می‌توانید انتظار داشته باشید که هر مسیریاب در اینترنت مقدار فیلد TTL را دقیقاً یک واحد کاهش دهد.

فیلد TTL برای بسته‌های TCP ممکن است مقادیر گوناگونی بگیرد. حداکثر مقدار ممکن برای این فیلد ۲۵۵ و مقدار اولیه توصیه‌شده ۶۴ است. برای اطلاعات بیشتر، بخش رابط سطح پایین TCP در RFC9293 را ببینید.

در عملکرد عادی، ping مقدار TTL را از بسته‌ای که دریافت می‌کند چاپ می‌کند. هنگامی که یک سیستم دوردست بسته پینگ را دریافت می‌کند، می‌تواند در پاسخ خود با فیلد TTL یکی از سه کار زیر را انجام دهد:

• آن را تغییر ندهد؛ این کاری است که سیستم‌های یونیکس برکلی پیش از انتشار 4.3BSD Tahoe انجام می‌دادند. در این حالت، مقدار TTL در بسته دریافتی برابر ۲۵۵ منهای تعداد مسیریاب‌ها در مسیر رفت‌وبرگشت خواهد بود.
• آن را روی ۲۵۵ تنظیم کند؛ این کاری است که سیستم‌های فعلی یونیکس برکلی انجام می‌دهند. در این حالت، مقدار TTL در بسته دریافتی برابر ۲۵۵ منهای تعداد مسیریاب‌ها در مسیر از سیستم دوردست به میزبان pingکننده خواهد بود.
• آن را روی مقدار دیگری تنظیم کند. برخی ماشین‌ها از همان مقداری برای بسته‌های ICMP استفاده می‌کنند که برای بسته‌های TCP به کار می‌برند، به عنوان نمونه ۳۰ یا ۶۰. ماشین‌های دیگر ممکن است از مقادیر کاملاً نامتعارفی استفاده کنند.

• بسیاری از میزبان‌ها و دروازه‌ها گزینه RECORD_ROUTE را نادیده می‌گیرند.
• حداکثر طول سرآیند IP برای اینکه گزینه‌هایی مانند RECORD_ROUTE کاملاً مفید واقع شوند بسیار کوچک است. با این حال، کار زیادی نمی‌توان در این باره انجام داد.
• پینگ سیلابی (Flood pinging) به طور کلی توصیه نمی‌شود، و پینگ سیلابی به یک نشانی پخشی (broadcast) تنها باید تحت شرایط کاملاً کنترل‌شده انجام گیرد.

ip(8), ss(8).

دستور ping در 4.3BSD پدیدار شد.

نسخه‌ای که در اینجا شرح داده شده، نواده مختص لینوکس آن است.

از نسخه s20150815، باینری ping6 دیگر وجود ندارد. این برنامه درون ping ادغام شده است. ایجاد یک پیوند نمادین (symlink) با نام ping6 که به ping اشاره دارد، همان عملکرد پیشین را ارائه خواهد داد.

دستور ping برای اجرا نیاز به مجوز CAP_NET_RAW دارد: ۱) در صورتی که برنامه برای پرس‌وجوهای غیر echo به کار رود (گزینه -N را ببینید) یا هنگامی که فیلد شناسه برای ECHO_REQUEST روی 0 تنظیم شده باشد (گزینه -e را ببینید)، یا ۲) اگر هسته از سوکت‌های دیتاگرام ICMP پشتیبانی نکند، یا ۳) اگر کاربر مجاز به ساختن یک سوکت echo در ICMP نباشد. برنامه ممکن است به صورت set-uid root به کار رود.

دستور ping بخشی از بسته iputils است.

iputils 20250605