|
|
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
Если сетевой карте назначено больше одного адреса, как TCP/IP стек решает при формировании IP-пакета, какой адрес использовать в поле Local IP? Очевидный ответ — «согласно таблице маршрутизации», но она сопоставляет паре Destination IP + Mask номер сетевого интерфейса, а не его IP-адрес (см. GetIpForwardTable). route print пытается вывести IP-адреса интерфейсов, но, похоже, не принимает во внимание, что их может быть несколько, и просто печатает первый попавшийся адрес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 11:14 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
RWolf, если оба IP адреса находятся в 1 подсети, то не имеет разницы с какого интерфейса (ip адреса) отправлять. если у вас 2 ip из разных подсетей, то в таблице маршрутизации для подсети A0 будет IP адрес A, а для подсети B0 адрес B. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 11:20 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
RWolfкак TCP/IP стек решает при формировании IP-пакета, какой адрес использовать в поле Local IP?IP-стек не решает ЭТУ задачу. Он решает задачу, каким маршрутом (напрямую или через какой узел) отправить пакет. Только решив её, он будет проставлять в пакете адрес источника - а именно тот IP-адрес, через который необходимый шлюз либо конечный узел достижим. Если таких адресов несколько, то будет использован тот из них, который стоИт выше в таблице адресов интерфейса (и это не всегда минимальный! более того, после перезагрузки бывший первым адрес может "утонуть", а бывший более поздним, соответственно, "всплыть"). RWolfОчевидный ответ — «согласно таблице маршрутизации», но она сопоставляет паре Destination IP + Mask номер сетевого интерфейса, а не его IP-адресСказки. Таблица сопоставляет именно адрес. А вот адресу уже сопоставляется физический интерфейс - но это задача НЕ таблицы маршрутизации. RWolfroute print пытается вывести IP-адреса интерфейсов, но, похоже, не принимает во внимание, что их может быть несколько, и просто печатает первый попавшийся адрес.??? Route print выводит только маршруты! адреса интерфейсов - не его забота. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 11:25 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
Roman Mejtesесли оба IP адреса находятся в 1 подсети, то не имеет разницы с какого интерфейса (ip адреса) отправлять.Это не совсем так. Если ты обратишься к станции по одному адресу, а та начнёт отвечать с другого - диалог вряд ли состоится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 11:27 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
AkinaТаблица сопоставляет именно адрес. А вот адресу уже сопоставляется физический интерфейс - но это задача НЕ таблицы маршрутизации. Достаю маршруты вызовом GetIpForwardTable, адресов интерфейсов там нет, только номер интерфейса для каждого маршрута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 11:36 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
AkinaIP-стек не решает ЭТУ задачу. Приложение отдаёт команду установить TCP-соединение с сервером. Выбрать и заполнять локальные адреса в пакетах — задача стека. AkinaОн решает задачу, каким маршрутом (напрямую или через какой узел) отправить пакет. Только решив её, он будет проставлять в пакете адрес источника - а именно тот IP-адрес, через который необходимый шлюз либо конечный узел достижим. Если таких адресов несколько, то будет использован тот из них, который стоИт выше в таблице адресов интерфейса (и это не всегда минимальный! более того, после перезагрузки бывший первым адрес может "утонуть", а бывший более поздним, соответственно, "всплыть"). Если бы дело обстояло так, то в пакетах, адресованных компьютерам всех подсетей, кроме одной, локальный IP заполнялся бы неправильно. AkinaRoute print выводит только маршруты! адреса интерфейсов - не его забота. да, в формате Dest IP, маска подсети, следующий узел сети, интерфейс , через который отправлять пакет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 11:55 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
RWolfДостаю маршруты вызовом GetIpForwardTable, адресов интерфейсов там нет Ну, значит, надо ещё получить таблицу локальных интерфейсов с привязками адресов. По-моему, очевидно... т.е. получить MIB_IPADDRTABLE с помощью функции GetIpAddrTable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 12:03 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
Akina, если ты начнешь отправлять с адреса А, то логично предположить, что на транспортном уровне будет созданна сессия (канал) и передача будет происходит в рамках только этого IP адреса. У автора вопрос чисто по IP протоколу (сетевой уровень) и на передачу он практически ни как не влияет. Данные же не передаются с адреса, на адрес, они передаются в рамках соединения, которое устанавливается на нижних уровнях. А так, ты всё верно сказал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 12:37 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes , вряд ли у ТС это игрища ума от нефигом заняться. Значит, есть некая задача, в рамках которой он и озаботился этим вопросом. Вот только знать бы какая - сам ТС, видимо, не скажет. Roman Mejtesесли ты начнешь отправлять с адреса А, то логично предположить, что на транспортном уровне будет созданна сессия (канал) и передача будет происходит в рамках только этого IP адреса. Ну почему обязательно отправлять? Bind Address ничего не отправляет, а привязка сокета идёт тем не менее по конкретному адресу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 12:48 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
Akina, Задача простая: есть библиотека для работы с неким сервером, исходники закрыты, для корректной работы требует указания локального IP. Хочется указывать его правильно — так же, как это делает ОС, скажем, при установке TCP-соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 13:52 |
|
||
|
Несколько адресов на одну сетевую карту
|
|||
|---|---|---|---|
|
#18+
Ааа... пишется средство автоматической настройки... но в такой ситуации в общем случае я не вижу корректного способа определения требуемого адреса иначе как попыткой соединения с целевым узлом и последующего определения локального адреса, с которого был выполнен доступ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 14:19 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39419825&tid=1340461]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
182ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 453ms |

| 0 / 0 |
