Почему устройства Ethernet не отображаются в "/dev"?
Как правило, я заметил, что подключение нового устройства в системе Linux приводит к появлению новой записи в /dev
(при условии, что у вас есть правильные драйверы).
Например:
- Когда вы подключаете новый жесткий диск, вы получаете
/dev/sdb
, - Когда вы подключаете последовательное устройство, вы получаете
/dev/ttyS0
,
Когда я подключаю устройство Ethernet, почему бы мне не получить что-то вроде /dev/eth0
?
Есть ли список устройств для портов Ethernet?
Я знаю, что вы можете увидеть имена портов, используя ifconfig
Мне просто интересно, если что-то появляется в /dev
тоже.
3 ответа
Это хороший вопрос. Причина по сути историческая; разные группы с разными целями и приоритетами со временем добавляли кусочки Unix, и различия между разными API являются отражением этой истории. Я думаю, что оригинальная концепция файла устройства восходит к Bell Labs, тогда как сетевые сокеты были добавлены позже в UC Berkeley. Белл пытался создать приятную и понятную для обслуживания парадигму для операций AT&T, тогда как Беркли нужно было добавить функции Интернета, которые нелегко вписывались в эту парадигму. Технически можно было бы вернуться и создать /dev/eth0
файл сегодня (см. ниже), но это будет включать в себя переписывание недопустимого количества устаревшего кода.
Небольшое ОТ: Если субъект вас интересует, подумайте о том, чтобы взглянуть на План 9, в котором "все является файлом" в еще большей степени (просто не ожидайте, что у него будет очень много современных, пригодных для использования приложений):
http://www.faqs.org/docs/artu/plan9.html
многие средства, доступные в Unix, доступны через различные специальные интерфейсы, такие как BSD-сокеты, fcntl (2) и ioctl(2), доступные в Plan 9 с помощью обычных операций чтения и записи для специальных файлов, аналогичных файлам устройств
Не так давно устройства Ethernet появлялись как /dev/eth0, /dev/eth1 и так далее. Есть еще приложения, которые ожидают найти их там, но теперь разочарованы и иногда непригодны. К счастью, не так много.
Здравствуйте, в настоящее время каталог / dev заполняется демоном udev, который читает каталог / sys и создает эти файлы. Если вы хотите использовать fdisk и gdisk, вы вынуждены использовать устройства, находящиеся в / dev. И чтобы увидеть tty и pty используется. Я думаю, что BSD выделяет интерфейс Ethernet в / dev, где вы можете писать и читать.