Главная страница
    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
2-1151514986
NORDmen
2006-06-28 21:16
2006.07.16
Поток в созаднном мной классе


5-1135421009
sco
2005-12-24 13:43
2006.07.16
SetXXXXValue и class


2-1151377913
learner
2006-06-27 07:11
2006.07.16
CloseHandle при INVALID_HANDLE_VALUE .


15-1150388909
Alx2
2006-06-15 20:28
2006.07.16
Задачка про вентилятор


2-1151336611
b.o.n.d.007
2006-06-26 19:43
2006.07.16
Не понимаю циклы. Помогите.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский