Здравствуйте, sercher, Вы писали:
S> Работая на уровне сокетов можно ли узнать с какого интерфейся пришёл пакет, и можно ли послать пакет на конкретный интерфейс?
странный вопрос. для udp тебе это говорят в самой функции recvfrom, а в tcp пакеты приходят оттуда куда ты коннектился функцией connect. или ты что то другое спрашивал?
aik>странный вопрос. для udp тебе это говорят в самой функции recvfrom, а в tcp пакеты приходят оттуда куда ты коннектился функцией connect. или ты что то другое спрашивал?
recvfrom() скажет с какого IP адреса пришёл пакет, а не интерфейс. А мне надо именно интерфейс, его имя. Компьютер может и не иметь IP адрес и рассылать широковещательные пакеты.
Здравствуйте, sercher, Вы писали:
aik>>странный вопрос. для udp тебе это говорят в самой функции recvfrom, а в tcp пакеты приходят оттуда куда ты коннектился функцией connect. или ты что то другое спрашивал?
S> recvfrom() скажет с какого IP адреса пришёл пакет, а не интерфейс. А мне надо именно интерфейс, его имя. Компьютер может и не иметь IP адрес и рассылать широковещательные пакеты.
что у тебя за сокет, и что за пакеты? netbios что ли?
S> ...<skip>... Компьютер может и не иметь IP адрес и рассылать широковещательные пакеты.
А можно отсюда поподробнее? Как отослать пакет с компьютера, не имеющего IP адреса?
S>> ...<skip>... Компьютер может и не иметь IP адрес и рассылать широковещательные пакеты. V>А можно отсюда поподробнее? Как отослать пакет с компьютера, не имеющего IP адреса?
Мне случалось по UDP-сокетам обучение проводить... И никогда не слышал, что можно отправить сообщение с компьютера без IP-адреса. Никогда.
Более того, считается, что сокет должен быть забинден — в противном случае, он забиндится автоматически.
Note If a socket is opened, a setsockopt call is made, and then a sendto call is made, Windows Sockets performs an implicit bind function call.
А вам не приходилось разве слышать о протоколе DHCP? Это когда IP адрес и другие сетевые настройки клиент получает от сервера динамически? Как транспортный протокол там используется UDP и броадкаст запрос.
S> ... Как транспортный протокол там используется UDP и броадкаст запрос.
И тем не менее, дяже на этом этапе IP-адрес у компьютера есть. Он просто заполнен нулями. Нельзя отправить запрос с компьютера без IP-адреса — поле в пакете же есть. Другое дело, что такой IP-адрес не может использоваться в качестве адресата. Поэтому сервер отправляет броадкастовый ответ.
Вопрос стоял так: можно ли отправить IP пакет с компьютера, не имеющего IP адреса, т.е. не отвечающего на ARP запросы.
Я ответил — да, можно.
А с форматом ethernet пакета я знаком, а также с IP и UDP. Только я не понимаю причём тут это. Можно и MAC адрес источника не указывать, а пакет всё равно дойдёт.