Примечание: вопрос был отредактирован.Socket Programming- Change Socket IP
У меня есть несколько вопросов по Berkeley Socket программирования:
Можно ли изменить адрес сокета после привязки? Если это так: для чего нужны команды C?
2.According https://www.cs.cmu.edu/~srini/15-441/F01.full/www/assignments/P2/htmlsim_split/node18.html, когда сокет привязан к INADDR_ANY, он принимает пакеты со всех интерфейсов, но когда пакет отправляется (используя отправленную команду), он отправляет через один сетевой адаптер с IP-адресом по умолчанию.
Если я правильно понимаю: если на сервере есть два активных сетевых адаптера с разными IP-адресами, то сокет с параметром INADDR_ANY может принимать пакет с dst IP = x и отправлять пакет с src IP = y, где x равно нет, спасибо. Это может вызвать проблемы, например, в TCP-соединениях, где сокет в другом получателе будет получать пакет, но он его потеряет, поскольку IP-адрес не является ожидаемым.
Это правда? И если это так, значит, серверные программы НЕ используют INADDR_ANY, где есть (два или более) активных сетевых адаптера с разными IP-адресами?
Предположим, что сетевой адаптер IP по умолчанию является узким местом. Можем ли мы изменить параметры сокета, чтобы пакеты отправлялись через другие сетевые карты (а не предыдущий сетевой адаптер)? Можем ли мы это сделать, если сетевые карты имеют IP-адрес по умолчанию?
Можем ли мы отправлять пакеты через один сетевой адаптер и назначать IP-адрес другому сетевому адаптеру? (То есть, NIC1 будет отправлять пакеты, и NIC2 будут получать только пакеты)
TCP или UDP или другой? –
INADDR_ANY предназначен для прослушивания на всех интерфейсах. Несколько сетевых адаптеров в разных подсетях будут посылать только через сетевой адаптер, где целевой доступ доступен. Несколько сетевых адаптеров в одной и той же подсети могут отправляться на NIC.На ваш вопрос номер 3 лучшим решением является использование связанного (или объединенного) интерфейса с 802.3ad. На ваш вопрос 4 ответ НЕТ. Если пакет поступит в NIC1, вы проигнорируете его? Направить его? Это просто не имеет смысла. Опять же, вы можете искать интерфейс. – alvits
Очень сложно идти в ногу со всеми этими изменениями. Пожалуйста, попробуйте все сразу. Например, я думаю, что у вас все еще есть путаница между источником и пунктом назначения в нескольких местах. – EJP