Mention Stefan Raab as author of Mobile IP dissector.
[obnox/wireshark/wip.git] / doc / ethereal.pod.template
1
2 =head1 NAME
3
4 Ethereal - Interactively browse network traffic
5
6 =head1 SYNOPSYS
7
8 B<ethereal>
9 S<[ B<-B> byte view height ]>
10 S<[ B<-b> bold font ]>
11 S<[ B<-c> count ]>
12 S<[ B<-D> ]>
13 S<[ B<-f> filter expression ]>
14 S<[ B<-h> ]>
15 S<[ B<-i> interface ]> 
16 S<[ B<-k> ]>
17 S<[ B<-m> font ]>
18 S<[ B<-n> ]>
19 S<[ B<-P> packet list height ]>
20 S<[ B<-Q> ]>
21 S<[ B<-r> infile ]>
22 S<[ B<-R> filter expression ]>
23 S<[ B<-S> ]>
24 S<[ B<-s> snaplen ]>
25 S<[ B<-T> tree view height ]>
26 S<[ B<-t> time stamp format ]>
27 S<[ B<-v> ]>
28 S<[ B<-w> savefile]>
29
30 =head1 DESCRIPTION
31
32 B<Ethereal> is a GUI network protocol analyzer.  It lets you
33 interactively browse packet data from a live network or from a
34 previously saved capture file.  B<Ethereal> knows how to read B<libpcap>
35 capture files, including those of B<tcpdump>.  In addition, B<Ethereal>
36 can read capture files from B<snoop> (including B<Shomiti>) and
37 B<atmsnoop>, B<LanAlyzer>, B<Sniffer> (compressed or uncompressed),
38 Microsoft B<Network Monitor>, AIX's B<iptrace>, B<NetXray>, B<Sniffer
39 Pro>, B<RADCOM>'s WAN/LAN analyzer, B<Lucent/Ascend> router debug
40 output, HP-UX's B<nettl>, the dump output from B<Toshiba's> ISDN
41 routers, and B<i4btrace> from the ISDN4BSD project.  There is no need to
42 tell B<Ethereal> what type of file you are reading; it will determine
43 the file type by itself.  B<Ethereal> is also capable of reading any of
44 these file formats if they are compressed using gzip.  B<Ethereal>
45 recognizes this directly from the file; the '.gz' extension is not
46 required for this purpose.
47
48 Like other protocol analyzers, B<Ethereal>'s main window shows 3 views
49 of a packet.  It shows a summary line, briefly describing what the
50 packet is.  A protocol tree is shown, allowing you to drill down to
51 exact protocol or field that you interested in.  Finally, a hex dump
52 shows you exactly what the packet looks like when it goes over the wire.
53
54 In addition, B<Ethereal> has some features that make it unique.  It can
55 assemble all the packets in a TCP conversation and show you the ASCII
56 (or EBCDIC) data in that conversation.  Display filters in B<Ethereal>
57 are very powerful; more fields are filterable in B<Ethereal> than in other
58 protocol analyzers, and the syntax you can use to create your filters is
59 richer.  As B<Ethereal> progresses, expect more and more protocol fields to
60 be allowed in display filters.
61
62 Packet capturing is performed with the pcap library.  The capture filter
63 syntax follows the rules of the pcap library.  This syntax is different
64 from the display filter syntax.
65
66 Compressed file support uses (and therefore requires) the zlib library. 
67 If the zlib library is not present, B<Ethereal> will compile, but will
68 be unable to read compressed files.
69
70 =head1 OPTIONS
71
72 =over 4
73
74 =item -B
75
76 Sets the initial height of the byte view (bottom) pane.
77
78 =item -b
79
80 Sets the name of the bold font used for the data in the byte view
81 pane that corresponds to the field selected in the protocol tree pane.
82
83 =item -c
84
85 Sets the default number of packets to read when capturing live
86 data.
87
88 =item -D
89
90 Turns off treating the original IPv4 TOS field as the Differentiated
91 Services Field. The structure of the DS Field is defined in RFC 2474.
92
93 =item -f
94
95 Sets the capture filter expression.
96
97 =item -h
98
99 Prints the version and options and exits.
100
101 =item -i
102
103 Sets the name of the network interface to use for live packet capture. 
104 It should match one of the names listed in "B<netstat -i>" or
105 "B<ifconfig -a>".
106
107 =item -k
108
109 Starts the capture session immediately.  If the B<-i> flag was
110 specified, the capture uses the specified interface.  Otherwise,
111 B<Ethereal> searches the list of interfaces, choosing the first
112 non-loopback interface if there are any non-loopback interfaces, and
113 choosing the first loopback interface if there are no non-loopback
114 interfaces; if there are no interfaces, B<Ethereal> reports an error and
115 doesn't start the capture.
116
117 =item -m
118
119 Sets the name of the font used by B<Ethereal> for most text.
120
121 =item -n
122
123 Disables network object name resolution (such as hostname, TCP and UDP port
124 names).
125
126 =item -P
127
128 Sets the initial height of the packet list (top) pane.
129
130 =item -Q
131
132 Causes B<Ethereal> to exit after the end of capture session (useful in
133 batch mode with B<-c> option for instance); this option requires the
134 B<-i> and B<-w> parameters.
135
136 =item -r
137
138 Reads packet data from I<file>.
139
140 =item -R
141
142 When reading a capture file specified with the B<-r> flag, causes the
143 specified filter (which uses the syntax of display filters, rather than
144 that of capture filters) to be applied to all packets read from the
145 capture file; packets not matching the filter are discarded.
146
147 =item -S
148
149 Specifies that the live packet capture will be performed in a separate
150 process, and that the packet display will automatically be updated as
151 packets are seen.
152
153 =item -s
154
155 Sets the default snapshot length to use when capturing live data. 
156 No more than I<snaplen> bytes of each network packet will be read into
157 memory, or saved to disk.
158
159 =item -T
160
161 Sets the initial height of the tree view (middle) pane.
162
163 =item -t
164
165 Sets the format of the packet timestamp displayed in the packet list
166 window.  The format can be one of 'r' (relative), 'a' (absolute), or 'd'
167 (delta).  The relative time is the time elapsed between the first packet
168 and the current packet.  The absolute time is the actual date and time the
169 packet was captured.  The delta time is the time since the previous packet
170 was captured.  The default is relative.
171
172 =item -v
173
174 Prints the version and exits.
175
176 =item -w
177
178 Sets the default capture file name.
179
180 =back
181
182 =head1 INTERFACE
183
184 =head2 MENU ITEMS
185
186 =over 4
187
188 =item File:Open, File:Close, File:Reload
189
190 Open, close, or reload a capture file.  The I<File:Open> dialog box
191 allows a filter to be specified; when the capture file is read, the
192 filter is applied to all packets read from the file, and packets not
193 matching the filter are discarded.
194
195 =item File:Save, File:Save As
196
197 Save the current capture, or the packets currently displayed from that
198 capture, to a file.  A check box lets you select whether to save all
199 packets, or just those that have passed the current display filter, and
200 an option menu lets you select (from a list of file formats in which at
201 particular capture, or the packets currently displayed from that
202 capture, can be saved), a file format in which to save it.
203
204 =item File:Print
205
206 Prints, for all the packets in the current capture, either the summary
207 line for the packet or the protocol tree view of the packet; when
208 printing the protocol tree view, the hex dump of the packet can be
209 printed as well.  Printing options can be set with the
210 I<Edit:Preferences> menu item, or in the dialog box popped up by this
211 item.
212
213 =item File:Print Packet
214
215 Print a fully-expanded protocol tree view of the currently-selected
216 packet.  Printing options can be set with the I<Edit:Preferences> menu
217 item.
218
219 =item File:Quit
220
221 Exits the application.
222
223 =item Edit:Find Frame
224
225 Allows you to search forward or backward, starting with the currently
226 selected packet (or the most recently selected packet, if no packet is
227 selected), for a packet matching a given display filter.
228
229 =item Edit:Go To Frame
230
231 Allows you to go to a particular numbered packet.
232
233 =item Edit:Preferences
234
235 Sets the packet printing, column display, TCP stream coloring, and GUI
236 options (see L<"Preferences"> below).
237
238 =item Edit:Filters
239
240 Edits the saved list of filters, allowing filters to be added, changed,
241 or deleted, and lets a selected filter be applied to the current
242 capture, if any.
243
244 =item Capture:Start
245
246 Initiates a live packet capture (see L<"Capture Preferences"> below).  A
247 temporary file will be created to hold the capture.  The location of the
248 file can be chosen by setting your TMPDIR environment variable before
249 starting B<Ethereal>.  Otherwise, the default TMPDIR location is
250 system-dependent, but is likely either F</var/tmp> or F</tmp>.
251
252 =item Display:Options
253
254 Allows you to sets the format of the packet timestamp displayed in the
255 packet list window to relative, absolute, or delta, to enable or disable
256 the automatic scrolling of the packet list while a live capture is in
257 progress, to enable or disable translation of addresses to names in the
258 display, or to enable or disable interpretation of the IPv4 TOS field as
259 the Differentiated Services field.
260
261 =item Display:Match Selected
262
263 Creates and applies a display filter based on the data that is currently
264 highlighted in the protocol tree.  If that data is a field that can be
265 tested in a display filter expression, the display filter will test that
266 field; otherwise, the display filter will be based on absolute offset
267 within the packet, and so could be unreliable if the packet contains
268 protocols with variable-length headers, such as a source-routed
269 token-ring packet.
270
271 =item Display:Colorize Display
272
273 Allows you to change the foreground and background colors of the packet
274 information in the list of packets, based upon display filters.  The list
275 of display filters is applied to each packet sequentially. After the first
276 display filter matches a packet, any additional display filters in the list
277 are ignored. Therefore, if you are filtering on the existence of protocols,
278 you should list the higher-level protocols first, and the lower-level
279 protocols last.
280
281 =item Display:Collapse All
282
283 Collapses the protocol tree branches.
284
285 =item Display:Expand All
286
287 Expands all branches of the protocol tree.
288
289 =item Display:Expand All
290
291 Expands all branches of the protocol tree.
292
293 =item Display:Show Packet In New Window
294
295 Creates a new window containing a protocol tree view and a hex dump
296 window of the currently selected packet; this window will continue to
297 display that packet's protocol tree and data even if another packet is
298 selected.
299
300 =item Tools:Plugins
301
302 Allows you to use and configure dynamically loadable modules (see
303 L<"Plugins"> below).
304
305 =item Tools:Follow TCP Stream
306
307 If you have a TCP packet selected, it will display the contents of the
308 data stream for the TCP connection to which that packet belongs, as
309 text, in a separate window, and will leave the list of packets in a
310 filtered state, with only those packets that are part of that TCP
311 connection being displayed.  You can revert to your old view by pressing
312 ENTER in the display filter text box, thereby invoking your old display
313 filter (or resetting it back to no display filter).
314
315 The window in which the data stream is displayed lets you select whether
316 the data being displayed is to be treated as ASCII or EBCDIC text, and
317 lets you print the text, using the same print options that are used for
318 the I<File:Print Packet> menu item.
319
320 =back
321
322 =head2 WINDOWS
323
324 =over 4
325
326 =item Main Window
327
328 The main window is split into three panes.  You can resize each pane using
329 a "thumb" at the right end of each divider line.  Below the panes is a
330 strip that shows the file load progress, current filter, and informational
331 text.
332
333 =over 6
334
335 =item Top Pane
336
337 The top pane contains the list of network packets that you can scroll
338 through and select.  By default, the packet number, packet timestamp,
339 source and destination addresses, protocol, and description are
340 displayed for each packet; the I<Columns> page in the dialog box popped
341 up by I<Edit:Preferences> lets you change this (although, unfortunately,
342 you currently have to save the preferences, and exit and restart
343 Ethereal, for those changes to take effect).
344
345 If you click on the heading for a column, the display will be sorted by
346 that column; clicking on the heading again will reverse the sort order
347 for that column.
348
349 An effort is made to display information as high up the protocol stack
350 as possible, e.g. IP addresses are displayed for IP packets, but the
351 MAC layer address is displayed for unknown packet types.
352
353 The right mouse button can be used to pop up a menu of operations.
354
355 =item Middle Pane
356
357 The middle pane contains a I<protocol tree> for the currently-selected
358 packet.  The tree displays each field and its value in each protocol
359 header in the stack.  The right mouse button can be used to pop up a
360 menu of operations.
361
362 =item Bottom Pane
363
364 The lowest pane contains a hex dump of the actual packet data. 
365 Selecting a field in the I<protocol tree> highlights the corresponding
366 bytes in this section.
367
368 =item Current Filter
369
370 A display filter can be entered into the strip at the bottom. 
371 A filter for HTTP, HTTPS, and DNS traffic might look like this:
372
373   tcp.port == 80 || tcp.port == 443 || tcp.port == 53
374
375 Selecting the I<Filter:> button lets you choose from a list of named
376 filters that you can optionally save.  Pressing the Return or Enter
377 keys will cause the filter to be applied to the current list of packets.
378 Selecting the I<Reset> button clears the display filter so that all
379 packets are displayed.
380
381 =back
382
383 =item Preferences
384
385 The I<Preferences> dialog lets you control various personal preferences
386 for the behavior of B<Ethereal>.
387
388 =over 6
389
390 =item Printing Preferences
391
392 The radio buttons at the top of the I<Printing> page allow you choose
393 between printing packets with the I<File:Print Packet> menu item as text
394 or PostScript, and sending the output directly to a command or saving it
395 to a file.  The I<Command:> text entry box is the command to send files
396 to (usually B<lpr>), and the I<File:> entry box lets you enter the name
397 of the file you wish to save to.  Additionally, you can select the
398 I<File:> button to browse the file system for a particular save file.
399
400 =item Column Preferences
401
402 The I<Columns> page lets you specify the number, title, and format
403 of each column in the packet list.
404
405 The I<Column title> entry is used to specify the title of the column
406 displayed at the top of the packet list.  The type of data that the column
407 displays can be specified using the I<Column format> option menu.  The row
408 of buttons on the left perform the following actions:
409
410 =over 6
411
412 =item New
413
414 Adds a new column to the list.
415
416 =item Change
417
418 Modifies the currently selected list item.
419
420 =item Delete
421
422 Deletes the currently selected list item.
423
424 =item Up / Down
425
426 Moves the selected list item up or down one position.
427
428 =item OK
429
430 Currently has no effect.
431
432 =item Save
433
434 Saves the current column format as the default.
435
436 =item Cancel
437
438 Closes the dialog without making any changes.
439
440 =back
441
442 =item TCP Stream Preferences
443
444 The I<TCP Streams> page can be used to change the color of the text
445 displayed in the TCP stream window.  To change a color, simply select
446 an attribute from the "Set:" menu and use the color selector to get the
447 desired color.  The new text colors are displayed in a sample window.
448
449 =item GUI Preferences
450
451 The I<GUI> page is used to modify small aspects of the GUI to your own
452 personal taste. The vertical scrollbars in the three panes can be
453 set to be either on the left or the right. The selection bar in the
454 packet list and protocol tree can have either a "browse" or "select"
455 behavior. If the selection bar has a "browse" behavior, the arrow keys
456 will move an outline of the selection bar, allowing you to browse
457 the rest of the list or tree without changing the selection
458 until you press the space bar. If the selection bar has a "select"
459 behavior, the arrow keys will move the selection bar and change
460 the selection to the new item in the packet list or protocol tree.
461
462 =back
463
464 =item Filters
465
466 The I<Filters> dialog lets you create and modify filters, and set the
467 default filter to use when capturing data or opening a capture file.
468
469 The I<Filter name> entry specifies a descriptive name for a filter, e.g.
470 B<Web and DNS traffic>.  The I<Filter string> entry is the text that
471 actually describes the filtering action to take, as described above.The
472 dialog buttons perform the following actions:
473
474 =over 6
475
476 =item New
477
478 If there is text in the two entry boxes, it creates a new associated list
479 item.
480
481 =item Change
482
483 Modifies the currently selected list item to match what's in the entry
484 boxes.
485
486 =item Copy
487
488 Makes a copy of the currently selected list item.
489
490 =item Delete
491
492 Deletes the currently selected list item.
493
494 =item Apply
495
496 Sets the currently selected list item as the active filter, and applies
497 it to the current capture, if any.
498 (The currently selected list item must be a display filter, not a
499 capture filter.)  If nothing is selected, turns filtering off.
500
501 =item OK
502
503 Sets the currently selected list item as the active filter.  If nothing
504 is selected, turns filtering off.
505
506 =item Save
507
508 Saves the current filter list in F<$HOME/.ethereal/filters>.
509
510 =item Cancel
511
512 Closes the dialog without making any changes.
513
514 =back
515
516 =item Capture Preferences
517
518 The I<Capture Preferences> dialog lets you specify various parameters for
519 capturing live packet data.
520
521 The I<Interface:> combo box lets you specify the interface from which to
522 capture packet data.  The I<Count:> entry specifies the number of
523 packets to capture.  Entering 0 will capture packets indefinitely.  The
524 I<Filter:> entry lets you specify the capture filter using a
525 tcpdump-style filter string as described above.  The I<File:> entry
526 specifies the file to save to, as in the I<Printer Options> dialog
527 above.  You can specify the maximum number of bytes to capture per
528 packet with the I<Capture length> entry, can specify that the display
529 should be updated as packets are captured with the I<Update list of
530 packets in real time> check box, can specify whether in such a capture
531 the packet list pane should scroll to show the most recently captured
532 packets with the I<Automatic scrolling in live capture> check box, and
533 can specify whether addresses should be translated to names in the
534 display with the I<Enable name resolution> check box.
535
536 =item Display Options
537
538 The I<Display Options> dialog lets you specify the format of the time stamp
539 in the packet list.  You can select "Time of day" for absolute time stamps,
540 "Seconds since beginning of capture" for relative time stamps, or
541 "Seconds since previous frame" for delta time stamps.  You can also
542 specify whether, when the display is updated as packets are captured,
543 the list should automatically scroll to show the most recently captured
544 packets or not, whether addresses should be translated to names in the
545 display, and whether IPv4 TOS field should be treated as the
546 Differentiated Services field.
547
548 =item Plugins
549
550 The I<Plugins> dialog lets you view and configure the plugins available
551 on your system.
552
553 The I<Plugins List> shows the name, description, version and state
554 (enabled or not) of each plugin found on your system. The plugins are
555 searched in the following directories: F</usr/share/ethereal/plugins>,
556 F</usr/local/share/ethereal/plugins> and F<~/.ethereal/plugins>
557
558 A plugin must be activated using the I<Enable> button in order to use it
559 to dissect packets. It can also be deactivated with the I<Disable> button.
560
561 The I<Filter> button shows the filter used to select packets which should
562 be dissected by a plugin (see L<"DISPLAY FILTER SYNTAX"> below). This
563 filter can be modified.
564
565 =head1 CAPTURE FILTER SYNTAX
566
567 See manual page of tcpdump(8).
568
569 =head1 DISPLAY FILTER SYNTAX
570
571 Display filters help you remove the noise from a packet trace and let
572 you see only the packets that interest you.  If a packet meets the
573 requirements expressed in your display filter, then it is displayed in
574 the list of packets.  Display filters let you compare the fields within
575 a protocol against a specific value, compare fields against fields, and
576 to check the existence of specified fields or protocols.
577
578 The simplest display filter allows you to check for the existence of a
579 protocol or field.  If you want to see all packets which contain the IPX
580 protocol, the filter would be "ipx".  (Without the quotation marks) To
581 see all packets that contain a Token-Ring RIF field, use "tr.rif".
582
583 Fields can also be compared against values.  The comparison operators
584 can be expressed either through C-like symbols, or through English-like
585 abbreviations:
586
587     eq, ==    Equal
588     ne, !=    Not equal
589     gt, >     Greater than
590     lt, <     Less Than
591     ge, >=    Greater than or Equal to
592     le, <=    Less than or Equal to
593
594 Furthermore, each protocol field is typed. The types are:
595
596     Unsigned integer (either 8-bit, 16-bit, 24-bit, or 32-bit)
597     Signed integer (either 8-bit, 16-bit, 24-bit, or 32-bit)
598     Boolean
599     Ethernet address (6 bytes)
600     Byte string (n-number of bytes)
601     IPv4 address
602     IPv6 address
603     IPX network number
604     String (text)
605     Double-precision floating point number
606
607 An integer may be expressed in decimal, octal, or hexadecimal notation. 
608 The following three display filters are equivalent:
609
610     frame.pkt_len > 10
611     frame.pkt_len > 012
612     frame.pkt_len > 0xa
613
614 Boolean values are either true or false.  However, a boolean field is
615 present in a protocol decode only if its value is true.  If the value is
616 false, the field is not presence.  You can therefore check the truth
617 value of a boolean field by simply checking for its existence, that is,
618 by naming the field.  For example, a token-ring packet's source route
619 field is boolean.  To find any source-routed packets, the display filter
620 is simply:
621
622     tr.sr
623
624 Non source-routed packets can be found with the negation of that filter:
625
626     ! tr.sr
627
628 Ethernet addresses, as well as a string of bytes, are represented in hex
629 digits.  The hex digits may be separated by colons, periods, or hyphens:
630
631     fddi.dst eq ff:ff:ff:ff:ff:ff
632     ipx.srcnode == 0.0.0.0.0.1
633     eth.src == aa-aa-aa-aa-aa-aa
634
635 If a string of bytes contains only one byte, then it is represented as
636 an unsigned integer.  That is, if you are testing for hex value 'ff' in
637 a one-byte byte-string, you must compare it agains '0xff' and not 'ff'. 
638
639 IPv4 addresses can be represented in either dotted decimal notation, or
640 by using the hostname:
641
642     ip.dst eq www.mit.edu
643     ip.src == 192.168.1.1
644
645 IPv4 address can be compared with the same logical relations as numbers:
646 eq, ne, gt, ge, lt, and le.  The IPv4 address is stored in host order,
647 so you do not have to worry about how the endianness of an IPv4 address
648 when using it in a display filter.
649
650 Classless InterDomain Routing (CIDR) notation can be used to test if an
651 IPv4 address is in a certain subnet.  For example, this display filter
652 will find all packets in the 129.111 Class-B network:
653
654     ip.addr == 129.111.0.0/16
655
656 Remember, the number after the slash represents the number of bits used
657 to represent the network.  CIDR notation can also be used with
658 hostnames, in this example of finding IP addresses on the same Class C
659 network as 'sneezy':
660
661     ip.addr eq sneezy/24
662
663 The CIDR notation can only be used on IP addresses or hostnames, not in
664 variable names.  So, a display filter like "ip.src/24 == ip.dst/24" is
665 not valid.  (yet)
666
667 IPX networks are represented by unsigned 32-bit integers.  Most likely
668 you will be using hexadecimal when testing for IPX network values:
669
670     ipx.srcnet == 0xc0a82c00
671
672 A substring operator also exists.  You can check the substring
673 (byte-string) of any protocol or field.  For example, you can filter on
674 the vendor portion of an ethernet address (the first three bytes) like
675 this:
676
677     eth.src[0:3] == 00:00:83
678
679 Or more simply, since the number of bytes is inherent in the byte-string
680 you provide, you can provide just the offset.  The previous example can
681 be stated like this:
682
683     eth.src[0] == 00:00:83
684
685 In fact, the only time you need to explicitly provide a length is when
686 you don't provide a byte-string, and are comparing fields against
687 fields:
688
689     fddi.src[0:3] == fddi.dst[0:3]
690
691 If the length of your byte-string is only one byte, then it must be
692 represented in the same way as an unsigned 8-bit integer:
693
694     llc[3] == 0xaa
695
696 You can use the substring operator on a protocol name, too.  And
697 remember, the "frame" protocol encompasses the entire packet, allowing
698 you to look at the nth byte of a packet regardless of its frame type
699 (Ethernet, token-ring, etc.).
700
701     token[0:5] ne 0.0.0.1.1
702     ipx[0:2] == ff:ff
703     llc[3:1] eq 0xaa
704
705 Offsets for byte-strings can also be negative, in which case the
706 negative number indicates the number of bytes from the end of the field
707 or protocol that you are testing.  Here's how to check the last 4 bytes
708 of a frame:
709
710     frame[-4] == 0.1.2.3
711
712 or
713
714     frame[-4:4] == 0.1.2.3
715
716 All the above tests can be combined together with logical expressions. 
717 These too are expressable in C-like syntax or with English-like
718 abbreviations:
719
720     and, &&   Logical AND
721     or, ||    Logical OR
722     xor, ^^   Logical XOR
723     not, !    Logical NOT
724
725 Expressions can be grouped by parentheses as well.  The following are
726 all valid display filter expression:
727
728     tcp.port == 80 and ip.src == 192.168.2.1
729     not llc
730     (ipx.srcnet == 0xbad && ipx.srnode == 0.0.0.0.0.1) || ip
731     tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29
732
733 A special caveat must be given regarding fields that occur more than
734 once per packet.  "ip.addr" occurs twice per IP packet, once for the
735 source address, and once for the destination address.  Likewise,
736 tr.rif.ring fields can occur more than once per packet.  The following
737 two expressions are not equivalent:
738
739         ip.addr ne 192.168.4.1
740     not ip.addr eq 192.168.4.1
741
742 The first filter says "show me all packets where an ip.addr exists that
743 does not equal 192.168.4.1".  That is, as long as one ip.addr in the
744 packet does not equal 192.168.44.1, the packet passes the display
745 filter.  The second filter "don't show me any packets that have at least
746 one ip.addr field equal to 192.168.4.1".  If one ip.addr is 192.168.4.1,
747 the packet does not pass.  If B<neither> ip.addr fields is 192.168.4.1,
748 then the packet passes.
749
750 It is easy to think of the 'ne' and 'eq' operators as having an implict
751 "exists" modifier when dealing with multiply-recurring fields.  "ip.addr
752 ne 192.168.4.1" can be thought of as "there exists an ip.addr that does
753 not equal 192.168.4.1".
754
755 Be careful with multiply-recurring fields; they can be confusing.
756
757 The following is a table of protocol and protocol fields that are
758 filterable in B<Ethereal>.  The abbreviation of the protocol or field is
759 given.  This abbreviation is what you use in the display filter.  The
760 type of the field is also given.
761
762 =insert_dfilter_table
763
764 =head1 FILES
765
766 F</etc/ethers> is consulted to correlate 6-byte hardware addresses to
767 names.  If an address is not found in F</etc/ethers>, the
768 F<$HOME/.ethereal/ethers> file is consulted next.  Each line contains
769 one hardware address and name, separated by whitespace.  The digits of
770 the hardware address are separated by either a colon (:), a dash (-), or
771 a period (.).  The following three lines are valid lines of an ethers
772 file:
773
774   ff:ff:ff:ff:ff:ff          Broadcast
775   c0-00-ff-ff-ff-ff          TR_broadcast
776   00.00.00.00.00.00          Zero_broadcast
777
778 F</usr/local/etc/manuf> matches the 3-byte vendor portion of a 6-byte
779 hardware address with the manufacturer's name.  The format of the file
780 is the same as the F</etc/ethers> file, except that each address is
781 three bytes instead of six.
782
783 F</etc/ipxnets> and F<$HOME/.ethereal/ipxnets> correlate 4-byte IPX
784 network numbers to names.  The format is the same as the F</etc/ethers>
785 file, except that each address if four bytes instead of six. 
786 Additionally, the address can be represented a single hexadecimal
787 number, as is more common in the IPX world, rather than four hex octets. 
788 For example, these four lines are valid lines of an ipxnets file.
789
790   C0.A8.2C.00              HR
791   c0-a8-1c-00              CEO
792   00:00:BE:EF              IT_Server1
793   110f                     FileServer3
794
795 =head1 SEE ALSO
796
797 L<tcpdump(8)>, L<pcap(3)>
798
799 =head1 NOTES
800
801 The latest version of B<Ethereal> can be found at
802 B<http://ethereal.zing.org>.
803
804 =head1 AUTHORS
805
806   Original Author
807   -------- ------
808   Gerald Combs  <gerald@zing.org>
809
810
811   Contributors
812   ------------
813   Gilbert Ramirez          <gram@xiexie.org>
814   Hannes R. Boehm          <hannes@boehm.org>
815   Mike Hall                <mlh@io.com>
816   Bobo Rajec               <bobo@bsp-consulting.sk>
817   Laurent Deniel           <deniel@worldnet.fr>
818   Don Lafontaine           <lafont02@cn.ca>
819   Guy Harris               <guy@alum.mit.edu>
820   Simon Wilkinson          <sxw@dcs.ed.ac.uk>
821   Joerg Mayer              <jmayer@telemation.de>
822   Martin Maciaszek         <fastjack@i-s-o.net>
823   Didier Jorand            <Didier.Jorand@alcatel.fr>
824   Jun-ichiro itojun Hagino <itojun@iijlab.net>
825   Richard Sharpe           <sharpe@ns.aus.com>
826   John McDermott           <jjm@jkintl.com> 
827   Jeff Jahr                <jjahr@shastanets.com>
828   Brad Robel-Forrest       <bradr@watchguard.com>
829   Ashok Narayanan          <ashokn@cisco.com>
830   Aaron Hillegass          <aaron@classmax.com>
831   Jason Lango              <jal@netapp.com>
832   Johan Feyaerts           <Johan.Feyaerts@siemens.atea.be>
833   Olivier Abad             <abad@daba.dhis.net>
834   Thierry Andry            <Thierry.Andry@advalvas.be>
835   Jeff Foster              <jjfoste@woodward.com>
836   Peter Torvals            <petertv@xoommail.com>
837   Christophe Tronche       <ch.tronche@computer.org>
838   Nathan Neulinger         <nneul@umr.edu>
839   Tomislav Vujec           <tvujec@carnet.hr>
840   Kojak                    <kojak@bigwig.net>
841   Uwe Girlich              <Uwe.Girlich@philosys.de>
842   Warren Young             <tangent@mail.com>
843   Heikki Vatiainen         <hessu@cs.tut.fi>
844   Greg Hankins             <gregh@twoguys.org>
845   Jerry Talkington         <jerryt@netapp.com>
846   Dave Chapeskie           <dchapes@ddm.on.ca>
847   James Coe                <jammer@cin.net>
848   Bert Driehuis            <driehuis@playbeing.org>
849   Stuart Stanley           <stuarts@mxmail.net>
850   John Thomes              <john@ensemblecom.com>
851   Laurent Cazalet          <laurent.cazalet@mailclub.net>
852   Thomas Parvais           <thomas.parvais@advalvas.be>
853   Gerrit Gehnen            <G.Gehnen@atrie.de>
854   Craig Newell             <craign@cheque.uq.edu.au>
855   Ed Meaney                <emeaney@altiga.com>
856   Dietmar Petras           <DPetras@ELSA.de> 
857   Fred Reimer              <fwr@ga.prestige.net>
858   Florian Lohoff           <flo@rfc822.org>
859   Jochen Friedrich         <jochen+ethereal@scram.de>
860   Paul Welchinski          <paul.welchinski@telusplanet.net>
861   Doug Nazar               <nazard@dragoninc.on.ca>
862   Andreas Sikkema          <andreas.sikkema@philips.com>
863   Mark Muhlestein          <mmm@netapp.com>
864   Graham Bloice            <graham.bloice@trihedral.com>
865   Ralf Schneider           <ralf.schneider@alcatel.se>
866   Yaniv Kaul               <ykaul@checkpoint.com>
867   Paul Ionescu             <ipaul@romsys.ro>
868   Mark Burton              <markb@ordern.com>
869   Michael Tuexen           <Michael.Tuexen@icn.siemens.de>
870   Stefan Raab              <stefan.raab@nextel.com>
871
872 Alain Magloire <alainm@rcsm.ece.mcgill.ca> was kind enough to give his
873 permission to use his version of snprintf.c.
874
875 Dan Lasley <dlasley@promus.com> gave permission for his dumpit() hex-dump
876 routine to be used.