Что означает вывод 'ss -s'?

2748
ruanhao

У меня проблемы с пониманием вывода команды Linux ss(сокет статистики). Я не могу понять смысл выводаss -s

Например:

[root@dls2304-1 ~]# ss -s Total: 973 (kernel 996) TCP: 600 (estab 280, closed 73, orphaned 0, synrecv 0, timewait 0/0), ports 333  Transport Total IP IPv6 * 996 - - RAW 1 1 0 UDP 157 128 29 TCP 527 512 15 INET 685 641 44 FRAG 0 0 0 

Мои вопросы:

Что Total: 973 (kernel 996)значит? Что есть Totalи что есть kernel? Почему Totalкажется меньше чем kernel?

В строке TCP: 600 (estab 280, closed 73, orphaned 0, synrecv 0, timewait 0/0), ports 333, что означает слово ports?

И это:

Transport Total IP IPv6 * 996 - - 

Что означает звездочка ( *)?

Они далеко над моей головой. Я не могу найти документ о спецификации вывода для ssкоманды. Можете ли вы помочь мне?

4

1 ответ на вопрос

3
JakeGould

Во-первых, я хочу прямо заявить, что я действительно «обожаю» этот ответ. У меня есть опыт работы в сети системным администратором, но мои сетевые знания не такие глубокие, как у большинства. Так что, надеюсь, я сделаю это правильно. И если кто-то, кто знает лучше, читает это, пожалуйста, прокомментируйте или даже отредактируйте, чтобы исправить.

При запуске команды ss(статистика сокетов) с -sфлагом, который показывает состояние сокета. Итак, зная, что:

Что Total: 973 (kernel 996)значит? Что есть Totalи что есть kernel? Почему Totalкажется меньше чем kernel?

Насколько мне известно, системные сокеты не истекают сразу после использования. Итак, насколько мне известно, 973это отражение общего числа активных сокетов за вычетом истекших сокетов, но 996к ядру подключены 23оставшиеся случайные сокеты, которые ядро ​​еще не успело очистить. Эта страница о настройке ядра дает хороший обзор концепции того, как ядро ​​работает с сокетами и как можно настроить систему для лучшего управления сокетами на уровне ядра.

В строке TCP: 600 (estab 280, closed 73, orphaned 0, synrecv 0, timewait 0/0), ports 333, что означает слово ports?

ports 333Просто является подсчет всех портовой деятельности в вашей системе в данный конкретный момент. В 333матчах с суммой estab 280и closed 73. Подробности об этих портах будут обобщены ниже этого списка. Но в контексте сокетов, которые в основном указывают на наличие линий, существуют доступные 600сокеты 600, 333которые в некоторой степени связаны с портами в системе. Для получения более подробной информации о том, что такое сокет по сравнению с портом, прочитайте этот превосходный ответ о переполнении стека .

Что означает звездочка ( *)?

В контексте примера вы показываете:

Transport Total IP IPv6 * 996 - - 

Видите, как 996общее количество ядра Total: 973 (kernel 996)? Это *соответствует сокетам, которые просто открыты / управляются независимо от их транспортного уровня на уровне ядра.

Но это сказал, да ... Это все довольно запутанно на уровне новичка.

Большое спасибо за ваше объяснение и извините за поздний ответ. Просматривая исходный код iptable2, я обнаружил, что вы в основном правы, и вы меня очень просветили. Напоминаем, ** порты ** не всегда являются суммой ** установленных ** и ** закрытых **. ** ports ** отражает общее количество портов, используемых сейчас на машине, которые считываются из / proc / slabstat. Так что ** ports ** включает в себя несколько портов ошибочных сокетов. ruanhao 9 лет назад 0