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