При использовании сырых сокетов под Linux полностью пропускаются реализации «сетевых протоколов»? - PullRequest
0 голосов
/ 08 марта 2019

Я сомневаюсь, как необработанные сокеты внутренне управляются внутри ядра Linux.

Ссылаясь на эту статью Фреда Чоу, можно увидеть, что после определенногоПакет передается ядру, он обрабатывается несколькими блоками, реализующими сетевые протоколы, в зависимости от типа сокета, который был задан программистом.

Например, если было указано SOCK_DGRAM, еслиЯ не ошибаюсь, что блоки протоколов UDP и IPv4 должны заботиться об управлении каждым пакетом.

Я сомневаюсь: что произойдет, когда программист использует сырые сокеты, особенно ETH_P_ALL?

Полностью ли пропущены сетевые протоколы, и пакет напрямую передан с уровня сокетов на net_dev?Или сетевой протокол все еще существует на пути, пройденном пакетом (связан с управлением Ethernet)?

Подключен к этому, где вычисляется контрольная сумма Ethernet, всегда принимая в качестве эталона схему Фреда Чоу?Я спрашиваю, потому что я заметил, что он не включен в такие структуры, как struct ether_header, который используется в ETH_P_ALL сокетах.

Заранее большое спасибо.

...