51edffae1d090f01ca0acef2beed1c34265a87b5
[obnox/wireshark/wip.git] / docbook / edg_src / EDG_chapter_works.xml
1 <!-- EDG Chapter Works -->
2 <!-- $Id$ -->
3
4 <chapter id="ChapterWorks">
5   <title>How Ethereal Works</title>
6   
7   <section id="ChWorksIntro">
8         <title>Introduction</title>
9         <para>
10         This chapter will give you a short overview, how Wireshark is working.
11         </para>
12   </section>
13
14   <section id="ChWorksOverview">
15         <title>Overview</title>
16         <para>
17         The following will give you a simplified overview of Ethereals function blocks:
18         <figure id="ChWorksFigOverview">
19           <title>
20             <application>Ethereal</application> function blocks.
21           </title>
22           <graphic entityref="EtherealFunctionBlocks" format="PNG"/>
23         </figure>
24         </para>
25         <para>
26         The function blocks in more detail:
27         <variablelist>
28           <varlistentry><term><command>GTK 1/2</command></term>
29             <listitem>
30               <para>
31                   Handling of all user input/output (all windows, dialogs and such). 
32                   Source code can be found in the <filename>gtk</filename> directory.
33               </para>
34             </listitem>
35           </varlistentry>
36           <varlistentry><term><command>Core</command></term>
37             <listitem>
38               <para>
39                   Main "glue code" that holds the other blocks together, source 
40                   code can be found in the root directory.
41               </para>
42             </listitem>
43           </varlistentry>
44           <varlistentry><term><command>Epan</command></term>
45             <listitem>
46               <para>
47                   Ethereal Package ANalyzing (XXX - is this correct?) the packet 
48                   analyzing engine, source code can be found in the 
49                   <filename>epan</filename> directory.
50               </para>
51           <itemizedlist>
52             <listitem>
53               <para>
54                   Protocol-Tree - Keep data of the capture file protocol information.
55               </para>
56             </listitem>
57             <listitem>
58               <para>
59                   Dissectors - The various protocol dissectors in 
60                   <filename>epan/dissectors</filename>.
61               </para>
62             </listitem>
63             <listitem>
64               <para>
65                   Plugins - Some of the protocol dissectors are implemented as plugins, source 
66                   code at <filename>plugins</filename>.
67               </para>
68             </listitem>
69             <listitem>
70               <para>
71                   Display-Filters - the display filter engine at 
72                   <filename>epan/dfilter</filename>.
73               </para>
74             </listitem>
75           </itemizedlist>
76             </listitem>
77           </varlistentry>
78           <varlistentry><term><command>Capture</command></term>
79             <listitem>
80               <para>
81                   Capture engine.
82               </para>
83             </listitem>
84           </varlistentry>
85           <varlistentry><term><command>Wiretap</command></term>
86             <listitem>
87               <para>
88                   The wiretap library is used to read/write capture files in libpcap 
89                   and a lot of other file formats, the source code is in the
90                   <filename>wiretap</filename> directory.
91               </para>
92             </listitem>
93           </varlistentry>
94           <varlistentry>
95           <term><command>Win-/libpcap (not part of the Wireshark package)</command></term>
96             <listitem>
97               <para>
98                   The platform dependant packet capture library, including the capture 
99                   filter engine. That's the reason why we still have different display 
100                   and capture filter syntax, as two different filtering engines used.
101               </para>
102             </listitem>
103           </varlistentry>
104         </variablelist>
105         </para>
106   </section>
107
108         <section id="ChWorksCapturePackets">
109         <title>Capturing packets</title>
110         <para>
111         Capturing will take packets from a network adapter, and save them to a file 
112         on your harddisk. 
113         </para>
114         <para>
115         To hide all the lowlevel machine dependant details from 
116         Ethereal, the libpcap/WinPcap (see <xref linkend="ChLibsPcap"/>) library 
117         is used. This library provides a general purpose interface to capture 
118         packets from a lot of different network interface types (Ethernet, 
119         Token Ring, ...). 
120         </para>
121         </section>
122
123         <section id="ChWorksCaptureFiles">
124         <title>Capture Files</title>
125         <para>
126         Ethereal can read and write capture files in it's natural file format, the 
127         libpcap format, which is used by many other network capturing tools, 
128         e.g. tcpdump. In addition to this, as one of it's strengths,
129         Ethereal can read/write files in many different file formats of other 
130         network capturing tools. The wiretap library, developed together with 
131         Ethereal, provides a general purpose interface to read/write all the file 
132         formats. If you need to add another capture file format, this is the place 
133         to start.       
134         </para>
135         </section>
136
137         <section id="ChWorksDissectPackets">
138         <title>Dissect packets</title>
139         <para>
140         While Wireshark is loading packets from a file, each packet is dissected. 
141         Ethereal tries to detect what kind of packet it is and getting as much 
142         information from it as possible. In this run, only the information showed 
143         in the packet list pane is needed though. 
144         </para>
145         <para>
146         As the user selects a specific packet in the packet list pane, this packet
147         will be dissected again. This time, Ethereal tries to 
148         get every single piece of information and put it into 
149         the packet details pane then.
150         </para>
151         </section>
152
153 </chapter>
154 <!-- End of EDG Chapter Works -->