Ответ 1
Чтобы ответить на ваш первый вопрос, да, вам придется вручную создавать сообщения TCP/IP с нуля, MAC-адрес и все. В качестве примера рассмотрим pfsend.c из ntop.org.
ntop.org также внедрил PF_RING
руководство пользователя, в котором содержатся объяснения.
Что касается отправки данных с использованием PF_RING
, это абсолютно возможно, идея состоит в том, чтобы обойти любое представление о том, что на самом деле является данными на проводе и отправлять как можно быстрее, см. генерация трафика с использованием скорости передачи с сайта ntop.org. Единственное преимущество, которое он имеет при обычных отправных вызовах с использованием ядра для TCP/IP, заключается в том, что вы можете отправлять данные 1. быстрее и 2. полностью неформатировать на провод. 2, может быть удобно, например, когда вы хотите воспроизвести ранее захваченный пакет/несколько пакетов в сети.
Если у вас нет конкретного варианта использования, который требует, чтобы вы получили доступ к необработанным базовым данным без вмешательства ядра, нет абсолютно никакой причины использовать PF_RING
каким-либо образом. Лучше всего использовать стандартный socket()
, который доступен, в большинстве случаев производительность, которую вы можете достичь, более чем достаточна.
Какой конкретный вариант использования вы имели в виду?