ANNOUNCEMENT: Live Wireshark University & Allegro Packets online APAC Wireshark Training Session
July 17th, 2024 | 10:00am-11:55am SGT (UTC+8) | Online

Ethereal-users: Re: [Ethereal-users] information

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxx>
Date: Wed, 6 Feb 2002 13:13:35 -0800 (PST)
> To be clearer, when Ethereal opens a capture file (i.e.
> v6.pcap), Ethereal loads all the data of the file in a structure, just
> before Ethereal prints the data on the screen.

No, it doesn't.

It builds an in-memory data structure that's a list of information about
each frame from the capture file - the members of the list are
"frame_data" structures, as defined in "epan/frame_data.h" - but it does
*NOT* read all of the packet data into memory.

Instead, on the first pass through the capture file, for each frame:

	the frame data is read into memory;

	a "frame_data" structure is allocated for the frame;

	the frame is passed to the link-layer dissector which passes it
	on, in turn, to other dissectors;

	*some* information about the frame is stored in the "frame_data"
	structure, including an offset in the file where the frame's
	data can be read.

All the frame data is read into the *same* buffer, rather than each
frame having a separate buffer.

When a frame is accessed on subsequent passes through the file (such as
when you're applying a display filter, or printing the file's contents),
or accessed when you click on a frame, Ethereal re-reads the frame's
data from the file into a buffer in memory.