Як інтерпретувати вихід netstat -o / netstat --терміни


17

netstat -oвключає деяку інформацію про таймер у висновку, але я Timerніде не знайшов пояснення результатів у стовпці.
Чи може хтось пояснити це чи вказати на пояснення?

Це справді те, як виглядає вихід Netstat -o (на Ubuntu 8.04).

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       Timer
tcp        0      0 192.168.22.1:443        111.111.11.210:5804     ESTABLISHEDkeepalive (6176.47/0/0)
tcp        0      0 192.168.22.1:443        192.168.22.253:48379    TIME_WAIT  timewait (36.57/0/0)
tcp        0    924 192.168.22.1:47763      10.9.169.60:443         ESTABLISHEDon (0.34/0/0)
tcp        0      0 192.168.22.1:443        192.168.111.99:4059     ESTABLISHEDkeepalive (6963.60/0/0)
tcp        0      0 192.168.22.1:443        192.168.111.74:1729     ESTABLISHEDkeepalive (1393.60/0/0)
tcp        0      0 192.168.56.1:42204      10.9.169.60:443         ESTABLISHEDoff (0.00/0/0)
tcp        0      0 192.168.56.1:42207      10.9.169.60:443         ESTABLISHEDoff (0.00/0/0)
tcp        0    940 192.168.22.1:42186      10.9.169.60:443         ESTABLISHEDon (0.28/0/0)
tcp        0      0 192.168.22.1:443        192.168.22.253:48367    TIME_WAIT  timewait (31.57/0/0)
tcp        0      0 192.168.22.1:42234      10.9.169.60:443         ESTABLISHEDoff (0.00/0/0)
tcp        0      0 192.168.22.1:42209      10.9.169.60:443         ESTABLISHEDoff (0.00/0/0)

Відповіді:


7

Перше число - це явно таймер зворотного відліку. Залежно від типу статусу, щойно таймер вимкнеться, він повторить і надішле інший FIN або будь-який необхідний пакет, щоб спробувати ще раз. Отже, друге число відстежує кількість повторних спроб. Зауважте, що таймер збільшується, оскільки у TCP є таймери для зворотного зв'язку, якщо є стан трафіку. Таймер баккоффа дозволяє уникнути надмірно частих спроб. Кожен збій призводить до більшої та більшої міграції. Бакофф може бути експоненціальним або лінійним, залежно від стеку TCP. Я не зрозумів, для чого потрібна 3 цифра. Завжди нуль на моїх дисплеях.


31

У стовпці таймера є два поля (від вашого o / p вище):

keepalive (6176.47/0/0)  
<1st field> <2nd field>

The 1st fieldМоже мати значення:
keepalive- коли KeepAlive таймер включений для сокета
on- коли таймер повторної передачі включена для сокета
off- жоден з перерахованого вище не включений

2nd fieldМає три підполя:

(6176.47/0/0) -> (a/b/c)

a= значення таймера (a = кеєпалівський таймер, коли 1-е поле = "keepalive"; a = таймер повторної передачі, коли 1-е поле = "увімкнено")
b= кількість повторних передач, що відбулися
c= кількість надісланих зондів keepalive

Наприклад, у мене було відкрито два сокети між клієнтом та сервером (не циклічним). Налаштуванням збереження є:

KEEPALIVE_IDLETIME   30
KEEPALIVE_NUMPROBES   4
KEEPALIVE_INTVL      10

І я зробив відключення клієнтської машини, тому на стороні сервера я запустив netstat і вихід був:

Порт1:

netstat -c --timer | grep "192.0.0.1:43245             192.0.68.1:49742"

tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (1.92/0/0)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (0.71/0/0)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (9.46/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (8.30/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (7.14/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (5.98/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (4.82/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (3.66/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (2.50/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (1.33/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (0.17/0/1)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (9.01/0/2)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (7.75/0/2)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (6.47/0/2)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (5.29/0/2)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (4.08/0/2)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (2.89/0/2)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (1.73/0/2)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (0.54/0/2)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (9.38/0/3)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (8.23/0/3)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (7.08/0/3)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (5.93/0/3)                                                                                                                               
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (4.76/0/3)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (3.62/0/3)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (2.48/0/3)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (1.32/0/3)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (0.13/0/3)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (8.98/0/4)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (7.78/0/4)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (6.62/0/4)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (5.45/0/4)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (4.29/0/4)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (3.14/0/4)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (1.99/0/4)
tcp        0      0 192.0.0.1:43245             192.0.68.1:49742            ESTABLISHED keepalive (0.85/0/4)

Ви можете бачити вище, що сервер надсилав ЧОТИРІ зондируючі зонди через кожну 10 секунд, і оскільки він не отримує жодної відповіді, кількість відправлених зондів збільшується, і після 4 він відключається від клієнта.

Порт 2:

Для 2-го підключення сокет був ідентичним, за винятком того, що моя програма на стороні сервера намагалася надіслати якесь повідомлення після того, як клієнт впав і до того, як термін дії пакета закінчився:

 netstat -c --timer | grep "192.0.0.1:36483             192.0.68.1:43881"

tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (8.18/0/1)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (7.00/0/1)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (5.86/0/1)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (4.71/0/1)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (3.55/0/1)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (2.40/0/1)                                                                                                                               
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (1.21/0/1)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (0.05/0/1)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (8.91/0/2)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (7.75/0/2)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (6.56/0/2)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (5.39/0/2)
tcp        0      0 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED keepalive (4.14/0/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (0.21/2/2)  // <---- retransmission timer kicks in
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (0.68/3/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (2.74/4/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (1.59/4/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (0.43/4/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (2.28/5/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (1.11/5/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (2.95/6/2)

. . . . . 

tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (0.65/249/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (2.58/250/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (1.48/250/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (0.36/250/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (2.26/251/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (1.15/251/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (3.01/252/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (1.92/252/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (0.84/252/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (2.72/253/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (1.64/253/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (0.55/253/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (2.47/254/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (1.39/254/2)                                                                                                                                    
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (0.31/254/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (2.19/255/2)
tcp        0    210 192.0.0.1:36483             192.0.68.1:43881            ESTABLISHED on (1.12/255/2)

Як бачите, у цьому випадку справи трохи інакше. Коли клієнт знизився, мій сервер почав надсилати повідомлення про збереження, але поки він ще надсилав ці збереження, мій сервер намагався надіслати повідомлення клієнту. Оскільки клієнт знизився, сервер не міг отримати жодного ACK від клієнта, тому розпочалася повторна передача TCP, і сервер намагався знову надсилати дані, щоразу збільшуючи кількість повторної передачі (2-е поле), коли таймер повторної передачі (1-е поле) поле) минув.

Сподіваюсь, це добре пояснює netstat --timerваріант.


Привіт. Якщо ви відкрили одне підключення, чому на netstat відображається стільки записів?
Марко Марсала

1
Прапор '-c' змушує друкувати цю інформацію постійно щосекунди.
зламаний стоп

1

Перше поле: timewait/keepalive

Час в секундах від моменту передачі останніх даних до моменту, коли буде надісланий наступний зонд TCP keepalive.

За замовчуванням це починається з 7200, і скидається знову кожного разу, коли надсилається більше даних. Якщо значення низьке, наприклад, 4000 секунд, це означає, що деякі з підтримуваних живих зв'язків висять або нічого не роблять протягом тривалого періоду.

Підключення до внутрішнього проксі або інших внутрішніх процесів можуть зависати довше, але це не повинно відбуватися з веб-підключенням.


2
Просто щоб уникнути плутанини в Linux: таймер видно в, netstat -oале він ніколи не скинеться, він рахується до 0, а потім перевіряє, чи були дані надіслані. якщо ні, то він надішле пакет, інакше якщо обчислить час, що залишився, і почнеться знову. Таким чином, йому ніколи не потрібно міняти запущений таймер.
eckes

@eckes, чи можете ви поясніть, що ви маєте на увазі? не зовсім зрозумів
Іонут Попа

Як я вже говорив, число, відображене netstat, не скидається на активність. Він зараховується до нуля, а потім скидається на час, що залишився.
eckes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.