/dev/tcp не существующий в Linux

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

Linux управляет как ethtool может сказать Вам, подключены ли Ваши интерфейсы физически к чему-то еще. Таким образом, это - хорошее начало. Конечно, если вещью, с которой Вы подключены, является маршрутизатор или переключатель, затем у Вас есть дополнительная работа, чтобы сделать.

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

Continuning, однако, следующая вещь работать от является Вашей текущей маской подсети. Это должно сказать Вам диапазон IP-адресов, что возможно общаться с из того интерфейса. Сканирование каждого возможного IP-адреса подсети обычно является самым надежным способом сделать это (использование инструмента как nmap выполнять его). Лучше, если протокол существует для поддержки этой цели, как ping, CDP для устройств Cisco или LLTD для Windows Vista / системы XP.

Если Вы находитесь в ситуации, где Вы имеете дело с несколькими маршрутизаторами LAN, то можно использовать маршруты в FIB ( route или ip route show команда), для приобретения знаний о других подсетях, которые должны быть косвенно достижимыми. Вы затем имеете дополнительный известный - достижимые диапазоны IP для сканирования.

Однако, если мы говорим обо всем Интернете или очень большой подсети, затем это становится непрактичным. В этом случае осуществимое решение состоит в том, чтобы обычно полагаться на сервисы "исследования" или "рандеву", такие как IGMP или Добрый день. Вы затем во власти только знания об устройствах, которые хотят быть известными о. Но это лучше, чем попытка к сканированию портов весь Интернет.

9
16.05.2012, 14:20
1 ответ

t_open() и его связанное /dev/tcp и такова часть интерфейса TLI/XTI, который проиграл сражение для API TCP/IP к сокетам BSD.

На Linux существует a /dev/tcp своего рода. Это не реальный файл или устройство ядра. Это - что-то особенно обеспеченное Bash, и это существует только для перенаправлений. Это означает это, даже если нужно было создать в ядре /dev/tcp средство, это было бы замаскировано в интерактивном использовании 99% [*] времени оболочкой.

Лучшее решение действительно состоит в том, чтобы переключиться на сокеты BSD.Прошу прощения.

Вы смогли заставлять strxnet XTI слой эмуляции работать, но Вы - более обеспеченное помещение Вашего времени в выход из XTI. Это - мертвый API, неподдерживаемый не только на Linux, но также и на BSDs, включая OS X.

(Между прочим, strxnet библиотека не будет даже основываться на BSDs, потому что она зависит от LiS, компонента ядра Linux. Это не будет даже configure на запасе BSD или система OS X, по-видимому, потому что это также зависит от GNU sed.)

[*] я основываю это произвольное предположение на том, что Bash является оболочкой по умолчанию для некорневых пользователей во всех дистрибутивах Linux, которые я использовал. Поэтому необходимо стараться изо всех сил на Linux, как правило, получать что-то другое, чем Bash.

18
27.01.2020, 20:05
  • 1
    Warren благодарит за Ваши исходные данные. Жаль I'am очень в новинку для них снабжают сокетом понятия API и программирование. Пустой с моими вопросами. Что делает Вы подразумеваете "strxnet XTI эмуляция latyer", мы недавно установили один из пакетов strxnet (strxnet-0.9.2.10.tar) для получения части openss7 libraries/headerfiles. Что я могу сделать больше с этим? –  learntocode 16.05.2012, 15:43
  • 2
    я никогда не использовал его сам, но от быстрого исследования tarball, это похоже, после того как это установлено, это обеспечивает слой эмуляции XTI. Необходимо просто смочь указать компилятор на него с -I и -L флаги и ожидают, что это будет работать. Но если бы это не делает, я не бросил бы много времени в нем. –  Warren Young 16.05.2012, 15:49
  • 3
    , который я знаю о-I и-L, который должен включать заголовки/библиотеки соответственно. Но что точно я должен сделать здесь с-I/-L? извините снова, если мой вопрос является неправильным. –  learntocode 16.05.2012, 15:53
  • 4
    Это зависит от того, где пакет установил файлы. Найдите файл библиотеки, libstrxnet.so.*: тот каталог - то, чему Вы передаете -L. Найти xti.h: передайте тот каталог -I. Вам также будет нужно -lstrxnet в минимуме. Нижняя строка: см. strxnet документы. –  Warren Young 16.05.2012, 16:00
  • 5
    Warren, именно это я сделал во время компиляции. посмотрите шаги, которые я дал в предыдущей команде. Эта библиотека имеет t_open () функция. Но проблема не с этой функцией. Проблема с/dev/tcp, который t_open пытается открыть. –  learntocode 16.05.2012, 16:06

Теги

Похожие вопросы