Я пишу код для приема TCP-подключений на любом порту (без открытия и прослушивания на всех портах), помещая пакеты SYN в пространство пользователя через nftables, затем привязывая сокет рандеву кпримите соединение, прежде чем принять пакет SYN.Похоже, это будет работать (хотя, если есть более простая альтернатива, пожалуйста, скажите мне!).
Но я не могу найти документы или примеры того, как получить доступ к различным полям пакета TCP / IP.Я использую libmnl, и моя программа основана на слегка измененных примерах / netfilter / nf-queue.c.Когда я получаю доступ и выгружаю PAYLOAD, он выглядит как пакет TCP, и я могу вытащить порт назначения путем peek
в буфере (более или менее).Тем не менее, я хотел бы получить доступ к полям пакета надлежащим образом.
Есть ли документация, FAQ или пример кода, который может перейти от struct nlmsghdr *
к элементу PAYLOAD
к указателю пакета TCP, что позволит мне получить доступ к таким вещам, как sport
, dport
, флаги и т. д.?