Конфигурирование сетевого оборудования

До этого момента мы кратко рассказывали о сетевых интерфейсах и общих вопросах TCP/IP, но не обсуждали, что происходит, когда "сетевой код" в ядре взаимодействует с аппаратными средствами. Для понимания этого процесса необходимо рассмотреть концепции интерфейсов и драйверов.

Прежде всего, есть аппаратные средства, такие как Ethernet-карта: плата, укомплектованная чипами, установленная в слот вашего компьютера. Это то, что мы обычно называем устройством.

Чтобы использовать Ethernet-карту, необходимы специальные функции в ядре вашей системы Linux, которые умеют работать с этим устройством. Эти функции называются драйверами устройств. Например, в Linux есть драйверы для разных моделей Ethernet-карт, выполняющие похожие функции. Они известны как "Becker Series Drivers" и были названы в честь их автора, Дональда Беккера. Еще один пример — драйвер D-link, который работает с адаптерами D-link, подключаемыми к параллельному порту.

Что именно делает драйвер, управляя устройством? Рассмотрим Ethernet-карту, которую мы упоминали ранее. Драйвер должен взаимодействовать с периферией этой платы: отправлять команды и данные на плату, а плата, в свою очередь, передавать полученные данные драйверу.

В компьютерах связь между платой и драйвером осуществляется через специальную область памяти ввода-вывода, которая представляет собой отображение регистров платы и т.п. Все команды и данные, которые ядро отправляет на плату, проходят через эти регистры. Область памяти ввода-вывода определяется начальным (или основным) адресом. Для Ethernet-карт типичные основные адреса — это 0x300 или 0x360.

Обычно вам не нужно беспокоиться о таких деталях, как основной адрес, потому что ядро пытается автоматически определить местоположение вашей платы при загрузке. Это называется автоматическим обнаружением. Однако есть Ethernet-карты, которые ядро не может автоматически обнаружить. Это часто происходит с дешевыми Ethernet-картами.

Также стоит отметить, что во время загрузки ядро пытается обнаружить только одно Ethernet-устройство. Если у вас установлено несколько карт, вы должны явно указать ядру о каждой из них.

Еще один параметр, который вы можете передать ядру, — это канал запроса прерывания (IRQ). Компоненты оборудования обычно прерывают работу ядра, когда требуют внимания, например, когда поступают данные или происходят другие события. В компьютерах прерывание может происходить на одном из 15 каналов (0, 1, 3 и до 15). Номер прерывания, назначенный компоненту оборудования, называется каналом запроса прерывания или IRQ.

Ядро взаимодействует с устройствами через так называемый интерфейс. Интерфейсы предоставляют стандартный набор функций для всех типов оборудования, таких как отправка или получение данных. Эти интерфейсы имеют идентификаторы, которые определены в ядре. Такие идентификаторы, как "eth0", "eth1" и т.д., не связаны с файлами устройств в каталоге /dev. Порядок присвоения интерфейсов определенному оборудованию зависит от того, в каком порядке было настроено оборудование. Например, первая установленная Ethernet-карта будет обозначена как eth0, следующая — как eth1 и так далее.

Во время загрузки ядро показывает, какие устройства обнаружены и какому интерфейсу будет назначено определенное устройство. Пример вывода на экране во время загрузки приведен ниже:

This processor honours the WP bit even when in supervisor mode. Good.
Floppy drive(s): fd0 is 1.44M
Swansea University Computer Society NET3.010
IP Protocols: ICMP, UDP, TCP
PPP: version 0.2.1 (4 channels) OPTIMIZE FLAGS
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
SLIP: version 0.7.5 (4 channels)
CSLIP: code copyright 1989 Regents of the University of California
dl0: D-Link DE-600 pocket adapter, Ethernet Address: 00:80:C8:71:76:95
Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.
Linux version 1.1.11 (okir@monad) #3 Sat May 7 14:57:18 MET DST 1994

Как видно из вышеуказанного, ядро определило различное оборудование и необходимые протоколы. Сообщение "dl0: D-Link DE-600 pocket adapter" указывает на то, что обнаружено устройство D-Link и оно было назначено интерфейсу "dl0". Если у вас установлена Ethernet-карта, но вы не видите подобного сообщения во время загрузки, это может означать, что ядро не смогло определить вашу карту. В таком случае, вам, возможно, потребуется вручную настроить параметры вашей карты или обновить версию ядра, чтобы оно могло корректно работать с вашим оборудованием.

Важно понимать, что хотя большая часть процесса обнаружения и конфигурирования оборудования автоматизирована, иногда потребуется вмешательство администратора для корректной настройки и решения возникающих проблем. Всегда рекомендуется регулярно обновлять свою систему и следить за обновлениями драйверов для вашего оборудования, чтобы обеспечить его бесперебойную работу.