C PF_PACKET Обработка канального уровня - PullRequest
2 голосов
/ 02 января 2012

Я пытаюсь выяснить структуру данных, которая хранится в буфере после следующего:

sock=socket(PF_PACKET, SOCK_RAW, htons(ETHERTYPE_IP));

recvfrom(sock, buffer, 2048, 0, NULL, NULL);

Я бы хотел иметь возможность изучать структуру данных и читать на канальном уровне, IP-уровне и TCP-уровне, если это TCP-пакет. Я пробовал справочные страницы и некоторые заголовочные файлы, но они есть везде.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 02 января 2012

Это необработанные биты, которые проходят по проводам (уровень 2 OSI). Справочная страница для пакета объясняет это очень хорошо.

Что я хотел бы сделать, это получить выходные данные и сравнить их с выходными данными сеанса Wireshark, смотрящими на те же данные. Затем вы сможете соотнести их и посмотреть, что происходит.

1 голос
/ 02 января 2012

Я считаю, что вам нужен RFC , который определяет, как IP инкапсулируется в Ethernet .К сожалению, RFC очень тонкий, но более новый RFC включает значительно больше деталей.

...