Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

Winsock 2, Win98(WinME) и UDP, как отправить свой заголовок?   Найти похожие ветки 

 
viman ©   (2006-03-10 18:18) [0]

Здравствуйте!
При реализации трассировщика узлов возникла проблема(под Win98): не могу отправить свой UDP заголовок. Для отправки UDP пакетов я делал следущее — создавал сокет так
socket(AF_INET, SOCK_RAW, IPPROTO_UDP)
Пропуская следующие действия перейду к сути. Далее формировал UDP заголовок, добавлял до заданного размера пакета(к примеру 32) данные, задавал нужный TTL и все это отсылал с помощью sendto. На WinXP(SP2) все отсылалось на ура(под Win2k могу предположить, что тоже должно работать, но не проверял ещё). Потребовалось это же сделать под Win98(WinME). И что я вижу — полностью игнорируется тип задаваемого сокета, т.е. ведет он себя под Win98 совершенно по другому, в отличие от WinXP. Под Win98 при вызове sendto игнорируется мой заголовок — сокет попросту формирует свой UDP заголовок, а передаваемый мной буфер(со включенным моим UDP заголовком) прицепляет как обычные данные. Все — облом, маршрутизатор, на котором истек TTL посылает мне обратно пакет, содержащий IP заголовок(его), ICMP(его), IP(мой, созданный сокетом), UDP(мой, но тоже созданный сокетом). Данные в пакете отбрасываются(а сними и мой "заголовок") — поэтому хранить в них какие либо идентификаторы не получается. А что там на момент отсылки сокет настряпал в заголовках тоже уже не выловишь.
Вопрос — возможно ли под Win98 отослать свой UDP заголовок? Если да, то как?
Кстати, возникнет ли такая же проблема по NT4, в курсе кто?
А то извращения уже надоели, осталось последнее — взять отладчик, дизассемблер и смотреть ws2_32.dll.
Найти причину, да пачтить во время рантайма, но это уже ...

Спасибо.


 
GanibalLector ©   (2006-03-10 19:25) [1]

SysErrorMessage(WSAGetLastError) смотрел?


 
viman ©   (2006-03-10 19:37) [2]

А это здесь причем? SysErrorMessage(WSAGetLastError) в каком месте проверять?
При создании сокета конечно стоит проверка, все хорошо, иначе бы и не отсылался пакет. При sendto тоже проверка на ошибки стоит, и тоже все хорошо говорит, иначе бы опять же не отсылался пакет, либо не весь(я ж его смотрю потом - весь был послан).
Все вызовы функций выполняются отлично. Тут что-то в самой реализации WS2_32.dll под Win98 похоже, ведь точно этот же код под XP отлично работает - согласно MSDN.
Вот только что? И с чем это едят?


 
GanibalLector ©   (2006-03-10 20:34) [3]

на setsockopt! Дело в том,что IP_HDRINCL появился только в W2k и выше. Соответсвенно,на setsockopt скоре всего и будет ошибка.


 
GanibalLector ©   (2006-03-10 20:38) [4]

И еще,покажи ф-цию формирования CRC. На многих ресурсах ее СПЕЦИАЛЬНО изменяют,дабы толпы ламеров не занимались спуфингом.


 
viman ©   (2006-03-10 21:11) [5]

Дык я его(IP_HDRINCL) и не пользую совсем :)
Ведь, как известно, "setsockopt ( IP_HDRINCL )", служит для того, чтобы известить сокет, что я сам хочу управлять IP заголовком. Что мне вообщем то и не требуется — все что мне нужно в IP так это управлять TTL, а для этого setsockopt(IP_TTL) отлично работает под всеми Windows. Хотя я думал уже, что может самому все сформировать, да беда одна — как раз эта опция(IP_HDRINCL) поддерживается только начиная с Win2000, это я уж знаю. По крайней мере так в MSDN указано. Вот вопрос и возник.


 
Alex Konshin ©   (2006-03-11 11:49) [6]

AFAIK SOCK_RAW is not supported on Win9x at all.


 
viman ©   (2006-03-11 22:59) [7]

Alex Konshin, я бы не говорил так категорично - по крайней мере для ICMP все замечательно работает на RAW и под Win9x, вот проверьте cледущее:
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)


 
Alex Konshin ©   (2006-03-11 23:09) [8]

Во всяком случая я помню какая была шумиха, когда MS наконец-то их реализовала в NT. Поэтому ясно, что в Win9x это не было реализовано, по крайней мере тогда.


 
viman ©   (2006-03-13 11:19) [9]

Alex, какая версия NT имеется ввиду, NT4 или 2000?
Потому как я не смог свой заголовок UDP отправить и под NT4WS+SP6.
У нее выходит такие же проблемы, как  у 9x?



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
15-1150318653
Strate
2006-06-15 00:57
2006.07.16
Если бы программисты строили дома :)


15-1150446709
LingvoRu
2006-06-16 12:31
2006.07.16
Мощная фраза


2-1151412468
Neket
2006-06-27 16:47
2006.07.16
И вновь DBGrid


15-1150399292
SergProger
2006-06-15 23:21
2006.07.16
Установка PHP


8-1138748086
WST
2006-02-01 01:54
2006.07.16
bass_dl - руководство





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский