xref: /freebsd/sbin/ping/ping.8 (revision e17f5b1d)
1.\" Copyright (c) 1985, 1991, 1993
2.\"	The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. Neither the name of the University nor the names of its contributors
13.\"    may be used to endorse or promote products derived from this software
14.\"    without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\"     @(#)ping.8	8.2 (Berkeley) 12/11/93
29.\" $FreeBSD$
30.\"
31.Dd August 22, 2019
32.Dt PING 8
33.Os
34.Sh NAME
35.Nm ping
36.Nd send
37.Tn ICMP ECHO_REQUEST
38packets to network hosts
39.Sh SYNOPSIS
40.Nm
41.Op Fl AaDdfHnoQqRrv
42.Op Fl c Ar count
43.Op Fl G Ar sweepmaxsize
44.Op Fl g Ar sweepminsize
45.Op Fl h Ar sweepincrsize
46.Op Fl i Ar wait
47.Op Fl l Ar preload
48.Op Fl M Cm mask | time
49.Op Fl m Ar ttl
50.Op Fl P Ar policy
51.Op Fl p Ar pattern
52.Op Fl S Ar src_addr
53.Op Fl s Ar packetsize
54.Op Fl t Ar timeout
55.Op Fl W Ar waittime
56.Op Fl z Ar tos
57.Ar host
58.Nm
59.Op Fl AaDdfHLnoQqRrv
60.Op Fl c Ar count
61.Op Fl I Ar iface
62.Op Fl i Ar wait
63.Op Fl l Ar preload
64.Op Fl M Cm mask | time
65.Op Fl m Ar ttl
66.Op Fl P Ar policy
67.Op Fl p Ar pattern
68.Op Fl S Ar src_addr
69.Op Fl s Ar packetsize
70.Op Fl T Ar ttl
71.Op Fl t Ar timeout
72.Op Fl W Ar waittime
73.Op Fl z Ar tos
74.Ar mcast-group
75.Sh DESCRIPTION
76The
77.Nm
78utility uses the
79.Tn ICMP
80.No protocol Ap s mandatory
81.Tn ECHO_REQUEST
82datagram to elicit an
83.Tn ICMP ECHO_RESPONSE
84from a host or gateway.
85.Tn ECHO_REQUEST
86datagrams
87.Pq Dq pings
88have an IP and
89.Tn ICMP
90header, followed by a
91.Dq struct timeval
92and then an arbitrary number of
93.Dq pad
94bytes used to fill out the packet.
95The options are as follows:
96.Bl -tag -width indent
97.It Fl A
98Audible.
99Output a bell
100.Tn ( ASCII
1010x07)
102character when no packet is received before the next packet
103is transmitted.
104To cater for round-trip times that are longer than the interval
105between transmissions, further missing packets cause a bell only
106if the maximum number of unreceived packets has increased.
107.It Fl a
108Audible.
109Include a bell
110.Tn ( ASCII
1110x07)
112character in the output when any packet is received.
113This option is ignored
114if other format options are present.
115.It Fl c Ar count
116Stop after sending
117(and receiving)
118.Ar count
119.Tn ECHO_RESPONSE
120packets.
121If this option is not specified,
122.Nm
123will operate until interrupted.
124If this option is specified in conjunction with ping sweeps,
125each sweep will consist of
126.Ar count
127packets.
128.It Fl D
129Set the Don't Fragment bit.
130.It Fl d
131Set the
132.Dv SO_DEBUG
133option on the socket being used.
134.It Fl f
135Flood ping.
136Outputs packets as fast as they come back or one hundred times per second,
137whichever is more.
138For every
139.Tn ECHO_REQUEST
140sent a period
141.Dq .\&
142is printed, while for every
143.Tn ECHO_REPLY
144received a backspace is printed.
145This provides a rapid display of how many packets are being dropped.
146Only the super-user may use this option.
147.Bf -emphasis
148This can be very hard on a network and should be used with caution.
149.Ef
150.It Fl G Ar sweepmaxsize
151Specify the maximum size of
152.Tn ICMP
153payload when sending sweeping pings.
154This option is required for ping sweeps.
155.It Fl g Ar sweepminsize
156Specify the size of
157.Tn ICMP
158payload to start with when sending sweeping pings.
159The default value is 0.
160.It Fl H
161Hostname output.
162Try to do a reverse DNS lookup when displaying addresses.
163This is the opposite of the
164.Fl n
165option.
166.It Fl h Ar sweepincrsize
167Specify the number of bytes to increment the size of
168.Tn ICMP
169payload after
170each sweep when sending sweeping pings.
171The default value is 1.
172.It Fl I Ar iface
173Source multicast packets with the given interface address.
174This flag only applies if the ping destination is a multicast address.
175.It Fl i Ar wait
176Wait
177.Ar wait
178seconds
179.Em between sending each packet .
180The default is to wait for one second between each packet.
181The wait time may be fractional, but only the super-user may specify
182values less than 1 second.
183This option is incompatible with the
184.Fl f
185option.
186.It Fl L
187Suppress loopback of multicast packets.
188This flag only applies if the ping destination is a multicast address.
189.It Fl l Ar preload
190If
191.Ar preload
192is specified,
193.Nm
194sends that many packets as fast as possible before falling into its normal
195mode of behavior.
196Only the super-user may use this option.
197.It Fl M Cm mask | time
198Use
199.Dv ICMP_MASKREQ
200or
201.Dv ICMP_TSTAMP
202instead of
203.Dv ICMP_ECHO .
204For
205.Cm mask ,
206print the netmask of the remote machine.
207Set the
208.Va net.inet.icmp.maskrepl
209MIB variable to enable
210.Dv ICMP_MASKREPLY
211and
212.Va net.inet.icmp.maskfake
213if you want to override the netmask in the response.
214For
215.Cm time ,
216print the origination, reception and transmission timestamps.
217Set the
218.Va net.inet.icmp.tstamprepl
219MIB variable to enable or disable
220.Dv ICMP_TSTAMPREPLY .
221.It Fl m Ar ttl
222Set the IP Time To Live for outgoing packets.
223If not specified, the kernel uses the value of the
224.Va net.inet.ip.ttl
225MIB variable.
226.It Fl n
227Numeric output only.
228No attempt will be made to lookup symbolic names for host addresses.
229This is the opposite of
230.Fl H ,
231and it is the default behavior.
232.It Fl o
233Exit successfully after receiving one reply packet.
234.It Fl P Ar policy
235.Ar policy
236specifies IPsec policy for the ping session.
237For details please refer to
238.Xr ipsec 4
239and
240.Xr ipsec_set_policy 3 .
241.It Fl p Ar pattern
242You may specify up to 16
243.Dq pad
244bytes to fill out the packet you send.
245This is useful for diagnosing data-dependent problems in a network.
246For example,
247.Dq Li \-p ff
248will cause the sent packet to be filled with all
249ones.
250.It Fl Q
251Somewhat quiet output.
252.No Don Ap t
253display ICMP error messages that are in response to our query messages.
254Originally, the
255.Fl v
256flag was required to display such errors, but
257.Fl v
258displays all ICMP error messages.
259On a busy machine, this output can be overbearing.
260Without the
261.Fl Q
262flag,
263.Nm
264prints out any ICMP error messages caused by its own ECHO_REQUEST
265messages.
266.It Fl q
267Quiet output.
268Nothing is displayed except the summary lines at startup time and
269when finished.
270.It Fl R
271Record route.
272Includes the
273.Tn RECORD_ROUTE
274option in the
275.Tn ECHO_REQUEST
276packet and displays
277the route buffer on returned packets.
278Note that the IP header is only large enough for nine such routes;
279the
280.Xr traceroute 8
281command is usually better at determining the route packets take to a
282particular destination.
283If more routes come back than should, such as due to an illegal spoofed
284packet, ping will print the route list and then truncate it at the correct
285spot.
286Many hosts ignore or discard the
287.Tn RECORD_ROUTE
288option.
289.It Fl r
290Bypass the normal routing tables and send directly to a host on an attached
291network.
292If the host is not on a directly-attached network, an error is returned.
293This option can be used to ping a local host through an interface
294that has no route through it
295(e.g., after the interface was dropped by
296.Xr routed 8 ) .
297.It Fl S Ar src_addr
298Use the following IP address as the source address in outgoing packets.
299On hosts with more than one IP address, this option can be used to
300force the source address to be something other than the IP address
301of the interface the probe packet is sent on.
302If the IP address
303is not one of this machine's interface addresses, an error is
304returned and nothing is sent.
305.It Fl s Ar packetsize
306Specify the number of data bytes to be sent.
307The default is 56, which translates into 64
308.Tn ICMP
309data bytes when combined
310with the 8 bytes of
311.Tn ICMP
312header data.
313Only the super-user may specify values more than default.
314This option cannot be used with ping sweeps.
315.It Fl T Ar ttl
316Set the IP Time To Live for multicasted packets.
317This flag only applies if the ping destination is a multicast address.
318.It Fl t Ar timeout
319Specify a timeout, in seconds, before ping exits regardless of how
320many packets have been received.
321.It Fl v
322Verbose output.
323.Tn ICMP
324packets other than
325.Tn ECHO_RESPONSE
326that are received are listed.
327.It Fl W Ar waittime
328Time in milliseconds to wait for a reply for each packet sent.
329If a reply arrives later, the packet is not printed as replied, but
330considered as replied when calculating statistics.
331.It Fl z Ar tos
332Use the specified type of service.
333.El
334.Pp
335When using
336.Nm
337for fault isolation, it should first be run on the local host, to verify
338that the local network interface is up and running.
339Then, hosts and gateways further and further away should be
340.Dq pinged .
341Round-trip times and packet loss statistics are computed.
342If duplicate packets are received, they are not included in the packet
343loss calculation, although the round trip time of these packets is used
344in calculating the round-trip time statistics.
345When the specified number of packets have been sent
346(and received)
347or if the program is terminated with a
348.Dv SIGINT ,
349a brief summary is displayed, showing the number of packets sent and
350received, and the minimum, mean, maximum, and standard deviation of
351the round-trip times.
352.Pp
353If
354.Nm
355receives a
356.Dv SIGINFO
357(see the
358.Cm status
359argument for
360.Xr stty 1 )
361signal, the current number of packets sent and received, and the
362minimum, mean, and maximum of the round-trip times will be written to
363the standard error output.
364.Pp
365This program is intended for use in network testing, measurement and
366management.
367Because of the load it can impose on the network, it is unwise to use
368.Nm
369during normal operations or from automated scripts.
370.Sh ICMP PACKET DETAILS
371An IP header without options is 20 bytes.
372An
373.Tn ICMP
374.Tn ECHO_REQUEST
375packet contains an additional 8 bytes worth of
376.Tn ICMP
377header followed by an arbitrary amount of data.
378When a
379.Ar packetsize
380is given, this indicated the size of this extra piece of data
381(the default is 56).
382Thus the amount of data received inside of an IP packet of type
383.Tn ICMP
384.Tn ECHO_REPLY
385will always be 8 bytes more than the requested data space
386(the
387.Tn ICMP
388header).
389.Pp
390If the data space is at least eight bytes large,
391.Nm
392uses the first eight bytes of this space to include a timestamp which
393it uses in the computation of round trip times.
394If less than eight bytes of pad are specified, no round trip times are
395given.
396.Sh DUPLICATE AND DAMAGED PACKETS
397The
398.Nm
399utility will report duplicate and damaged packets.
400Duplicate packets should never occur when pinging a unicast address,
401and seem to be caused by
402inappropriate link-level retransmissions.
403Duplicates may occur in many situations and are rarely
404(if ever)
405a good sign, although the presence of low levels of duplicates may not
406always be cause for alarm.
407Duplicates are expected when pinging a broadcast or multicast address,
408since they are not really duplicates but replies from different hosts
409to the same request.
410.Pp
411Damaged packets are obviously serious cause for alarm and often
412indicate broken hardware somewhere in the
413.Nm
414packet's path (in the network or in the hosts).
415.Sh TRYING DIFFERENT DATA PATTERNS
416The
417(inter)network
418layer should never treat packets differently depending on the data
419contained in the data portion.
420Unfortunately, data-dependent problems have been known to sneak into
421networks and remain undetected for long periods of time.
422In many cases the particular pattern that will have problems is something
423that does not have sufficient
424.Dq transitions ,
425such as all ones or all zeros, or a pattern right at the edge, such as
426almost all zeros.
427It is not
428necessarily enough to specify a data pattern of all zeros (for example)
429on the command line because the pattern that is of interest is
430at the data link level, and the relationship between what you type and
431what the controllers transmit can be complicated.
432.Pp
433This means that if you have a data-dependent problem you will probably
434have to do a lot of testing to find it.
435If you are lucky, you may manage to find a file that either
436cannot
437be sent across your network or that takes much longer to transfer than
438other similar length files.
439You can then examine this file for repeated patterns that you can test
440using the
441.Fl p
442option of
443.Nm .
444.Sh TTL DETAILS
445The
446.Tn TTL
447value of an IP packet represents the maximum number of IP routers
448that the packet can go through before being thrown away.
449In current practice you can expect each router in the Internet to decrement
450the
451.Tn TTL
452field by exactly one.
453.Pp
454The
455.Tn TCP/IP
456specification recommends setting the
457.Tn TTL
458field for
459.Tn IP
460packets to 64, but many systems use smaller values
461.No ( Bx 4.3
462uses 30,
463.Bx 4.2
464used 15).
465.Pp
466The maximum possible value of this field is 255, and most
467.Ux
468systems set
469the
470.Tn TTL
471field of
472.Tn ICMP ECHO_REQUEST
473packets to 255.
474This is why you will find you can
475.Dq ping
476some hosts, but not reach them with
477.Xr telnet 1
478or
479.Xr ftp 1 .
480.Pp
481In normal operation
482.Nm
483prints the ttl value from the packet it receives.
484When a remote system receives a ping packet, it can do one of three things
485with the
486.Tn TTL
487field in its response:
488.Bl -bullet
489.It
490Not change it; this is what
491.Bx
492systems did before the
493.Bx 4.3 tahoe
494release.
495In this case the
496.Tn TTL
497value in the received packet will be 255 minus the
498number of routers in the round-trip path.
499.It
500Set it to 255; this is what current
501.Bx
502systems do.
503In this case the
504.Tn TTL
505value in the received packet will be 255 minus the
506number of routers in the path
507.Em from
508the remote system
509.Em to
510the
511.Nm Ns Em ing
512host.
513.It
514Set it to some other value.
515Some machines use the same value for
516.Tn ICMP
517packets that they use for
518.Tn TCP
519packets, for example either 30 or 60.
520Others may use completely wild values.
521.El
522.Sh EXIT STATUS
523The
524.Nm
525utility exits with one of the following values:
526.Bl -tag -width indent
527.It 0
528At least one response was heard from the specified
529.Ar host .
530.It 2
531The transmission was successful but no responses were received.
532.It any other value
533An error occurred.
534These values are defined in
535.In sysexits.h .
536.El
537.Sh SEE ALSO
538.Xr netstat 1 ,
539.Xr icmp 4 ,
540.Xr ifconfig 8 ,
541.Xr routed 8 ,
542.Xr traceroute 8
543.Sh HISTORY
544The
545.Nm
546utility appeared in
547.Bx 4.3 .
548.Sh AUTHORS
549The original
550.Nm
551utility was written by
552.An Mike Muuss
553while at the US Army Ballistics
554Research Laboratory.
555.Sh BUGS
556Many Hosts and Gateways ignore the
557.Tn RECORD_ROUTE
558option.
559.Pp
560The maximum IP header length is too small for options like
561.Tn RECORD_ROUTE
562to be completely useful.
563.No There Ap s
564not much that can be done about this, however.
565.Pp
566Flood pinging is not recommended in general, and flood pinging the
567broadcast address should only be done under very controlled conditions.
568.Pp
569The
570.Fl v
571option is not worth much on busy hosts.
572