Что делает драйвер сетевой карты?


2

Разве операционная система не может напрямую записывать данные на шину PCI, а сетевая карта просто отправляет их через кабель? Что делает драйвер и чем он отличается для каждого чипсета сетевой карты?


1
Я не был уверен, куда его поместить, но, поскольку речь идет о поведении драйверов, которые являются программным обеспечением, созданным с помощью программирования, я подумал, что он лучше подойдет для SO.

@futlib: я понимаю, что вы говорите, но, к сожалению, это не конкретный вопрос программирования. Общие вопросы по программированию можно найти на сайте programmers.stackexchange.com, но я думаю, что это лучше в SuperUser (это не то, что программистам действительно нужно знать). Если ваш вопрос был «я пишу сетевой драйвер, каков наилучший способ структурировать пакеты в памяти?», Это вопрос переполнения стека. «Я пишу сетевой драйвер, с чего мне начать?» это вопрос программистов. Надеюсь, что это поможет, и я надеюсь, что вы получите хороший ответ на свой вопрос, который когда-либо обменивается, в конечном итоге :)
Binary Worrier

@Binary Worrier Согласен с вами. Но я не думаю, что суперпользователи могут ответить на этот вопрос хорошо. Он может беспокоиться об этом.
Benjamin

Ответы:


1

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

Задача драйвера - просто абстрагировать эти различия, чтобы у O / S был общий API для перемещения пакетов с более высоких сетевых уровней на аппаратное обеспечение (и наоборот).


Так что это не просто средство записи данных в RJ45, похожее на преобразователь RS232 в USB? Не могли бы вы немного рассказать, что должна делать сетевая карта для передачи данных?

@ Аноним (futlib?), Проверь мой ответ. Работа в сети - это нечто большее, чем просто передача электрического сигнала по проводам.
Synetech

0

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

Этот уровень абстракции позволяет использовать разное оборудование разных производителей во многих разных операционных системах. Это также позволяет реализовывать «программные» устройства (такие как сетевое шлейфовое устройство), которые не имеют любой базовое оборудование для управления.

Чтобы точно узнать, что делает конкретный драйвер, вам необходимо понять таблицы данных для чипов, которыми он управляет.


0

Возможно, но проблема в том, что каждый производитель чипсета NIC проектирует свои устройства по-своему, и поэтому одна модель NIC может потребовать, чтобы вы писали по одному адресу, а другая модель может требовать, чтобы вы писали по другому адресу. В дополнение к обзору спецификаций наборов микросхем NIC, таких как @Roddy, предлагает узнать, как они работают, вы также можете взглянуть на источник драйверов Linux для этого набора микросхем.

Некоторые продвинутые NIC используют DMA и так далее, чтобы работать так, как вы говорите. Водитель в этом случае действительно ничего не делает.

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


0

Каждый элемент оборудования отличается от других устройств того же класса, даже при соблюдении стандартов. Вот почему вам нужны водители; упростить использование аппаратного обеспечения путем предоставления общего интерфейса. Вы спросили, может ли ОС просто записать на выход. Да, оно может; он делает это через свои драйверы.

Если говорить более конкретно о сетевых картах, вы спрашиваете, может ли ОС записывать данные на шину PCI, через карту, через кабель и через Интернет. Проблема с этим вопросом в том, что вы не знакомы с сетью. Это сложная вещь, которая выходит за рамки простого направления напряжения по проводам. Вы забываете обо всей работе, которая позволяет такой сложной сети работать, как вся адресация и тому подобное - это не просто кодирование или декодирование электрического сигнала.

Вы хотите посмотреть на Модель OSI чтобы узнать, как работает сеть. Он разделяет работу по передаче данных между компьютерами (или другими устройствами) на семь «слоев». Каждый слой отвечает за свою часть; ОС играет свою роль, как драйвер и сама карта.


Но разве сетевая карта не отвечает только за уровень 1? Это то, что я всегда думал.
futlib

Обычно да, и это еще одна причина, по которой какое-то программное обеспечение требуется для обработки других частей. ОС может иметь дело только с таким большим количеством (посмотрите, как обрабатывали графику в дни DOS, до выхода DirectX). Драйвер подобен склеиванию между высокоуровневыми API-интерфейсами ОС и низкоуровневыми интерфейсами аппаратного обеспечения. Да, ОС мог «Сделай сам», но это будет сделано благодаря встроенным драйверам.
Synetech

Какие еще детали в частности? Я полагаю, что стек TCP / IP обычно не зависит от устройства, поэтому драйвер NIC будет реализовывать только уровень 2, учитывая, что уровень 1 обрабатывается аппаратным обеспечением?
futlib
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.