1TCPDUMP(8)                  System Manager's Manual                 TCPDUMP(8)
2
3
4

NAME

6       tcpdump - dump traffic on a network
7

SYNOPSIS

9       tcpdump [ -AbdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
10               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
11               [ -i interface ] [ -m module ] [ -M secret ]
12               [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
13               [ -W filecount ]
14               [ -E spi@ipaddr algo:secret,...  ]
15               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
16               [ expression ]
17

DESCRIPTION

19       Tcpdump  prints  out a description of the contents of packets on a net‐
20       work interface that match the boolean expression.  It can also  be  run
21       with the -w flag, which causes it to save the packet data to a file for
22       later analysis, and/or with the -r flag, which causes it to read from a
23       saved packet file rather than to read packets from a network interface.
24       In all cases, only packets that match expression will be  processed  by
25       tcpdump.
26
27       Tcpdump  will,  if not run with the -c flag, continue capturing packets
28       until it is interrupted by a SIGINT signal (generated, for example,  by
29       typing your interrupt character, typically control-C) or a SIGTERM sig‐
30       nal (typically generated with the kill(1) command); if run with the  -c
31       flag,  it  will  capture packets until it is interrupted by a SIGINT or
32       SIGTERM signal or the specified number of packets have been processed.
33
34       When tcpdump finishes capturing packets, it will report counts of:
35
36              packets ``captured'' (this is the number of packets that tcpdump
37              has received and processed);
38
39              packets  ``received  by filter'' (the meaning of this depends on
40              the OS on which you're running tcpdump, and possibly on the  way
41              the OS was configured - if a filter was specified on the command
42              line, on some OSes it counts packets regardless of whether  they
43              were  matched  by  the  filter expression and, even if they were
44              matched by the filter expression, regardless of whether  tcpdump
45              has  read  and  processed them yet, on other OSes it counts only
46              packets that were matched by the filter expression regardless of
47              whether  tcpdump  has  read and processed them yet, and on other
48              OSes it counts only packets that  were  matched  by  the  filter
49              expression and were processed by tcpdump);
50
51              packets  ``dropped  by  kernel''  (this is the number of packets
52              that were dropped, due to a lack of buffer space, by the  packet
53              capture  mechanism in the OS on which tcpdump is running, if the
54              OS reports that information to applications; if not, it will  be
55              reported as 0).
56
57       On  platforms  that  support  the  SIGINFO  signal,  such  as most BSDs
58       (including Mac OS X) and  Digital/Tru64  UNIX,  it  will  report  those
59       counts  when  it  receives a SIGINFO signal (generated, for example, by
60       typing your ``status'' character, typically control-T, although on some
61       platforms,  such  as  Mac  OS X, the ``status'' character is not set by
62       default, so you must set it with stty(1) in order to use it)  and  will
63       continue capturing packets.
64
65       Reading packets from a network interface may require that you have spe‐
66       cial privileges; see the pcap (3PCAP) man page for details.  Reading  a
67       saved packet file doesn't require special privileges.
68

OPTIONS

70       -A     Print each packet (minus its link level header) in ASCII.  Handy
71              for capturing web pages.
72
73       -b     Print the AS number in BGP packets in ASDOT notation rather than
74              ASPLAIN notation.
75
76       -B     Set the operating system capture buffer size to buffer_size.
77
78       -c     Exit after receiving count packets.
79
80       -C     Before  writing  a  raw  packet to a savefile, check whether the
81              file is currently larger than file_size and, if  so,  close  the
82              current  savefile and open a new one.  Savefiles after the first
83              savefile will have the name specified with the -w flag,  with  a
84              number after it, starting at 1 and continuing upward.  The units
85              of  file_size  are  millions  of  bytes  (1,000,000  bytes,  not
86              1,048,576 bytes).
87
88              Note  that when used with -Z option (enabled by default), privi‐
89              leges are dropped before opening first savefile.
90
91       -d     Dump the compiled packet-matching code in a human readable  form
92              to standard output and stop.
93
94       -dd    Dump packet-matching code as a C program fragment.
95
96       -ddd   Dump  packet-matching  code  as decimal numbers (preceded with a
97              count).
98
99       -D     Print the list of the network interfaces available on the system
100              and  on  which  tcpdump  can  capture packets.  For each network
101              interface, a number and an interface name, possibly followed  by
102              a  text description of the interface, is printed.  The interface
103              name or the number can be supplied to the -i flag to specify  an
104              interface on which to capture.
105
106              This  can be useful on systems that don't have a command to list
107              them (e.g., Windows systems, or UNIX  systems  lacking  ifconfig
108              -a); the number can be useful on Windows 2000 and later systems,
109              where the interface name is a somewhat complex string.
110
111              The -D flag will not be supported if tcpdump was built  with  an
112              older version of libpcap that lacks the pcap_findalldevs() func‐
113              tion.
114
115       -e     Print the link-level header on each dump line.
116
117       -E     Use spi@ipaddr algo:secret for decrypting IPsec ESP packets that
118              are addressed to addr and contain Security Parameter Index value
119              spi. This combination may be  repeated  with  comma  or  newline
120              seperation.
121
122              Note  that  setting the secret for IPv4 ESP packets is supported
123              at this time.
124
125              Algorithms may  be  des-cbc,  3des-cbc,  blowfish-cbc,  rc3-cbc,
126              cast128-cbc,  or  none.  The default is des-cbc.  The ability to
127              decrypt packets is only present if  tcpdump  was  compiled  with
128              cryptography enabled.
129
130              secret  is  the  ASCII text for ESP secret key.  If preceeded by
131              0x, then a hex value will be read.
132
133              The option assumes RFC2406 ESP, not RFC1827 ESP.  The option  is
134              only  for  debugging purposes, and the use of this option with a
135              true `secret' key is discouraged.  By  presenting  IPsec  secret
136              key  onto  command line you make it visible to others, via ps(1)
137              and other occasions.
138
139              In addition to the above syntax, the syntax  file  name  may  be
140              used  to  have  tcpdump  read  the provided file in. The file is
141              opened upon receiving the first ESP packet, so any special  per‐
142              missions  that  tcpdump  may have been given should already have
143              been given up.
144
145       -f     Print `foreign' IPv4 addresses numerically rather than  symboli‐
146              cally  (this option is intended to get around serious brain dam‐
147              age in Sun's NIS server — usually it hangs  forever  translating
148              non-local internet numbers).
149
150              The  test  for  `foreign'  IPv4 addresses is done using the IPv4
151              address and netmask of the interface on which capture  is  being
152              done.   If that address or netmask are not available, available,
153              either because the interface on which capture is being done  has
154              no  address  or  netmask or because the capture is being done on
155              the Linux "any" interface, which can capture on  more  than  one
156              interface, this option will not work correctly.
157
158       -F     Use  file  as  input  for  the filter expression.  An additional
159              expression given on the command line is ignored.
160
161       -G     If specified, rotates the dump file specified with the -w option
162              every  rotate_seconds  seconds.   Savefiles  will  have the name
163              specified by -w which should include a time format as defined by
164              strftime(3).  If no time format is specified, each new file will
165              overwrite the previous.
166
167              If used in conjunction with the -C option, filenames  will  take
168              the form of `file<count>'.
169
170       -i     Listen  on interface.  If unspecified, tcpdump searches the sys‐
171              tem interface list for the lowest numbered, configured up inter‐
172              face (excluding loopback).  Ties are broken by choosing the ear‐
173              liest match.
174
175              On Linux systems with 2.2 or later kernels, an  interface  argu‐
176              ment  of  ``any'' can be used to capture packets from all inter‐
177              faces.  Note that captures on the ``any''  device  will  not  be
178              done in promiscuous mode.
179
180              If  the  -D flag is supported, an interface number as printed by
181              that flag can be used as the interface argument.
182
183       -I     Put the interface in "monitor mode"; this is supported  only  on
184              IEEE 802.11 Wi-Fi interfaces, and supported only on some operat‐
185              ing systems.
186
187              Note that in monitor mode the adapter  might  disassociate  from
188              the  network with which it's associated, so that you will not be
189              able to use any wireless networks with that adapter.  This could
190              prevent  accessing  files on a network server, or resolving host
191              names or network addresses, if you are capturing in monitor mode
192              and are not connected to another network with another adapter.
193
194              This  flag  will  affect the output of the -L flag.  If -I isn't
195              specified, only those link-layer types  available  when  not  in
196              monitor mode will be shown; if -I is specified, only those link-
197              layer types available when in monitor mode will be shown.
198
199       -K     Don't attempt to verify IP, TCP, or UDP checksums.  This is use‐
200              ful  for  interfaces  that perform some or all of those checksum
201              calculation in hardware; otherwise, all outgoing  TCP  checksums
202              will be flagged as bad.
203
204       -l     Make  stdout  line buffered.  Useful if you want to see the data
205              while capturing it.  E.g.,
206              ``tcpdump  -l  |  tee     dat''     or     ``tcpdump  -l       >
207              dat  &  tail  -f  dat''.
208
209       -L     List  the known data link types for the interface, in the speci‐
210              fied mode, and exit.  The list of known data link types  may  be
211              dependent on the specified mode; for example, on some platforms,
212              a Wi-Fi interface might support one set of data link types  when
213              not  in  monitor  mode  (for example, it might support only fake
214              Ethernet headers, or might support 802.11 headers but  not  sup‐
215              port  802.11  headers with radio information) and another set of
216              data link types when in monitor mode (for example, it might sup‐
217              port  802.11  headers, or 802.11 headers with radio information,
218              only in monitor mode).
219
220       -m     Load SMI MIB module definitions from file module.   This  option
221              can  be used several times to load several MIB modules into tcp‐
222              dump.
223
224       -M     Use secret as a shared secret for validating the  digests  found
225              in TCP segments with the TCP-MD5 option (RFC 2385), if present.
226
227       -n     Don't  convert  host  addresses  to  names.  This can be used to
228              avoid DNS lookups.
229
230       -nn    Don't convert protocol and port numbers etc. to names either.
231
232       -N     Don't print domain name qualification of host names.   E.g.,  if
233              you  give  this  flag then tcpdump will print ``nic'' instead of
234              ``nic.ddn.mil''.
235
236       -O     Do not run the packet-matching code optimizer.  This  is  useful
237              only if you suspect a bug in the optimizer.
238
239       -p     Don't  put  the  interface into promiscuous mode.  Note that the
240              interface might be in promiscuous mode for  some  other  reason;
241              hence,  `-p'  cannot  be used as an abbreviation for `ether host
242              {local-hw-addr} or ether broadcast'.
243
244       -q     Quick (quiet?) output.  Print less protocol information so  out‐
245              put lines are shorter.
246
247       -R     Assume  ESP/AH packets to be based on old specification (RFC1825
248              to RFC1829).  If specified, tcpdump will not print  replay  pre‐
249              vention  field.   Since  there  is  no protocol version field in
250              ESP/AH specification,  tcpdump  cannot  deduce  the  version  of
251              ESP/AH protocol.
252
253       -r     Read  packets  from file (which was created with the -w option).
254              Standard input is used if file is ``-''.
255
256       -S     Print absolute, rather than relative, TCP sequence numbers.
257
258       -s     Snarf snaplen bytes of data from each  packet  rather  than  the
259              default  of 65535 bytes.  Packets truncated because of a limited
260              snapshot are indicated in the output  with  ``[|proto]'',  where
261              proto  is the name of the protocol level at which the truncation
262              has occurred.  Note that taking larger snapshots both  increases
263              the amount of time it takes to process packets and, effectively,
264              decreases the amount of packet buffering.  This may cause  pack‐
265              ets to be lost.  You should limit snaplen to the smallest number
266              that will capture the protocol information you're interested in.
267              Setting  snaplen to 0 sets it to the default of 65535, for back‐
268              wards compatibility with recent older versions of tcpdump.
269
270       -T     Force packets selected by "expression"  to  be  interpreted  the
271              specified  type.   Currently  known  types  are aodv (Ad-hoc On-
272              demand Distance Vector protocol), cnfp (Cisco NetFlow protocol),
273              rpc  (Remote Procedure Call), rtp (Real-Time Applications proto‐
274              col), rtcp (Real-Time Applications control protocol), snmp (Sim‐
275              ple  Network  Management  Protocol), tftp (Trivial File Transfer
276              Protocol), vat (Visual Audio Tool), and  wb  (distributed  White
277              Board).
278
279       -t     Don't print a timestamp on each dump line.
280
281       -tt    Print an unformatted timestamp on each dump line.
282
283       -ttt   Print a delta (micro-second resolution) between current and pre‐
284              vious line on each dump line.
285
286       -tttt  Print a timestamp in default format proceeded by  date  on  each
287              dump line.
288
289       -ttttt Print  a  delta  (micro-second  resolution)  between current and
290              first line on each dump line.
291
292       -u     Print undecoded NFS handles.
293
294       -U     Make output saved via the -w option  ``packet-buffered'';  i.e.,
295              as  each packet is saved, it will be written to the output file,
296              rather than being written only when the output buffer fills.
297
298              The -U flag will not be supported if tcpdump was built  with  an
299              older  version of libpcap that lacks the pcap_dump_flush() func‐
300              tion.
301
302       -v     When parsing and printing, produce (slightly more) verbose  out‐
303              put.   For  example,  the  time  to  live, identification, total
304              length and options in an IP packet are  printed.   Also  enables
305              additional  packet integrity checks such as verifying the IP and
306              ICMP header checksum.
307
308              When writing to a file with the -w option, report, every 10 sec‐
309              onds, the number of packets captured.
310
311       -vv    Even  more  verbose  output.  For example, additional fields are
312              printed from NFS  reply  packets,  and  SMB  packets  are  fully
313              decoded.
314
315       -vvv   Even more verbose output.  For example, telnet SB ... SE options
316              are printed in full.  With -X Telnet options are printed in  hex
317              as well.
318
319       -w     Write  the  raw packets to file rather than parsing and printing
320              them out.  They can later be printed with the -r option.   Stan‐
321              dard  output is used if file is ``-''.  See pcap-savefile(5) for
322              a description of the file format.
323
324       -W     Used in conjunction with the -C option, this will limit the num‐
325              ber  of  files  created to the specified number, and begin over‐
326              writing files from the beginning,  thus  creating  a  'rotating'
327              buffer.  In addition, it will name the files with enough leading
328              0s to support the maximum number of files, allowing them to sort
329              correctly.
330
331              Used in conjunction with the -G option, this will limit the num‐
332              ber of rotated dump files that get created, exiting with  status
333              0 when reaching the limit. If used with -C as well, the behavior
334              will result in cyclical files per timeslice.
335
336       -x     When parsing and printing, in addition to printing  the  headers
337              of  each  packet,  print the data of each packet (minus its link
338              level header) in hex.  The  smaller  of  the  entire  packet  or
339              snaplen  bytes  will  be  printed.  Note that this is the entire
340              link-layer packet, so for link layers that pad (e.g.  Ethernet),
341              the  padding  bytes  will  also be printed when the higher layer
342              packet is shorter than the required padding.
343
344       -xx    When parsing and printing, in addition to printing  the  headers
345              of  each  packet,  print  the data of each packet, including its
346              link level header, in hex.
347
348       -X     When parsing and printing, in addition to printing  the  headers
349              of  each  packet,  print the data of each packet (minus its link
350              level header)  in  hex  and  ASCII.   This  is  very  handy  for
351              analysing new protocols.
352
353       -XX    When  parsing  and printing, in addition to printing the headers
354              of each packet, print the data of  each  packet,  including  its
355              link level header, in hex and ASCII.
356
357       -y     Set  the  data  link  type  to  use  while  capturing packets to
358              datalinktype.
359
360       -z     Used in conjunction with the -C or -G options,  this  will  make
361              tcpdump  run  "  command file " where file is the savefile being
362              closed after each rotation. For example, specifying -z  gzip  or
363              -z bzip2 will compress each savefile using gzip or bzip2.
364
365              Note  that  tcpdump will run the command in parallel to the cap‐
366              ture, using the lowest priority so that this doesn't disturb the
367              capture process.
368
369              And  in  case  you would like to use a command that itself takes
370              flags or different arguments,  you  can  always  write  a  shell
371              script  that  will  take the savefile name as the only argument,
372              make the flags & arguments arrangements and execute the  command
373              that you want.
374
375       -Z     Drops  privileges  (if root) and changes user ID to user and the
376              group ID to the primary group of user.
377
378              This behavior is enabled by default (-Z  tcpdump),  and  can  be
379              disabled by -Z root.
380
381
382        expression
383              selects  which  packets  will  be  dumped.   If no expression is
384              given, all packets on the net will be dumped.   Otherwise,  only
385              packets for which expression is `true' will be dumped.
386
387              For the expression syntax, see pcap-filter(7).
388
389              Expression arguments can be passed to tcpdump as either a single
390              argument or as multiple arguments, whichever is more convenient.
391              Generally,  if  the expression contains Shell metacharacters, it
392              is easier to pass it as a  single,  quoted  argument.   Multiple
393              arguments are concatenated with spaces before being parsed.
394

EXAMPLES

396       To print all packets arriving at or departing from sundown:
397              tcpdump host sundown
398
399       To print traffic between helios and either hot or ace:
400              tcpdump host helios and \( hot or ace \)
401
402       To print all IP packets between ace and any host except helios:
403              tcpdump ip host ace and not helios
404
405       To print all traffic between local hosts and hosts at Berkeley:
406              tcpdump net ucb-ether
407
408       To  print all ftp traffic through internet gateway snup: (note that the
409       expression is quoted to prevent the shell from  (mis-)interpreting  the
410       parentheses):
411              tcpdump 'gateway snup and (port ftp or ftp-data)'
412
413       To  print traffic neither sourced from nor destined for local hosts (if
414       you gateway to one other net, this stuff should never make it onto your
415       local net).
416              tcpdump ip and not net localnet
417
418       To  print  the  start and end packets (the SYN and FIN packets) of each
419       TCP conversation that involves a non-local host.
420              tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
421
422       To print all IPv4 HTTP packets to and from port  80,  i.e.  print  only
423       packets  that  contain  data, not, for example, SYN and FIN packets and
424       ACK-only packets.  (IPv6 is left as an exercise for the reader.)
425              tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
426
427       To print IP packets longer than 576 bytes sent through gateway snup:
428              tcpdump 'gateway snup and ip[2:2] > 576'
429
430       To print IP broadcast or multicast packets that were not sent via  Eth‐
431       ernet broadcast or multicast:
432              tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
433
434       To print all ICMP packets that are not echo requests/replies (i.e., not
435       ping packets):
436              tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'
437

OUTPUT FORMAT

439       The output of tcpdump is protocol dependent.   The  following  gives  a
440       brief description and examples of most of the formats.
441
442       Link Level Headers
443
444       If  the '-e' option is given, the link level header is printed out.  On
445       Ethernets, the source and destination addresses, protocol,  and  packet
446       length are printed.
447
448       On  FDDI  networks, the  '-e' option causes tcpdump to print the `frame
449       control' field,  the source and destination addresses, and  the  packet
450       length.   (The  `frame control' field governs the interpretation of the
451       rest of the packet.  Normal packets (such as those containing IP  data‐
452       grams)  are `async' packets, with a priority value between 0 and 7; for
453       example, `async4'.  Such packets are assumed to contain an 802.2  Logi‐
454       cal  Link  Control (LLC) packet; the LLC header is printed if it is not
455       an ISO datagram or a so-called SNAP packet.
456
457       On Token Ring networks, the '-e' option causes  tcpdump  to  print  the
458       `access control' and `frame control' fields, the source and destination
459       addresses, and the packet length.  As on  FDDI  networks,  packets  are
460       assumed  to  contain  an  LLC  packet.   Regardless of whether the '-e'
461       option is specified or not, the source routing information  is  printed
462       for source-routed packets.
463
464       On  802.11 networks, the '-e' option causes tcpdump to print the `frame
465       control' fields, all of the addresses in the  802.11  header,  and  the
466       packet  length.  As on FDDI networks, packets are assumed to contain an
467       LLC packet.
468
469       (N.B.: The following description assumes familiarity with the SLIP com‐
470       pression algorithm described in RFC-1144.)
471
472       On SLIP links, a direction indicator (``I'' for inbound, ``O'' for out‐
473       bound), packet type, and compression information are printed out.   The
474       packet  type is printed first.  The three types are ip, utcp, and ctcp.
475       No further link information is printed for ip packets.  For  TCP  pack‐
476       ets,  the  connection identifier is printed following the type.  If the
477       packet is compressed, its encoded header is printed out.   The  special
478       cases are printed out as *S+n and *SA+n, where n is the amount by which
479       the sequence number (or sequence number and ack) has changed.  If it is
480       not  a  special  case,  zero  or more changes are printed.  A change is
481       indicated by U (urgent pointer), W (window), A (ack), S (sequence  num‐
482       ber), and I (packet ID), followed by a delta (+n or -n), or a new value
483       (=n).  Finally, the amount of data in the packet and compressed  header
484       length are printed.
485
486       For  example,  the  following  line  shows  an  outbound compressed TCP
487       packet, with an implicit connection identifier; the ack has changed  by
488       6, the sequence number by 49, and the packet ID by 6; there are 3 bytes
489       of data and 6 bytes of compressed header:
490              O ctcp * A+6 S+49 I+6 3 (6)
491
492       ARP/RARP Packets
493
494       Arp/rarp output shows the type of request and its arguments.  The  for‐
495       mat  is  intended to be self explanatory.  Here is a short sample taken
496       from the start of an `rlogin' from host rtsg to host csam:
497              arp who-has csam tell rtsg
498              arp reply csam is-at CSAM
499       The first line says that rtsg sent an arp packet asking for the  Ether‐
500       net  address  of  internet  host  csam.  Csam replies with its Ethernet
501       address (in this example, Ethernet addresses are in caps  and  internet
502       addresses in lower case).
503
504       This would look less redundant if we had done tcpdump -n:
505              arp who-has 128.3.254.6 tell 128.3.254.68
506              arp reply 128.3.254.6 is-at 02:07:01:00:01:c4
507
508       If  we had done tcpdump -e, the fact that the first packet is broadcast
509       and the second is point-to-point would be visible:
510              RTSG Broadcast 0806  64: arp who-has csam tell rtsg
511              CSAM RTSG 0806  64: arp reply csam is-at CSAM
512       For the first packet this says the Ethernet source address is RTSG, the
513       destination is the Ethernet broadcast address, the type field contained
514       hex 0806 (type ETHER_ARP) and the total length was 64 bytes.
515
516       TCP Packets
517
518       (N.B.:The following description assumes familiarity with the TCP proto‐
519       col  described  in RFC-793.  If you are not familiar with the protocol,
520       neither this description nor tcpdump will be of much use to you.)
521
522       The general format of a tcp protocol line is:
523              src > dst: flags data-seqno ack window urgent options
524       Src and dst are the source and  destination  IP  addresses  and  ports.
525       Flags  are  some  combination of S (SYN), F (FIN), P (PUSH), R (RST), W
526       (ECN CWR) or E (ECN-Echo), or a  single  `.'  (no  flags).   Data-seqno
527       describes  the  portion  of  sequence space covered by the data in this
528       packet (see example below).  Ack is sequence number of  the  next  data
529       expected  the other direction on this connection.  Window is the number
530       of bytes of receive buffer space available the other direction on  this
531       connection.   Urg  indicates  there  is  `urgent'  data  in the packet.
532       Options are tcp options enclosed in angle brackets (e.g., <mss 1024>).
533
534       Src, dst and flags are always present.  The other fields depend on  the
535       contents  of  the  packet's  tcp protocol header and are output only if
536       appropriate.
537
538       Here is the opening portion of an rlogin from host rtsg to host csam.
539              rtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
540              csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>
541              rtsg.1023 > csam.login: . ack 1 win 4096
542              rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
543              csam.login > rtsg.1023: . ack 2 win 4096
544              rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
545              csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
546              csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
547              csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1
548       The first line says that tcp port 1023 on rtsg sent a  packet  to  port
549       login  on csam.  The S indicates that the SYN flag was set.  The packet
550       sequence number was 768512 and it contained no data.  (The notation  is
551       `first:last(nbytes)'  which means `sequence numbers first up to but not
552       including last which is nbytes bytes of  user  data'.)   There  was  no
553       piggy-backed ack, the available receive window was 4096 bytes and there
554       was a max-segment-size option requesting an mss of 1024 bytes.
555
556       Csam replies with a similar packet except it  includes  a  piggy-backed
557       ack for rtsg's SYN.  Rtsg then acks csam's SYN.  The `.' means no flags
558       were set.  The packet contained no data so there is  no  data  sequence
559       number.  Note that the ack sequence number is a small integer (1).  The
560       first time tcpdump sees a tcp `conversation', it  prints  the  sequence
561       number from the packet.  On subsequent packets of the conversation, the
562       difference between the current packet's sequence number and  this  ini‐
563       tial  sequence  number  is  printed.   This means that sequence numbers
564       after the first can be interpreted as relative byte  positions  in  the
565       conversation's  data  stream  (with  the first data byte each direction
566       being `1').  `-S' will override  this  feature,  causing  the  original
567       sequence numbers to be output.
568
569       On  the  6th line, rtsg sends csam 19 bytes of data (bytes 2 through 20
570       in the rtsg → csam side of the conversation).  The PUSH flag is set  in
571       the packet.  On the 7th line, csam says it's received data sent by rtsg
572       up to but not including byte 21.  Most of this data is apparently  sit‐
573       ting  in  the  socket  buffer since csam's receive window has gotten 19
574       bytes smaller.  Csam also sends one  byte  of  data  to  rtsg  in  this
575       packet.   On  the  8th  and  9th lines, csam sends two bytes of urgent,
576       pushed data to rtsg.
577
578       If the snapshot was small enough that tcpdump didn't capture  the  full
579       TCP  header,  it  interprets  as  much of the header as it can and then
580       reports ``[|tcp]'' to indicate the remainder could not be  interpreted.
581       If  the header contains a bogus option (one with a length that's either
582       too small or beyond the end of  the  header),  tcpdump  reports  it  as
583       ``[bad  opt]''  and  does not interpret any further options (since it's
584       impossible to tell where they start).  If the header  length  indicates
585       options  are  present but the IP datagram length is not long enough for
586       the options to actually be there, tcpdump  reports  it  as  ``[bad  hdr
587       length]''.
588
589       Capturing  TCP packets with particular flag combinations (SYN-ACK, URG-
590       ACK, etc.)
591
592       There are 8 bits in the control bits section of the TCP header:
593
594              CWR | ECE | URG | ACK | PSH | RST | SYN | FIN
595
596       Let's assume that we want to watch packets used in establishing  a  TCP
597       connection.   Recall  that  TCP uses a 3-way handshake protocol when it
598       initializes a new connection; the connection sequence  with  regard  to
599       the TCP control bits is
600
601              1) Caller sends SYN
602              2) Recipient responds with SYN, ACK
603              3) Caller sends ACK
604
605       Now  we're  interested  in capturing packets that have only the SYN bit
606       set (Step 1).  Note that we don't want packets from step  2  (SYN-ACK),
607       just  a plain initial SYN.  What we need is a correct filter expression
608       for tcpdump.
609
610       Recall the structure of a TCP header without options:
611
612        0                            15                              31
613       -----------------------------------------------------------------
614       |          source port          |       destination port        |
615       -----------------------------------------------------------------
616       |                        sequence number                        |
617       -----------------------------------------------------------------
618       |                     acknowledgment number                     |
619       -----------------------------------------------------------------
620       |  HL   | rsvd  |C|E|U|A|P|R|S|F|        window size            |
621       -----------------------------------------------------------------
622       |         TCP checksum          |       urgent pointer          |
623       -----------------------------------------------------------------
624
625       A TCP header usually holds  20  octets  of  data,  unless  options  are
626       present.  The first line of the graph contains octets 0 - 3, the second
627       line shows octets 4 - 7 etc.
628
629       Starting to count with 0, the relevant TCP control bits  are  contained
630       in octet 13:
631
632        0             7|             15|             23|             31
633       ----------------|---------------|---------------|----------------
634       |  HL   | rsvd  |C|E|U|A|P|R|S|F|        window size            |
635       ----------------|---------------|---------------|----------------
636       |               |  13th octet   |               |               |
637
638       Let's have a closer look at octet no. 13:
639
640                       |               |
641                       |---------------|
642                       |C|E|U|A|P|R|S|F|
643                       |---------------|
644                       |7   5   3     0|
645
646       These  are the TCP control bits we are interested in.  We have numbered
647       the bits in this octet from 0 to 7, right to left, so the  PSH  bit  is
648       bit number 3, while the URG bit is number 5.
649
650       Recall  that  we  want to capture packets with only SYN set.  Let's see
651       what happens to octet 13 if a TCP datagram arrives with the SYN bit set
652       in its header:
653
654                       |C|E|U|A|P|R|S|F|
655                       |---------------|
656                       |0 0 0 0 0 0 1 0|
657                       |---------------|
658                       |7 6 5 4 3 2 1 0|
659
660       Looking at the control bits section we see that only bit number 1 (SYN)
661       is set.
662
663       Assuming that octet number 13 is an 8-bit unsigned integer  in  network
664       byte order, the binary value of this octet is
665
666              00000010
667
668       and its decimal representation is
669
670          7     6     5     4     3     2     1     0
671       0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2  =  2
672
673       We're  almost  done,  because  now we know that if only SYN is set, the
674       value of the 13th octet in the TCP header, when interpreted as a  8-bit
675       unsigned integer in network byte order, must be exactly 2.
676
677       This relationship can be expressed as
678              tcp[13] == 2
679
680       We  can use this expression as the filter for tcpdump in order to watch
681       packets which have only SYN set:
682              tcpdump -i xl0 tcp[13] == 2
683
684       The expression says "let the 13th octet of a TCP datagram have the dec‐
685       imal value 2", which is exactly what we want.
686
687       Now,  let's  assume  that  we need to capture SYN packets, but we don't
688       care if ACK or any other TCP control bit  is  set  at  the  same  time.
689       Let's see what happens to octet 13 when a TCP datagram with SYN-ACK set
690       arrives:
691
692            |C|E|U|A|P|R|S|F|
693            |---------------|
694            |0 0 0 1 0 0 1 0|
695            |---------------|
696            |7 6 5 4 3 2 1 0|
697
698       Now bits 1 and 4 are set in the 13th octet.  The binary value of  octet
699       13 is
700
701                   00010010
702
703       which translates to decimal
704
705          7     6     5     4     3     2     1     0
706       0*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2   = 18
707
708       Now we can't just use 'tcp[13] == 18' in the tcpdump filter expression,
709       because that would select only those packets that have SYN-ACK set, but
710       not those with only SYN set.  Remember that we don't care if ACK or any
711       other control bit is set as long as SYN is set.
712
713       In order to achieve our goal, we need to logically AND the binary value
714       of  octet  13  with  some other value to preserve the SYN bit.  We know
715       that we want SYN to be set in any case,  so  we'll  logically  AND  the
716       value in the 13th octet with the binary value of a SYN:
717
718                 00010010 SYN-ACK              00000010 SYN
719            AND  00000010 (we want SYN)   AND  00000010 (we want SYN)
720                 --------                      --------
721            =    00000010                 =    00000010
722
723       We  see  that  this  AND  operation delivers the same result regardless
724       whether ACK or another TCP control bit is set.  The decimal representa‐
725       tion  of  the  AND  value  as well as the result of this operation is 2
726       (binary 00000010), so we know that for packets with SYN set the follow‐
727       ing relation must hold true:
728
729              ( ( value of octet 13 ) AND ( 2 ) ) == ( 2 )
730
731       This points us to the tcpdump filter expression
732                   tcpdump -i xl0 'tcp[13] & 2 == 2'
733
734       Some  offsets and field values may be expressed as names rather than as
735       numeric values. For example tcp[13] may be replaced with tcp[tcpflags].
736       The  following  TCP flag field values are also available: tcp-fin, tcp-
737       syn, tcp-rst, tcp-push, tcp-act, tcp-urg.
738
739       This can be demonstrated as:
740                   tcpdump -i xl0 'tcp[tcpflags] & tcp-push != 0'
741
742       Note that you should use single quotes or a backslash in the expression
743       to hide the AND ('&') special character from the shell.
744
745       UDP Packets
746
747       UDP format is illustrated by this rwho packet:
748              actinide.who > broadcast.who: udp 84
749       This  says  that  port who on host actinide sent a udp datagram to port
750       who on host broadcast, the Internet broadcast address.  The packet con‐
751       tained 84 bytes of user data.
752
753       Some  UDP  services are recognized (from the source or destination port
754       number) and the higher level protocol information printed.  In particu‐
755       lar,  Domain  Name  service  requests (RFC-1034/1035) and Sun RPC calls
756       (RFC-1050) to NFS.
757
758       UDP Name Server Requests
759
760       (N.B.:The following description assumes  familiarity  with  the  Domain
761       Service  protocol  described in RFC-1035.  If you are not familiar with
762       the protocol, the following description will appear to  be  written  in
763       greek.)
764
765       Name server requests are formatted as
766              src > dst: id op? flags qtype qclass name (len)
767              h2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)
768       Host  h2opolo  asked  the domain server on helios for an address record
769       (qtype=A) associated with the name ucbvax.berkeley.edu.  The  query  id
770       was  `3'.   The  `+' indicates the recursion desired flag was set.  The
771       query length was 37 bytes, not including the UDP and IP protocol  head‐
772       ers.   The  query  operation was the normal one, Query, so the op field
773       was omitted.  If the op had been anything  else,  it  would  have  been
774       printed  between  the  `3'  and the `+'.  Similarly, the qclass was the
775       normal one, C_IN, and  omitted.   Any  other  qclass  would  have  been
776       printed immediately after the `A'.
777
778       A  few anomalies are checked and may result in extra fields enclosed in
779       square brackets:  If a query contains an answer, authority  records  or
780       additional records section, ancount, nscount, or arcount are printed as
781       `[na]', `[nn]' or  `[nau]' where n is the appropriate count.  If any of
782       the  response  bits  are  set  (AA, RA or rcode) or any of the `must be
783       zero' bits are set in bytes two and three, `[b2&3=x]' is printed, where
784       x is the hex value of header bytes two and three.
785
786       UDP Name Server Responses
787
788       Name server responses are formatted as
789              src > dst:  id op rcode flags a/n/au type class data (len)
790              helios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)
791              helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)
792       In the first example, helios responds to query id 3 from h2opolo with 3
793       answer records, 3 name server records and 7  additional  records.   The
794       first  answer  record  is  type  A  (address)  and its data is internet
795       address 128.32.137.3.  The total size of the response  was  273  bytes,
796       excluding  UDP and IP headers.  The op (Query) and response code (NoEr‐
797       ror) were omitted, as was the class (C_IN) of the A record.
798
799       In the second example, helios responds to query 2 with a response  code
800       of  non-existent domain (NXDomain) with no answers, one name server and
801       no authority records.  The `*' indicates that the authoritative  answer
802       bit  was set.  Since there were no answers, no type, class or data were
803       printed.
804
805       Other flag characters that might appear are `-'  (recursion  available,
806       RA,  not  set) and `|' (truncated message, TC, set).  If the `question'
807       section doesn't contain exactly one entry, `[nq]' is printed.
808
809
810       SMB/CIFS decoding
811
812       tcpdump now includes fairly extensive SMB/CIFS/NBT decoding for data on
813       UDP/137,  UDP/138 and TCP/139.  Some primitive decoding of IPX and Net‐
814       BEUI SMB data is also done.
815
816       By default a fairly minimal decode is done, with a much  more  detailed
817       decode  done if -v is used.  Be warned that with -v a single SMB packet
818       may take up a page or more, so only use -v if you really want  all  the
819       gory details.
820
821       For  information  on SMB packet formats and what all te fields mean see
822       www.cifs.org  or  the  pub/samba/specs/  directory  on  your   favorite
823       samba.org mirror site.  The SMB patches were written by Andrew Tridgell
824       (tridge@samba.org).
825
826
827       NFS Requests and Replies
828
829       Sun NFS (Network File System) requests and replies are printed as:
830              src.xid > dst.nfs: len op args
831              src.nfs > dst.xid: reply stat len op results
832              sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165
833              wrl.nfs > sushi.6709: reply ok 40 readlink "../var"
834              sushi.201b > wrl.nfs:
835                   144 lookup fh 9,74/4096.6878 "xcolors"
836              wrl.nfs > sushi.201b:
837                   reply ok 128 lookup fh 9,74/4134.3150
838       In the first line, host sushi sends a transaction with id 6709  to  wrl
839       (note  that  the number following the src host is a transaction id, not
840       the source port).  The request was 112 bytes, excluding the UDP and  IP
841       headers.   The  operation  was  a readlink (read symbolic link) on file
842       handle (fh) 21,24/10.731657119.  (If one is lucky, as in this case, the
843       file  handle  can  be  interpreted as a major,minor device number pair,
844       followed by the inode number and generation number.)  Wrl replies  `ok'
845       with the contents of the link.
846
847       In  the  third  line,  sushi  asks  wrl to lookup the name `xcolors' in
848       directory file 9,74/4096.6878.  Note that the data printed  depends  on
849       the  operation  type.  The format is intended to be self explanatory if
850       read in conjunction with an NFS protocol spec.
851
852       If the -v (verbose) flag is given, additional information  is  printed.
853       For example:
854              sushi.1372a > wrl.nfs:
855                   148 read fh 21,11/12.195 8192 bytes @ 24576
856              wrl.nfs > sushi.1372a:
857                   reply ok 1472 read REG 100664 ids 417/0 sz 29388
858       (-v  also  prints  the  IP  header  TTL,  ID, length, and fragmentation
859       fields, which have been omitted from this example.)  In the first line,
860       sushi  asks wrl to read 8192 bytes from file 21,11/12.195, at byte off‐
861       set 24576.  Wrl replies `ok'; the packet shown on the  second  line  is
862       the first fragment of the reply, and hence is only 1472 bytes long (the
863       other bytes will follow in subsequent fragments, but these fragments do
864       not have NFS or even UDP headers and so might not be printed, depending
865       on the filter expression used).  Because the -v flag is given, some  of
866       the  file  attributes (which are returned in addition to the file data)
867       are printed: the file type (``REG'', for regular file), the  file  mode
868       (in octal), the uid and gid, and the file size.
869
870       If the -v flag is given more than once, even more details are printed.
871
872       Note  that  NFS requests are very large and much of the detail won't be
873       printed unless snaplen is increased.  Try using `-s 192' to  watch  NFS
874       traffic.
875
876       NFS  reply  packets  do  not  explicitly  identify  the  RPC operation.
877       Instead, tcpdump keeps track of ``recent'' requests, and  matches  them
878       to  the  replies using the transaction ID.  If a reply does not closely
879       follow the corresponding request, it might not be parsable.
880
881       AFS Requests and Replies
882
883       Transarc AFS (Andrew File System) requests and replies are printed as:
884
885              src.sport > dst.dport: rx packet-type
886              src.sport > dst.dport: rx packet-type service call call-name args
887              src.sport > dst.dport: rx packet-type service reply call-name args
888              elvis.7001 > pike.afsfs:
889                   rx data fs call rename old fid 536876964/1/1 ".newsrc.new"
890                   new fid 536876964/1/1 ".newsrc"
891              pike.afsfs > elvis.7001: rx data fs reply rename
892       In the first line, host elvis sends a RX packet to pike.  This was a RX
893       data  packet to the fs (fileserver) service, and is the start of an RPC
894       call.  The RPC call was a rename, with the old  directory  file  id  of
895       536876964/1/1 and an old filename of `.newsrc.new', and a new directory
896       file id of 536876964/1/1 and a new filename  of  `.newsrc'.   The  host
897       pike  responds  with a RPC reply to the rename call (which was success‐
898       ful, because it was a data packet and not an abort packet).
899
900       In general, all AFS RPCs are decoded at least by RPC call  name.   Most
901       AFS  RPCs  have  at least some of the arguments decoded (generally only
902       the `interesting' arguments, for some definition of interesting).
903
904       The format is intended to be self-describing, but it will probably  not
905       be  useful  to people who are not familiar with the workings of AFS and
906       RX.
907
908       If the -v (verbose) flag is given twice,  acknowledgement  packets  and
909       additional  header  information is printed, such as the the RX call ID,
910       call number, sequence number, serial number, and the RX packet flags.
911
912       If the -v flag is given twice, additional information is printed,  such
913       as the the RX call ID, serial number, and the RX packet flags.  The MTU
914       negotiation information is also printed from RX ack packets.
915
916       If the -v flag is given three times, the security index and service  id
917       are printed.
918
919       Error  codes  are printed for abort packets, with the exception of Ubik
920       beacon packets (because abort packets are used to signify  a  yes  vote
921       for the Ubik protocol).
922
923       Note  that  AFS requests are very large and many of the arguments won't
924       be printed unless snaplen is increased.  Try using `-s  256'  to  watch
925       AFS traffic.
926
927       AFS  reply  packets  do  not  explicitly  identify  the  RPC operation.
928       Instead, tcpdump keeps track of ``recent'' requests, and  matches  them
929       to  the  replies using the call number and service ID.  If a reply does
930       not closely follow the corresponding request, it might not be parsable.
931
932
933       KIP AppleTalk (DDP in UDP)
934
935       AppleTalk DDP packets encapsulated in UDP datagrams are de-encapsulated
936       and dumped as DDP packets (i.e., all the UDP header information is dis‐
937       carded).  The file /etc/atalk.names is used to translate AppleTalk  net
938       and node numbers to names.  Lines in this file have the form
939              number    name
940
941              1.254          ether
942              16.1      icsd-net
943              1.254.110 ace
944       The  first  two  lines give the names of AppleTalk networks.  The third
945       line gives the name of a particular host (a host is distinguished  from
946       a  net  by  the  3rd  octet  in the number - a net number must have two
947       octets and a host number must have three octets.)  The number and  name
948       should   be   separated   by   whitespace   (blanks   or   tabs).   The
949       /etc/atalk.names file may contain blank lines or comment  lines  (lines
950       starting with a `#').
951
952       AppleTalk addresses are printed in the form
953              net.host.port
954
955              144.1.209.2 > icsd-net.112.220
956              office.2 > icsd-net.112.220
957              jssmag.149.235 > icsd-net.2
958       (If  the /etc/atalk.names doesn't exist or doesn't contain an entry for
959       some AppleTalk host/net number, addresses are printed in numeric form.)
960       In the first example, NBP (DDP port 2) on net 144.1 node 209 is sending
961       to whatever is listening on port 220 of net icsd node 112.  The  second
962       line  is  the  same  except  the  full name of the source node is known
963       (`office').  The third line is a send from port 235 on net jssmag  node
964       149  to  broadcast  on  the  icsd-net NBP port (note that the broadcast
965       address (255) is indicated by a net name with no host number - for this
966       reason  it's  a  good idea to keep node names and net names distinct in
967       /etc/atalk.names).
968
969       NBP (name binding protocol) and ATP  (AppleTalk  transaction  protocol)
970       packets have their contents interpreted.  Other protocols just dump the
971       protocol name (or number if no name is registered for the protocol) and
972       packet size.
973
974       NBP packets are formatted like the following examples:
975              icsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*"
976              jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250
977              techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186
978       The  first  line  is a name lookup request for laserwriters sent by net
979       icsd host 112 and broadcast on net jssmag.  The nbp id for  the  lookup
980       is  190.   The second line shows a reply for this request (note that it
981       has the same id) from host jssmag.209 saying that it has a  laserwriter
982       resource  named  "RM1140"  registered  on  port 250.  The third line is
983       another reply to the same request saying host techpit  has  laserwriter
984       "techpit" registered on port 186.
985
986       ATP packet formatting is demonstrated by the following example:
987              jssmag.209.165 > helios.132: atp-req  12266<0-7> 0xae030001
988              helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
989              helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
990              helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000
991              helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
992              helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000
993              helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
994              helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
995              helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
996              jssmag.209.165 > helios.132: atp-req  12266<3,5> 0xae030001
997              helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
998              helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
999              jssmag.209.165 > helios.132: atp-rel  12266<0-7> 0xae030001
1000              jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002
1001       Jssmag.209  initiates transaction id 12266 with host helios by request‐
1002       ing up to 8 packets (the `<0-7>').  The hex number at the  end  of  the
1003       line is the value of the `userdata' field in the request.
1004
1005       Helios  responds  with  8 512-byte packets.  The `:digit' following the
1006       transaction id gives the packet sequence number in the transaction  and
1007       the number in parens is the amount of data in the packet, excluding the
1008       atp header.  The `*' on packet 7 indicates that the EOM bit was set.
1009
1010       Jssmag.209 then requests that packets 3 & 5 be  retransmitted.   Helios
1011       resends  them  then jssmag.209 releases the transaction.  Finally, jss‐
1012       mag.209 initiates the next request.  The `*' on the  request  indicates
1013       that XO (`exactly once') was not set.
1014
1015
1016       IP Fragmentation
1017
1018       Fragmented Internet datagrams are printed as
1019              (frag id:size@offset+)
1020              (frag id:size@offset)
1021       (The  first  form indicates there are more fragments.  The second indi‐
1022       cates this is the last fragment.)
1023
1024       Id is the fragment id.  Size is the fragment size (in bytes)  excluding
1025       the  IP  header.   Offset  is  this fragment's offset (in bytes) in the
1026       original datagram.
1027
1028       The fragment information is output for each fragment.  The first  frag‐
1029       ment  contains  the  higher  level protocol header and the frag info is
1030       printed after the protocol info.  Fragments after the first contain  no
1031       higher  level  protocol  header  and the frag info is printed after the
1032       source and destination addresses.  For example, here is part of an  ftp
1033       from  arizona.edu to lbl-rtsg.arpa over a CSNET connection that doesn't
1034       appear to handle 576 byte datagrams:
1035              arizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328@0+)
1036              arizona > rtsg: (frag 595a:204@328)
1037              rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560
1038       There are a couple of things to note here:  First, addresses in the 2nd
1039       line  don't  include  port  numbers.   This is because the TCP protocol
1040       information is all in the first fragment and we have no idea  what  the
1041       port  or  sequence numbers are when we print the later fragments.  Sec‐
1042       ond, the tcp sequence information in the first line is  printed  as  if
1043       there  were  308  bytes of user data when, in fact, there are 512 bytes
1044       (308 in the first frag and 204 in the second).  If you are looking  for
1045       holes  in  the  sequence space or trying to match up acks with packets,
1046       this can fool you.
1047
1048       A packet with the IP don't fragment flag  is  marked  with  a  trailing
1049       (DF).
1050
1051       Timestamps
1052
1053       By  default,  all  output lines are preceded by a timestamp.  The time‐
1054       stamp is the current clock time in the form
1055              hh:mm:ss.frac
1056       and is as accurate as the kernel's clock.  The timestamp  reflects  the
1057       time  the  kernel  first saw the packet.  No attempt is made to account
1058       for the time lag between when the Ethernet interface removed the packet
1059       from the wire and when the kernel serviced the `new packet' interrupt.
1060

SEE ALSO

1062       stty(1), pcap(3PCAP), bpf(4), nit(4P), pcap-savefile(5), pcap-filter(7)
1063

AUTHORS

1065       The original authors are:
1066
1067       Van  Jacobson,  Craig  Leres  and  Steven  McCanne, all of the Lawrence
1068       Berkeley National Laboratory, University of California, Berkeley, CA.
1069
1070       It is currently being maintained by tcpdump.org.
1071
1072       The current version is available via http:
1073
1074              http://www.tcpdump.org/
1075
1076       The original distribution is available via anonymous ftp:
1077
1078              ftp://ftp.ee.lbl.gov/tcpdump.tar.Z
1079
1080       IPv6/IPsec support is added by WIDE/KAME project.   This  program  uses
1081       Eric Young's SSLeay library, under specific configurations.
1082

BUGS

1084       Please  send problems, bugs, questions, desirable enhancements, patches
1085       etc. to:
1086
1087              tcpdump-workers@lists.tcpdump.org
1088
1089       NIT doesn't let you watch your own outbound traffic, BPF will.  We rec‐
1090       ommend that you use the latter.
1091
1092       On Linux systems with 2.0[.x] kernels:
1093
1094              packets on the loopback device will be seen twice;
1095
1096              packet filtering cannot be done in the kernel, so that all pack‐
1097              ets must be copied from the kernel in order to  be  filtered  in
1098              user mode;
1099
1100              all  of  a  packet, not just the part that's within the snapshot
1101              length, will be copied from the kernel (the 2.0[.x] packet  cap‐
1102              ture  mechanism, if asked to copy only part of a packet to user‐
1103              land, will not report the true length of the packet; this  would
1104              cause most IP packets to get an error from tcpdump);
1105
1106              capturing on some PPP devices won't work correctly.
1107
1108       We recommend that you upgrade to a 2.2 or later kernel.
1109
1110       Some  attempt should be made to reassemble IP fragments or, at least to
1111       compute the right length for the higher level protocol.
1112
1113       Name server inverse queries are not dumped correctly: the (empty) ques‐
1114       tion  section  is printed rather than real query in the answer section.
1115       Some believe that inverse queries are themselves a bug  and  prefer  to
1116       fix the program generating them rather than tcpdump.
1117
1118       A  packet  trace  that crosses a daylight savings time change will give
1119       skewed time stamps (the time change is ignored).
1120
1121       Filter expressions on fields other than those  in  Token  Ring  headers
1122       will not correctly handle source-routed Token Ring packets.
1123
1124       Filter  expressions  on  fields other than those in 802.11 headers will
1125       not correctly handle 802.11 data packets with both To DS  and  From  DS
1126       set.
1127
1128       ip6  proto  should  chase header chain, but at this moment it does not.
1129       ip6 protochain is supplied for this behavior.
1130
1131       Arithmetic expression against transport  layer  headers,  like  tcp[0],
1132       does not work against IPv6 packets.  It only looks at IPv4 packets.
1133
1134
1135
1136                                 05 March 2009                      TCPDUMP(8)
Impressum