Ребят, вопрос по сокетам. Если используется RAW-Socket:
sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
то требуется ли формировать заголовок IP-пакета? И как отправить через него свои данные?
1. кроме RAW-Socket есть ещё и такая чисто Linux выдумка SOCK_PACKET, чего в POSIX нет,
2. и, насколько я помню когда возился, то в SOCK_RAW вы всё заполняете сами.
3. много об этом (вплоть до детальной инструкции использования и примеров кода) в книге У.Стивенса:
http://www.books.ru/books/unix-razrabotka-setevykh-prilozhenii-82359/?show=1- 2003г. - она есть выложена в интернет не раз, ищите...
Стивенс называет SOCK_RAW :
символьный сокет, там у него целая глава с таким названием (гл.25, стр.709).
было переработанное её переиздание:
http://www.books.ru/books/unix-razrabotka-setevykh-prilozhenii-460327/?show=1- 2006г., но что там я не знаю, они могли её и попортить.
P.S. посмотрел Стивенса:
1. в качестве примеров SOCK_RAW он строит приложения, работающие с ICMP: ping и traceroute - вы тоже можете взять исходники таких программ из Linux и посмотреть...
2. как я понял, бегло, IP-заголовки при этом формирует ядро, а вот ICMP заголовки формирует он сам в своём коде.
P.P.S. кстати, вспомнил: есть такой мемориальный сайт У.Р.Стивенса, где собраны оригиналы всех его книг и статей + архивы примеров ко всем книгам, вот он:
http://www.kohala.com/start/