Каков системный вызов (вызовы), который извлекает состояния сокетов в netstat? - PullRequest
0 голосов
/ 02 марта 2019

Что такое системные вызовы, которые получают состояния сокетов в netstat?Меня на самом деле не интересует, как реализован netstat, а какие системные вызовы могут извлечь эту информацию.getsockopt() похоже получает статическую информацию о сокетах, а не о динамическом / рабочем состояниях сокетов.

ss и netstat, похоже, используют разные подходы, в соответствии с тем, что iproute document говорит:

Эта утилита представляет новый подход, который должен хорошо масштабироваться.Я не буду описывать технические детали здесь и сосредоточусь на описании команды.Единственное, что нужно сказать, это то, что загружать модуль tcp_diag не так уж и плохо, его можно найти в каталоге Modules iproute2.Если вы этого не сделаете, этот ss будет работать, но он вернется к / proc и станет медленным, как netstat, ну немного быстрее (см. Раздел «Некоторые числа»).

Использует ли ss некоторые системные вызовы для получения состояний работы сокетов?

1 Ответ

0 голосов
/ 16 марта 2019

Он использует "протокол netlink" для получения данных из сетевого стека, движков транспортного уровня в ядре.

Протокол netlink является более общим, чем этот, поэтому он не только охватывает статистику сокетов для полнотыsake.

В частности, для сокетов это подсистема [http://man7.org/linux/man-pages/man7/sock_diag.7.html][sockdiag].

. Существуют также более поздние реализации ss, например, [https://github.com/svinota/pyroute2/blob/master/cli/ss2][ss2] в python.Оттуда, просматривая это, получить суть проще.

Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...