Конференция "Сети" » UDPv4-бродкаст на 127.0.0.1
 
  • ProgRAMmer Dimonych © (13.08.12 16:39) [0]
    Есть несколько процессов, слушающих датаграммы на некотором порту (SO_REUSEADDR). Обычно датаграмм приходят из сети. Принято решение о расширении протокола: введён новый тип датаграмм, совместимый со старым, но отправляемый всегда только с локального узла "самому себе".

    Если при отправке новых датаграмм в качестве адреса назначения указан 127.0.0.1 или один из IP-адресов локального узла, - на локальном узле ни один из процессов датаграмму не получает. Если бродкастить на 255.255.255.255 - датаграммы приходят всем процессам (как и должно быть), но уходят также и в сеть (чего быть не должно).

    Вопрос: есть ли возможность заставить WinSock отправлять копию датаграммы всем процессам на localhost? Или придётся фильтровать входящие датаграммы по отправителю?
  • brother © (13.08.12 17:43) [1]
    > но уходят также и в сеть (чего быть не должно).

    я чего то не знаю? можно ссылочку для ознакомления?
  • ProgRAMmer Dimonych © (13.08.12 18:56) [2]
    > [1] brother ©   (13.08.12 17:43)
    > > но уходят также и в сеть (чего быть не должно).
    > я чего то не знаю? можно ссылочку для ознакомления?

    Не-не-не, не должно быть по задумке протокола. Т.е. это та причина, по которой такой вариант решения не устраивает и требует допиливания.
  • brother © (13.08.12 19:48) [3]
    а понял...
  • Anatoly Podgoretsky © (13.08.12 19:55) [4]
    На какой адрес посылаешь?
    И приведи ipconfig /all
  • ProgRAMmer Dimonych © (13.08.12 20:36) [5]
    > [4] Anatoly Podgoretsky ©   (13.08.12 19:55)


    Настройка протокола IP для Windows

      Имя компьютера  . . . . . . . . . : SURNAME-N
      Основной DNS-суффикс  . . . . . . : company-name.local
      Тип узла. . . . . . . . . . . . . : Гибридный
      IP-маршрутизация включена . . . . : Нет
      WINS-прокси включен . . . . . . . : Нет
      Порядок просмотра суффиксов DNS . : company-name.local

    Ethernet adapter Подключение по локальной сети:

      DNS-суффикс подключения . . . . . : company-name.local
      Описание. . . . . . . . . . . . . : Realtek PCIe GBE Family Controller
      Физический адрес. . . . . . . . . : 00-1D-7D-A9-28-17
      DHCP включен. . . . . . . . . . . : Да
      Автонастройка включена. . . . . . : Да
      Локальный IPv6-адрес канала . . . : fe80::319f:d7ed:7a78:d4fa%10(Основной)
      IPv4-адрес. . . . . . . . . . . . : 192.168.0.97(Основной)
      Маска подсети . . . . . . . . . . : 255.255.255.0
      Аренда получена. . . . . . . . . . : 9 августа 2012 г. 7:30:23
      Срок аренды истекает. . . . . . . . . . : 17 августа 2012 г. 14:10:50
      Основной шлюз. . . . . . . . . : 192.168.0.3
      DHCP-сервер. . . . . . . . . . . : 192.168.0.1
      IAID DHCPv6 . . . . . . . . . . . : 234888573
      DUID клиента DHCPv6 . . . . . . . : 00-01-00-01-14-F7-B3-B9-00-1D-7D-A9-28-17

      DNS-серверы. . . . . . . . . . . : 192.168.0.1
                                          192.168.0.2
      Основной WINS-сервер. . . . . . . : 192.168.0.1
      Дополнительный WINS-сервер. . . . . . : 192.168.0.2
      NetBios через TCP/IP. . . . . . . . : Включен

    Ethernet adapter VMware Network Adapter VMnet1:

      DNS-суффикс подключения . . . . . :
      Описание. . . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet1
      Физический адрес. . . . . . . . . : 00-50-56-C0-00-01
      DHCP включен. . . . . . . . . . . : Нет
      Автонастройка включена. . . . . . : Да
      Локальный IPv6-адрес канала . . . : fe80::b96a:4b78:662b:997b%15(Основной)
      IPv4-адрес. . . . . . . . . . . . : 10.0.0.1(Основной)
      Маска подсети . . . . . . . . . . : 255.255.255.0
      Основной шлюз. . . . . . . . . :
      IAID DHCPv6 . . . . . . . . . . . : 402673750
      DUID клиента DHCPv6 . . . . . . . : 00-01-00-01-14-F7-B3-B9-00-1D-7D-A9-28-17

      DNS-серверы. . . . . . . . . . . : fec0:0:0:ffff::1%1
                                          fec0:0:0:ffff::2%1
                                          fec0:0:0:ffff::3%1
      NetBios через TCP/IP. . . . . . . . : Включен

    Туннельный адаптер isatap.company-name.local:

      Состояние среды. . . . . . . . : Среда передачи недоступна.
      DNS-суффикс подключения . . . . . : company-name.local
      Описание. . . . . . . . . . . . . : Адаптер Microsoft ISATAP
      Физический адрес. . . . . . . . . : 00-00-00-00-00-00-00-E0
      DHCP включен. . . . . . . . . . . : Нет
      Автонастройка включена. . . . . . : Да

    Туннельный адаптер isatap.{0BB0C601-1549-4080-B437-FDBEDCAB650A}:

      Состояние среды. . . . . . . . : Среда передачи недоступна.
      DNS-суффикс подключения . . . . . :
      Описание. . . . . . . . . . . . . : Адаптер Microsoft ISATAP #2
      Физический адрес. . . . . . . . . : 00-00-00-00-00-00-00-E0
      DHCP включен. . . . . . . . . . . : Нет
      Автонастройка включена. . . . . . : Да



    Поведение такое:

    1. Посылаю на 255.255.255.255 - датараммы приходят ко всем процессам на локальном компьютере плюс уходят в сеть.
    2. Посылаю на 192.168.0.97 - датаграммы приходят только к одному процессу на локальном компьютере и в сеть, разумеется, не идут.
    3. Посылаю на 127.0.0.1 - sendto() возвращает ошибку 10049, что логично.
  • Anatoly Podgoretsky © (13.08.12 21:37) [6]
    > ProgRAMmer Dimonych  (13.08.2012 20:36:05)  [5]

    Я вообще то хотел route print, но ошибся.
    Но и так ясно, ты посылаешь бродкаст не тому адресу, у сети 127.0.0.x он
    совсем другой, вероятнее всего 127.255.255.255
  • ProgRAMmer Dimonych © (13.08.12 21:46) [7]
    > [6] Anatoly Podgoretsky ©   (13.08.12 21:37)
    > > ProgRAMmer Dimonych  (13.08.2012 20:36:05)  [5]
    > Я вообще то хотел route print, но ошибся.
    > Но и так ясно, ты посылаешь бродкаст не тому адресу, у сети
    > 127.0.0.x он
    > совсем другой, вероятнее всего 127.255.255.255

    10049. Есть подозрение, что loopback-адреса WinSock не считает подходящими для broadcast'ов.
  • Сергей М. © (14.08.12 10:31) [8]

    > loopback-адреса WinSock не считает подходящими для broadcast'ов


    Они ничем не хуже других адресов.
    Просто в таблице маршрутов нет подходящего маршрута для 127.255.255.255.
    Зато есть "неподходящие" для 255.255.255.255, потому и уходят бродкасты в другие сети.
  • brother © (14.08.12 10:32) [9]
    а кому их там посылать?)
  • Сергей М. © (14.08.12 10:39) [10]

    > brother ©   (14.08.12 10:32) [9]


    Ну как кому ?
    Вестимо - интерфейсам в подсети 127.0.0.0/8
  • ProgRAMmer Dimonych © (14.08.12 11:38) [11]
    > [8] Сергей М. ©   (14.08.12 10:31)
    > > loopback-адреса WinSock не считает подходящими для broadcast'ов
    > Они ничем не хуже других адресов.
    > Просто в таблице маршрутов нет подходящего маршрута для
    > 127.255.255.255.
    > Зато есть "неподходящие" для 255.255.255.255, потому и уходят
    > бродкасты в другие сети.

    Правильно ли я понимаю, что без дополнительной настройки со стороны администратора сети отправить датаграмму только процессам на localhost не удастся?
  • Anatoly Podgoretsky © (14.08.12 11:59) [12]
    > ProgRAMmer Dimonych  (14.08.2012 11:38:11)  [11]

    Приведи route print и скажи, ты попробовал 127.255.255.255 - это типовой
    бродкаст адрес для данной сети?
  • Сергей М. © (14.08.12 12:02) [13]

    > ProgRAMmer Dimonych ©   (14.08.12 11:38) [11]


    Разумеется процессу, модифицирующему таблицу маршрутов, требуются административные привелегии
  • ProgRAMmer Dimonych © (14.08.12 12:27) [14]
    > [12] Anatoly Podgoretsky ©   (14.08.12 11:59)
    > > ProgRAMmer Dimonych  (14.08.2012 11:38:11)  [11]
    > Приведи route print и скажи, ты попробовал 127.255.255.255
    > - это типовой
    > бродкаст адрес для данной сети?


    ========================================================================== =
    Список интерфейсов
    10...00 1d 7d a9 28 17 ......Realtek PCIe GBE Family Controller
    15...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
     1...........................Software Loopback Interface 1
    11...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP
    12...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #2
    ===========================================================================

    IPv4 таблица маршрута
    ===========================================================================
    Активные маршруты:
    Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
             0.0.0.0          0.0.0.0      192.168.0.3     192.168.0.97     20
            10.0.0.0    255.255.255.0         On-link          10.0.0.1    276
            10.0.0.1  255.255.255.255         On-link          10.0.0.1    276
          10.0.0.255  255.255.255.255         On-link          10.0.0.1    276
           127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
           127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
     127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
         192.168.0.0    255.255.255.0         On-link      192.168.0.97    276
        192.168.0.97  255.255.255.255         On-link      192.168.0.97    276
       192.168.0.255  255.255.255.255         On-link      192.168.0.97    276
           224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
           224.0.0.0        240.0.0.0         On-link      192.168.0.97    276
           224.0.0.0        240.0.0.0         On-link          10.0.0.1    276
     255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
     255.255.255.255  255.255.255.255         On-link      192.168.0.97    276
     255.255.255.255  255.255.255.255         On-link          10.0.0.1    276
    ===========================================================================
    Постоянные маршруты:
     Отсутствует

    IPv6 таблица маршрута
    ===========================================================================
    Активные маршруты:
    Метрика   Сетевой адрес            Шлюз
     1    306 ::1/128                  On-link
    10    276 fe80::/64                On-link
    15    276 fe80::/64                On-link
    10    276 fe80::319f:d7ed:7a78:d4fa/128
                                       On-link
    15    276 fe80::b96a:4b78:662b:997b/128
                                       On-link
     1    306 ff00::/8                 On-link
    10    276 ff00::/8                 On-link
    15    276 ff00::/8                 On-link
    ===========================================================================
    Постоянные маршруты:
     Отсутствует

  • ProgRAMmer Dimonych © (14.08.12 12:29) [15]
    > [12] Anatoly Podgoretsky ©   (14.08.12 11:59)

    P.S. При отправке на 127.255.255.255 - ошибка 10049, как и на 127.0.0.1 (что, судя по роутам, закономерно).
  • Anatoly Podgoretsky © (14.08.12 12:31) [16]
    > ProgRAMmer Dimonych  (14.08.2012 12:27:14)  [14]

    Вот видишь маршрут до lo
    127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  • ProgRAMmer Dimonych © (14.08.12 12:36) [17]
    > [16] Anatoly Podgoretsky ©   (14.08.12 12:31)
    > > ProgRAMmer Dimonych  (14.08.2012 12:27:14)  [14]
    > Вот видишь маршрут до lo
    > 127.255.255.255  255.255.255.255         On-link        
    > 127.0.0.1    306

    Т.е. пакеты вместо 127.255.255.255 "уходят" на 127.0.0.1, правильно?

    С гугловой помощью натыкался на упоминания о том, что бродкасты на loopback-адреса не проходят (по крайней мере, в Windows). Так ли это?
  • brother © (14.08.12 12:51) [18]
    судя по: 127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
    Сергей в [10] был не прав. Как я и ожидал, вся подсеть не ловит бродкаст ибо 127.0.0.1 должен быть единственным в этой подсети, имхо!
  • Anatoly Podgoretsky © (14.08.12 13:08) [19]
    > ProgRAMmer Dimonych  (14.08.2012 12:36:17)  [17]

    Правильно, именно это следует из маршрута.
    Сомневаюсь, что бродкаст не работает для loopback-адресов, не зря же они
    сделали маршрут?
 
Конференция "Сети" » UDPv4-бродкаст на 127.0.0.1
Есть новые Нет новых   [134435   +19][b:0][p:0.007]