Эффективное программирование TCP-IP

       

Статистика протоколов


С помощью netstat можно получить статистику протоколов. Если задать опцию -s, то netstat напечатает статистические данные по протоколам IP, ICMP, IGMP, UDP и TCP. Если нужен какой-то один протокол, то его можно указать по­средством опции -р. Так, для получения статистики по протоколу UDP следует ввести следующую команду:

bsd:   $  netstat   -sp udp

udp:

 82 datagrams received

 0 with incomplete header

 0 with bad data length field

 0 with bad checksum

 1 dropped due to no socket

 0 broadcast/multicast datagrams dropped due to no socket

 0 dropped due to full socket buffers

 0 not for hashed pcb

 81 delivered

 82 datagrams output



bsd: $

Ниже дается перевод на русский язык, программа netstat использует английский.

udp:

 82 датаграмм получено

 0 с неполным заголовком

 0 с неправильным значением в поле длины данных

 0 с неправильной контрольной суммой

 1 отброшено из-за отсутствия сокета

 0 отброшено широковещательных/групповых датаграмм

 из-за отсутствия сокета

 0 отброшено из-за переполнения буфера сокета О не для хэшированного блока

 управления протоколом

 81 доставлено

 82 отправлено датаграмм

Можно отменить печать строк с нулевыми значениями, если дважды задать опцию -s:

bsd: $ netstat -ssp udp

udp:

 82 datagrams received

 1 dropped due to no socket

 81 delivered

 82 datagrams  output

bsd: $

Периодический просмотр статистики TCP оказывает очень «отрезвляющее» действие. На машине bsd netstat выводит для TCP 45 статистических показателей. Вот строки с ненулевыми значениями, которые были получены при запуске netstat-ssp tcp:

tcp:

 446 packets sent

  190 data packets (40474 bytes)

  213 ack-only packets (166 delayed)

  18 window update packets

  32 control packets

 405 packets received

  193 acks (for 40488 bytes)

  12 duplicate acks

  302 packets (211353 bytes) received in sequence

  10 completely duplicate packets (4380 bytes)

  22 out-of-order packets (16114 bytes)

  2 window update packets

 20 connection requests


 2 connection accepts

 13 connections established (including accepts)

 22 connection closed (including 0 drops)

  3 connections updated cached RTT on close

  3 connections updated cached RTT variance on close

 2 embryonic connections dropped

 193 segments updated rtt (of 201 attempts)

 31 correct ACK header predictions

 180 correct data packet header predictions

Далее дается перевод статистической информации на русский язык.

tcp:

 446 пакетов послано

  190 пакетов данных (40474 байта)

  213 пакетов, содержащих только ack (166  отложенных)

  18 пакетов с обновлением окна

  32 контрольных пакета

 405 пакетов принято

  193 ack (на 40488 байт)

  12 повторных ack

  302 пакета (211353 байта) получено по порядку

  10 пакетов - полных дубликатов (4380 байт)

  22 пакета не по порядку (16114 байта)

  2 пакета с обновлением окна

  20 запросов на соединение

  2 приема соединения

  13 соединений установлено (включая принятые)

  22 соединения закрыто (включая 0 сброшенных)

   3 соединения при закрытии  обновили RTT в кэше

   3 соединения при закрытии обновили дисперсию RTT в кэше

  2 эмбриональных соединения сброшено

  193 сегмента обновили rtt (из 201 попыток)

  31 правильное предсказание заголовка АСК

  180 правильных предсказаний заголовка пакета с данными

Эта статистика получена после перезагрузки машины bsd и последовавших за ней отправки и получения нескольких сообщений по электронной почте, а также чтения нескольких телеконференций. Если предположить, что такие события, как доставка пакетов не по порядку или получение дубликатов пакетов, происходят очень редко, то полученная информация полностью развеет эти иллюзии. Так, из 405 полученных пакетов 10 оказались дубликатами, а 22 пришли не по порядку.

Примечание: В работе [Bennett et al. 1999] показано, что приход пакетов не по порядку не обязательно свидетельствует о неисправности. Также объясняется, почему в будущем следует ожидать широкого распространения этого явления.


Содержание раздела