powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Несколько адресов на одну сетевую карту
11 сообщений из 11, страница 1 из 1
Несколько адресов на одну сетевую карту
    #39419627
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если сетевой карте назначено больше одного адреса, как TCP/IP стек решает при формировании IP-пакета, какой адрес использовать в поле Local IP?
Очевидный ответ — «согласно таблице маршрутизации», но она сопоставляет паре Destination IP + Mask номер сетевого интерфейса, а не его IP-адрес (см. GetIpForwardTable).
route print пытается вывести IP-адреса интерфейсов, но, похоже, не принимает во внимание, что их может быть несколько, и просто печатает первый попавшийся адрес.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419638
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolf,

если оба IP адреса находятся в 1 подсети, то не имеет разницы с какого интерфейса (ip адреса) отправлять.
если у вас 2 ip из разных подсетей, то в таблице маршрутизации для подсети A0 будет IP адрес A, а для подсети B0 адрес B.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419645
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolfкак TCP/IP стек решает при формировании IP-пакета, какой адрес использовать в поле Local IP?IP-стек не решает ЭТУ задачу. Он решает задачу, каким маршрутом (напрямую или через какой узел) отправить пакет. Только решив её, он будет проставлять в пакете адрес источника - а именно тот IP-адрес, через который необходимый шлюз либо конечный узел достижим. Если таких адресов несколько, то будет использован тот из них, который стоИт выше в таблице адресов интерфейса (и это не всегда минимальный! более того, после перезагрузки бывший первым адрес может "утонуть", а бывший более поздним, соответственно, "всплыть").

RWolfОчевидный ответ — «согласно таблице маршрутизации», но она сопоставляет паре Destination IP + Mask номер сетевого интерфейса, а не его IP-адресСказки. Таблица сопоставляет именно адрес. А вот адресу уже сопоставляется физический интерфейс - но это задача НЕ таблицы маршрутизации.

RWolfroute print пытается вывести IP-адреса интерфейсов, но, похоже, не принимает во внимание, что их может быть несколько, и просто печатает первый попавшийся адрес.??? Route print выводит только маршруты! адреса интерфейсов - не его забота.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419647
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesесли оба IP адреса находятся в 1 подсети, то не имеет разницы с какого интерфейса (ip адреса) отправлять.Это не совсем так. Если ты обратишься к станции по одному адресу, а та начнёт отвечать с другого - диалог вряд ли состоится.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419670
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaТаблица сопоставляет именно адрес. А вот адресу уже сопоставляется физический интерфейс - но это задача НЕ таблицы маршрутизации.

Достаю маршруты вызовом GetIpForwardTable, адресов интерфейсов там нет, только номер интерфейса для каждого маршрута.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419714
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaIP-стек не решает ЭТУ задачу.
Приложение отдаёт команду установить TCP-соединение с сервером. Выбрать и заполнять локальные адреса в пакетах — задача стека.

AkinaОн решает задачу, каким маршрутом (напрямую или через какой узел) отправить пакет. Только решив её, он будет проставлять в пакете адрес источника - а именно тот IP-адрес, через который необходимый шлюз либо конечный узел достижим. Если таких адресов несколько, то будет использован тот из них, который стоИт выше в таблице адресов интерфейса (и это не всегда минимальный! более того, после перезагрузки бывший первым адрес может "утонуть", а бывший более поздним, соответственно, "всплыть").

Если бы дело обстояло так, то в пакетах, адресованных компьютерам всех подсетей, кроме одной, локальный IP заполнялся бы неправильно.

AkinaRoute print выводит только маршруты! адреса интерфейсов - не его забота.
да, в формате Dest IP, маска подсети, следующий узел сети, интерфейс , через который отправлять пакет.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419733
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolfДостаю маршруты вызовом GetIpForwardTable, адресов интерфейсов там нет
Ну, значит, надо ещё получить таблицу локальных интерфейсов с привязками адресов. По-моему, очевидно... т.е. получить MIB_IPADDRTABLE с помощью функции GetIpAddrTable.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419799
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

если ты начнешь отправлять с адреса А, то логично предположить, что на транспортном уровне будет созданна сессия (канал) и передача будет происходит в рамках только этого IP адреса.
У автора вопрос чисто по IP протоколу (сетевой уровень) и на передачу он практически ни как не влияет.
Данные же не передаются с адреса, на адрес, они передаются в рамках соединения, которое устанавливается на нижних уровнях.
А так, ты всё верно сказал :)
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419825
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes , вряд ли у ТС это игрища ума от нефигом заняться. Значит, есть некая задача, в рамках которой он и озаботился этим вопросом. Вот только знать бы какая - сам ТС, видимо, не скажет.

Roman Mejtesесли ты начнешь отправлять с адреса А, то логично предположить, что на транспортном уровне будет созданна сессия (канал) и передача будет происходит в рамках только этого IP адреса.
Ну почему обязательно отправлять? Bind Address ничего не отправляет, а привязка сокета идёт тем не менее по конкретному адресу.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419934
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Задача простая: есть библиотека для работы с неким сервером, исходники закрыты, для корректной работы требует указания локального IP. Хочется указывать его правильно — так же, как это делает ОС, скажем, при установке TCP-соединения.
...
Рейтинг: 0 / 0
Несколько адресов на одну сетевую карту
    #39419972
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ааа... пишется средство автоматической настройки... но в такой ситуации в общем случае я не вижу корректного способа определения требуемого адреса иначе как попыткой соединения с целевым узлом и последующего определения локального адреса, с которого был выполнен доступ.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Несколько адресов на одну сетевую карту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]