1. Есть стандарты для протоколов низкого уровня. Для ethernet это вроде IEEE_802.3 - там описаны и структура пакетов и алгоритмы как работать с CRC. Сетевая карточка умеет работать с этими пакетами.
2. 3. 4.
https://en.wikipedia.org/wiki/Network_processor Все обрабатывается микрокодом процессора карточки, там есть и поддержка стандартов и самое начало, когда два устройства договариваются друг с другом о протоколах передачи и так далее. Физический адрес - это как раз то, о чем знает сетевая карточка еще до операционной системы.
На сетевой карте есть чипсет. От него зависит в том числе и скорость работы. например в свое время 100мбитные карточки были заметно дороже 10мбитных именно из-за более дорогого чипсета, коториый бы успевал обрабатывать пакеты. А серверные карточки брали на себя много полезных вещей, до того как информация уходила уже в драйвер tcp на основной процессор.