обработка пакетов после обработки tcp в ядре linux - PullRequest
0 голосов
/ 07 августа 2011

Я хочу вызвать мою функцию для обработки пользовательских данных после завершения tcp-обработки пакета и до того, как пакет будет передан в пространство пользователя (или добавлен в очередь приема сокета).Есть ли способ сделать то же самое в ядре Linux?Спасибо

1 Ответ

0 голосов
/ 07 августа 2011

Прежде всего, пакеты не отправляются в пространство пользователя к TCP.Отправляются только данные ( байт ).Если вы хотите перехватить данные, вы можете:

  • написать собственный код ядра и перехватить системные вызовы (и, возможно, внутренние функции TCP, такие как tcp_input)
  • использовать сокеты Netlink, которые позволяютвы перехватываете пакеты (со всеми их заголовками)
  • Используйте переадресационные сокеты (как описано выше), если они у вас есть
  • Используйте необработанные сокеты (вы получаете копии пакетов,и вы не можете изменить их или остановить их распространение)
...