LINUX.ORG.RU

там нет не только сетевых интерфейсов, если что.

ukr_unix_user ★★★★
()
Ответ на: комментарий от soomrack

А сетевые карты там есть? Где? А кто управляет сущностями типа «сетевой интерфейс»? Какой модуль?

kiverattes ★☆
() автор топика

А как ты себе представляешь работу с сетевым интерфейсом, если бы для него был бы выделен файл в /dev?

provaton ★★★★★
()

потому что разработано было гораздо позже чем сам unix?

jeuta ★★★★
()
Ответ на: комментарий от kiverattes

Почитай вот эту статью: http://www.opennet.ru/base/net/iproute2_cebka.txt.html

Постарайся прочитать целиком, даже если будешь мало понимать в процессе чтения. После этого у тебя должно появится некое представление о том, что такое сетевой интерфейс и как он устроен.

soomrack ★★★★★
()
Ответ на: комментарий от no-dashi

Обязательно нужно с ключом, обозначающим не использовать ленту телетайпа! А то вдруг у нас телетайпнет

OldWiseCat ★★
()

Ну вот простейший вопрос - почему их нет в dev? Почему за ними такая особенная философия стоит?

потому-что в Linux все сущности == файлы. Ну а eth0 это не сущность, а среда передачи. Т.е. она не является хранилищем информации, даже временным, хотя и является средой передачи информации. Т.е. ей нет места в файловой системе потому-же, почему нет места для /dev/SATA, или /dev/usb.

drBatty ★★
()
Ответ на: комментарий от drBatty

потому-что в Linux все сущности == файлы. Ну а eth0 это не сущность, а среда передачи. Т.е. она не является хранилищем информации, даже временным, хотя и является средой передачи информации

именованные каналы негодуют. man mkfifo

ananas ★★★★★
()
Ответ на: комментарий от ananas

именованные каналы негодуют. man mkfifo

каналы — тоже файлы, т.е. временные хранилища информации. Неименованные тоже. man 7 pipe.

Ты отличай «кусок провода» от «хранилища»

drBatty ★★
()
Ответ на: комментарий от drBatty

ну-ну, попытайся прочитать чего из канала, не являясь основным читателем. разве что каким-то аналогом tcpdump-а

ananas ★★★★★
()
Ответ на: комментарий от provaton

как ты себе представляешь работу с сетевым интерфейсом, если бы для него был бы выделен файл в /dev?

Точно так же как и с другими девайсами. На сколько помню какую-то бородатую книгу по линуксу, раньше интерфейсы были в /dev. Потом с апдейтом сетевой подсистемы от этого ушли т.к., я так понял, в силу большого кол-ва специфичных функции (аля алиасы на интерфейсы, файерволы, очереди, мосты, итд итп) рациональнее было отвязаться от /dev.

true_admin ★★★★★
()
Ответ на: комментарий от ananas

ну-ну, попытайся прочитать чего из канала

это уже частности. Важно, что там оно _может_ хранится, это же труба. А вот в проводе оно не может хранится по определению (да, я знаю, в технике грань смазана, и можно в принципе использовать среду передачи как хранилище, даже интернет можно, но это уже из области извращений ИМХО).

drBatty ★★
()
Ответ на: комментарий от true_admin

я так понял, в силу большого кол-ва специфичных функции

а я так понял, что в силу их ненужности как устройств. А вот если к ethernet подключить HDD, это как будет выглядеть? Ага, криво, костыльно, и непонятно.

drBatty ★★
()
Ответ на: комментарий от x0r

накостылять бы специфичный драйвер да бахнуть блочное устройство.

вот и я про то, что УСТРОЙСТВО будет файлом, а вот eth тут совсем не нужен (как файл).

drBatty ★★
()
Ответ на: комментарий от true_admin

Точно так же как и с другими девайсами.

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

provaton ★★★★★
()
Ответ на: комментарий от drBatty

Но особого смысла нет потому что, в отличие от файлов и блочных устройств, открытие ethX как файла спорный вопрос. Поэтому лучше использовать какой-нить libpcap.

true_admin ★★★★★
()
Ответ на: комментарий от drBatty

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

не сущность, а среда передачи

ananas ★★★★★
()
Ответ на: комментарий от provaton

Получается, начиная со второго уровня вся работа с сетью была в юзер-спейсе?

Не обязательно, см. пример ниже :)

Как, например, можно было повесить два сервиса на разные порты?

Можно как в cgroups сделать:

mkdir -p  /dev/eth0/tcp/
touch /dev/eth0/tcp/:80
cat /dev/eth0/tcp/:80
..

PS думаю, это не я придумал. Возможно, это смесь фич bash, cgroups, какого-нить plan9 итп.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

открытие ethX как файла спорный вопрос

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

ananas ★★★★★
()
Ответ на: комментарий от ananas

См. пост выше твоего. Я предлагаю не ограничиваться старой интерпретаций /dev как помойки файлов с (major, minor) номерами.

