Вопрос

Я хочу создать сокет для доступа к пакетам IPv4 с канального уровня.Из unix network programming версии V1,

socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))

1) Я внедряю dhcp-клиент, это правильный способ сделать это?(означает, что без доступа к уровню передачи данных я не могу получить ответ от dhcp-сервера) или есть какой-либо другой более простой способ?кроме того, поскольку этот сокет будет получать все пакеты IPv4, предназначенные для моей системы, как я должен отличать ответный пакет dhcp от других пакетов?

2) пожалуйста, предложите мне хорошую ссылку / tuorial для сетевое программирование с доступом к канальному уровню передачи данных.В приведенной выше книге это не является подробным описанием.

Это мой код

Это было полезно?

Решение

Вам тоже нужны заголовки уровня ссылок?Если это так, вам нужно использовать SOCK_RAWSOCK_DGRAM удалит заголовок уровня ссылок перед отправкой его в ваше приложение.

Вы можете идентифицировать запросы DHCP по портам источника и назначения, поскольку DHCP генерирует трафик на UDP-портах 67 и 68.

Другие советы

Вы пробовали просматривать библиотеки PCAP?Он предоставляет приятные функции фильтрации по IP, порту и другим параметрам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top