The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1 | .\" $NetBSD: tcpdump.8,v 1.9 2003/03/31 00:18:17 perry Exp $ |
| 2 | .\" |
| 3 | .\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997 |
| 4 | .\" The Regents of the University of California. All rights reserved. |
| 5 | .\" All rights reserved. |
| 6 | .\" |
| 7 | .\" Redistribution and use in source and binary forms, with or without |
| 8 | .\" modification, are permitted provided that: (1) source code distributions |
| 9 | .\" retain the above copyright notice and this paragraph in its entirety, (2) |
| 10 | .\" distributions including binary code include the above copyright notice and |
| 11 | .\" this paragraph in its entirety in the documentation or other materials |
| 12 | .\" provided with the distribution, and (3) all advertising materials mentioning |
| 13 | .\" features or use of this software display the following acknowledgement: |
| 14 | .\" ``This product includes software developed by the University of California, |
| 15 | .\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of |
| 16 | .\" the University nor the names of its contributors may be used to endorse |
| 17 | .\" or promote products derived from this software without specific prior |
| 18 | .\" written permission. |
| 19 | .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED |
| 20 | .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF |
| 21 | .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
| 22 | .\" |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 23 | .TH TCPDUMP 1 "21 December 2020" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 24 | .SH NAME |
| 25 | tcpdump \- dump traffic on a network |
| 26 | .SH SYNOPSIS |
| 27 | .na |
| 28 | .B tcpdump |
| 29 | [ |
Elliott Hughes | e2e3bd1 | 2017-05-15 10:59:29 -0700 | [diff] [blame] | 30 | .B \-AbdDefhHIJKlLnNOpqStuUvxX# |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 31 | ] [ |
| 32 | .B \-B |
| 33 | .I buffer_size |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 34 | ] |
| 35 | .br |
| 36 | .ti +8 |
| 37 | [ |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 38 | .B \-c |
| 39 | .I count |
| 40 | ] |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 41 | [ |
| 42 | .B \-\-count |
| 43 | ] |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 44 | [ |
| 45 | .B \-C |
| 46 | .I file_size |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 47 | ] |
| 48 | .ti +8 |
| 49 | [ |
| 50 | .B \-E |
| 51 | .I spi@ipaddr algo:secret,... |
| 52 | ] |
| 53 | .ti +8 |
| 54 | [ |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 55 | .B \-F |
| 56 | .I file |
| 57 | ] |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 58 | [ |
| 59 | .B \-G |
| 60 | .I rotate_seconds |
| 61 | ] |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 62 | [ |
| 63 | .B \-i |
| 64 | .I interface |
| 65 | ] |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 66 | .ti +8 |
| 67 | [ |
| 68 | .B \-\-immediate\-mode |
| 69 | ] |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 70 | [ |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 71 | .B \-j |
| 72 | .I tstamp_type |
| 73 | ] |
| 74 | [ |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 75 | .B \-m |
| 76 | .I module |
| 77 | ] |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 78 | .ti +8 |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 79 | [ |
| 80 | .B \-M |
| 81 | .I secret |
| 82 | ] |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 83 | [ |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 84 | .B \-\-number |
| 85 | ] |
| 86 | [ |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 87 | .B \-\-print |
| 88 | ] |
| 89 | [ |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 90 | .B \-Q |
| 91 | .I in|out|inout |
| 92 | ] |
| 93 | .ti +8 |
| 94 | [ |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 95 | .B \-r |
| 96 | .I file |
| 97 | ] |
| 98 | [ |
| 99 | .B \-s |
| 100 | .I snaplen |
| 101 | ] |
| 102 | [ |
| 103 | .B \-T |
| 104 | .I type |
| 105 | ] |
| 106 | [ |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 107 | .B \-\-version |
| 108 | ] |
| 109 | .ti +8 |
| 110 | [ |
| 111 | .B \-V |
| 112 | .I file |
| 113 | ] |
| 114 | [ |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 115 | .B \-w |
| 116 | .I file |
| 117 | ] |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 118 | [ |
| 119 | .B \-W |
| 120 | .I filecount |
| 121 | ] |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 122 | [ |
| 123 | .B \-y |
| 124 | .I datalinktype |
| 125 | ] |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 126 | .ti +8 |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 127 | [ |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 128 | .B \-z |
| 129 | .I postrotate-command |
| 130 | ] |
| 131 | [ |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 132 | .B \-Z |
| 133 | .I user |
| 134 | ] |
| 135 | .ti +8 |
| 136 | [ |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 137 | .BI \-\-time\-stamp\-precision= tstamp_precision |
| 138 | ] |
| 139 | .ti +8 |
| 140 | [ |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 141 | .BI \-\-micro |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 142 | ] |
| 143 | [ |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 144 | .BI \-\-nano |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 145 | ] |
| 146 | .ti +8 |
| 147 | [ |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 148 | .I expression |
| 149 | ] |
| 150 | .br |
| 151 | .ad |
| 152 | .SH DESCRIPTION |
| 153 | .LP |
| 154 | \fITcpdump\fP prints out a description of the contents of packets on a |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 155 | network interface that match the Boolean \fIexpression\fP; the |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 156 | description is preceded by a time stamp, printed, by default, as hours, |
| 157 | minutes, seconds, and fractions of a second since midnight. It can also |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 158 | be run with the |
| 159 | .B \-w |
| 160 | flag, which causes it to save the packet data to a file for later |
| 161 | analysis, and/or with the |
| 162 | .B \-r |
| 163 | flag, which causes it to read from a saved packet file rather than to |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 164 | read packets from a network interface. It can also be run with the |
| 165 | .B \-V |
| 166 | flag, which causes it to read a list of saved packet files. In all cases, |
| 167 | only packets that match |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 168 | .I expression |
| 169 | will be processed by |
| 170 | .IR tcpdump . |
| 171 | .LP |
| 172 | .I Tcpdump |
| 173 | will, if not run with the |
| 174 | .B \-c |
| 175 | flag, continue capturing packets until it is interrupted by a SIGINT |
| 176 | signal (generated, for example, by typing your interrupt character, |
| 177 | typically control-C) or a SIGTERM signal (typically generated with the |
| 178 | .BR kill (1) |
| 179 | command); if run with the |
| 180 | .B \-c |
| 181 | flag, it will capture packets until it is interrupted by a SIGINT or |
| 182 | SIGTERM signal or the specified number of packets have been processed. |
| 183 | .LP |
| 184 | When |
| 185 | .I tcpdump |
| 186 | finishes capturing packets, it will report counts of: |
| 187 | .IP |
| 188 | packets ``captured'' (this is the number of packets that |
| 189 | .I tcpdump |
| 190 | has received and processed); |
| 191 | .IP |
| 192 | packets ``received by filter'' (the meaning of this depends on the OS on |
| 193 | which you're running |
| 194 | .IR tcpdump , |
| 195 | and possibly on the way the OS was configured - if a filter was |
| 196 | specified on the command line, on some OSes it counts packets regardless |
| 197 | of whether they were matched by the filter expression and, even if they |
| 198 | were matched by the filter expression, regardless of whether |
| 199 | .I tcpdump |
| 200 | has read and processed them yet, on other OSes it counts only packets that were |
| 201 | matched by the filter expression regardless of whether |
| 202 | .I tcpdump |
| 203 | has read and processed them yet, and on other OSes it counts only |
| 204 | packets that were matched by the filter expression and were processed by |
| 205 | .IR tcpdump ); |
| 206 | .IP |
| 207 | packets ``dropped by kernel'' (this is the number of packets that were |
| 208 | dropped, due to a lack of buffer space, by the packet capture mechanism |
| 209 | in the OS on which |
| 210 | .I tcpdump |
| 211 | is running, if the OS reports that information to applications; if not, |
| 212 | it will be reported as 0). |
| 213 | .LP |
| 214 | On platforms that support the SIGINFO signal, such as most BSDs |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 215 | (including macOS) and Digital/Tru64 UNIX, it will report those counts |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 216 | when it receives a SIGINFO signal (generated, for example, by typing |
| 217 | your ``status'' character, typically control-T, although on some |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 218 | platforms, such as macOS, the ``status'' character is not set by |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 219 | default, so you must set it with |
| 220 | .BR stty (1) |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 221 | in order to use it) and will continue capturing packets. On platforms that |
| 222 | do not support the SIGINFO signal, the same can be achieved by using the |
| 223 | SIGUSR1 signal. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 224 | .LP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 225 | Using the SIGUSR2 signal along with the |
| 226 | .B \-w |
| 227 | flag will forcibly flush the packet buffer into the output file. |
| 228 | .LP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 229 | Reading packets from a network interface may require that you have |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 230 | special privileges; see the |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 231 | .BR pcap (3PCAP) |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 232 | man page for details. Reading a saved packet file doesn't require |
| 233 | special privileges. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 234 | .SH OPTIONS |
| 235 | .TP |
| 236 | .B \-A |
| 237 | Print each packet (minus its link level header) in ASCII. Handy for |
| 238 | capturing web pages. |
| 239 | .TP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 240 | .B \-b |
| 241 | Print the AS number in BGP packets in ASDOT notation rather than ASPLAIN |
| 242 | notation. |
| 243 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 244 | .BI \-B " buffer_size" |
| 245 | .PD 0 |
| 246 | .TP |
| 247 | .BI \-\-buffer\-size= buffer_size |
| 248 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 249 | Set the operating system capture buffer size to \fIbuffer_size\fP, in |
| 250 | units of KiB (1024 bytes). |
| 251 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 252 | .BI \-c " count" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 253 | Exit after receiving \fIcount\fP packets. |
| 254 | .TP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 255 | .BI \-\-count |
| 256 | Print only on stderr the packet count when reading capture file(s) instead |
| 257 | of parsing/printing the packets. If a filter is specified on the command |
| 258 | line, \fItcpdump\fP counts only packets that were matched by the filter |
| 259 | expression. |
| 260 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 261 | .BI \-C " file_size" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 262 | Before writing a raw packet to a savefile, check whether the file is |
| 263 | currently larger than \fIfile_size\fP and, if so, close the current |
| 264 | savefile and open a new one. Savefiles after the first savefile will |
| 265 | have the name specified with the |
| 266 | .B \-w |
| 267 | flag, with a number after it, starting at 1 and continuing upward. |
| 268 | The units of \fIfile_size\fP are millions of bytes (1,000,000 bytes, |
| 269 | not 1,048,576 bytes). |
| 270 | .TP |
| 271 | .B \-d |
| 272 | Dump the compiled packet-matching code in a human readable form to |
| 273 | standard output and stop. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 274 | .IP |
| 275 | Please mind that although code compilation is always DLT-specific, |
| 276 | typically it is impossible (and unnecessary) to specify which DLT to use |
| 277 | for the dump because \fItcpdump\fP uses either the DLT of the input pcap |
| 278 | file specified with |
| 279 | .BR -r , |
| 280 | or the default DLT of the network interface specified with |
| 281 | .BR -i , |
| 282 | or the particular DLT of the network interface specified with |
| 283 | .B -y |
| 284 | and |
| 285 | .B -i |
| 286 | respectively. In these cases the dump shows the same exact code that |
| 287 | would filter the input file or the network interface without |
| 288 | .BR -d . |
| 289 | .IP |
| 290 | However, when neither |
| 291 | .B -r |
| 292 | nor |
| 293 | .B -i |
| 294 | is specified, specifying |
| 295 | .B -d |
| 296 | prevents \fItcpdump\fP from guessing a suitable network interface (see |
| 297 | .BR -i ). |
| 298 | In this case the DLT defaults to EN10MB and can be set to another valid |
| 299 | value manually with |
| 300 | .BR -y . |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 301 | .TP |
| 302 | .B \-dd |
| 303 | Dump packet-matching code as a |
| 304 | .B C |
| 305 | program fragment. |
| 306 | .TP |
| 307 | .B \-ddd |
| 308 | Dump packet-matching code as decimal numbers (preceded with a count). |
| 309 | .TP |
| 310 | .B \-D |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 311 | .PD 0 |
| 312 | .TP |
| 313 | .B \-\-list\-interfaces |
| 314 | .PD |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 315 | Print the list of the network interfaces available on the system and on |
| 316 | which |
| 317 | .I tcpdump |
| 318 | can capture packets. For each network interface, a number and an |
| 319 | interface name, possibly followed by a text description of the |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 320 | interface, are printed. The interface name or the number can be supplied |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 321 | to the |
| 322 | .B \-i |
| 323 | flag to specify an interface on which to capture. |
| 324 | .IP |
| 325 | This can be useful on systems that don't have a command to list them |
| 326 | (e.g., Windows systems, or UNIX systems lacking |
| 327 | .BR "ifconfig \-a" ); |
| 328 | the number can be useful on Windows 2000 and later systems, where the |
| 329 | interface name is a somewhat complex string. |
| 330 | .IP |
| 331 | The |
| 332 | .B \-D |
| 333 | flag will not be supported if |
| 334 | .I tcpdump |
| 335 | was built with an older version of |
| 336 | .I libpcap |
| 337 | that lacks the |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 338 | .BR pcap_findalldevs(3PCAP) |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 339 | function. |
| 340 | .TP |
| 341 | .B \-e |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 342 | Print the link-level header on each dump line. This can be used, for |
| 343 | example, to print MAC layer addresses for protocols such as Ethernet and |
| 344 | IEEE 802.11. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 345 | .TP |
| 346 | .B \-E |
| 347 | Use \fIspi@ipaddr algo:secret\fP for decrypting IPsec ESP packets that |
| 348 | are addressed to \fIaddr\fP and contain Security Parameter Index value |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 349 | \fIspi\fP. This combination may be repeated with comma or newline separation. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 350 | .IP |
| 351 | Note that setting the secret for IPv4 ESP packets is supported at this time. |
| 352 | .IP |
| 353 | Algorithms may be |
| 354 | \fBdes-cbc\fP, |
| 355 | \fB3des-cbc\fP, |
| 356 | \fBblowfish-cbc\fP, |
| 357 | \fBrc3-cbc\fP, |
| 358 | \fBcast128-cbc\fP, or |
| 359 | \fBnone\fP. |
| 360 | The default is \fBdes-cbc\fP. |
| 361 | The ability to decrypt packets is only present if \fItcpdump\fP was compiled |
| 362 | with cryptography enabled. |
| 363 | .IP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 364 | \fIsecret\fP is the ASCII text for ESP secret key. |
| 365 | If preceded by 0x, then a hex value will be read. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 366 | .IP |
| 367 | The option assumes RFC2406 ESP, not RFC1827 ESP. |
| 368 | The option is only for debugging purposes, and |
| 369 | the use of this option with a true `secret' key is discouraged. |
| 370 | By presenting IPsec secret key onto command line |
| 371 | you make it visible to others, via |
| 372 | .IR ps (1) |
| 373 | and other occasions. |
| 374 | .IP |
| 375 | In addition to the above syntax, the syntax \fIfile name\fP may be used |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 376 | to have tcpdump read the provided file in. The file is opened upon |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 377 | receiving the first ESP packet, so any special permissions that tcpdump |
| 378 | may have been given should already have been given up. |
| 379 | .TP |
| 380 | .B \-f |
| 381 | Print `foreign' IPv4 addresses numerically rather than symbolically |
| 382 | (this option is intended to get around serious brain damage in |
| 383 | Sun's NIS server \(em usually it hangs forever translating non-local |
| 384 | internet numbers). |
| 385 | .IP |
| 386 | The test for `foreign' IPv4 addresses is done using the IPv4 address and |
| 387 | netmask of the interface on which capture is being done. If that |
| 388 | address or netmask are not available, available, either because the |
| 389 | interface on which capture is being done has no address or netmask or |
| 390 | because the capture is being done on the Linux "any" interface, which |
| 391 | can capture on more than one interface, this option will not work |
| 392 | correctly. |
| 393 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 394 | .BI \-F " file" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 395 | Use \fIfile\fP as input for the filter expression. |
| 396 | An additional expression given on the command line is ignored. |
| 397 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 398 | .BI \-G " rotate_seconds" |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 399 | If specified, rotates the dump file specified with the |
| 400 | .B \-w |
| 401 | option every \fIrotate_seconds\fP seconds. |
| 402 | Savefiles will have the name specified by |
| 403 | .B \-w |
| 404 | which should include a time format as defined by |
| 405 | .BR strftime (3). |
| 406 | If no time format is specified, each new file will overwrite the previous. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 407 | Whenever a generated filename is not unique, tcpdump will overwrite the |
| 408 | pre-existing data; providing a time specification that is coarser than the |
| 409 | capture period is therefore not advised. |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 410 | .IP |
| 411 | If used in conjunction with the |
| 412 | .B \-C |
| 413 | option, filenames will take the form of `\fIfile\fP<count>'. |
| 414 | .TP |
| 415 | .B \-h |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 416 | .PD 0 |
| 417 | .TP |
| 418 | .B \-\-help |
| 419 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 420 | Print the tcpdump and libpcap version strings, print a usage message, |
| 421 | and exit. |
| 422 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 423 | .B \-\-version |
| 424 | .PD |
| 425 | Print the tcpdump and libpcap version strings and exit. |
| 426 | .TP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 427 | .B \-H |
| 428 | Attempt to detect 802.11s draft mesh headers. |
| 429 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 430 | .BI \-i " interface" |
| 431 | .PD 0 |
| 432 | .TP |
| 433 | .BI \-\-interface= interface |
| 434 | .PD |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 435 | Listen, report the list of link-layer types, report the list of time |
| 436 | stamp types, or report the results of compiling a filter expression on |
| 437 | \fIinterface\fP. If unspecified and if the |
| 438 | .B -d |
| 439 | flag is not given, \fItcpdump\fP searches the system |
| 440 | interface list for the lowest numbered, configured up interface |
| 441 | (excluding loopback), which may turn out to be, for example, ``eth0''. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 442 | .IP |
| 443 | On Linux systems with 2.2 or later kernels, an |
| 444 | .I interface |
| 445 | argument of ``any'' can be used to capture packets from all interfaces. |
| 446 | Note that captures on the ``any'' device will not be done in promiscuous |
| 447 | mode. |
| 448 | .IP |
| 449 | If the |
| 450 | .B \-D |
| 451 | flag is supported, an interface number as printed by that flag can be |
| 452 | used as the |
| 453 | .I interface |
Elliott Hughes | e2e3bd1 | 2017-05-15 10:59:29 -0700 | [diff] [blame] | 454 | argument, if no interface on the system has that number as a name. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 455 | .TP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 456 | .B \-I |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 457 | .PD 0 |
| 458 | .TP |
| 459 | .B \-\-monitor\-mode |
| 460 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 461 | Put the interface in "monitor mode"; this is supported only on IEEE |
| 462 | 802.11 Wi-Fi interfaces, and supported only on some operating systems. |
| 463 | .IP |
| 464 | Note that in monitor mode the adapter might disassociate from the |
| 465 | network with which it's associated, so that you will not be able to use |
| 466 | any wireless networks with that adapter. This could prevent accessing |
| 467 | files on a network server, or resolving host names or network addresses, |
| 468 | if you are capturing in monitor mode and are not connected to another |
| 469 | network with another adapter. |
| 470 | .IP |
| 471 | This flag will affect the output of the |
| 472 | .B \-L |
| 473 | flag. If |
| 474 | .B \-I |
| 475 | isn't specified, only those link-layer types available when not in |
| 476 | monitor mode will be shown; if |
| 477 | .B \-I |
| 478 | is specified, only those link-layer types available when in monitor mode |
| 479 | will be shown. |
| 480 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 481 | .BI \-\-immediate\-mode |
| 482 | Capture in "immediate mode". In this mode, packets are delivered to |
| 483 | tcpdump as soon as they arrive, rather than being buffered for |
| 484 | efficiency. This is the default when printing packets rather than |
| 485 | saving packets to a ``savefile'' if the packets are being printed to a |
| 486 | terminal rather than to a file or pipe. |
| 487 | .TP |
| 488 | .BI \-j " tstamp_type" |
| 489 | .PD 0 |
| 490 | .TP |
| 491 | .BI \-\-time\-stamp\-type= tstamp_type |
| 492 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 493 | Set the time stamp type for the capture to \fItstamp_type\fP. The names |
| 494 | to use for the time stamp types are given in |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 495 | .BR \%pcap-tstamp (@MAN_MISC_INFO@); |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 496 | not all the types listed there will necessarily be valid for any given |
| 497 | interface. |
| 498 | .TP |
| 499 | .B \-J |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 500 | .PD 0 |
| 501 | .TP |
| 502 | .B \-\-list\-time\-stamp\-types |
| 503 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 504 | List the supported time stamp types for the interface and exit. If the |
| 505 | time stamp type cannot be set for the interface, no time stamp types are |
| 506 | listed. |
| 507 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 508 | .BI \-\-time\-stamp\-precision= tstamp_precision |
| 509 | When capturing, set the time stamp precision for the capture to |
| 510 | \fItstamp_precision\fP. Note that availability of high precision time |
| 511 | stamps (nanoseconds) and their actual accuracy is platform and hardware |
| 512 | dependent. Also note that when writing captures made with nanosecond |
| 513 | accuracy to a savefile, the time stamps are written with nanosecond |
| 514 | resolution, and the file is written with a different magic number, to |
| 515 | indicate that the time stamps are in seconds and nanoseconds; not all |
| 516 | programs that read pcap savefiles will be able to read those captures. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 517 | .IP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 518 | When reading a savefile, convert time stamps to the precision specified |
| 519 | by \fItimestamp_precision\fP, and display them with that resolution. If |
| 520 | the precision specified is less than the precision of time stamps in the |
| 521 | file, the conversion will lose precision. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 522 | .IP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 523 | The supported values for \fItimestamp_precision\fP are \fBmicro\fP for |
| 524 | microsecond resolution and \fBnano\fP for nanosecond resolution. The |
| 525 | default is microsecond resolution. |
| 526 | .TP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 527 | .B \-\-micro |
| 528 | .PD 0 |
| 529 | .TP |
| 530 | .B \-\-nano |
| 531 | .PD |
| 532 | Shorthands for \fB\-\-time\-stamp\-precision=micro\fP or |
| 533 | \fB\-\-time\-stamp\-precision=nano\fP, adjusting the time stamp |
| 534 | precision accordingly. When reading packets from a savefile, using |
| 535 | \fB\-\-micro\fP truncates time stamps if the savefile was created with |
| 536 | nanosecond precision. In contrast, a savefile created with microsecond |
| 537 | precision will have trailing zeroes added to the time stamp when |
| 538 | \fB\-\-nano\fP is used. |
| 539 | .TP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 540 | .B \-K |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 541 | .PD 0 |
| 542 | .TP |
| 543 | .B \-\-dont\-verify\-checksums |
| 544 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 545 | Don't attempt to verify IP, TCP, or UDP checksums. This is useful for |
| 546 | interfaces that perform some or all of those checksum calculation in |
| 547 | hardware; otherwise, all outgoing TCP checksums will be flagged as bad. |
| 548 | .TP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 549 | .B \-l |
| 550 | Make stdout line buffered. |
| 551 | Useful if you want to see the data |
| 552 | while capturing it. |
| 553 | E.g., |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 554 | .IP |
| 555 | .RS |
| 556 | .RS |
| 557 | .nf |
| 558 | \fBtcpdump \-l | tee dat\fP |
| 559 | .fi |
| 560 | .RE |
| 561 | .RE |
| 562 | .IP |
| 563 | or |
| 564 | .IP |
| 565 | .RS |
| 566 | .RS |
| 567 | .nf |
| 568 | \fBtcpdump \-l > dat & tail \-f dat\fP |
| 569 | .fi |
| 570 | .RE |
| 571 | .RE |
| 572 | .IP |
| 573 | Note that on Windows,``line buffered'' means ``unbuffered'', so that |
| 574 | WinDump will write each character individually if |
| 575 | .B \-l |
| 576 | is specified. |
| 577 | .IP |
| 578 | .B \-U |
| 579 | is similar to |
| 580 | .B \-l |
| 581 | in its behavior, but it will cause output to be ``packet-buffered'', so |
| 582 | that the output is written to stdout at the end of each packet rather |
| 583 | than at the end of each line; this is buffered on all platforms, |
| 584 | including Windows. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 585 | .TP |
| 586 | .B \-L |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 587 | .PD 0 |
| 588 | .TP |
| 589 | .B \-\-list\-data\-link\-types |
| 590 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 591 | List the known data link types for the interface, in the specified mode, |
| 592 | and exit. The list of known data link types may be dependent on the |
| 593 | specified mode; for example, on some platforms, a Wi-Fi interface might |
| 594 | support one set of data link types when not in monitor mode (for |
| 595 | example, it might support only fake Ethernet headers, or might support |
| 596 | 802.11 headers but not support 802.11 headers with radio information) |
| 597 | and another set of data link types when in monitor mode (for example, it |
| 598 | might support 802.11 headers, or 802.11 headers with radio information, |
| 599 | only in monitor mode). |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 600 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 601 | .BI \-m " module" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 602 | Load SMI MIB module definitions from file \fImodule\fR. |
| 603 | This option |
| 604 | can be used several times to load several MIB modules into \fItcpdump\fP. |
| 605 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 606 | .BI \-M " secret" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 607 | Use \fIsecret\fP as a shared secret for validating the digests found in |
| 608 | TCP segments with the TCP-MD5 option (RFC 2385), if present. |
| 609 | .TP |
| 610 | .B \-n |
| 611 | Don't convert addresses (i.e., host addresses, port numbers, etc.) to names. |
| 612 | .TP |
| 613 | .B \-N |
| 614 | Don't print domain name qualification of host names. |
| 615 | E.g., |
| 616 | if you give this flag then \fItcpdump\fP will print ``nic'' |
| 617 | instead of ``nic.ddn.mil''. |
| 618 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 619 | .B \-# |
| 620 | .PD 0 |
| 621 | .TP |
| 622 | .B \-\-number |
| 623 | .PD |
| 624 | Print an optional packet number at the beginning of the line. |
| 625 | .TP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 626 | .B \-O |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 627 | .PD 0 |
| 628 | .TP |
| 629 | .B \-\-no\-optimize |
| 630 | .PD |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 631 | Do not run the packet-matching code optimizer. |
| 632 | This is useful only |
| 633 | if you suspect a bug in the optimizer. |
| 634 | .TP |
| 635 | .B \-p |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 636 | .PD 0 |
| 637 | .TP |
| 638 | .B \-\-no\-promiscuous\-mode |
| 639 | .PD |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 640 | \fIDon't\fP put the interface |
| 641 | into promiscuous mode. |
| 642 | Note that the interface might be in promiscuous |
| 643 | mode for some other reason; hence, `-p' cannot be used as an abbreviation for |
| 644 | `ether host {local-hw-addr} or ether broadcast'. |
| 645 | .TP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 646 | .BI \-\-print |
| 647 | Print parsed packet output, even if the raw packets are being saved to a |
| 648 | file with the |
| 649 | .B \-w |
| 650 | flag. |
| 651 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 652 | .BI \-Q " direction" |
| 653 | .PD 0 |
| 654 | .TP |
| 655 | .BI \-\-direction= direction |
| 656 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 657 | Choose send/receive direction \fIdirection\fR for which packets should be |
| 658 | captured. Possible values are `in', `out' and `inout'. Not available |
| 659 | on all platforms. |
| 660 | .TP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 661 | .B \-q |
| 662 | Quick (quiet?) output. |
| 663 | Print less protocol information so output |
| 664 | lines are shorter. |
| 665 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 666 | .BI \-r " file" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 667 | Read packets from \fIfile\fR (which was created with the |
| 668 | .B \-w |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 669 | option or by other tools that write pcap or pcapng files). |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 670 | Standard input is used if \fIfile\fR is ``-''. |
| 671 | .TP |
| 672 | .B \-S |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 673 | .PD 0 |
| 674 | .TP |
| 675 | .B \-\-absolute\-tcp\-sequence\-numbers |
| 676 | .PD |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 677 | Print absolute, rather than relative, TCP sequence numbers. |
| 678 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 679 | .BI \-s " snaplen" |
| 680 | .PD 0 |
| 681 | .TP |
| 682 | .BI \-\-snapshot\-length= snaplen |
| 683 | .PD |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 684 | Snarf \fIsnaplen\fP bytes of data from each packet rather than the |
Elliott Hughes | e2e3bd1 | 2017-05-15 10:59:29 -0700 | [diff] [blame] | 685 | default of 262144 bytes. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 686 | Packets truncated because of a limited snapshot |
| 687 | are indicated in the output with ``[|\fIproto\fP]'', where \fIproto\fP |
| 688 | is the name of the protocol level at which the truncation has occurred. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 689 | .IP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 690 | Note that taking larger snapshots both increases |
| 691 | the amount of time it takes to process packets and, effectively, |
| 692 | decreases the amount of packet buffering. |
| 693 | This may cause packets to be |
| 694 | lost. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 695 | Note also that taking smaller snapshots will discard data from protocols |
| 696 | above the transport layer, which loses information that may be |
| 697 | important. NFS and AFS requests and replies, for example, are very |
| 698 | large, and much of the detail won't be available if a too-short snapshot |
| 699 | length is selected. |
| 700 | .IP |
| 701 | If you need to reduce the snapshot size below the default, you should |
| 702 | limit \fIsnaplen\fP to the smallest number that will capture the |
| 703 | protocol information you're interested in. Setting |
Elliott Hughes | e2e3bd1 | 2017-05-15 10:59:29 -0700 | [diff] [blame] | 704 | \fIsnaplen\fP to 0 sets it to the default of 262144, |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 705 | for backwards compatibility with recent older versions of |
| 706 | .IR tcpdump . |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 707 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 708 | .BI \-T " type" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 709 | Force packets selected by "\fIexpression\fP" to be interpreted the |
| 710 | specified \fItype\fR. |
| 711 | Currently known types are |
| 712 | \fBaodv\fR (Ad-hoc On-demand Distance Vector protocol), |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 713 | \fBcarp\fR (Common Address Redundancy Protocol), |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 714 | \fBcnfp\fR (Cisco NetFlow protocol), |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 715 | \fBdomain\fR (Domain Name System), |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 716 | \fBlmp\fR (Link Management Protocol), |
| 717 | \fBpgm\fR (Pragmatic General Multicast), |
| 718 | \fBpgm_zmtp1\fR (ZMTP/1.0 inside PGM/EPGM), |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 719 | \fBptp\fR (Precision Time Protocol), |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 720 | \fBradius\fR (RADIUS), |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 721 | \fBresp\fR (REdis Serialization Protocol), |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 722 | \fBrpc\fR (Remote Procedure Call), |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 723 | \fBrtcp\fR (Real-Time Applications control protocol), |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 724 | \fBrtp\fR (Real-Time Applications protocol), |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 725 | \fBsnmp\fR (Simple Network Management Protocol), |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 726 | \fBsomeip\fR (SOME/IP), |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 727 | \fBtftp\fR (Trivial File Transfer Protocol), |
| 728 | \fBvat\fR (Visual Audio Tool), |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 729 | \fBvxlan\fR (Virtual eXtensible Local Area Network), |
| 730 | \fBwb\fR (distributed White Board) |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 731 | and |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 732 | \fBzmtp1\fR (ZeroMQ Message Transport Protocol 1.0). |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 733 | .IP |
| 734 | Note that the \fBpgm\fR type above affects UDP interpretation only, the native |
| 735 | PGM is always recognised as IP protocol 113 regardless. UDP-encapsulated PGM is |
| 736 | often called "EPGM" or "PGM/UDP". |
| 737 | .IP |
| 738 | Note that the \fBpgm_zmtp1\fR type above affects interpretation of both native |
| 739 | PGM and UDP at once. During the native PGM decoding the application data of an |
| 740 | ODATA/RDATA packet would be decoded as a ZeroMQ datagram with ZMTP/1.0 frames. |
| 741 | During the UDP decoding in addition to that any UDP packet would be treated as |
| 742 | an encapsulated PGM packet. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 743 | .TP |
| 744 | .B \-t |
| 745 | \fIDon't\fP print a timestamp on each dump line. |
| 746 | .TP |
| 747 | .B \-tt |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 748 | Print the timestamp, as seconds since January 1, 1970, 00:00:00, UTC, and |
| 749 | fractions of a second since that time, on each dump line. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 750 | .TP |
| 751 | .B \-ttt |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 752 | Print a delta (microsecond or nanosecond resolution depending on the |
| 753 | .B \-\-time\-stamp-precision |
| 754 | option) between current and previous line on each dump line. |
| 755 | The default is microsecond resolution. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 756 | .TP |
| 757 | .B \-tttt |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 758 | Print a timestamp, as hours, minutes, seconds, and fractions of a second |
| 759 | since midnight, preceded by the date, on each dump line. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 760 | .TP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 761 | .B \-ttttt |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 762 | Print a delta (microsecond or nanosecond resolution depending on the |
| 763 | .B \-\-time\-stamp-precision |
| 764 | option) between current and first line on each dump line. |
| 765 | The default is microsecond resolution. |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 766 | .TP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 767 | .B \-u |
| 768 | Print undecoded NFS handles. |
| 769 | .TP |
| 770 | .B \-U |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 771 | .PD 0 |
| 772 | .TP |
| 773 | .B \-\-packet\-buffered |
| 774 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 775 | If the |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 776 | .B \-w |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 777 | option is not specified, or if it is specified but the |
| 778 | .B \-\-print |
| 779 | flag is also specified, make the printed packet output |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 780 | ``packet-buffered''; i.e., as the description of the contents of each |
| 781 | packet is printed, it will be written to the standard output, rather |
| 782 | than, when not writing to a terminal, being written only when the output |
| 783 | buffer fills. |
| 784 | .IP |
| 785 | If the |
| 786 | .B \-w |
| 787 | option is specified, make the saved raw packet output |
| 788 | ``packet-buffered''; i.e., as each packet is saved, it will be written |
| 789 | to the output file, rather than being written only when the output |
| 790 | buffer fills. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 791 | .IP |
| 792 | The |
| 793 | .B \-U |
| 794 | flag will not be supported if |
| 795 | .I tcpdump |
| 796 | was built with an older version of |
| 797 | .I libpcap |
| 798 | that lacks the |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 799 | .BR pcap_dump_flush(3PCAP) |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 800 | function. |
| 801 | .TP |
| 802 | .B \-v |
| 803 | When parsing and printing, produce (slightly more) verbose output. |
| 804 | For example, the time to live, |
| 805 | identification, total length and options in an IP packet are printed. |
| 806 | Also enables additional packet integrity checks such as verifying the |
| 807 | IP and ICMP header checksum. |
| 808 | .IP |
| 809 | When writing to a file with the |
| 810 | .B \-w |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 811 | option and at the same time not reading from a file with the |
| 812 | .B \-r |
| 813 | option, report to stderr, once per second, the number of packets captured. In |
| 814 | Solaris, FreeBSD and possibly other operating systems this periodic update |
| 815 | currently can cause loss of captured packets on their way from the kernel to |
| 816 | tcpdump. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 817 | .TP |
| 818 | .B \-vv |
| 819 | Even more verbose output. |
| 820 | For example, additional fields are |
| 821 | printed from NFS reply packets, and SMB packets are fully decoded. |
| 822 | .TP |
| 823 | .B \-vvv |
| 824 | Even more verbose output. |
| 825 | For example, |
| 826 | telnet \fBSB\fP ... \fBSE\fP options |
| 827 | are printed in full. |
| 828 | With |
| 829 | .B \-X |
| 830 | Telnet options are printed in hex as well. |
| 831 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 832 | .BI \-V " file" |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 833 | Read a list of filenames from \fIfile\fR. Standard input is used |
| 834 | if \fIfile\fR is ``-''. |
| 835 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 836 | .BI \-w " file" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 837 | Write the raw packets to \fIfile\fR rather than parsing and printing |
| 838 | them out. |
| 839 | They can later be printed with the \-r option. |
| 840 | Standard output is used if \fIfile\fR is ``-''. |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 841 | .IP |
| 842 | This output will be buffered if written to a file or pipe, so a program |
| 843 | reading from the file or pipe may not see packets for an arbitrary |
| 844 | amount of time after they are received. Use the |
| 845 | .B \-U |
| 846 | flag to cause packets to be written as soon as they are received. |
| 847 | .IP |
| 848 | The MIME type \fIapplication/vnd.tcpdump.pcap\fP has been registered |
| 849 | with IANA for \fIpcap\fP files. The filename extension \fI.pcap\fP |
| 850 | appears to be the most commonly used along with \fI.cap\fP and |
| 851 | \fI.dmp\fP. \fITcpdump\fP itself doesn't check the extension when |
| 852 | reading capture files and doesn't add an extension when writing them |
| 853 | (it uses magic numbers in the file header instead). However, many |
| 854 | operating systems and applications will use the extension if it is |
| 855 | present and adding one (e.g. .pcap) is recommended. |
| 856 | .IP |
| 857 | See |
| 858 | .BR pcap-savefile (@MAN_FILE_FORMATS@) |
| 859 | for a description of the file format. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 860 | .TP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 861 | .BI \-W " filecount" |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 862 | Used in conjunction with the |
| 863 | .B \-C |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 864 | option, this will limit the number |
| 865 | of files created to the specified number, and begin overwriting files |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 866 | from the beginning, thus creating a 'rotating' buffer. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 867 | In addition, it will name |
| 868 | the files with enough leading 0s to support the maximum number of |
| 869 | files, allowing them to sort correctly. |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 870 | .IP |
| 871 | Used in conjunction with the |
| 872 | .B \-G |
| 873 | option, this will limit the number of rotated dump files that get |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 874 | created, exiting with status 0 when reaching the limit. |
| 875 | .IP |
| 876 | If used in conjunction with both |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 877 | .B \-C |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 878 | and |
| 879 | .B \-G, |
| 880 | the |
| 881 | .B \-W |
| 882 | option will currently be ignored, and will only affect the file name. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 883 | .TP |
| 884 | .B \-x |
| 885 | When parsing and printing, |
| 886 | in addition to printing the headers of each packet, print the data of |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 887 | each packet (minus its link level header) in hex. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 888 | The smaller of the entire packet or |
| 889 | .I snaplen |
| 890 | bytes will be printed. Note that this is the entire link-layer |
| 891 | packet, so for link layers that pad (e.g. Ethernet), the padding bytes |
| 892 | will also be printed when the higher layer packet is shorter than the |
| 893 | required padding. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 894 | In the current implementation this flag may have the same effect as |
| 895 | .B \-xx |
| 896 | if the packet is truncated. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 897 | .TP |
| 898 | .B \-xx |
| 899 | When parsing and printing, |
| 900 | in addition to printing the headers of each packet, print the data of |
| 901 | each packet, |
| 902 | .I including |
| 903 | its link level header, in hex. |
| 904 | .TP |
| 905 | .B \-X |
| 906 | When parsing and printing, |
| 907 | in addition to printing the headers of each packet, print the data of |
| 908 | each packet (minus its link level header) in hex and ASCII. |
| 909 | This is very handy for analysing new protocols. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 910 | In the current implementation this flag may have the same effect as |
| 911 | .B \-XX |
| 912 | if the packet is truncated. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 913 | .TP |
| 914 | .B \-XX |
| 915 | When parsing and printing, |
| 916 | in addition to printing the headers of each packet, print the data of |
| 917 | each packet, |
| 918 | .I including |
| 919 | its link level header, in hex and ASCII. |
| 920 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 921 | .BI \-y " datalinktype" |
| 922 | .PD 0 |
| 923 | .TP |
| 924 | .BI \-\-linktype= datalinktype |
| 925 | .PD |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 926 | Set the data link type to use while capturing packets (see |
| 927 | .BR -L ) |
| 928 | or just compiling and dumping packet-matching code (see |
| 929 | .BR -d ) |
| 930 | to \fIdatalinktype\fP. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 931 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 932 | .BI \-z " postrotate-command" |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 933 | Used in conjunction with the |
| 934 | .B -C |
| 935 | or |
| 936 | .B -G |
| 937 | options, this will make |
| 938 | .I tcpdump |
| 939 | run " |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 940 | .I postrotate-command file |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 941 | " where |
| 942 | .I file |
| 943 | is the savefile being closed after each rotation. For example, specifying |
| 944 | .B \-z gzip |
| 945 | or |
| 946 | .B \-z bzip2 |
| 947 | will compress each savefile using gzip or bzip2. |
| 948 | .IP |
| 949 | Note that tcpdump will run the command in parallel to the capture, using |
| 950 | the lowest priority so that this doesn't disturb the capture process. |
| 951 | .IP |
| 952 | And in case you would like to use a command that itself takes flags or |
| 953 | different arguments, you can always write a shell script that will take the |
| 954 | savefile name as the only argument, make the flags & arguments arrangements |
| 955 | and execute the command that you want. |
| 956 | .TP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 957 | .BI \-Z " user" |
| 958 | .PD 0 |
| 959 | .TP |
| 960 | .BI \-\-relinquish\-privileges= user |
| 961 | .PD |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 962 | If |
| 963 | .I tcpdump |
| 964 | is running as root, after opening the capture device or input savefile, |
| 965 | but before opening any savefiles for output, change the user ID to |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 966 | .I user |
| 967 | and the group ID to the primary group of |
| 968 | .IR user . |
| 969 | .IP |
| 970 | This behavior can also be enabled by default at compile time. |
| 971 | .IP "\fI expression\fP" |
| 972 | .RS |
| 973 | selects which packets will be dumped. |
| 974 | If no \fIexpression\fP |
| 975 | is given, all packets on the net will be dumped. |
| 976 | Otherwise, |
| 977 | only packets for which \fIexpression\fP is `true' will be dumped. |
| 978 | .LP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 979 | For the \fIexpression\fP syntax, see |
| 980 | .BR pcap-filter (@MAN_MISC_INFO@). |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 981 | .LP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 982 | The \fIexpression\fP argument can be passed to \fItcpdump\fP as either a single |
| 983 | Shell argument, or as multiple Shell arguments, whichever is more convenient. |
| 984 | Generally, if the expression contains Shell metacharacters, such as |
| 985 | backslashes used to escape protocol names, it is easier to pass it as |
| 986 | a single, quoted argument rather than to escape the Shell |
| 987 | metacharacters. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 988 | Multiple arguments are concatenated with spaces before being parsed. |
| 989 | .SH EXAMPLES |
| 990 | .LP |
| 991 | To print all packets arriving at or departing from \fIsundown\fP: |
| 992 | .RS |
| 993 | .nf |
| 994 | \fBtcpdump host sundown\fP |
| 995 | .fi |
| 996 | .RE |
| 997 | .LP |
| 998 | To print traffic between \fIhelios\fR and either \fIhot\fR or \fIace\fR: |
| 999 | .RS |
| 1000 | .nf |
| 1001 | \fBtcpdump host helios and \\( hot or ace \\)\fP |
| 1002 | .fi |
| 1003 | .RE |
| 1004 | .LP |
| 1005 | To print all IP packets between \fIace\fR and any host except \fIhelios\fR: |
| 1006 | .RS |
| 1007 | .nf |
| 1008 | \fBtcpdump ip host ace and not helios\fP |
| 1009 | .fi |
| 1010 | .RE |
| 1011 | .LP |
| 1012 | To print all traffic between local hosts and hosts at Berkeley: |
| 1013 | .RS |
| 1014 | .nf |
| 1015 | .B |
| 1016 | tcpdump net ucb-ether |
| 1017 | .fi |
| 1018 | .RE |
| 1019 | .LP |
| 1020 | To print all ftp traffic through internet gateway \fIsnup\fP: |
| 1021 | (note that the expression is quoted to prevent the shell from |
| 1022 | (mis-)interpreting the parentheses): |
| 1023 | .RS |
| 1024 | .nf |
| 1025 | .B |
| 1026 | tcpdump 'gateway snup and (port ftp or ftp-data)' |
| 1027 | .fi |
| 1028 | .RE |
| 1029 | .LP |
| 1030 | To print traffic neither sourced from nor destined for local hosts |
| 1031 | (if you gateway to one other net, this stuff should never make it |
| 1032 | onto your local net). |
| 1033 | .RS |
| 1034 | .nf |
| 1035 | .B |
| 1036 | tcpdump ip and not net \fIlocalnet\fP |
| 1037 | .fi |
| 1038 | .RE |
| 1039 | .LP |
| 1040 | To print the start and end packets (the SYN and FIN packets) of each |
| 1041 | TCP conversation that involves a non-local host. |
| 1042 | .RS |
| 1043 | .nf |
| 1044 | .B |
| 1045 | tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net \fIlocalnet\fP' |
| 1046 | .fi |
| 1047 | .RE |
| 1048 | .LP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1049 | To print the TCP packets with flags RST and ACK both set. |
| 1050 | (i.e. select only the RST and ACK flags in the flags field, and if the result |
| 1051 | is "RST and ACK both set", match) |
| 1052 | .RS |
| 1053 | .nf |
| 1054 | .B |
| 1055 | tcpdump 'tcp[tcpflags] & (tcp-rst|tcp-ack) == (tcp-rst|tcp-ack)' |
| 1056 | .fi |
| 1057 | .RE |
| 1058 | .LP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1059 | To print all IPv4 HTTP packets to and from port 80, i.e. print only |
| 1060 | packets that contain data, not, for example, SYN and FIN packets and |
| 1061 | ACK-only packets. (IPv6 is left as an exercise for the reader.) |
| 1062 | .RS |
| 1063 | .nf |
| 1064 | .B |
| 1065 | tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' |
| 1066 | .fi |
| 1067 | .RE |
| 1068 | .LP |
| 1069 | To print IP packets longer than 576 bytes sent through gateway \fIsnup\fP: |
| 1070 | .RS |
| 1071 | .nf |
| 1072 | .B |
| 1073 | tcpdump 'gateway snup and ip[2:2] > 576' |
| 1074 | .fi |
| 1075 | .RE |
| 1076 | .LP |
| 1077 | To print IP broadcast or multicast packets that were |
| 1078 | .I not |
| 1079 | sent via Ethernet broadcast or multicast: |
| 1080 | .RS |
| 1081 | .nf |
| 1082 | .B |
| 1083 | tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224' |
| 1084 | .fi |
| 1085 | .RE |
| 1086 | .LP |
| 1087 | To print all ICMP packets that are not echo requests/replies (i.e., not |
| 1088 | ping packets): |
| 1089 | .RS |
| 1090 | .nf |
| 1091 | .B |
| 1092 | tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply' |
| 1093 | .fi |
| 1094 | .RE |
| 1095 | .SH OUTPUT FORMAT |
| 1096 | .LP |
| 1097 | The output of \fItcpdump\fP is protocol dependent. |
| 1098 | The following |
| 1099 | gives a brief description and examples of most of the formats. |
| 1100 | .de HD |
| 1101 | .sp 1.5 |
| 1102 | .B |
| 1103 | .. |
| 1104 | .HD |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1105 | Timestamps |
| 1106 | .LP |
| 1107 | By default, all output lines are preceded by a timestamp. |
| 1108 | The timestamp |
| 1109 | is the current clock time in the form |
| 1110 | .RS |
| 1111 | .nf |
| 1112 | \fIhh:mm:ss.frac\fP |
| 1113 | .fi |
| 1114 | .RE |
| 1115 | and is as accurate as the kernel's clock. |
| 1116 | The timestamp reflects the time the kernel applied a time stamp to the packet. |
| 1117 | No attempt is made to account for the time lag between when the network |
| 1118 | interface finished receiving the packet from the network and when the |
| 1119 | kernel applied a time stamp to the packet; that time lag could include a |
| 1120 | delay between the time when the network interface finished receiving a |
| 1121 | packet from the network and the time when an interrupt was delivered to |
| 1122 | the kernel to get it to read the packet and a delay between the time |
| 1123 | when the kernel serviced the `new packet' interrupt and the time when it |
| 1124 | applied a time stamp to the packet. |
| 1125 | .HD |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1126 | Link Level Headers |
| 1127 | .LP |
| 1128 | If the '-e' option is given, the link level header is printed out. |
| 1129 | On Ethernets, the source and destination addresses, protocol, |
| 1130 | and packet length are printed. |
| 1131 | .LP |
| 1132 | On FDDI networks, the '-e' option causes \fItcpdump\fP to print |
| 1133 | the `frame control' field, the source and destination addresses, |
| 1134 | and the packet length. |
| 1135 | (The `frame control' field governs the |
| 1136 | interpretation of the rest of the packet. |
| 1137 | Normal packets (such |
| 1138 | as those containing IP datagrams) are `async' packets, with a priority |
| 1139 | value between 0 and 7; for example, `\fBasync4\fR'. |
| 1140 | Such packets |
| 1141 | are assumed to contain an 802.2 Logical Link Control (LLC) packet; |
| 1142 | the LLC header is printed if it is \fInot\fR an ISO datagram or a |
| 1143 | so-called SNAP packet. |
| 1144 | .LP |
| 1145 | On Token Ring networks, the '-e' option causes \fItcpdump\fP to print |
| 1146 | the `access control' and `frame control' fields, the source and |
| 1147 | destination addresses, and the packet length. |
| 1148 | As on FDDI networks, |
| 1149 | packets are assumed to contain an LLC packet. |
| 1150 | Regardless of whether |
| 1151 | the '-e' option is specified or not, the source routing information is |
| 1152 | printed for source-routed packets. |
| 1153 | .LP |
| 1154 | On 802.11 networks, the '-e' option causes \fItcpdump\fP to print |
| 1155 | the `frame control' fields, all of the addresses in the 802.11 header, |
| 1156 | and the packet length. |
| 1157 | As on FDDI networks, |
| 1158 | packets are assumed to contain an LLC packet. |
| 1159 | .LP |
| 1160 | \fI(N.B.: The following description assumes familiarity with |
| 1161 | the SLIP compression algorithm described in RFC-1144.)\fP |
| 1162 | .LP |
| 1163 | On SLIP links, a direction indicator (``I'' for inbound, ``O'' for outbound), |
| 1164 | packet type, and compression information are printed out. |
| 1165 | The packet type is printed first. |
| 1166 | The three types are \fIip\fP, \fIutcp\fP, and \fIctcp\fP. |
| 1167 | No further link information is printed for \fIip\fR packets. |
| 1168 | For TCP packets, the connection identifier is printed following the type. |
| 1169 | If the packet is compressed, its encoded header is printed out. |
| 1170 | The special cases are printed out as |
| 1171 | \fB*S+\fIn\fR and \fB*SA+\fIn\fR, where \fIn\fR is the amount by which |
| 1172 | the sequence number (or sequence number and ack) has changed. |
| 1173 | If it is not a special case, |
| 1174 | zero or more changes are printed. |
| 1175 | A change is indicated by U (urgent pointer), W (window), A (ack), |
| 1176 | S (sequence number), and I (packet ID), followed by a delta (+n or -n), |
| 1177 | or a new value (=n). |
| 1178 | Finally, the amount of data in the packet and compressed header length |
| 1179 | are printed. |
| 1180 | .LP |
| 1181 | For example, the following line shows an outbound compressed TCP packet, |
| 1182 | with an implicit connection identifier; the ack has changed by 6, |
| 1183 | the sequence number by 49, and the packet ID by 6; there are 3 bytes of |
| 1184 | data and 6 bytes of compressed header: |
| 1185 | .RS |
| 1186 | .nf |
| 1187 | \fBO ctcp * A+6 S+49 I+6 3 (6)\fP |
| 1188 | .fi |
| 1189 | .RE |
| 1190 | .HD |
| 1191 | ARP/RARP Packets |
| 1192 | .LP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1193 | ARP/RARP output shows the type of request and its arguments. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1194 | The |
| 1195 | format is intended to be self explanatory. |
| 1196 | Here is a short sample taken from the start of an `rlogin' from |
| 1197 | host \fIrtsg\fP to host \fIcsam\fP: |
| 1198 | .RS |
| 1199 | .nf |
| 1200 | .sp .5 |
| 1201 | \f(CWarp who-has csam tell rtsg |
| 1202 | arp reply csam is-at CSAM\fR |
| 1203 | .sp .5 |
| 1204 | .fi |
| 1205 | .RE |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1206 | The first line says that rtsg sent an ARP packet asking |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1207 | for the Ethernet address of internet host csam. |
| 1208 | Csam |
| 1209 | replies with its Ethernet address (in this example, Ethernet addresses |
| 1210 | are in caps and internet addresses in lower case). |
| 1211 | .LP |
| 1212 | This would look less redundant if we had done \fItcpdump \-n\fP: |
| 1213 | .RS |
| 1214 | .nf |
| 1215 | .sp .5 |
| 1216 | \f(CWarp who-has 128.3.254.6 tell 128.3.254.68 |
| 1217 | arp reply 128.3.254.6 is-at 02:07:01:00:01:c4\fP |
| 1218 | .fi |
| 1219 | .RE |
| 1220 | .LP |
| 1221 | If we had done \fItcpdump \-e\fP, the fact that the first packet is |
| 1222 | broadcast and the second is point-to-point would be visible: |
| 1223 | .RS |
| 1224 | .nf |
| 1225 | .sp .5 |
| 1226 | \f(CWRTSG Broadcast 0806 64: arp who-has csam tell rtsg |
| 1227 | CSAM RTSG 0806 64: arp reply csam is-at CSAM\fR |
| 1228 | .sp .5 |
| 1229 | .fi |
| 1230 | .RE |
| 1231 | For the first packet this says the Ethernet source address is RTSG, the |
| 1232 | destination is the Ethernet broadcast address, the type field |
| 1233 | contained hex 0806 (type ETHER_ARP) and the total length was 64 bytes. |
| 1234 | .HD |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1235 | IPv4 Packets |
| 1236 | .LP |
| 1237 | If the link-layer header is not being printed, for IPv4 packets, |
| 1238 | \fBIP\fP is printed after the time stamp. |
| 1239 | .LP |
| 1240 | If the |
| 1241 | .B \-v |
| 1242 | flag is specified, information from the IPv4 header is shown in |
| 1243 | parentheses after the \fBIP\fP or the link-layer header. |
| 1244 | The general format of this information is: |
| 1245 | .RS |
| 1246 | .nf |
| 1247 | .sp .5 |
| 1248 | tos \fItos\fP, ttl \fIttl\fP, id \fIid\fP, offset \fIoffset\fP, flags [\fIflags\fP], proto \fIproto\fP, length \fIlength\fP, options (\fIoptions\fP) |
| 1249 | .sp .5 |
| 1250 | .fi |
| 1251 | .RE |
| 1252 | \fItos\fP is the type of service field; if the ECN bits are non-zero, |
| 1253 | those are reported as \fBECT(1)\fP, \fBECT(0)\fP, or \fBCE\fP. |
| 1254 | \fIttl\fP is the time-to-live; it is not reported if it is zero. |
| 1255 | \fIid\fP is the IP identification field. |
| 1256 | \fIoffset\fP is the fragment offset field; it is printed whether this is |
| 1257 | part of a fragmented datagram or not. |
| 1258 | \fIflags\fP are the MF and DF flags; \fB+\fP is reported if MF is set, |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1259 | and \fBDF\fP is reported if F is set. If neither are set, \fB.\fP is |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1260 | reported. |
| 1261 | \fIproto\fP is the protocol ID field. |
| 1262 | \fIlength\fP is the total length field. |
| 1263 | \fIoptions\fP are the IP options, if any. |
| 1264 | .LP |
| 1265 | Next, for TCP and UDP packets, the source and destination IP addresses |
| 1266 | and TCP or UDP ports, with a dot between each IP address and its |
| 1267 | corresponding port, will be printed, with a > separating the source and |
| 1268 | destination. For other protocols, the addresses will be printed, with |
| 1269 | a > separating the source and destination. Higher level protocol |
| 1270 | information, if any, will be printed after that. |
| 1271 | .LP |
| 1272 | For fragmented IP datagrams, the first fragment contains the higher |
| 1273 | level protocol header; fragments after the first contain no higher level |
| 1274 | protocol header. Fragmentation information will be printed only with |
| 1275 | the |
| 1276 | .B \-v |
| 1277 | flag, in the IP header information, as described above. |
| 1278 | .HD |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1279 | TCP Packets |
| 1280 | .LP |
| 1281 | \fI(N.B.:The following description assumes familiarity with |
| 1282 | the TCP protocol described in RFC-793. |
| 1283 | If you are not familiar |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1284 | with the protocol, this description will not |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1285 | be of much use to you.)\fP |
| 1286 | .LP |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1287 | The general format of a TCP protocol line is: |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1288 | .RS |
| 1289 | .nf |
| 1290 | .sp .5 |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1291 | \fIsrc\fP > \fIdst\fP: Flags [\fItcpflags\fP], seq \fIdata-seqno\fP, ack \fIackno\fP, win \fIwindow\fP, urg \fIurgent\fP, options [\fIopts\fP], length \fIlen\fP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1292 | .sp .5 |
| 1293 | .fi |
| 1294 | .RE |
| 1295 | \fISrc\fP and \fIdst\fP are the source and destination IP |
| 1296 | addresses and ports. |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1297 | \fITcpflags\fP are some combination of S (SYN), |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1298 | F (FIN), P (PUSH), R (RST), U (URG), W (ECN CWR), E (ECN-Echo) or |
| 1299 | `.' (ACK), or `none' if no flags are set. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1300 | \fIData-seqno\fP describes the portion of sequence space covered |
| 1301 | by the data in this packet (see example below). |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1302 | \fIAckno\fP is sequence number of the next data expected the other |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1303 | direction on this connection. |
| 1304 | \fIWindow\fP is the number of bytes of receive buffer space available |
| 1305 | the other direction on this connection. |
| 1306 | \fIUrg\fP indicates there is `urgent' data in the packet. |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1307 | \fIOpts\fP are TCP options (e.g., mss 1024). |
| 1308 | \fILen\fP is the length of payload data. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1309 | .LP |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1310 | \fIIptype\fR, \fISrc\fP, \fIdst\fP, and \fIflags\fP are always present. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1311 | The other fields |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1312 | depend on the contents of the packet's TCP protocol header and |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1313 | are output only if appropriate. |
| 1314 | .LP |
| 1315 | Here is the opening portion of an rlogin from host \fIrtsg\fP to |
| 1316 | host \fIcsam\fP. |
| 1317 | .RS |
| 1318 | .nf |
| 1319 | .sp .5 |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1320 | \f(CWIP rtsg.1023 > csam.login: Flags [S], seq 768512:768512, win 4096, opts [mss 1024] |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1321 | IP csam.login > rtsg.1023: Flags [S.], seq, 947648:947648, ack 768513, win 4096, opts [mss 1024] |
| 1322 | IP rtsg.1023 > csam.login: Flags [.], ack 1, win 4096 |
| 1323 | IP rtsg.1023 > csam.login: Flags [P.], seq 1:2, ack 1, win 4096, length 1 |
| 1324 | IP csam.login > rtsg.1023: Flags [.], ack 2, win 4096 |
| 1325 | IP rtsg.1023 > csam.login: Flags [P.], seq 2:21, ack 1, win 4096, length 19 |
| 1326 | IP csam.login > rtsg.1023: Flags [P.], seq 1:2, ack 21, win 4077, length 1 |
| 1327 | IP csam.login > rtsg.1023: Flags [P.], seq 2:3, ack 21, win 4077, urg 1, length 1 |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1328 | IP csam.login > rtsg.1023: Flags [P.], seq 3:4, ack 21, win 4077, urg 1, length 1\fR |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1329 | .sp .5 |
| 1330 | .fi |
| 1331 | .RE |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1332 | The first line says that TCP port 1023 on rtsg sent a packet |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1333 | to port \fIlogin\fP |
| 1334 | on csam. |
| 1335 | The \fBS\fP indicates that the \fISYN\fP flag was set. |
| 1336 | The packet sequence number was 768512 and it contained no data. |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1337 | (The notation is `first:last' which means `sequence |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1338 | numbers \fIfirst\fP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1339 | up to but not including \fIlast\fP'.) |
| 1340 | There was no piggy-backed ACK, the available receive window was 4096 |
| 1341 | bytes and there was a max-segment-size option requesting an MSS of |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1342 | 1024 bytes. |
| 1343 | .LP |
| 1344 | Csam replies with a similar packet except it includes a piggy-backed |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1345 | ACK for rtsg's SYN. |
| 1346 | Rtsg then ACKs csam's SYN. |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1347 | The `.' means the ACK flag was set. |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1348 | The packet contained no data so there is no data sequence number or length. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1349 | Note that the ACK sequence |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1350 | number is a small integer (1). |
| 1351 | The first time \fItcpdump\fP sees a |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 1352 | TCP `conversation', it prints the sequence number from the packet. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1353 | On subsequent packets of the conversation, the difference between |
| 1354 | the current packet's sequence number and this initial sequence number |
| 1355 | is printed. |
| 1356 | This means that sequence numbers after the |
| 1357 | first can be interpreted |
| 1358 | as relative byte positions in the conversation's data stream (with the |
| 1359 | first data byte each direction being `1'). |
| 1360 | `-S' will override this |
| 1361 | feature, causing the original sequence numbers to be output. |
| 1362 | .LP |
| 1363 | On the 6th line, rtsg sends csam 19 bytes of data (bytes 2 through 20 |
| 1364 | in the rtsg \(-> csam side of the conversation). |
| 1365 | The PUSH flag is set in the packet. |
| 1366 | On the 7th line, csam says it's received data sent by rtsg up to |
| 1367 | but not including byte 21. |
| 1368 | Most of this data is apparently sitting in the |
| 1369 | socket buffer since csam's receive window has gotten 19 bytes smaller. |
| 1370 | Csam also sends one byte of data to rtsg in this packet. |
| 1371 | On the 8th and 9th lines, |
| 1372 | csam sends two bytes of urgent, pushed data to rtsg. |
| 1373 | .LP |
| 1374 | If the snapshot was small enough that \fItcpdump\fP didn't capture |
| 1375 | the full TCP header, it interprets as much of the header as it can |
| 1376 | and then reports ``[|\fItcp\fP]'' to indicate the remainder could not |
| 1377 | be interpreted. |
| 1378 | If the header contains a bogus option (one with a length |
| 1379 | that's either too small or beyond the end of the header), \fItcpdump\fP |
| 1380 | reports it as ``[\fIbad opt\fP]'' and does not interpret any further |
| 1381 | options (since it's impossible to tell where they start). |
| 1382 | If the header |
| 1383 | length indicates options are present but the IP datagram length is not |
| 1384 | long enough for the options to actually be there, \fItcpdump\fP reports |
| 1385 | it as ``[\fIbad hdr length\fP]''. |
| 1386 | .HD |
| 1387 | .B Capturing TCP packets with particular flag combinations (SYN-ACK, URG-ACK, etc.) |
| 1388 | .PP |
| 1389 | There are 8 bits in the control bits section of the TCP header: |
| 1390 | .IP |
| 1391 | .I CWR | ECE | URG | ACK | PSH | RST | SYN | FIN |
| 1392 | .PP |
| 1393 | Let's assume that we want to watch packets used in establishing |
| 1394 | a TCP connection. |
| 1395 | Recall that TCP uses a 3-way handshake protocol |
| 1396 | when it initializes a new connection; the connection sequence with |
| 1397 | regard to the TCP control bits is |
| 1398 | .PP |
| 1399 | .RS |
| 1400 | 1) Caller sends SYN |
| 1401 | .RE |
| 1402 | .RS |
| 1403 | 2) Recipient responds with SYN, ACK |
| 1404 | .RE |
| 1405 | .RS |
| 1406 | 3) Caller sends ACK |
| 1407 | .RE |
| 1408 | .PP |
| 1409 | Now we're interested in capturing packets that have only the |
| 1410 | SYN bit set (Step 1). |
| 1411 | Note that we don't want packets from step 2 |
| 1412 | (SYN-ACK), just a plain initial SYN. |
| 1413 | What we need is a correct filter |
| 1414 | expression for \fItcpdump\fP. |
| 1415 | .PP |
| 1416 | Recall the structure of a TCP header without options: |
| 1417 | .PP |
| 1418 | .nf |
| 1419 | 0 15 31 |
| 1420 | ----------------------------------------------------------------- |
| 1421 | | source port | destination port | |
| 1422 | ----------------------------------------------------------------- |
| 1423 | | sequence number | |
| 1424 | ----------------------------------------------------------------- |
| 1425 | | acknowledgment number | |
| 1426 | ----------------------------------------------------------------- |
| 1427 | | HL | rsvd |C|E|U|A|P|R|S|F| window size | |
| 1428 | ----------------------------------------------------------------- |
| 1429 | | TCP checksum | urgent pointer | |
| 1430 | ----------------------------------------------------------------- |
| 1431 | .fi |
| 1432 | .PP |
| 1433 | A TCP header usually holds 20 octets of data, unless options are |
| 1434 | present. |
| 1435 | The first line of the graph contains octets 0 - 3, the |
| 1436 | second line shows octets 4 - 7 etc. |
| 1437 | .PP |
| 1438 | Starting to count with 0, the relevant TCP control bits are contained |
| 1439 | in octet 13: |
| 1440 | .PP |
| 1441 | .nf |
| 1442 | 0 7| 15| 23| 31 |
| 1443 | ----------------|---------------|---------------|---------------- |
| 1444 | | HL | rsvd |C|E|U|A|P|R|S|F| window size | |
| 1445 | ----------------|---------------|---------------|---------------- |
| 1446 | | | 13th octet | | | |
| 1447 | .fi |
| 1448 | .PP |
| 1449 | Let's have a closer look at octet no. 13: |
| 1450 | .PP |
| 1451 | .nf |
| 1452 | | | |
| 1453 | |---------------| |
| 1454 | |C|E|U|A|P|R|S|F| |
| 1455 | |---------------| |
| 1456 | |7 5 3 0| |
| 1457 | .fi |
| 1458 | .PP |
| 1459 | These are the TCP control bits we are interested |
| 1460 | in. |
| 1461 | We have numbered the bits in this octet from 0 to 7, right to |
| 1462 | left, so the PSH bit is bit number 3, while the URG bit is number 5. |
| 1463 | .PP |
| 1464 | Recall that we want to capture packets with only SYN set. |
| 1465 | Let's see what happens to octet 13 if a TCP datagram arrives |
| 1466 | with the SYN bit set in its header: |
| 1467 | .PP |
| 1468 | .nf |
| 1469 | |C|E|U|A|P|R|S|F| |
| 1470 | |---------------| |
| 1471 | |0 0 0 0 0 0 1 0| |
| 1472 | |---------------| |
| 1473 | |7 6 5 4 3 2 1 0| |
| 1474 | .fi |
| 1475 | .PP |
| 1476 | Looking at the |
| 1477 | control bits section we see that only bit number 1 (SYN) is set. |
| 1478 | .PP |
| 1479 | Assuming that octet number 13 is an 8-bit unsigned integer in |
| 1480 | network byte order, the binary value of this octet is |
| 1481 | .IP |
| 1482 | 00000010 |
| 1483 | .PP |
| 1484 | and its decimal representation is |
| 1485 | .PP |
| 1486 | .nf |
| 1487 | 7 6 5 4 3 2 1 0 |
| 1488 | 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2 = 2 |
| 1489 | .fi |
| 1490 | .PP |
| 1491 | We're almost done, because now we know that if only SYN is set, |
| 1492 | the value of the 13th octet in the TCP header, when interpreted |
| 1493 | as a 8-bit unsigned integer in network byte order, must be exactly 2. |
| 1494 | .PP |
| 1495 | This relationship can be expressed as |
| 1496 | .RS |
| 1497 | .B |
| 1498 | tcp[13] == 2 |
| 1499 | .RE |
| 1500 | .PP |
| 1501 | We can use this expression as the filter for \fItcpdump\fP in order |
| 1502 | to watch packets which have only SYN set: |
| 1503 | .RS |
| 1504 | .B |
| 1505 | tcpdump -i xl0 tcp[13] == 2 |
| 1506 | .RE |
| 1507 | .PP |
| 1508 | The expression says "let the 13th octet of a TCP datagram have |
| 1509 | the decimal value 2", which is exactly what we want. |
| 1510 | .PP |
| 1511 | Now, let's assume that we need to capture SYN packets, but we |
| 1512 | don't care if ACK or any other TCP control bit is set at the |
| 1513 | same time. |
| 1514 | Let's see what happens to octet 13 when a TCP datagram |
| 1515 | with SYN-ACK set arrives: |
| 1516 | .PP |
| 1517 | .nf |
| 1518 | |C|E|U|A|P|R|S|F| |
| 1519 | |---------------| |
| 1520 | |0 0 0 1 0 0 1 0| |
| 1521 | |---------------| |
| 1522 | |7 6 5 4 3 2 1 0| |
| 1523 | .fi |
| 1524 | .PP |
| 1525 | Now bits 1 and 4 are set in the 13th octet. |
| 1526 | The binary value of |
| 1527 | octet 13 is |
| 1528 | .IP |
| 1529 | 00010010 |
| 1530 | .PP |
| 1531 | which translates to decimal |
| 1532 | .PP |
| 1533 | .nf |
| 1534 | 7 6 5 4 3 2 1 0 |
| 1535 | 0*2 + 0*2 + 0*2 + 1*2 + 0*2 + 0*2 + 1*2 + 0*2 = 18 |
| 1536 | .fi |
| 1537 | .PP |
| 1538 | Now we can't just use 'tcp[13] == 18' in the \fItcpdump\fP filter |
| 1539 | expression, because that would select only those packets that have |
| 1540 | SYN-ACK set, but not those with only SYN set. |
| 1541 | Remember that we don't care |
| 1542 | if ACK or any other control bit is set as long as SYN is set. |
| 1543 | .PP |
| 1544 | In order to achieve our goal, we need to logically AND the |
| 1545 | binary value of octet 13 with some other value to preserve |
| 1546 | the SYN bit. |
| 1547 | We know that we want SYN to be set in any case, |
| 1548 | so we'll logically AND the value in the 13th octet with |
| 1549 | the binary value of a SYN: |
| 1550 | .PP |
| 1551 | .nf |
| 1552 | |
| 1553 | 00010010 SYN-ACK 00000010 SYN |
| 1554 | AND 00000010 (we want SYN) AND 00000010 (we want SYN) |
| 1555 | -------- -------- |
| 1556 | = 00000010 = 00000010 |
| 1557 | .fi |
| 1558 | .PP |
| 1559 | We see that this AND operation delivers the same result |
| 1560 | regardless whether ACK or another TCP control bit is set. |
| 1561 | The decimal representation of the AND value as well as |
| 1562 | the result of this operation is 2 (binary 00000010), |
| 1563 | so we know that for packets with SYN set the following |
| 1564 | relation must hold true: |
| 1565 | .IP |
| 1566 | ( ( value of octet 13 ) AND ( 2 ) ) == ( 2 ) |
| 1567 | .PP |
| 1568 | This points us to the \fItcpdump\fP filter expression |
| 1569 | .RS |
| 1570 | .B |
| 1571 | tcpdump -i xl0 'tcp[13] & 2 == 2' |
| 1572 | .RE |
| 1573 | .PP |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1574 | Some offsets and field values may be expressed as names |
| 1575 | rather than as numeric values. For example tcp[13] may |
| 1576 | be replaced with tcp[tcpflags]. The following TCP flag |
| 1577 | field values are also available: tcp-fin, tcp-syn, tcp-rst, |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1578 | tcp-push, tcp-ack, tcp-urg. |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1579 | .PP |
| 1580 | This can be demonstrated as: |
| 1581 | .RS |
| 1582 | .B |
| 1583 | tcpdump -i xl0 'tcp[tcpflags] & tcp-push != 0' |
| 1584 | .RE |
| 1585 | .PP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1586 | Note that you should use single quotes or a backslash |
| 1587 | in the expression to hide the AND ('&') special character |
| 1588 | from the shell. |
| 1589 | .HD |
| 1590 | .B |
| 1591 | UDP Packets |
| 1592 | .LP |
| 1593 | UDP format is illustrated by this rwho packet: |
| 1594 | .RS |
| 1595 | .nf |
| 1596 | .sp .5 |
| 1597 | \f(CWactinide.who > broadcast.who: udp 84\fP |
| 1598 | .sp .5 |
| 1599 | .fi |
| 1600 | .RE |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1601 | This says that port \fIwho\fP on host \fIactinide\fP sent a UDP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1602 | datagram to port \fIwho\fP on host \fIbroadcast\fP, the Internet |
| 1603 | broadcast address. |
| 1604 | The packet contained 84 bytes of user data. |
| 1605 | .LP |
| 1606 | Some UDP services are recognized (from the source or destination |
| 1607 | port number) and the higher level protocol information printed. |
| 1608 | In particular, Domain Name service requests (RFC-1034/1035) and Sun |
| 1609 | RPC calls (RFC-1050) to NFS. |
| 1610 | .HD |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1611 | TCP or UDP Name Server Requests |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1612 | .LP |
| 1613 | \fI(N.B.:The following description assumes familiarity with |
| 1614 | the Domain Service protocol described in RFC-1035. |
| 1615 | If you are not familiar |
| 1616 | with the protocol, the following description will appear to be written |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1617 | in Greek.)\fP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1618 | .LP |
| 1619 | Name server requests are formatted as |
| 1620 | .RS |
| 1621 | .nf |
| 1622 | .sp .5 |
| 1623 | \fIsrc > dst: id op? flags qtype qclass name (len)\fP |
| 1624 | .sp .5 |
| 1625 | \f(CWh2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)\fR |
| 1626 | .sp .5 |
| 1627 | .fi |
| 1628 | .RE |
| 1629 | Host \fIh2opolo\fP asked the domain server on \fIhelios\fP for an |
| 1630 | address record (qtype=A) associated with the name \fIucbvax.berkeley.edu.\fP |
| 1631 | The query id was `3'. |
| 1632 | The `+' indicates the \fIrecursion desired\fP flag |
| 1633 | was set. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1634 | The query length was 37 bytes, excluding the TCP or UDP and |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1635 | IP protocol headers. |
| 1636 | The query operation was the normal one, \fIQuery\fP, |
| 1637 | so the op field was omitted. |
| 1638 | If the op had been anything else, it would |
| 1639 | have been printed between the `3' and the `+'. |
| 1640 | Similarly, the qclass was the normal one, |
| 1641 | \fIC_IN\fP, and omitted. |
| 1642 | Any other qclass would have been printed |
| 1643 | immediately after the `A'. |
| 1644 | .LP |
| 1645 | A few anomalies are checked and may result in extra fields enclosed in |
| 1646 | square brackets: If a query contains an answer, authority records or |
| 1647 | additional records section, |
| 1648 | .IR ancount , |
| 1649 | .IR nscount , |
| 1650 | or |
| 1651 | .I arcount |
| 1652 | are printed as `[\fIn\fPa]', `[\fIn\fPn]' or `[\fIn\fPau]' where \fIn\fP |
| 1653 | is the appropriate count. |
| 1654 | If any of the response bits are set (AA, RA or rcode) or any of the |
| 1655 | `must be zero' bits are set in bytes two and three, `[b2&3=\fIx\fP]' |
| 1656 | is printed, where \fIx\fP is the hex value of header bytes two and three. |
| 1657 | .HD |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1658 | TCP or UDP Name Server Responses |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1659 | .LP |
| 1660 | Name server responses are formatted as |
| 1661 | .RS |
| 1662 | .nf |
| 1663 | .sp .5 |
| 1664 | \fIsrc > dst: id op rcode flags a/n/au type class data (len)\fP |
| 1665 | .sp .5 |
| 1666 | \f(CWhelios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273) |
| 1667 | helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)\fR |
| 1668 | .sp .5 |
| 1669 | .fi |
| 1670 | .RE |
| 1671 | In the first example, \fIhelios\fP responds to query id 3 from \fIh2opolo\fP |
| 1672 | with 3 answer records, 3 name server records and 7 additional records. |
| 1673 | The first answer record is type A (address) and its data is internet |
| 1674 | address 128.32.137.3. |
| 1675 | The total size of the response was 273 bytes, |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1676 | excluding TCP or UDP and IP headers. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1677 | The op (Query) and response code |
| 1678 | (NoError) were omitted, as was the class (C_IN) of the A record. |
| 1679 | .LP |
| 1680 | In the second example, \fIhelios\fP responds to query 2 with a |
| 1681 | response code of non-existent domain (NXDomain) with no answers, |
| 1682 | one name server and no authority records. |
| 1683 | The `*' indicates that |
| 1684 | the \fIauthoritative answer\fP bit was set. |
| 1685 | Since there were no |
| 1686 | answers, no type, class or data were printed. |
| 1687 | .LP |
| 1688 | Other flag characters that might appear are `\-' (recursion available, |
| 1689 | RA, \fInot\fP set) and `|' (truncated message, TC, set). |
| 1690 | If the |
| 1691 | `question' section doesn't contain exactly one entry, `[\fIn\fPq]' |
| 1692 | is printed. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1693 | .HD |
| 1694 | SMB/CIFS decoding |
| 1695 | .LP |
| 1696 | \fItcpdump\fP now includes fairly extensive SMB/CIFS/NBT decoding for data |
| 1697 | on UDP/137, UDP/138 and TCP/139. |
| 1698 | Some primitive decoding of IPX and |
| 1699 | NetBEUI SMB data is also done. |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1700 | .LP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1701 | By default a fairly minimal decode is done, with a much more detailed |
| 1702 | decode done if -v is used. |
| 1703 | Be warned that with -v a single SMB packet |
| 1704 | may take up a page or more, so only use -v if you really want all the |
| 1705 | gory details. |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1706 | .LP |
| 1707 | For information on SMB packet formats and what all the fields mean see |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1708 | \%https://download.samba.org/pub/samba/specs/ and other online resources. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1709 | The SMB patches were written by Andrew Tridgell |
| 1710 | (tridge@samba.org). |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1711 | .HD |
| 1712 | NFS Requests and Replies |
| 1713 | .LP |
| 1714 | Sun NFS (Network File System) requests and replies are printed as: |
| 1715 | .RS |
| 1716 | .nf |
| 1717 | .sp .5 |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1718 | \fIsrc.sport > dst.nfs: NFS request xid xid len op args\fP |
| 1719 | \fIsrc.nfs > dst.dport: NFS reply xid xid reply stat len op results\fP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1720 | .sp .5 |
| 1721 | \f(CW |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1722 | sushi.1023 > wrl.nfs: NFS request xid 26377 |
| 1723 | 112 readlink fh 21,24/10.73165 |
| 1724 | wrl.nfs > sushi.1023: NFS reply xid 26377 |
| 1725 | reply ok 40 readlink "../var" |
| 1726 | sushi.1022 > wrl.nfs: NFS request xid 8219 |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1727 | 144 lookup fh 9,74/4096.6878 "xcolors" |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1728 | wrl.nfs > sushi.1022: NFS reply xid 8219 |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1729 | reply ok 128 lookup fh 9,74/4134.3150 |
| 1730 | \fR |
| 1731 | .sp .5 |
| 1732 | .fi |
| 1733 | .RE |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1734 | In the first line, host \fIsushi\fP sends a transaction with id \fI26377\fP |
| 1735 | to \fIwrl\fP. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1736 | The request was 112 bytes, |
| 1737 | excluding the UDP and IP headers. |
| 1738 | The operation was a \fIreadlink\fP |
| 1739 | (read symbolic link) on file handle (\fIfh\fP) 21,24/10.731657119. |
| 1740 | (If one is lucky, as in this case, the file handle can be interpreted |
| 1741 | as a major,minor device number pair, followed by the inode number and |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1742 | generation number.) In the second line, \fIwrl\fP replies `ok' with |
| 1743 | the same transaction id and the contents of the link. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1744 | .LP |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1745 | In the third line, \fIsushi\fP asks (using a new transaction id) \fIwrl\fP |
| 1746 | to lookup the name `\fIxcolors\fP' in directory file 9,74/4096.6878. In |
| 1747 | the fourth line, \fIwrl\fP sends a reply with the respective transaction id. |
| 1748 | .LP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1749 | Note that the data printed |
| 1750 | depends on the operation type. |
| 1751 | The format is intended to be self |
| 1752 | explanatory if read in conjunction with |
| 1753 | an NFS protocol spec. |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1754 | Also note that older versions of tcpdump printed NFS packets in a |
| 1755 | slightly different format: the transaction id (xid) would be printed |
| 1756 | instead of the non-NFS port number of the packet. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1757 | .LP |
| 1758 | If the \-v (verbose) flag is given, additional information is printed. |
| 1759 | For example: |
| 1760 | .RS |
| 1761 | .nf |
| 1762 | .sp .5 |
| 1763 | \f(CW |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1764 | sushi.1023 > wrl.nfs: NFS request xid 79658 |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1765 | 148 read fh 21,11/12.195 8192 bytes @ 24576 |
Elliott Hughes | 892a68b | 2015-10-19 14:43:53 -0700 | [diff] [blame] | 1766 | wrl.nfs > sushi.1023: NFS reply xid 79658 |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1767 | reply ok 1472 read REG 100664 ids 417/0 sz 29388 |
| 1768 | \fP |
| 1769 | .sp .5 |
| 1770 | .fi |
| 1771 | .RE |
| 1772 | (\-v also prints the IP header TTL, ID, length, and fragmentation fields, |
| 1773 | which have been omitted from this example.) In the first line, |
| 1774 | \fIsushi\fP asks \fIwrl\fP to read 8192 bytes from file 21,11/12.195, |
| 1775 | at byte offset 24576. |
| 1776 | \fIWrl\fP replies `ok'; the packet shown on the |
| 1777 | second line is the first fragment of the reply, and hence is only 1472 |
| 1778 | bytes long (the other bytes will follow in subsequent fragments, but |
| 1779 | these fragments do not have NFS or even UDP headers and so might not be |
| 1780 | printed, depending on the filter expression used). |
| 1781 | Because the \-v flag |
| 1782 | is given, some of the file attributes (which are returned in addition |
| 1783 | to the file data) are printed: the file type (``REG'', for regular file), |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1784 | the file mode (in octal), the UID and GID, and the file size. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1785 | .LP |
| 1786 | If the \-v flag is given more than once, even more details are printed. |
| 1787 | .LP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1788 | NFS reply packets do not explicitly identify the RPC operation. |
| 1789 | Instead, |
| 1790 | \fItcpdump\fP keeps track of ``recent'' requests, and matches them to the |
| 1791 | replies using the transaction ID. |
| 1792 | If a reply does not closely follow the |
| 1793 | corresponding request, it might not be parsable. |
| 1794 | .HD |
| 1795 | AFS Requests and Replies |
| 1796 | .LP |
| 1797 | Transarc AFS (Andrew File System) requests and replies are printed |
| 1798 | as: |
| 1799 | .HD |
| 1800 | .RS |
| 1801 | .nf |
| 1802 | .sp .5 |
| 1803 | \fIsrc.sport > dst.dport: rx packet-type\fP |
| 1804 | \fIsrc.sport > dst.dport: rx packet-type service call call-name args\fP |
| 1805 | \fIsrc.sport > dst.dport: rx packet-type service reply call-name args\fP |
| 1806 | .sp .5 |
| 1807 | \f(CW |
| 1808 | elvis.7001 > pike.afsfs: |
| 1809 | rx data fs call rename old fid 536876964/1/1 ".newsrc.new" |
| 1810 | new fid 536876964/1/1 ".newsrc" |
| 1811 | pike.afsfs > elvis.7001: rx data fs reply rename |
| 1812 | \fR |
| 1813 | .sp .5 |
| 1814 | .fi |
| 1815 | .RE |
| 1816 | In the first line, host elvis sends a RX packet to pike. |
| 1817 | This was |
| 1818 | a RX data packet to the fs (fileserver) service, and is the start of |
| 1819 | an RPC call. |
| 1820 | The RPC call was a rename, with the old directory file id |
| 1821 | of 536876964/1/1 and an old filename of `.newsrc.new', and a new directory |
| 1822 | file id of 536876964/1/1 and a new filename of `.newsrc'. |
| 1823 | The host pike |
| 1824 | responds with a RPC reply to the rename call (which was successful, because |
| 1825 | it was a data packet and not an abort packet). |
| 1826 | .LP |
| 1827 | In general, all AFS RPCs are decoded at least by RPC call name. |
| 1828 | Most |
| 1829 | AFS RPCs have at least some of the arguments decoded (generally only |
| 1830 | the `interesting' arguments, for some definition of interesting). |
| 1831 | .LP |
| 1832 | The format is intended to be self-describing, but it will probably |
| 1833 | not be useful to people who are not familiar with the workings of |
| 1834 | AFS and RX. |
| 1835 | .LP |
| 1836 | If the -v (verbose) flag is given twice, acknowledgement packets and |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1837 | additional header information is printed, such as the RX call ID, |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1838 | call number, sequence number, serial number, and the RX packet flags. |
| 1839 | .LP |
| 1840 | If the -v flag is given twice, additional information is printed, |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1841 | such as the RX call ID, serial number, and the RX packet flags. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1842 | The MTU negotiation information is also printed from RX ack packets. |
| 1843 | .LP |
| 1844 | If the -v flag is given three times, the security index and service id |
| 1845 | are printed. |
| 1846 | .LP |
| 1847 | Error codes are printed for abort packets, with the exception of Ubik |
| 1848 | beacon packets (because abort packets are used to signify a yes vote |
| 1849 | for the Ubik protocol). |
| 1850 | .LP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1851 | AFS reply packets do not explicitly identify the RPC operation. |
| 1852 | Instead, |
| 1853 | \fItcpdump\fP keeps track of ``recent'' requests, and matches them to the |
| 1854 | replies using the call number and service ID. |
| 1855 | If a reply does not closely |
| 1856 | follow the |
| 1857 | corresponding request, it might not be parsable. |
| 1858 | |
| 1859 | .HD |
| 1860 | KIP AppleTalk (DDP in UDP) |
| 1861 | .LP |
| 1862 | AppleTalk DDP packets encapsulated in UDP datagrams are de-encapsulated |
| 1863 | and dumped as DDP packets (i.e., all the UDP header information is |
| 1864 | discarded). |
| 1865 | The file |
| 1866 | .I /etc/atalk.names |
| 1867 | is used to translate AppleTalk net and node numbers to names. |
| 1868 | Lines in this file have the form |
| 1869 | .RS |
| 1870 | .nf |
| 1871 | .sp .5 |
| 1872 | \fInumber name\fP |
| 1873 | |
| 1874 | \f(CW1.254 ether |
| 1875 | 16.1 icsd-net |
| 1876 | 1.254.110 ace\fR |
| 1877 | .sp .5 |
| 1878 | .fi |
| 1879 | .RE |
| 1880 | The first two lines give the names of AppleTalk networks. |
| 1881 | The third |
| 1882 | line gives the name of a particular host (a host is distinguished |
| 1883 | from a net by the 3rd octet in the number \- |
| 1884 | a net number \fImust\fP have two octets and a host number \fImust\fP |
| 1885 | have three octets.) The number and name should be separated by |
| 1886 | whitespace (blanks or tabs). |
| 1887 | The |
| 1888 | .I /etc/atalk.names |
| 1889 | file may contain blank lines or comment lines (lines starting with |
| 1890 | a `#'). |
| 1891 | .LP |
| 1892 | AppleTalk addresses are printed in the form |
| 1893 | .RS |
| 1894 | .nf |
| 1895 | .sp .5 |
| 1896 | \fInet.host.port\fP |
| 1897 | |
| 1898 | \f(CW144.1.209.2 > icsd-net.112.220 |
| 1899 | office.2 > icsd-net.112.220 |
| 1900 | jssmag.149.235 > icsd-net.2\fR |
| 1901 | .sp .5 |
| 1902 | .fi |
| 1903 | .RE |
| 1904 | (If the |
| 1905 | .I /etc/atalk.names |
| 1906 | doesn't exist or doesn't contain an entry for some AppleTalk |
| 1907 | host/net number, addresses are printed in numeric form.) |
| 1908 | In the first example, NBP (DDP port 2) on net 144.1 node 209 |
| 1909 | is sending to whatever is listening on port 220 of net icsd node 112. |
| 1910 | The second line is the same except the full name of the source node |
| 1911 | is known (`office'). |
| 1912 | The third line is a send from port 235 on |
| 1913 | net jssmag node 149 to broadcast on the icsd-net NBP port (note that |
| 1914 | the broadcast address (255) is indicated by a net name with no host |
| 1915 | number \- for this reason it's a good idea to keep node names and |
| 1916 | net names distinct in /etc/atalk.names). |
| 1917 | .LP |
| 1918 | NBP (name binding protocol) and ATP (AppleTalk transaction protocol) |
| 1919 | packets have their contents interpreted. |
| 1920 | Other protocols just dump |
| 1921 | the protocol name (or number if no name is registered for the |
| 1922 | protocol) and packet size. |
| 1923 | |
| 1924 | \fBNBP packets\fP are formatted like the following examples: |
| 1925 | .RS |
| 1926 | .nf |
| 1927 | .sp .5 |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1928 | \f(CWicsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*" |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1929 | jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250 |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1930 | techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186\fR |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1931 | .sp .5 |
| 1932 | .fi |
| 1933 | .RE |
| 1934 | The first line is a name lookup request for laserwriters sent by net icsd host |
| 1935 | 112 and broadcast on net jssmag. |
| 1936 | The nbp id for the lookup is 190. |
| 1937 | The second line shows a reply for this request (note that it has the |
| 1938 | same id) from host jssmag.209 saying that it has a laserwriter |
| 1939 | resource named "RM1140" registered on port 250. |
| 1940 | The third line is |
| 1941 | another reply to the same request saying host techpit has laserwriter |
| 1942 | "techpit" registered on port 186. |
| 1943 | |
| 1944 | \fBATP packet\fP formatting is demonstrated by the following example: |
| 1945 | .RS |
| 1946 | .nf |
| 1947 | .sp .5 |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1948 | \f(CWjssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001 |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1949 | helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000 |
| 1950 | helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000 |
| 1951 | helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000 |
| 1952 | helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 |
| 1953 | helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000 |
| 1954 | helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 |
| 1955 | helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000 |
| 1956 | helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000 |
| 1957 | jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001 |
| 1958 | helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000 |
| 1959 | helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000 |
| 1960 | jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001 |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1961 | jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002\fR |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1962 | .sp .5 |
| 1963 | .fi |
| 1964 | .RE |
| 1965 | Jssmag.209 initiates transaction id 12266 with host helios by requesting |
| 1966 | up to 8 packets (the `<0-7>'). |
| 1967 | The hex number at the end of the line |
| 1968 | is the value of the `userdata' field in the request. |
| 1969 | .LP |
| 1970 | Helios responds with 8 512-byte packets. |
| 1971 | The `:digit' following the |
| 1972 | transaction id gives the packet sequence number in the transaction |
| 1973 | and the number in parens is the amount of data in the packet, |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1974 | excluding the ATP header. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1975 | The `*' on packet 7 indicates that the |
| 1976 | EOM bit was set. |
| 1977 | .LP |
| 1978 | Jssmag.209 then requests that packets 3 & 5 be retransmitted. |
| 1979 | Helios |
| 1980 | resends them then jssmag.209 releases the transaction. |
| 1981 | Finally, |
| 1982 | jssmag.209 initiates the next request. |
| 1983 | The `*' on the request |
| 1984 | indicates that XO (`exactly once') was \fInot\fP set. |
| 1985 | |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1986 | .SH "SEE ALSO" |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1987 | .BR stty (1), |
| 1988 | .BR pcap (3PCAP), |
| 1989 | .BR bpf (4), |
| 1990 | .BR nit (4P), |
| 1991 | .BR \%pcap-savefile (@MAN_FILE_FORMATS@), |
| 1992 | .BR \%pcap-filter (@MAN_MISC_INFO@), |
| 1993 | .BR \%pcap-tstamp (@MAN_MISC_INFO@) |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1994 | .LP |
| 1995 | .RS |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 1996 | .na |
| 1997 | .I https://www.iana.org/assignments/media-types/application/vnd.tcpdump.pcap |
| 1998 | .ad |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 1999 | .RE |
| 2000 | .LP |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 2001 | .SH AUTHORS |
| 2002 | The original authors are: |
| 2003 | .LP |
| 2004 | Van Jacobson, |
| 2005 | Craig Leres and |
| 2006 | Steven McCanne, all of the |
| 2007 | Lawrence Berkeley National Laboratory, University of California, Berkeley, CA. |
| 2008 | .LP |
| 2009 | It is currently being maintained by tcpdump.org. |
| 2010 | .LP |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 2011 | The current version is available via HTTPS: |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 2012 | .LP |
| 2013 | .RS |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 2014 | .I https://www.tcpdump.org/ |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 2015 | .RE |
| 2016 | .LP |
| 2017 | The original distribution is available via anonymous ftp: |
| 2018 | .LP |
| 2019 | .RS |
JP Abgrall | 53f17a9 | 2014-02-12 14:02:41 -0800 | [diff] [blame] | 2020 | .I ftp://ftp.ee.lbl.gov/old/tcpdump.tar.Z |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 2021 | .RE |
| 2022 | .LP |
| 2023 | IPv6/IPsec support is added by WIDE/KAME project. |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 2024 | This program uses OpenSSL/LibreSSL, under specific configurations. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 2025 | .SH BUGS |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 2026 | To report a security issue please send an e-mail to \%security@tcpdump.org. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 2027 | .LP |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 2028 | To report bugs and other problems, contribute patches, request a |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 2029 | feature, provide generic feedback etc. please see the file |
Elliott Hughes | 9a98642 | 2017-12-19 14:49:10 -0800 | [diff] [blame] | 2030 | .I CONTRIBUTING |
| 2031 | in the tcpdump source tree root. |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 2032 | .LP |
| 2033 | NIT doesn't let you watch your own outbound traffic, BPF will. |
| 2034 | We recommend that you use the latter. |
| 2035 | .LP |
| 2036 | On Linux systems with 2.0[.x] kernels: |
| 2037 | .IP |
| 2038 | packets on the loopback device will be seen twice; |
| 2039 | .IP |
| 2040 | packet filtering cannot be done in the kernel, so that all packets must |
| 2041 | be copied from the kernel in order to be filtered in user mode; |
| 2042 | .IP |
| 2043 | all of a packet, not just the part that's within the snapshot length, |
| 2044 | will be copied from the kernel (the 2.0[.x] packet capture mechanism, if |
Elliott Hughes | 820eced | 2021-08-20 18:00:50 -0700 | [diff] [blame] | 2045 | asked to copy only part of a packet to userspace, will not report the |
The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 2046 | true length of the packet; this would cause most IP packets to get an |
| 2047 | error from |
| 2048 | .BR tcpdump ); |
| 2049 | .IP |
| 2050 | capturing on some PPP devices won't work correctly. |
| 2051 | .LP |
| 2052 | We recommend that you upgrade to a 2.2 or later kernel. |
| 2053 | .LP |
| 2054 | Some attempt should be made to reassemble IP fragments or, at least |
| 2055 | to compute the right length for the higher level protocol. |
| 2056 | .LP |
| 2057 | Name server inverse queries are not dumped correctly: the (empty) |
| 2058 | question section is printed rather than real query in the answer |
| 2059 | section. |
| 2060 | Some believe that inverse queries are themselves a bug and |
| 2061 | prefer to fix the program generating them rather than \fItcpdump\fP. |
| 2062 | .LP |
| 2063 | A packet trace that crosses a daylight savings time change will give |
| 2064 | skewed time stamps (the time change is ignored). |
| 2065 | .LP |
| 2066 | Filter expressions on fields other than those in Token Ring headers will |
| 2067 | not correctly handle source-routed Token Ring packets. |
| 2068 | .LP |
| 2069 | Filter expressions on fields other than those in 802.11 headers will not |
| 2070 | correctly handle 802.11 data packets with both To DS and From DS set. |
| 2071 | .LP |
| 2072 | .BR "ip6 proto" |
| 2073 | should chase header chain, but at this moment it does not. |
| 2074 | .BR "ip6 protochain" |
| 2075 | is supplied for this behavior. |
| 2076 | .LP |
| 2077 | Arithmetic expression against transport layer headers, like \fBtcp[0]\fP, |
| 2078 | does not work against IPv6 packets. |
| 2079 | It only looks at IPv4 packets. |