писать/читать в сетевое устройство (read() и write(), к примеру)

Модератор: Модераторы разделов

Аватара пользователя
Stauffenberg
Сообщения: 2041
Статус: ☮ PEACE ☮
ОС: открытая и свободная

писать/читать в сетевое устройство

Сообщение Stauffenberg »

Всем привет!

Объясните пожалуйста, почему нет устройства eth0 в системе? Почему писать напрямую в tty можно, а сеть надо программировать только с помощью всем известных connect(), bind() и т.д.?

Всем спасибо
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
AestheteAnimus
Сообщения: 135
ОС: FreeBSD 8.0-RELEASE amd64

Re: писать/читать в сетевое устройство

Сообщение AestheteAnimus »

Hofman писал(а):
12.09.2008 17:09
Объясните пожалуйста, почему нет устройства eth0 в системе? Почему писать напрямую в tty можно, а сеть надо программировать только с помощью всем известных connect(), bind() и т.д.?

А что Вас смущает? Вобщето, есть такое устройство, /dev/net/rl0 - это моя сетевая карта. Но это устройство на канальном уровне (до которого впринципе можно достучаться). Поверх него натянут tcp, sctp, - connect/bind как раз и предназначены для доступа к этим протоколам.
Спасибо сказали:
sendmoreinfo
Сообщения: 50

Re: писать/читать в сетевое устройство

Сообщение sendmoreinfo »

Hofman писал(а):
12.09.2008 17:09
Объясните пожалуйста, почему нет устройства eth0 в системе? Почему писать напрямую в tty можно, а сеть надо программировать только с помощью всем известных connect(), bind() и т.д.?


Потому что приложению не интересно, через какой физический интерфейс оно общается с внешним миром.
Спасибо сказали:
Аватара пользователя
DaemonTux
Сообщения: 1480
Статус: Юный падаван
ОС: Gentoo

Re: писать/читать в сетевое устройство

Сообщение DaemonTux »

Если нужно работать с сетевой подсистемой на низкому уровне то для этого существуют raw сокеты.
Vladivostok Linux User Group
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: писать/читать в сетевое устройство

Сообщение RasenHerz »

Hofman писал(а):
12.09.2008 17:09
Всем привет!

Объясните пожалуйста, почему нет устройства eth0 в системе? Почему писать напрямую в tty можно, а сеть надо программировать только с помощью всем известных connect(), bind() и т.д.?

Всем спасибо

потому что сетевые устройства - отдельный вид устройств, совмещающих в себе свойства символических и блочных устройств. для записи\чтения данных в\из сетевого интерфейса на уровне ядра используются буферы сокетов, а не буферы или кэши(хотя они тоже есть), плюс ко всему все это дело абстрагируется для системы в целом(по сути Linux все равно как вы соеденены с сетью).
сам собой напрашивается вопрос - зачем вам писать напрямую в устройство? что даст вам к примеру, следующее echo "Hello" > /dev/eth0?
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2041
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: писать/читать в сетевое устройство

Сообщение Stauffenberg »

RasenHerz писал(а):
13.09.2008 07:38
потому что сетевые устройства - отдельный вид устройств, совмещающих в себе свойства символических и блочных устройств. для записи\чтения данных в\из сетевого интерфейса на уровне ядра используются буферы сокетов, а не буферы или кэши(хотя они тоже есть), плюс ко всему все это дело абстрагируется для системы в целом(по сути Linux все равно как вы соеденены с сетью).

Жаль, я думал, что в Linux "все файлы", и я могу перенаправить поток в любой файл (даже если это сетевое устройство).

RasenHerz писал(а):
13.09.2008 07:38
сам собой напрашивается вопрос - зачем вам писать напрямую в устройство? что даст вам к примеру, следующее echo "Hello" > /dev/eth0?

Дак откуда ж я знаю? Я не могу ответить на этот вопрос пока не попробую :)
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2041
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: писать/читать в сетевое устройство

Сообщение Stauffenberg »

AestheteAnimus писал(а):
12.09.2008 21:25
А что Вас смущает? Вобщето, есть такое устройство, /dev/net/rl0 - это моя сетевая карта. Но это устройство на канальном уровне (до которого впринципе можно достучаться). Поверх него натянут tcp, sctp, - connect/bind как раз и предназначены для доступа к этим протоколам.

Вот что за не справедливость? :) Почему у меня в папке /dev/net файл tun :(
Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали: