connecting avr microcontroller to the internet
The Microchip ENC28J60 is a stand-alone ethernet MAC/PHY.  It is directly connected to the ethernet pulse transformers on the network side.  It takes care of the basic mechanics of sending and receiving ethernet packets.  It is low level hardware in that sense, and does not contain a network stack.  This is intended to be on a microcontroller that talks to the ENC28J60 via SPI.

I have done projects using the EN28J60, and it works fine.  One problem is a bug in the initial negotiation such that it can't tell the switch whether it is using full or half duplex.  Fortunately, all recent switches assume full duplex, so setting the ENC28J60 to fixed full duplex has never caused any trouble that I have noticed.

In more recent projects, I have used the PIC 18F67J60 instead.  That's a great part in that it has essentially the ENC28J60 built in.  You can implement a network device with just a 18F67J60, the pulse transformers, and a RJ-45 jack.  It's also faster because communication with the MAC/PHY is internal via mapped registers, not external over SPI.