-
Есть несколько процессов, слушающих датаграммы на некотором порту (SO_REUSEADDR). Обычно датаграмм приходят из сети. Принято решение о расширении протокола: введён новый тип датаграмм, совместимый со старым, но отправляемый всегда только с локального узла "самому себе".
Если при отправке новых датаграмм в качестве адреса назначения указан 127.0.0.1 или один из IP-адресов локального узла, - на локальном узле ни один из процессов датаграмму не получает. Если бродкастить на 255.255.255.255 - датаграммы приходят всем процессам (как и должно быть), но уходят также и в сеть (чего быть не должно).
Вопрос: есть ли возможность заставить WinSock отправлять копию датаграммы всем процессам на localhost? Или придётся фильтровать входящие датаграммы по отправителю?
-
> но уходят также и в сеть (чего быть не должно).
я чего то не знаю? можно ссылочку для ознакомления?
-
> [1] brother © (13.08.12 17:43)
> > но уходят также и в сеть (чего быть не должно).
> я чего то не знаю? можно ссылочку для ознакомления?
Не-не-не, не должно быть по задумке протокола. Т.е. это та причина, по которой такой вариант решения не устраивает и требует допиливания.
-
а понял...
-
На какой адрес посылаешь?
И приведи ipconfig /all
-
> [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.:
Состояние среды. . . . . . . . : Среда передачи недоступна.
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, что логично.
-
> ProgRAMmer Dimonych (13.08.2012 20:36:05) [5]
Я вообще то хотел route print, но ошибся.
Но и так ясно, ты посылаешь бродкаст не тому адресу, у сети 127.0.0.x он
совсем другой, вероятнее всего 127.255.255.255
-
> [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'ов.
-
> loopback-адреса WinSock не считает подходящими для broadcast'ов
Они ничем не хуже других адресов.
Просто в таблице маршрутов нет подходящего маршрута для 127.255.255.255.
Зато есть "неподходящие" для 255.255.255.255, потому и уходят бродкасты в другие сети.
-
а кому их там посылать?)
-
> brother © (14.08.12 10:32) [9]
Ну как кому ?
Вестимо - интерфейсам в подсети 127.0.0.0/8
-
> [8] Сергей М. © (14.08.12 10:31)
> > loopback-адреса WinSock не считает подходящими для broadcast'ов
> Они ничем не хуже других адресов.
> Просто в таблице маршрутов нет подходящего маршрута для
> 127.255.255.255.
> Зато есть "неподходящие" для 255.255.255.255, потому и уходят
> бродкасты в другие сети.
Правильно ли я понимаю, что без дополнительной настройки со стороны администратора сети отправить датаграмму только процессам на localhost не удастся?
-
> ProgRAMmer Dimonych (14.08.2012 11:38:11) [11]
Приведи route print и скажи, ты попробовал 127.255.255.255 - это типовой
бродкаст адрес для данной сети?
-
> ProgRAMmer Dimonych © (14.08.12 11:38) [11]
Разумеется процессу, модифицирующему таблицу маршрутов, требуются административные привелегии
-
> [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
===========================================================================
Постоянные маршруты:
Отсутствует
-
> [12] Anatoly Podgoretsky © (14.08.12 11:59)
P.S. При отправке на 127.255.255.255 - ошибка 10049, как и на 127.0.0.1 (что, судя по роутам, закономерно).
-
> 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
-
> [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). Так ли это?
-
судя по: 127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
Сергей в [10] был не прав. Как я и ожидал, вся подсеть не ловит бродкаст ибо 127.0.0.1 должен быть единственным в этой подсети, имхо!
-
> ProgRAMmer Dimonych (14.08.2012 12:36:17) [17]
Правильно, именно это следует из маршрута.
Сомневаюсь, что бродкаст не работает для loopback-адресов, не зря же они
сделали маршрут?