Ответ 1
Он получает их из пространства ядра напрямую, используя Netlink, который использует классический сокеты API.
В linux команда netstat сообщает нам информацию о активных сокетах в системе.
Я понимаю, что netstat
использует /proc/net/tcp
для получения информации о сетевой системе.
Так как netstat
man-страница говорит, что netstat устарел, поэтому мы должны использовать 'ss'.
NOTE
This program is obsolete. Replacement for netstat is ss. Replacement
for netstat -r is ip route. Replacement for netstat -i is ip -s link.
Replacement for netstat -g is ip maddr.
Я обнаружил, что ss
выполняет аналогичную функциональность, но не использует
/proc/net/tcp
для получения информации о сетевой сети.
Теперь мне интересно, как ss
получает информацию о сокетах сетевой сети?
Он получает их из пространства ядра напрямую, используя Netlink, который использует классический сокеты API.
ss
входит в пакет iproute2 и является заменой netstat
. ss
используется для вывода статистики сокетов. Он показывает информацию, аналогичную netstat
. Он может отображать больше информации о TCP и состоянии, чем другие инструменты. Это новый, невероятно полезный и более быстрый (по сравнению с netstat) инструмент для отслеживания TCP-соединений и сокетов.
Проверьте источник для ss:
https://github.com/shemminger/iproute2/blob/master/misc/ss.c
По сути, он напрямую запрашивает ядро и может отвечать намного быстрее, чем netstat.
ss
- это утилита, используемая для исследования сокетов в системах Linux и Unix. Он показывает информацию, аналогичную netstat
и может выводить статистику сокетов.
Но netstat
нельзя заменить полным на ss
. Некоторые команды netstat
лучше соответствуют команде ip
.
$ netstat -r replaced by $ ip route
$ netstat -i replaced by $ ip -s lin
$ netstat -g replaced by $ ip maddr.
Я бы сказал, что "более старую" команду netstat
можно заменить на команды ss
и ip
.