Аппаратный модуль сетевой карты принимает пакет во внтуренний буфер и сигнализирует програмному драйверу что есть новый пакет данных.
Драйвер считает CRC пакета и сравнивает его с числом в MAC-заголовке пакета, если не правильно пакет запрашивается заново.
Также сравнивается МАС-адрес получателя из заголовков с МАС-адресом данного сетевого порта, при не совпадении пакет удаляется (это можно отключить).
Далее у пакета "срезается" МАС-заголовок и драйверам TCP/IP сети сигнализируется, что есть новый пакет.
драйвер сети пропускает пакет через "жернова" фаервола - допустим все ок.
по номеру порта получателя в IP-заголовке выбирается куда данные дальше передавать.
заголовки IP-пакета срезаются и данные заливаются в кеш TCP-сокета.
Оттуда его забирает браузер и дальше издевается.
Объяснение дано корявым языком на немытых пальцах, прошу сильно не плюваться :)
более умно смотреть к примеру
здесь