Если я открою необработанный сокет и начну читать пакеты, не будут ли прочитанные пакеты доставлены в назначенные сокеты TCP? - PullRequest
0 голосов
/ 10 октября 2018

Я думаю, что вопрос объясняет это полностью.

Еще один способ сказать это: полностью ли удалены пакеты, прочитанные через необработанный сокет, из канала связи, так что они даже не доставляются в сокет TCP, которыйони были предназначены для в первую очередь.Например, если на моем хосте работает веб-сервер, прослушивающий порт 80, и я открываю необработанный сокет, прослушивающий все пакеты протокола TCP, будет ли веб-сервер никогда не получать эти пакеты, отправляемые на порт 80?

Спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

Исходя из моего опыта, пакеты, прочитанные в необработанном сокете, не удаляются из связи.Вы можете даже иметь несколько необработанных сокетов одновременно и получать одинаковые пакеты.Но для цитирования из Linux: man raw :

Сырые сокеты могут подключаться ко всем IP-протоколам в Linux, даже к таким протоколам, как ICMP или TCP, у которых в ядре есть модуль протокола.В этом случае пакеты передаются как модулю ядра, так и необработанным сокетам . На это нельзя полагаться в переносимых программах , многие другие реализации сокетов BSD имеют здесь ограничения.

...