LINUX.ORG.RU

создание udp-датаграммы


0

0

простите за идиотский вопрос, но правильно ли я понял, что при создании udp-датаграммы в область памяти, выделенной под пакет необходимо вбить сначала ethernet header, затем ip заголовок, а уже потом udp заголовок и что надо указывать в качестве размера в ip заголовке?

anonymous

Смторя как тебе надо. Если с твоими ethernet и ip заголовками
то, вроде это можно делать через pcap (уточни man pcap)
Если устраивает заголовок канального уровня, сделанный
ядром, то читай на тему raw сокетов и опции сокета IP_HDRINCL.

> в качестве размера в ip заголовке
какого размера? там их два :-)
если ip_hl - то это длина заголовка в 32 битных словах
если ip_len - то это общая длина udp + ip в байтах
(смотри на struct ip из /usr/include/netinet/ip.h)

А вообще, прежде чем писать какой-нибудь мега рульный
сниффер или сканер портов, стоит чего-нибудь почитать
по теме. Рекомендую заголовки из /usr/include/netinet
и все книги Стивенса.

Удачи

anonymous
()

Это делается элементарно. Смотри SOCK_RAW (man 7 raw) и PF_PACKET (man 2 socket). Я бы использовал PF_PACKET.

alxndr
()
Ответ на: комментарий от anonymous

> А вообще, прежде чем писать какой-нибудь мега рульный сниффер или сканер портов, стоит чего-нибудь почитать по теме. Рекомендую заголовки из /usr/include/netinet и все книги Стивенса.

100%

alxndr
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.