I'm developing an application that uses raw sockets to send TCP
headers. According to the latest version of the Unix Network
Programming book raw sockets *never* receive TCP packets since the
kernel doesn't pass them on after its processed them (book says you
should use a PF_PACKET datalink layer type socket to receive them).

However , I've noticed on linux that a raw socket DOES receive TCP
packets. Is this normal? It seems to happen on both kernels 2.4 and
2.6. Is this a quirk of Linux which is not seen on other unixes or is
it standard behaviour and the book is wrong?

Thanks for any info