true_admin ★★★★★
()
Ответ на: комментарий от drBatty

вот если к ethernet подключить HDD, это как будет выглядеть?

кто сказал ATA over Ethernet? :-)

// я утрирую конечно, ибо это всё-таки отдельный протокол, но суть ты понял

Pinkbyte ★★★★★
()
Ответ на: комментарий от true_admin

Как /dev/sd* когда прокинешь iSCSI

а зачем тогда /dev/eth?

ifconfig /dev/eth0 192.168.0.66/24 gw 192.168.0.1

ЩИТО? HDD станет Сетью?

drBatty ★★
()
Ответ на: комментарий от Pinkbyte

я утрирую конечно, ибо это всё-таки отдельный протокол, но суть ты понял

дык о том я и говорил. Просто eth это не устройство по типу как hdd, и потому-то их и нет в dev.

drBatty ★★
()
Ответ на: комментарий от true_admin

я так понял, в силу большого кол-ва специфичных функции

Гораздо прозаичнее - в линуксе интерфейсы стали динамическими в те мохнатые времена, когда никаких средств управления /dev ещё и в проекте не было

redgremlin ★★★★★
()
Ответ на: комментарий от true_admin

Тогда это будет просто особая файловая система. Хоть сейчас можно сделать, если сильно нужно. А файл устройства при этом всё равно не нужен. А для других устройств таки нужны, поэтому помойка (major, minor) нужна.

Хотя, конечно, можно сделать, чтобы socket(2) и так далее на самом деле были не системными вызовами, а работали через /dev/eth, но вряд ли это может быть сильно полезно.

Q3164
()
Ответ на: комментарий от Komintern

Сейчас тебе скажут, что в ней хранится звук, она как труба...

cipher ★★★★★
()

Потому что здесь так заведено.

CYB3R ★★★★★
()
Ответ на: комментарий от drBatty

4.2 :)

Т.е. ей нет места в файловой системе потому-же, почему нет места для /dev/SATA, или /dev/usb.

drakmail@Lucky:~$ ls -lah /dev/usb
итого 0
drwxr-xr-x  2 root root      60 Июл 29 17:29 ./
drwxr-xr-x 17 root root     14K Июл 29 13:30 ../
crw-------  1 root root 180, 96 Июл 29 17:29 hiddev0
drakmail ★★★★
()
Ответ на: комментарий от true_admin

Потом с апдейтом сетевой подсистемы от этого ушли т.к., я так понял, в силу большого кол-ва специфичных функции (аля алиасы на интерфейсы, файерволы, очереди, мосты, итд итп) рациональнее было отвязаться от /dev.

Дык похожий зоопарк сейчас в /proc и /sys развешен, не?

qux
()
Ответ на: комментарий от ananas

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

ioctl'ы дергать можно, как на wifi. Скан там, SSID поставить, шифрование задать...

qux
()
Ответ на: комментарий от qux

Дык похожий зоопарк сейчас в /proc и /sys развешен, не?

Да. И вот непонятно что лучше — плодить ioctl или же создавать спецфайлы типа (как ты пишиешь ниже) /dev/eth0/wifi_scan . Я вот не люблю ioctl и вообще сишные интерфейсы потому что если ты пишешь проги не на си то у тебя проблемы. Я пишу в основном на питоне. И всё время проблемы. Приходится писать прослойки на сях. Да, в питоне есть возможность прямого вызова библиотечных функций (ctypes итп), только вот вся интерфейсная часть в хедерах либ/ядра. И эти хедеры ещё отличаются на разных версиях ядра и на разных плафтофрмах (аля x86 vs amd64). И получается что перед вызовом программы нам надо

1) иметь девелоперские версии пакетов чтобы были хедеры

2) парсить их

И вот с парсингом полная попа из-за макросов и извратных сишных конструкций. Так что, наверно, лучше иметь что-то вроде /sys вместо /dev

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

И вот непонятно что лучше — плодить ioctl

В LKD насколько помню сискол ioctl приводится как пример чего *не* надо делать.

И получается что перед вызовом программы нам надо
1) иметь девелоперские версии пакетов чтобы были хедеры

Это специфика интерпретируемого языка в общем? В смысле, для С хедеры были бы для сборки нужны, не для вызова.

2) парсить их

Ну был бы разбор (текстового?) /dev/eth0/wifi_scan. Тоже надо было бы иметь описание формата для разных версий ядра, которые или те же системные хедеры должны описывать, или вообще каждое приложение с собой таскать.

В порядке бреда, интересен вариант с общей шиной типа (k)dbus. Хедеры нужны только для неё самой — раз, строгой типизации для конкретной операции нет — два. То есть когда в новом ядре для каждой WiFi станции прийдет новое поле, старый софт это не сломает. Текстовый вариант в этом смысле похож, но гибкости всё-таки меньше, имхо.

qux
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.