I second Wireshark (previously known as Ethereal). It works on Linux and Windows, and is (relatively) easy to use with a GUI.

There are a few weird things, like the capture filter syntax is a bit arcane, but generally it's straightforward.

You still need to know a bit about networking to make sense of its output though.

Note that on a lot of hardware, under Linux, you get "Incorrect checksum" from locally-generated packets. This is because Linux uses hardware checksums hence Ethereal can't see the true values and gets junk instead.